PageSourceSearch

https://fitnessprofi.lovable.app/assets/Messages-BLehGePo.js

js fitnessprofi.lovable.app collected 2026-10-03 03:31:48 UTC 36,937 bytes, 31 lines download raw bytes

vendor: 8,921 bytes, lines 1-31
1import{c as B,e as Qe,r as a,f as W,j as e,P as U,p as Z,g as H,v as I,q as et,i as Ce,d as X,a as se,s as E,X as tt}from"./index-DfbPMtFZ.js";import{u as rt}from"./useSecurity-BIHYjOoC.js";import{C as re,b as fe,c as me,a as te}from"./card-DN9U93Ar.js";import{u as nt,B as P,I as _e}from"./Combination-DdoM_vzj.js";import{A as ge,b as pe,a as xe}from"./avatar-BJUSXNbd.js";import{d as st,e as ve,B as be,H as at,F as ot}from"./Footer-DkkU8vMF.js";import{S as lt}from"./separator-CS87HMXq.js";import{c as it}from"./index-BdQq_4o_.js";import{s as ct}from"./sanitize-DeERsSn4.js";import{D as Ee,a as dt,b as Te,c as Pe,d as Re}from"./dialog-CUfzLZNo.js";import{T as ut}from"./textarea-B6myJTMQ.js";import{F as ht}from"./file-text-DmFZbXAT.js";import{S as ft}from"./square-pen-DF2sHq46.js";import{T as mt}from"./trash-2-CCxrRo8I.js";import{P as gt}from"./phone-B9YihfBx.js";import{f as we}from"./format-37ENh9yW.js";import{A as pt}from"./arrow-left-CSjVKsEU.js";import{I as xt}from"./image-BB9h9Mr0.js";import{d as Se}from"./de-BSRZDHuq.js";import{S as vt}from"./SEOHead-CT9CEd2t.js";import{B as bt}from"./Breadcrumbs-Xif6Qk4m.js";import"./shield-gTmsYmaS.js";/**
2 * @license lucide-react v0.462.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const wt=B("MicOff",[["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}],["path",{d:"M18.89 13.23A7.12 7.12 0 0 0 19 12v-2",key:"80xlxr"}],["path",{d:"M5 10v2a7 7 0 0 0 12 5",key:"p2k8kg"}],["path",{d:"M15 9.34V5a3 3 0 0 0-5.68-1.33",key:"1gzdoj"}],["path",{d:"M9 9v3a3 3 0 0 0 5.12 2.12",key:"r2i35w"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}]]);/**
7 * @license lucide-react v0.462.0 - ISC
8 *
9 * This source code is licensed under the ISC license.
10 * See the LICENSE file in the root directory of this source tree.
11 */const St=B("Mic",[["path",{d:"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z",key:"131961"}],["path",{d:"M19 10v2a7 7 0 0 1-14 0v-2",key:"1vc78b"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}]]);/**
12 * @license lucide-react v0.462.0 - ISC
13 *
14 * This source code is licensed under the ISC license.
15 * See the LICENSE file in the root directory of this source tree.
16 */const je=B("PhoneOff",[["path",{d:"M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91",key:"z86iuo"}],["line",{x1:"22",x2:"2",y1:"2",y2:"22",key:"11kh81"}]]);/**
17 * @license lucide-react v0.462.0 - ISC
18 *
19 * This source code is licensed under the ISC license.
20 * See the LICENSE file in the root directory of this source tree.
21 */const jt=B("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);/**
22 * @license lucide-react v0.462.0 - ISC
23 *
24 * This source code is licensed under the ISC license.
25 * See the LICENSE file in the root directory of this source tree.
26 */const ye=B("VideoOff",[["path",{d:"M10.66 6H14a2 2 0 0 1 2 2v2.5l5.248-3.062A.5.5 0 0 1 22 7.87v8.196",key:"w8jjjt"}],["path",{d:"M16 16a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2",key:"1xawa7"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/**
27 * @license lucide-react v0.462.0 - ISC
28 *
29 * This source code is licensed under the ISC license.
30 * See the LICENSE file in the root directory of this source tree.
31 */const ne=B("Video",[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5",key:"ftymec"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2",key:"158x01"}]]);function yt(t,s){return a.useReducer((r,l)=>s[r][l]??r,t)}var ae="ScrollArea",[ke,dr]=Qe(ae),[Nt,M]=ke(ae),Ae=a.forwardRef((t,s)=>{const{__scopeScrollArea:r,type:l="hover",dir:o,scrollHideDelay:n=600,...i}=t,[c,d]=a.useState(null),[u,h]=a.useState(null),[m,g]=a.useState(null),[x,N]=a.useState(null),[v,C]=a.useState(null),[p,_]=a.useState(0),[O,A]=a.useState(0),[V,k]=a.useState(!1),[w,b]=a.useState(!1),j=W(s,T=>d(T)),y=nt(o);return e.jsx(Nt,{scope:r,type:l,dir:y,scrollHideDelay:n,scrollArea:c,viewport:u,onViewportChange:h,content:m,onContentChange:g,scrollbarX:x,onScrollbarXChange:N,scrollbarXEnabled:V,onScrollbarXEnabledChange:k,scrollbarY:v,onScrollbarYChange:C,scrollbarYEnabled:w,onScrollbarYEnabledChange:b,onCornerWidthChange:_,onCornerHeightChange:A,children:e.jsx(U.div,{dir:y,...i,ref:j,style:{position:"relative","--radix-scroll-area-corner-width":p+"px","--radix-scroll-area-corner-height":O+"px",...t.style}})})});Ae.displayName=ae;var De="ScrollAreaViewport",Me=a.forwardRef((t,s)=>{const{__scopeScrollArea:r,children:l,nonce:o,...n}=t,i=M(De,r),c=a.useRef(null),d=W(s,c,i.onViewportChange);return e.jsxs(e.Fragment,{children:[e.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),e.jsx(U.div,{"data-radix-scroll-area-viewport":"",...n,ref:d,style:{overflowX:i.scrollbarXEnabled?"scroll":"hidden",overflowY:i.scrollbarYEnabled?"scroll":"hidden",...t.style},children:e.jsx("div",{ref:i.onContentChange,style:{minWidth:"100%",display:"table"},children:l})})]})});Me.displayName=De;var z="ScrollAreaScrollbar",oe=a.forwardRef((t,s)=>{const{forceMount:r,...l}=t,o=M(z,t.__scopeScrollArea),{onScrollbarXEnabledChange:n,onScrollbarYEnabledChange:i}=o,c=t.orientation==="horizontal";return a.useEffect(()=>(c?n(!0):i(!0),()=>{c?n(!1):i(!1)}),[c,n,i]),o.type==="hover"?e.jsx(Ct,{...l,ref:s,forceMount:r}):o.type==="scroll"?e.jsx(_t,{...l,ref:s,forceMount:r}):o.type==="auto"?e.jsx(Ve,{...l,ref:s,forceMount:r}):o.type==="always"?e.jsx(le,{...l,ref:s}):null});oe.displayName=z;var Ct=a.forwardRef((t,s)=>{const{forceMount:r,...l}=t,o=M(z,t.__scopeScrollArea),[n,i]=a.useState(!1);return a.useEffect(()=>{const c=o.scrollArea;let d=0;if(c){const u=()=>{window.clearTimeout(d),i(!0)},h=()=>{d=window.setTimeout(()=>i(!1),o.scrollHideDelay)};return c.addEventListener("pointerenter",u),c.addEventListener("pointerleave",h),()=>{window.clearTimeout(d),c.removeEventListener("pointerenter",u),c.removeEventListener("pointerleave",h)}}},[o.scrollArea,o.scrollHideDelay]),e.jsx(Z,{present:r||n,children:e.jsx(Ve,{"data-state":n?"visible":"hidden",...l,ref:s})})}),_t=a.forwardRef((t,s)=>{const{forceMount:r,...l}=t,o=M(z,t.__scopeScrollArea),n=t.orientation==="horizontal",i=Q(()=>d("SCROLL_END"),100),[c,d]=yt("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return a.useEffect(()=>{if(c==="idle"){const u=window.setTimeout(()=>d("HIDE"),o.scrollHideDelay);return()=>window.clearTimeout(u)}},[c,o.scrollHideDelay,d]),a.useEffect(()=>{const u=o.viewport,h=n?"scrollLeft":"scrollTop";if(u){let m=u[h];const g=()=>{const x=u[h];m!==x&&(d("SCROLL"),i()),m=x};return u.addEventListener("scroll",g),()=>u.removeEventListener("scroll",g)}},[o.viewport,n,d,i]),e.jsx(Z,{present:r||c!=="hidden",children:e.jsx(le,{"data-state":c==="hidden"?"hidden":"visible",...l,ref:s,onPointerEnter:H(t.onPointerEnter,()=>d("POINTER_ENTER")),onPointerLeave:H(t.onPointerLeave,()=>d("POINTER_LEAVE"))})})}),Ve=a.forwardRef((t,s)=>{const r=M(z,t.__scopeScrollArea),{forceMount:l,...o}=t,[n,i]=a.useState(!1),c=t.orientation==="horizontal",d=Q(()=>{if(r.viewport){const u=r.viewport.offsetWidth<r.viewport.scrollWidth,h=r.viewport.offsetHeight<r.viewport.scrollHeight;i(c?u:h)}},10);return F(r.viewport,d),F(r.content,d),e.jsx(Z,{present:l||n,children:e.jsx(le,{"data-state":n?"visible":"hidden",...o,ref:s})})}),le=a.forwardRef((t,s)=>{const{orientation:r="vertical",...l}=t,o=M(z,t.__scopeScrollArea),n=a.useRef(null),i=a.useRef(0),[c,d]=a.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),u=He(c.viewport,c.content),h={...l,sizes:c,onSizesChange:d,hasThumb:u>0&&u<1,onThumbChange:g=>n.current=g,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:g=>i.current=g};function m(g,x){return At(g,i.current,c,x)}return r==="horizontal"?e.jsx(Et,{...h,ref:s,onThumbPositionChange:()=>{if(o.viewport&&n.current){const g=o.viewport.scrollLeft,x=Ne(g,c,o.dir);n.current.style.transform=`translate3d(${x}px, 0, 0)`}},onWheelScroll:g=>{o.viewport&&(o.viewport.scrollLeft=g)},onDragScroll:g=>{o.viewport&&(o.viewport.scrollLeft=m(g,o.dir))}}):r==="vertical"?e.jsx(Tt,{...h,ref:s,onThumbPositionChange:()=>{if(o.viewport&&n.current){const g=o.viewport.scrollTop,x=Ne(g,c);n.current.style.transform=`translate3d(0, ${x}
31px, 0)`}},onWheelScroll:g=>{o.viewport&&(o.viewport.scrollTop=g)},onDragScroll:g=>{o.viewport&&(o.viewport.scrollTop=m(g))}}):null}),Et=a.forwardRef((t,s)=>{const{sizes:r,onSizesChange:l,...o}=t,n=M(z,t.__scopeScrollArea),[i,c]=a.useState(),d=a.useRef(null),u=W(s,d,n.onScrollbarXChange);return a.useEffect(()=>{d.current&&c(getComputedStyle(d.current))},[d]),e.jsx(ze,{"data-orientation":"horizontal",...o,ref:u,sizes:r,style:{bottom:0,left:n.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:n.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":G(r)+"px",...t.style},onThumbPointerDown:h=>t.onThumbPointerDown(h.x),onDragScroll:h=>t.onDragScroll(h.x),onWheelScroll:(h,m)=>{if(n.viewport){const g=n.viewport.scrollLeft+h.deltaX;t.onWheelScroll(g),Be(g,m)&&h.preventDefault()}},onResize:()=>{d.current&&n.viewport&&i&&l({content:n.viewport.scrollWidth,viewport:n.viewport.offsetWidth,scrollbar:{size:d.current.clientWidth,paddingStart:K(i.paddingLeft),paddingEnd:K(i.paddingRight)}})}})}),Tt=a.forwardRef((t,s)=>{const{sizes:r,onSizesChange:l,...o}=t,n=M(z,t.__scopeScrollArea),[i,c]=a.useState(),d=a.useRef(null),u=W(s,d,n.onScrollbarYChange);return a.useEffect(()=>{d.current&&c(getComputedStyle(d.current))},[d]),e.jsx(ze,{"data-orientation":"vertical",...o,ref:u,sizes:r,style:{top:0,right:n.dir==="ltr"?0:void 0,left:n.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":G(r)+"px",...t.style},onThumbPointerDown:h=>t.onThumbPointerDown(h.y),onDragScroll:h=>t.onDragScroll(h.y),onWheelScroll:(h,m)=>{if(n.viewport){const g=n.viewport.scrollTop+h.deltaY;t.onWheelScroll(g),Be(g,m)&&h.preventDefault()}},onResize:()=>{d.current&&n.viewport&&i&&l({content:n.viewport.scrollHeight,viewport:n.viewport.offsetHeight,scrollbar:{size:d.current.clientHeight,paddingStart:K(i.paddingTop),paddingEnd:K(i.paddingBottom)}})}})}),[Pt,Oe]=ke(z),ze=a.forwardRef((t,s)=>{const{__scopeScrollArea:r,sizes:l,hasThumb:o,onThumbChange:n,onThumbPointerUp:i,onThumbPointerDown:c,onThumbPositionChange:d,onDragScroll:u,onWheelScroll:h,onResize:m,...g}=t,x=M(z,r),[N,v]=a.useState(null),C=W(s,j=>v(j)),p=a.useRef(null),_=a.useRef(""),O=x.viewport,A=l.content-l.viewport,V=I(h),k=I(d),w=Q(m,10);function b(j){if(p.current){const y=j.clientX-p.current.left,T=j.clientY-p.current.top;u({x:y,y:T})}}return a.useEffect(()=>{const j=y=>{const T=y.target;(N==null?void 0:N.contains(T))&&V(y,A)};return document.addEventListener("wheel",j,{passive:!1}),()=>document.removeEventListener("wheel",j,{passive:!1})},[O,N,A,V]),a.useEffect(k,[l,k]),F(N,w),F(x.content,w),e.jsx(Pt,{scope:r,scrollbar:N,hasThumb:o,onThumbChange:I(n),onThumbPointerUp:I(i),onThumbPositionChange:k,onThumbPointerDown:I(c),children:e.jsx(U.div,{...g,ref:C,style:{position:"absolute",...g.style},onPointerDown:H(t.onPointerDown,j=>{j.button===0&&(j.target.setPointerCapture(j.pointerId),p.current=N.getBoundingClientRect(),_.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",x.viewport&&(x.viewport.style.scrollBehavior="auto"),b(j))}),onPointerMove:H(t.onPointerMove,b),onPointerUp:H(t.onPointerUp,j=>{const y=j.target;y.hasPointerCapture(j.pointerId)&&y.releasePointerCapture(j.pointerId),document.body.style.webkitUserSelect=_.current,x.viewport&&(x.viewport.style.scrollBehavior=""),p.current=null})})})}),q="ScrollAreaThumb",Le=a.forwardRef((t,s)=>{const{forceMount:r,...l}=t,o=Oe(q,t.__scopeScrollArea);return e.jsx(Z,{present:r||o.hasThumb,children:e.jsx(Rt,{ref:s,...l})})}),Rt=a.forwardRef((t,s)=>{const{__scopeScrollArea:r,style:l,...o}=t,n=M(q,r),i=Oe(q,r),{onThumbPositionChange:c}=i,d=W(s,m=>i.onThumbChange(m)),u=a.useRef(void 0),h=Q(()=>{u.current&&(u.current(),u.current=void 0)},100);return a.useEffect(()=>{const m=n.viewport;if(m){const g=()=>{if(h(),!u.current){const x=Dt(m,c);u.current=x,c()}};return c(),m.addEventListener("scroll",g),()=>m.removeEventListener("scroll",g)}},[n.viewport,h,c]),e.jsx(U.div,{"data-state":i.hasThumb?"visible":"hidden",...o,ref:d,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...l},onPointerDownCapture:H(t.onPointerDownCapture,m=>{const x=m.target.getBoundingClientRect(),N=m.clientX-x.left,v=m.clientY-x.top;i.onThumbPointerDown({x:N,y:v})}),onPointerUp:H(t.onPointerUp,i.onThumbPointerUp)})});
31Le.displayName=q;var ie="ScrollAreaCorner",Ie=a.forwardRef((t,s)=>{const r=M(ie,t.__scopeScrollArea),l=!!(r.scrollbarX&&r.scrollbarY);return r.type!=="scroll"&&l?e.jsx(kt,{...t,ref:s}):null});Ie.displayName=ie;var kt=a.forwardRef((t,s)=>{const{__scopeScrollArea:r,...l}=t,o=M(ie,r),[n,i]=a.useState(0),[c,d]=a.useState(0),u=!!(n&&c);return F(o.scrollbarX,()=>{var m;const h=((m=o.scrollbarX)==null?void 0:m.offsetHeight)||0;o.onCornerHeightChange(h),d(h)}),F(o.scrollbarY,()=>{var m;const h=((m=o.scrollbarY)==null?void 0:m.offsetWidth)||0;o.onCornerWidthChange(h),i(h)}),u?e.jsx(U.div,{...l,ref:s,style:{width:n,height:c,position:"absolute",right:o.dir==="ltr"?0:void 0,left:o.dir==="rtl"?0:void 0,bottom:0,...t.style}}):null});function K(t){return t?parseInt(t,10):0}function He(t,s){const r=t/s;return isNaN(r)?0:r}function G(t){const s=He(t.viewport,t.content),r=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,l=(t.scrollbar.size-r)*s;return Math.max(l,18)}function At(t,s,r,l="ltr"){const o=G(r),n=o/2,i=s||n,c=o-i,d=r.scrollbar.paddingStart+i,u=r.scrollbar.size-r.scrollbar.paddingEnd-c,h=r.content-r.viewport,m=l==="ltr"?[0,h]:[h*-1,0];return Fe([d,u],m)(t)}function Ne(t,s,r="ltr"){const l=G(s),o=s.scrollbar.paddingStart+s.scrollbar.paddingEnd,n=s.scrollbar.size-o,i=s.content-s.viewport,c=n-l,d=r==="ltr"?[0,i]:[i*-1,0],u=it(t,d);return Fe([0,i],[0,c])(u)}function Fe(t,s){return r=>{if(t[0]===t[1]||s[0]===s[1])return s[0];const l=(s[1]-s[0])/(t[1]-t[0]);return s[0]+l*(r-t[0])}}function Be(t,s){return t>0&&t<s}var Dt=(t,s=()=>{})=>{let r={left:t.scrollLeft,top:t.scrollTop},l=0;return function o(){const n={left:t.scrollLeft,top:t.scrollTop},i=r.left!==n.left,c=r.top!==n.top;(i||c)&&s(),r=n,l=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(l)};function Q(t,s){const r=I(t),l=a.useRef(0);return a.useEffect(()=>()=>window.clearTimeout(l.current),[]),a.useCallback(()=>{window.clearTimeout(l.current),l.current=window.setTimeout(r,s)},[r,s])}function F(t,s){const r=I(s);et(()=>{let l=0;if(t){const o=new ResizeObserver(()=>{cancelAnimationFrame(l),l=window.requestAnimationFrame(r)});return o.observe(t),()=>{window.cancelAnimationFrame(l),o.unobserve(t)}}},[t,r])}var We=Ae,Mt=Me,Vt=Ie;const J=a.forwardRef(({className:t,children:s,...r},l)=>e.jsxs(We,{ref:l,className:Ce("relative overflow-hidden",t),...r,children:[e.jsx(Mt,{className:"h-full w-full rounded-[inherit]",children:s}),e.jsx(Ue,{}),e.jsx(Vt,{})]}));J.displayName=We.displayName;const Ue=a.forwardRef(({className:t,orientation:s="vertical",...r},l)=>e.jsx(oe,{ref:l,orientation:s,className:Ce("flex touch-none select-none transition-colors",s==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",s==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",t),...r,children:e.jsx(Le,{className:"relative flex-1 rounded-full bg-border"})}));Ue.displayName=oe.displayName;const Ot=({onSelectTemplate:t})=>{const{user:s}=X(),{toast:r}=se(),[l,o]=a.useState([]),[n,i]=a.useState(!1),[c,d]=a.useState(null),[u,h]=a.useState(""),[m,g]=a.useState("");a.useEffect(()=>{s&&x()},[s]);const x=async()=>{try{const{data:p,error:_}=await E.from("message_templates").select("*").order("created_at",{ascending:!1});if(_)throw _;o(p||[])}catch(p){console.error("Error fetching templates:",p)}},N=async()=>{if(!u.trim()||!m.trim()){r({title:"Fehler",description:"Titel und Inhalt sind erforderlich.",variant:"destructive"});return}try{if(c){const{error:p}=await E.from("message_templates").update({title:u,content:m}).eq("id",c.id);if(p)throw p;r({title:"Vorlage aktualisiert",description:"Die Vorlage wurde erfolgreich aktualisiert."})}else{const{error:p}=await E.from("message_templates").insert({title:u,content:m,user_id:s==null?void 0:s.id});if(p)throw p;r({title:"Vorlage erstellt",description:"Die Vorlage wurde erfolgreich erstellt."})}h(""),g(""),d(null),x()}catch(p){console.error("Error saving template:",p),r({title:"Fehler",description:"Vorlage konnte nicht gespeichert werden.",variant:"destructive"})}},v=async p=>{try{const{error:_}=await E.from("message_templates").delete().eq("id",p);if(_)throw _;r({title:"Vorlage gelöscht",description:"Die Vorlage wurde erfolgreich gelöscht."}),x()}catch(_){console.error("Error deleting template:",_),r({title:"Fehler",description:"Vorlage konnte nicht gelöscht werden.",variant:"destructive"})}},C=p=>{d(p),h(p.title),g(p.content)};return e.jsxs(Ee,{open:n,onOpenChange:i,children:[e.jsx(dt,{asChild:!0,children:e.jsxs(P,{variant:"outline",size:"sm",children:[e.jsx(ht,{className:"h-4 w-4 mr-2"}),"Vorlagen"]})}),e.jsxs(Te,{className:"max-w-2xl",children:[e.jsx(Pe,{children:e.jsx(Re,{children:"Nachrichtenvorlagen"})}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-3 p-4 border rounded-lg",children:[e.jsx(_e,{placeholder:"Vorlagentitel",value:u,onChange:p=>h(p.target.value)}),e.jsx(ut,{placeholder:"Nachrichteninhalt",value:m,onChange:p=>g(p.target.value),rows:4}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(P,{onClick:N,size:"sm",children:[e.jsx(st,{className:"h-4 w-4 mr-2"}),c?"Aktualisieren":"Speichern"]}),c&&e.jsx(P,{variant:"outline",size:"sm",onClick:()=>{d(null),h(""),g("")},children:"Abbrechen"})]})]}),e.jsx(J,{className:"h-[300px]",children:e.jsx("div",{className:"space-y-2",children:l.map(p=>e.jsx("div",{className:"p-3 border rounded-lg hover:bg-accent/50 transition-colors",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsx("h4",{className:"font-medium text-sm",children:p.title}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:p.content})]}),e.jsxs("div",{className:"flex gap-1 ml-2",children:[e.jsx(P,{variant:"ghost",size:"sm",onClick:()=>{t(p.content),i(!1),r({title:"Vorlage eingefügt",description:"Die Vorlage wurde in die Nachricht eingefügt."})},children:"Verwenden"}),e.jsx(P,{variant:"ghost",size:"icon",onClick:()=>C(p),children:e.jsx(ft,{className:"h-4 w-4"})}),!p.is_default&&e.jsx(P,{variant:"ghost",size:"icon",onClick:()=>v(p.id),children:e.jsx(mt,{className:"h-4 w-4"})})]})]})},p.id))})})]})]})]})}
31,zt=t=>{const{user:s}=X(),[r,l]=a.useState([]),[o,n]=a.useState(null);return a.useEffect(()=>{if(!t||!s)return;const c=E.channel(`typing:${t}`);return c.on("presence",{event:"sync"},()=>{const d=c.presenceState(),u=[];Object.values(d).forEach(h=>{h.forEach(m=>{m.user_id!==s.id&&m.typing&&u.push({user_id:m.user_id,user_name:m.user_name})})}),l(u)}).subscribe(async d=>{var u;d==="SUBSCRIBED"&&await c.track({user_id:s.id,user_name:((u=s.email)==null?void 0:u.split("@")[0])||"User",typing:!1,online_at:new Date().toISOString()})}),n(c),()=>{c.unsubscribe()}},[t,s]),{typingUsers:r,setTyping:async c=>{var d;!o||!s||await o.track({user_id:s.id,user_name:((d=s.email)==null?void 0:d.split("@")[0])||"User",typing:c,online_at:new Date().toISOString()})}}},Lt=t=>{const{user:s}=X(),[r,l]=a.useState(!1),[o,n]=a.useState(null);return a.useEffect(()=>{if(!t)return;const i=E.channel(`online:${t}`);return i.on("presence",{event:"sync"},()=>{const d=i.presenceState()[t];if(d&&d.length>0){const u=d[0];l(!0),u.online_at&&n(new Date(u.online_at))}else l(!1)}).subscribe(),()=>{i.unsubscribe()}},[t]),a.useEffect(()=>{if(!s)return;const i=E.channel(`online:${s.id}`);i.subscribe(async d=>{d==="SUBSCRIBED"&&await i.track({user_id:s.id,online_at:new Date().toISOString()})});const c=setInterval(async()=>{await i.track({user_id:s.id,online_at:new Date().toISOString()})},3e4);return()=>{clearInterval(c),i.unsubscribe()}},[s]),{isOnline:r,lastSeen:o}},It=({conversationId:t,remoteUserId:s})=>{const{user:r}=X(),[l,o]=a.useState(null),[n,i]=a.useState(null),[c,d]=a.useState(!1),[u,h]=a.useState(!1),[m,g]=a.useState(!1),[x,N]=a.useState(!1),v=a.useRef(null),C=a.useRef(null),p={iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun1.l.google.com:19302"}]};a.useEffect(()=>{if(!t||!r)return;const w=E.channel(`video-call:${t}`);return w.on("broadcast",{event:"offer"},async({payload:b})=>{b.to===r.id&&(h(!0),sessionStorage.setItem(`offer-${t}`,JSON.stringify(b.offer)))}).on("broadcast",{event:"answer"},async({payload:b})=>{b.to===r.id&&v.current&&await v.current.setRemoteDescription(new RTCSessionDescription(b.answer))}).on("broadcast",{event:"ice-candidate"},async({payload:b})=>{b.to===r.id&&v.current&&await v.current.addIceCandidate(new RTCIceCandidate(b.candidate))}).on("broadcast",{event:"end-call"},({payload:b})=>{b.to===r.id&&A()}).subscribe(),C.current=w,()=>{w.unsubscribe(),l&&l.getTracks().forEach(b=>b.stop()),v.current&&v.current.close()}},[t,r]);const _=async()=>{var w;try{const b=await navigator.mediaDevices.getUserMedia({video:!0,audio:!0});o(b),v.current=new RTCPeerConnection(p),b.getTracks().forEach(y=>{var T;(T=v.current)==null||T.addTrack(y,b)}),v.current.ontrack=y=>{i(y.streams[0])},v.current.onicecandidate=y=>{y.candidate&&C.current&&C.current.send({type:"broadcast",event:"ice-candidate",payload:{to:s,candidate:y.candidate}})};const j=await v.current.createOffer();await v.current.setLocalDescription(j),(w=C.current)==null||w.send({type:"broadcast",event:"offer",payload:{to:s,offer:j}}),d(!0)}catch(b){throw console.error("Error starting call:",b),b}},O=async()=>{var w;try{const b=sessionStorage.getItem(`offer-${t}`);if(!b)return;const j=JSON.parse(b),y=await navigator.mediaDevices.getUserMedia({video:!0,audio:!0});o(y),v.current=new RTCPeerConnection(p),y.getTracks().forEach(L=>{var $;($=v.current)==null||$.addTrack(L,y)}),v.current.ontrack=L=>{i(L.streams[0])},v.current.onicecandidate=L=>{L.candidate&&C.current&&C.current.send({type:"broadcast",event:"ice-candidate",payload:{to:s,candidate:L.candidate}})},await v.current.setRemoteDescription(new RTCSessionDescription(j));const T=await v.current.createAnswer();await v.current.setLocalDescription(T),(w=C.current)==null||w.send({type:"broadcast",event:"answer",payload:{to:s,answer:T}}),d(!0),h(!1),sessionStorage.removeItem(`offer-${t}`)}catch(b){throw console.error("Error accepting call:",b),b}},A=()=>{C.current&&C.current.send({type:"broadcast",event:"end-call",payload:{to:s}}),l&&(l.getTracks().forEach(w=>w.stop()),o(null)),v.current&&(v.current.close(),v.current=null),i(null),d(!1),h(!1)};
31return{localStream:l,remoteStream:n,isCallActive:c,isIncomingCall:u,isMuted:m,isVideoOff:x,startCall:_,acceptCall:O,endCall:A,toggleMute:()=>{if(l){const w=l.getAudioTracks()[0];w&&(w.enabled=!w.enabled,g(!w.enabled))}},toggleVideo:()=>{if(l){const w=l.getVideoTracks()[0];w&&(w.enabled=!w.enabled,N(!w.enabled))}}}},Ht=({conversationId:t,remoteUserId:s,remoteUserName:r,isOpen:l,onClose:o})=>{const{toast:n}=se(),i=a.useRef(null),c=a.useRef(null),{localStream:d,remoteStream:u,isCallActive:h,isIncomingCall:m,isMuted:g,isVideoOff:x,startCall:N,acceptCall:v,endCall:C,toggleMute:p,toggleVideo:_}=It({conversationId:t,remoteUserId:s});a.useEffect(()=>{i.current&&d&&(i.current.srcObject=d)},[d]),a.useEffect(()=>{c.current&&u&&(c.current.srcObject=u)},[u]);const O=async()=>{try{await N(),n({title:"Anruf gestartet",description:`Rufe ${r} an...`})}catch{n({title:"Fehler",description:"Videoanruf konnte nicht gestartet werden. Bitte Kamera- und Mikrofon-Berechtigungen prüfen.",variant:"destructive"})}},A=async()=>{try{await v(),n({title:"Anruf angenommen",description:`Verbunden mit ${r}`})}catch{n({title:"Fehler",description:"Anruf konnte nicht angenommen werden.",variant:"destructive"})}},V=()=>{C(),o(),n({title:"Anruf beendet",description:"Der Videoanruf wurde beendet."})};return e.jsx(Ee,{open:l,onOpenChange:o,children:e.jsxs(Te,{className:"max-w-4xl h-[80vh]",children:[e.jsx(Pe,{children:e.jsxs(Re,{children:["Videoanruf mit ",r]})}),e.jsxs("div",{className:"flex-1 relative",children:[m&&!h&&e.jsx("div",{className:"absolute inset-0 flex flex-col items-center justify-center bg-background z-10",children:e.jsxs("div",{className:"text-center space-y-4",children:[e.jsx("div",{className:"text-2xl font-bold",children:r}),e.jsx("p",{className:"text-muted-foreground",children:"Eingehender Videoanruf..."}),e.jsxs("div",{className:"flex gap-4",children:[e.jsxs(P,{size:"lg",className:"bg-green-600 hover:bg-green-700",onClick:A,children:[e.jsx(gt,{className:"h-5 w-5 mr-2"}),"Annehmen"]}),e.jsxs(P,{size:"lg",variant:"destructive",onClick:V,children:[e.jsx(je,{className:"h-5 w-5 mr-2"}),"Ablehnen"]})]})]})}),!h&&!m&&e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs(P,{size:"lg",onClick:O,children:[e.jsx(ne,{className:"h-5 w-5 mr-2"}),"Videoanruf starten"]})}),h&&e.jsxs("div",{className:"h-full flex flex-col gap-4",children:[e.jsxs("div",{className:"flex-1 bg-black rounded-lg overflow-hidden relative",children:[e.jsx("video",{ref:c,autoPlay:!0,playsInline:!0,className:"w-full h-full object-cover"}),!u&&e.jsx("div",{className:"absolute inset-0 flex items-center justify-center bg-muted",children:e.jsxs("p",{className:"text-muted-foreground",children:["Warte auf ",r,"..."]})})]}),e.jsxs(re,{className:"absolute bottom-20 right-4 w-48 h-36 overflow-hidden",children:[e.jsx("video",{ref:i,autoPlay:!0,playsInline:!0,muted:!0,className:"w-full h-full object-cover"}),x&&e.jsx("div",{className:"absolute inset-0 flex items-center justify-center bg-muted",children:e.jsx(ye,{className:"h-8 w-8 text-muted-foreground"})})]}),e.jsxs("div",{className:"flex items-center justify-center gap-4 pb-4",children:[e.jsx(P,{size:"icon",variant:g?"destructive":"secondary",onClick:p,className:"rounded-full h-12 w-12",children:g?e.jsx(wt,{className:"h-5 w-5"}):e.jsx(St,{className:"h-5 w-5"})}),e.jsx(P,{size:"icon",variant:x?"destructive":"secondary",onClick:_,className:"rounded-full h-12 w-12",children:x?e.jsx(ye,{className:"h-5 w-5"}):e.jsx(ne,{className:"h-5 w-5"})}),e.jsx(P,{size:"icon",variant:"destructive",onClick:V,className:"rounded-full h-12 w-12",children:e.jsx(je,{className:"h-5 w-5"})})]})]})]})]})})},Ft=()=>{var he;const{user:t}=X(),{canUserMessage:s}=rt(),{toast:r}=se(),[l,o]=a.useState([]),[n,i]=a.useState(null),[c,d]=a.useState([]),[u,h]=a.useState(""),[m,g]=a.useState(!0),[x,N]=a.useState(!1),[v,C]=a.useState(!1),[p,_]=a.useState(null),[O,A]=a.useState(null),V=a.useRef(null),k=a.useRef(null),w=a.useRef(null),[b,j]=a.useState(!1),{typingUsers:y,setTyping:T}=zt((n==null?void 0:n.id)||null),{isOnline:L}
31=Lt((n==null?void 0:n.other_user_id)||null);a.useEffect(()=>{if(t)return ee(),qe()},[t]),a.useEffect(()=>{n&&(Xe(n.id),ce(n.id))},[n]),a.useEffect(()=>{$()},[c]);const $=()=>{var f;(f=V.current)==null||f.scrollIntoView({behavior:"smooth"})},ee=async()=>{try{const{data:f,error:S}=await E.rpc("get_user_conversations");if(S)throw S;o(f||[])}catch(f){console.error("Error fetching conversations:",f),r({title:"Fehler",description:"Konversationen konnten nicht geladen werden.",variant:"destructive"})}finally{g(!1)}},Xe=async f=>{try{const{data:S,error:D}=await E.from("messages").select("*").eq("conversation_id",f).order("created_at",{ascending:!0});if(D)throw D;d(S||[])}catch(S){console.error("Error fetching messages:",S),r({title:"Fehler",description:"Nachrichten konnten nicht geladen werden.",variant:"destructive"})}},ce=async f=>{try{await E.from("messages").update({is_read:!0}).eq("conversation_id",f).neq("sender_id",t==null?void 0:t.id)}catch(S){console.error("Error marking messages as read:",S)}},$e=f=>{var D;const S=(D=f.target.files)==null?void 0:D[0];if(S){if(S.size>5*1024*1024){r({title:"Datei zu groß",description:"Die Bilddatei darf maximal 5 MB groß sein.",variant:"destructive"});return}_(S);const R=new FileReader;R.onloadend=()=>{A(R.result)},R.readAsDataURL(S)}},de=()=>{_(null),A(null),k.current&&(k.current.value="")},Ye=async f=>{try{C(!0);const S=f.name.split(".").pop(),R=`message-images/${`${Math.random()}.${S}`}`,{error:Y}=await E.storage.from("listing-images").upload(R,f);if(Y)throw Y;const{data:{publicUrl:Ge}}=E.storage.from("listing-images").getPublicUrl(R);return Ge}catch(S){return console.error("Error uploading image:",S),r({title:"Upload-Fehler",description:"Bild konnte nicht hochgeladen werden.",variant:"destructive"}),null}finally{C(!1)}},ue=async()=>{if(!u.trim()&&!p||!n||!t)return;if(!await s(t.id,n.other_user_id)){r({title:"Nachricht blockiert",description:"Sie können diesem Nutzer keine Nachrichten senden.",variant:"destructive"});return}N(!0);try{let S=null;if(p&&(S=await Ye(p),!S&&!u.trim())){N(!1);return}const D=u.trim()?ct(u.trim()):"",{error:R}=await E.from("messages").insert({conversation_id:n.id,sender_id:t.id,content:D,image_url:S});if(R)throw R;await Ze(n.other_user_id,n.id),h(""),de(),T(!1)}catch(S){console.error("Error sending message:",S),r({title:"Fehler",description:"Nachricht konnte nicht gesendet werden.",variant:"destructive"})}finally{N(!1)}},qe=()=>{const f=E.channel("messages-changes").on("postgres_changes",{event:"INSERT",schema:"public",table:"messages"},D=>{const R=D.new;(n==null?void 0:n.id)===R.conversation_id&&(d(Y=>[...Y,R]),R.sender_id!==(t==null?void 0:t.id)&&ce(R.conversation_id)),ee()}).subscribe(),S=E.channel("conversations-changes").on("postgres_changes",{event:"*",schema:"public",table:"conversations"},()=>{ee()}).subscribe();return()=>{E.removeChannel(f),E.removeChannel(S)}},Ke=()=>{T(!0),w.current&&clearTimeout(w.current),w.current=setTimeout(()=>{T(!1)},3e3)},Je=f=>{f.key==="Enter"&&!f.shiftKey&&(f.preventDefault(),ue(),T(!1))},Ze=async(f,S)=>{try{await E.rpc("send_notification",{_user_id:f,_title:"Neue Nachricht",_message:"Sie haben eine neue Nachricht erhalten.",_type:"message",_related_id:S})}catch(D){console.error("Error sending notification:",D)}};return m?e.jsx("div",{className:"flex items-center justify-center min-h-screen",children:e.jsx("div",{className:"animate-spin rounded-full h-32 w-32 border-b-2 border-primary"})}):e.jsxs("div",{className:"container mx-auto p-6 max-w-6xl",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6 h-[80vh]",children:[e.jsxs(re,{className:"lg:col-span-1",children:[e.jsx(fe,{children:e.jsxs(me,{className:"flex items-center gap-2",children:[e.jsx(ve,{className:"h-5 w-5"}),"Nachrichten"]})}),e.jsx(te,{className:"p-0",children:e.jsx(J,{className:"h-[60vh]",children:l.length===0?e.jsx("div",{className:"p-4 text-center text-muted-foreground",children:"Keine Konversationen vorhanden"}):l.map(f=>{var S;return e.jsx("div",{className:`p-4 cursor-pointer hover:bg-muted transition-colors border-b ${(n==null?void 0:n.id)===f.id?"bg-muted":""}`,onClick:()=>i(f),children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsxs(ge,{className:"h-10 w-10",children:[e.jsx(pe,{src:f.other_user_avatar||""}),e.jsx(xe,{children:((S=f.other_user_name)==null?void 0:S.charAt(0))||"?"})]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"font-medium text-sm truncate",children:f.other_user_name||"Unbekannt"}),f.unread_count>0&&e.jsx(be,{variant:"default",className:"ml-2",children:f.unread_count})]}),e.jsx("p",{className:"text-xs text-muted-foreground truncate",children:f.listing_title}),e.jsx("p",{className:"text-xs text-muted-foreground truncate mt-1",children:f.latest_message}),f.latest_message_time&&e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:we(new Date(f.latest_message_time),"dd.MM.yyyy HH:mm",{locale:Se})})]})]})},f.id)})})})]}),e.jsx(re,{className:"lg:col-span-2",children:n?e.jsxs(e.Fragment,{children:[e.jsx(fe,{className:"border-b",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(P,{variant:"ghost",size:"sm",className:"lg:hidden",onClick:()=>i(null),children:e.jsx(pt,{className:"h-4 w-4"})}),e.jsx(P,{variant:"outline",size:"icon",onClick:()=>j(!0),title:"Videoanruf starten",children:e.jsx(ne,{className:"h-4 w-4"})}),e.jsxs(ge,{className:"h-8 w-8",children:[e.jsx(pe,{src:n.other_user_avatar||""}),e.jsx(xe,{children:((he=n.other_user_name)==null?void 0:he.charAt(0))||"?"})]}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(me,{className:"text-lg",children:n.other_user_name||"Unbekannt"}),L&&e.jsx(be,{variant:"secondary",className:"bg-green-500/20 text-green-700 dark:text-green-400",children:"Online"})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:n.listing_title})]})]})}),e.jsxs(te,{className:"p-0",children:[e.jsxs(J,{className:"h-[50vh] p-4",children:[c.map(f=>e.jsx("div",{className:`mb-4 flex ${f.sender_id===(t==null?void 0:t.id)?"justify-end":"justify-start"}`,children:e.jsxs("div",{className:`max-w-[70%] p-3 rounded-lg ${f.sender_id===(t==null?void 0:t.id)?"bg-primary text-primary-foreground":"bg-muted"}`,children:[f.image_url&&e.jsx("img",{src:f.image_url,alt:"Anhang",className:"rounded-lg mb-2 max-w-full h-auto max-h-64 object-cover"}),f.content&&e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:f.content}),e.jsx("p",{className:`text-xs mt-1 ${f.sender_id===(t==null?void 0:t.id)?"text-primary-foreground
31/70":"text-muted-foreground"}`,children:we(new Date(f.created_at),"HH:mm",{locale:Se})})]})},f.id)),y.length>0&&e.jsx("div",{className:"mb-4 flex justify-start",children:e.jsx("div",{className:"max-w-[70%] p-3 rounded-lg bg-muted",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("div",{className:"flex gap-1",children:[e.jsx("div",{className:"w-2 h-2 bg-muted-foreground rounded-full animate-bounce",style:{animationDelay:"0ms"}}),e.jsx("div",{className:"w-2 h-2 bg-muted-foreground rounded-full animate-bounce",style:{animationDelay:"150ms"}}),e.jsx("div",{className:"w-2 h-2 bg-muted-foreground rounded-full animate-bounce",style:{animationDelay:"300ms"}})]}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[y[0].user_name," tippt..."]})]})})}),e.jsx("div",{ref:V})]}),e.jsx(lt,{}),e.jsxs("div",{className:"p-4 space-y-3",children:[O&&e.jsxs("div",{className:"relative inline-block",children:[e.jsx("img",{src:O,alt:"Vorschau",className:"h-20 w-20 object-cover rounded-lg border"}),e.jsx(P,{size:"icon",variant:"destructive",className:"absolute -top-2 -right-2 h-6 w-6 rounded-full",onClick:de,children:e.jsx(tt,{className:"h-3 w-3"})})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{ref:k,type:"file",accept:"image/*",className:"hidden",onChange:$e}),e.jsx(P,{variant:"outline",size:"icon",onClick:()=>{var f;return(f=k.current)==null?void 0:f.click()},disabled:x||v,children:e.jsx(xt,{className:"h-4 w-4"})}),e.jsx(Ot,{onSelectTemplate:h}),e.jsx(_e,{value:u,onChange:f=>{h(f.target.value),Ke()},onKeyPress:Je,placeholder:"Nachricht schreiben...",disabled:x||v,className:"flex-1"}),e.jsx(P,{onClick:ue,disabled:!u.trim()&&!p||x||v,size:"icon",children:e.jsx(jt,{className:"h-4 w-4"})})]})]})]})]}):e.jsx(te,{className:"flex items-center justify-center h-full",children:e.jsxs("div",{className:"text-center text-muted-foreground",children:[e.jsx(ve,{className:"h-12 w-12 mx-auto mb-4 opacity-50"}),e.jsx("p",{children:"Wählen Sie eine Konversation aus"})]})})})]}),n&&e.jsx(Ht,{conversationId:n.id,remoteUserId:n.other_user_id,remoteUserName:n.other_user_name,isOpen:b,onClose:()=>j(!1)})]})},ur=()=>e.jsxs(e.Fragment,{children:[e.jsx(vt,{title:"Nachrichten - FitnessProfi Marktplatz",description:"Verwalten Sie Ihre Nachrichten und Konversationen mit anderen Nutzern des FitnessProfi Marktplatzes.",keywords:"nachrichten, chat, konversationen, kommunikation, fitnessgeräte"}),e.jsx(at,{}),e.jsxs("div",{className:"container mx-auto p-6",children:[e.jsx(bt,{items:[{name:"Nachrichten",url:"/messages",current:!0}]}),e.jsx(Ft,{})]}),e.jsx(ot,{})]});export{ur as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.