vendor: 5,699 bytes, lines 1-6
1import{f as Se,r as g,k as he,j as e,l as fe,a0 as be,o as M,n as O,p as B,_ as Pe,a8 as ve,i as q,a as je,u as we,t as H,b as y,T as Ne}from"./index-C3Qps0S4.js";import{B as L}from"./button-xdpkFraK.js";import{S as U}from"./switch-TjY2ppeC.js";import{c as te}from"./index-BdQq_4o_.js";import{u as ye}from"./index-BBBp6CNx.js";import{C as R}from"./card-DtXeaqs_.js";import{B as ee}from"./badge-DBCec9J8.js";import{A as Ce}from"./arrow-left-AxGNO8ZF.js";import{S as ke}from"./shield-dycmF_Bu.js";import{R as Ae}from"./radio-j8lhV_9l.js";import{V as Ee}from"./volume-2-B2de-iZy.js";import{B as Re}from"./bell-BS0Ukiqj.js";import{F as _e}from"./filter-BhwTfzsC.js";import{C as De}from"./clock-CHw5d3NP.js";import{S as Me}from"./smartphone-B6eKunU3.js";import{C as Be}from"./circle-check-DmGdFs0e.js";import{C as Ie}from"./circle-x-BRy8Ip-h.js";import"./index-Jol-UBUv.js";/** 2 * @license lucide-react v0.453.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 Te=Se("PictureInPicture2",[["path",{d:"M21 9V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v10c0 1.1.9 2 2 2h4",key:"daa4of"}],["rect",{width:"10",height:"7",x:"12",y:"13",rx:"2",key:"1nb8gs"}]]);var se=["PageUp","PageDown"],ae=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],ne={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},I="Slider",[Q,Ke,Ve]=be(I),[ie]=fe(I,[Ve]),[ze,W]=ie(I),re=g.forwardRef((s,a)=>{const{name:n,min:t=0,max:r=100,step:c=1,orientation:l="horizontal",disabled:o=!1,minStepsBetweenThumbs:u=0,defaultValue:h=[t],value:P,onValueChange:d=()=>{},onValueCommit:x=()=>{},inverted:p=!1,form:N,...v}=s,S=g.useRef(new Set),m=g.useRef(0),j=l==="horizontal"?He:Le,[f=[],i]=he({prop:P,defaultProp:h,onChange:w=>{[...S.current][m.current]?.focus(),d(w)}}),b=g.useRef(f);function C(w){const A=Ye(f,w);V(w,A)}function T(w){V(w,m.current)}function K(){const w=b.current[m.current];f[m.current]!==w&&x(f)}function V(w,A,{commit:F}={commit:!1}){const Z=Ge(c),Y=Xe(Math.round((w-t)/c)*c+t,Z),z=te(Y,[t,r]);i((_=[])=>{const E=We(_,z,A);if($e(E,u*c)){m.current=E.indexOf(z);const J=String(E)!==String(_);return J&&F&&x(E),J?E:_}else return _})}return e.jsx(ze,{scope:s.__scopeSlider,name:n,disabled:o,min:t,max:r,valueIndexToChangeRef:m,thumbs:S.current,values:f,orientation:l,form:N,children:e.jsx(Q.Provider,{scope:s.__scopeSlider,children:e.jsx(Q.Slot,{scope:s.__scopeSlider,children:e.jsx(j,{"aria-disabled":o,"data-disabled":o?"":void 0,...v,ref:a,onPointerDown:M(v.onPointerDown,()=>{o||(b.current=f)}),min:t,max:r,inverted:p,onSlideStart:o?void 0:C,onSlideMove:o?void 0:T,onSlideEnd:o?void 0:K,onHomeKeyDown:()=>!o&&V(t,0,{commit:!0}),onEndKeyDown:()=>!o&&V(r,f.length-1,{commit:!0}),onStepKeyDown:({event:w,direction:A})=>{if(!o){const Y=se.includes(w.key)||w.shiftKey&&ae.includes(w.key)?10:1,z=m.current,_=f[z],E=c*Y*A;V(_+E,z,{commit:!0})}}})})})})});re.displayName=I;var[oe,ce]=ie(I,{startEdge:"left",endEdge:"right",size:"width",direction:1}),He=g.forwardRef((s,a)=>{const{min:n,max:t,dir:r,inverted:c,onSlideStart:l,onSlideMove:o,onSlideEnd:u,onStepKeyDown:h,...P}=s,[d,x]=g.useState(null),p=B(a,j=>x(j)),N=g.useRef(void 0),v=Pe(r),S=v==="ltr",m=S&&!c||!S&&c;function k(j){const f=N.current||d.getBoundingClientRect(),i=[0,f.width],C=X(i,m?[n,t]:[t,n]);return N.current=f,C(j-f.left)}return e.jsx(oe,{scope:s.__scopeSlider,startEdge:m?"left":"right",endEdge:m?"right":"left",direction:m?1:-1,size:"width",children:e.jsx(le,{dir:v,"data-orientation":"horizontal",...P,ref:p,style:{...P.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:j=>{const f=k(j.clientX);l?.(f)},onSlideMove:j=>{const f=k(j.clientX);o?.(f)},onSlideEnd:()=>{N.current=void 0,u?.()},onStepKeyDown:j=>{const i=ne[m?"from-left":"from-right"].includes(j.key);h?.({event:j,direction:i?-1:1})}})})}),Le=g.forwardRef((s,a)=>{const{min:n,max:t,inverted:r,onSlideStart:c,onSlideMove:l,onSlideEnd:o,onStepKeyDown:u,...h}=s,P=g.useRef(null),d=B(a,P),x=g.useRef(void 0),p=!r;function N(v){const S=x.current||P.current.getBoundingClientRect(),m=[0,S.height],j=X(m,p?[t,n]:[n,t]);return x.current=S,j(v-S.top)}return e.jsx(oe,{scope:s.__scopeSlider,startEdge:p?"bottom":"top",endEdge:p?"top":"bottom",size:"height",direction:p?1:-1,children:e.jsx(le,{"data-orientation":"vertical",...h,ref:d,style:{...h.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:v=>{const S=N(v.clientY);c?.(S)},onSlideMove:v=>{const S=N(v.clientY);l?.(S)},onSlideEnd:()=>{x.current=void 0,o?.()},onStepKeyDown:v=>{const m=ne[p?"from-bottom":"from-top"].includes(v.key);u?.({event:v,direction:m?-1:1})}})})}),le=g.forwardRef((s,a)=>{const{__scopeSlider:n,onSlideStart:t,onSlideMove:r,onSlideEnd:c,onHomeKeyDown:l,onEndKeyDown:o,onStepKeyDown:u,...h}=s,P=W(I,n);return e.jsx(O.span,{...h,ref:a,onKeyDown:M(s.onKeyDown,d=>{d.key==="Home"?(l(d),d.preventDefault()):d.key==="End"?(o(d),d.preventDefault()):se.concat(ae).includes(d.key)&&(u(d),d.preventDefault())}),onPointerDown:M(s.onPointerDown,d=>{const x=d.target;x.setPointerCapture(d.pointerId),d.preventDefault(),P.thumbs.has(x)?x.focus():t(d)}),onPointerMove:M(s.onPointerMove,d=>{d.target.hasPointerCapture(d.pointerId)&&r(d)}),onPointerUp:M(s.onPointerUp,d=>{const x=d.target;x.hasPointerCapture(d.pointerId)&&(x.releasePointerCapture(d.pointerId),c(d))})})}),de="SliderTrack",ge=g.forwardRef((s,a)=>{const{__scopeSlider:n,...t}=s,r=W(de,n);return e.jsx(O.span,{"data-disabled":r.disabled?"":void 0,"data-orientation":r.orientation,...t,ref:
6a})});ge.displayName=de;var $="SliderRange",ue=g.forwardRef((s,a)=>{const{__scopeSlider:n,...t}=s,r=W($,n),c=ce($,n),l=g.useRef(null),o=B(a,l),u=r.values.length,h=r.values.map(x=>me(x,r.min,r.max)),P=u>1?Math.min(...h):0,d=100-Math.max(...h);return e.jsx(O.span,{"data-orientation":r.orientation,"data-disabled":r.disabled?"":void 0,...t,ref:o,style:{...s.style,[c.startEdge]:P+"%",[c.endEdge]:d+"%"}})});ue.displayName=$;var G="SliderThumb",xe=g.forwardRef((s,a)=>{const n=Ke(s.__scopeSlider),[t,r]=g.useState(null),c=B(a,o=>r(o)),l=g.useMemo(()=>t?n().findIndex(o=>o.ref.current===t):-1,[n,t]);return e.jsx(Oe,{...s,ref:c,index:l})}),Oe=g.forwardRef((s,a)=>{const{__scopeSlider:n,index:t,name:r,...c}=s,l=W(G,n),o=ce(G,n),[u,h]=g.useState(null),P=B(a,k=>h(k)),d=u?l.form||!!u.closest("form"):!0,x=ve(u),p=l.values[t],N=p===void 0?0:me(p,l.min,l.max),v=Fe(t,l.values.length),S=x?.[o.size],m=S?qe(S,N,o.direction):0;return g.useEffect(()=>{if(u)return l.thumbs.add(u),()=>{l.thumbs.delete(u)}},[u,l.thumbs]),e.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[o.startEdge]:`calc(${N}% + ${m}px)`},children:[e.jsx(Q.ItemSlot,{scope:s.__scopeSlider,children:e.jsx(O.span,{role:"slider","aria-label":s["aria-label"]||v,"aria-valuemin":l.min,"aria-valuenow":p,"aria-valuemax":l.max,"aria-orientation":l.orientation,"data-orientation":l.orientation,"data-disabled":l.disabled?"":void 0,tabIndex:l.disabled?void 0:0,...c,ref:P,style:p===void 0?{display:"none"}:s.style,onFocus:M(s.onFocus,()=>{l.valueIndexToChangeRef.current=t})})}),d&&e.jsx(pe,{name:r??(l.name?l.name+(l.values.length>1?"[]":""):void 0),form:l.form,value:p},t)]})});xe.displayName=G;var Ue="RadioBubbleInput",pe=g.forwardRef(({__scopeSlider:s,value:a,...n},t)=>{const r=g.useRef(null),c=B(r,t),l=ye(a);return g.useEffect(()=>{const o=r.current;if(!o)return;const u=window.HTMLInputElement.prototype,P=Object.getOwnPropertyDescriptor(u,"value").set;if(l!==a&&P){const d=new Event("input",{bubbles:!0});P.call(o,a),o.dispatchEvent(d)}},[l,a]),e.jsx(O.input,{style:{display:"none"},...n,ref:c,defaultValue:a})});pe.displayName=Ue;function We(s=[],a,n){const t=[...s];return t[n]=a,t.sort((r,c)=>r-c)}function me(s,a,n){const c=100/(n-a)*(s-a);return te(c,[0,100])}function Fe(s,a){return a>2?`Value ${s+1} of ${a}`:a===2?["Minimum","Maximum"][s]:void 0}function Ye(s,a){if(s.length===1)return 0;const n=s.map(r=>Math.abs(r-a)),t=Math.min(...n);return n.indexOf(t)}function qe(s,a,n){const t=s/2,c=X([0,50],[0,t]);return(t-c(a)*n)*n}function Qe(s){return s.slice(0,-1).map((a,n)=>s[n+1]-a)}function $e(s,a){if(a>0){const n=Qe(s);return Math.min(...n)>=a}return!0}function X(s,a){return n=>{if(s[0]===s[1]||a[0]===a[1])return a[0];const t=(a[1]-a[0])/(s[1]-s[0]);return a[0]+t*(n-s[0])}}function Ge(s){return(String(s).split(".")[1]||"").length}function Xe(s,a){const n=Math.pow(10,a);return Math.round(s*n)/n}var Ze=re,Je=ge,et=ue,tt=xe;function st({className:s,defaultValue:a,value:n,min:t=0,max:r=100,...c}){const l=g.useMemo(()=>Array.isArray(n)?n:Array.isArray(a)?a:[t,r],[n,a,t,r]);return e.jsxs(Ze,{"data-loc":"client/src/components/ui/slider.tsx:25","data-slot":"slider",defaultValue:a,value:n,min:t,max:r,className:q("relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",s),...c,children:[e.jsx(Je,{"data-loc":"client/src/components/ui/slider.tsx:37","data-slot":"slider-track",className:q("bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"),children:e.jsx(et,{"data-loc":"client/src/components/ui/slider.tsx:43","data-slot":"slider-range",className:q("bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full")})}),Array.from({length:l.length},(o,u)=>e.jsx(tt,{"data-loc":"client/src/components/ui/slider.tsx:51","data-slot":"slider-thumb",className:"border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50"},u))]})}function at(){return{pushApi:"PushManager"in window,notificationApi:"Notification"in window,serviceWorker:"serviceWorker"
6in navigator,vibration:"vibrate"in navigator,audioContext:"AudioContext"in window||"webkitAudioContext"in window,documentPiP:"documentPictureInPicture"in window,webAudio:"Audio"in window,standalone:window.matchMedia("(display-mode: standalone)").matches,ios:/iPad|iPhone|iPod/.test(navigator.userAgent),android:/Android/.test(navigator.userAgent)}}function D({supported:s,label:a}){return e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:45",className:"flex items-center gap-2 py-1",children:[s?e.jsx(Be,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:47",className:"w-4 h-4 text-green-400 shrink-0"}):e.jsx(Ie,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:49",className:"w-4 h-4 text-red-400 shrink-0"}),e.jsx("span",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:51",className:"text-xs text-muted-foreground",children:a})]})}function wt(){const{user:s,loading:a}=je(),[,n]=we(),[t,r]=g.useState(null),[c,l]=g.useState("default"),{data:o,isLoading:u}=H.signals.getNotificationSettings.useQuery(void 0,{enabled:!!s}),h=H.signals.updateNotificationSettings.useMutation({onSuccess:()=>{y.success("à¸à¸±à¸à¸à¸¶à¸à¸à¸²à¸£à¸à¸±à¹à¸à¸à¹à¸²à¹à¸¥à¹à¸§"),x.signals.getNotificationSettings.invalidate()},onError:()=>y.error("à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸à¸±à¸à¸à¸¶à¸à¹à¸à¹")}),P=H.signals.pushSubscribe.useMutation(),d=H.signals.pushUnsubscribe.useMutation(),x=H.useUtils();if(g.useEffect(()=>{r(at()),"Notification"in window&&l(Notification.permission)},[]),g.useEffect(()=>{!a&&!s&&n("/login")},[a,s,n]),a||u||!t)return e.jsx("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:96",className:"min-h-screen bg-background flex items-center justify-center",children:e.jsx("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:97",className:"animate-spin w-8 h-8 border-2 border-primary border-t-transparent rounded-full"})});const p=(i,b)=>{h.mutate({[i]:b})},N=i=>{h.mutate({minConfidence:i[0]})},v=i=>{h.mutate({filterPrediction:i})},S=(i,b)=>{h.mutate({[i]:b})},m=async()=>{if(!t.notificationApi){y.error("à¹à¸à¸£à¸²à¸§à¹à¹à¸à¸à¸£à¹à¸à¸µà¹à¹à¸¡à¹à¸£à¸à¸à¸£à¸±à¸ Push Notification");return}try{const i=await Notification.requestPermission();if(l(i),i==="granted"){const b=await navigator.serviceWorker.ready,C="BLtgEStz8pVYY2_jW73zyEQq2c496L6CBh1YkBO_53hRKveGZS2PBBZooSKTlwbPFDVTOKgaZQSmN6Rrnia_2BQ";let T=await b.pushManager.getSubscription();T||(T=await b.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:nt(C)}));const K=T.toJSON();await P.mutateAsync({endpoint:K.endpoint,keys:{p256dh:K.keys.p256dh,auth:K.keys.auth},userAgent:navigator.userAgent}),p("pushEnabled",!0),y.success("à¹à¸à¸´à¸à¹à¸à¹ Push Notification สำà¹à¸£à¹à¸!")}else i==="denied"&&y.error("à¸à¸¸à¸à¸à¸à¸´à¹à¸ªà¸à¸à¸²à¸£à¹à¸à¹à¸à¹à¸à¸·à¸à¸ à¸à¸£à¸¸à¸à¸²à¹à¸à¸´à¸à¹à¸à¸à¸±à¹à¸à¸à¹à¸²à¹à¸à¸£à¸²à¸§à¹à¹à¸à¸à¸£à¹")}catch(i){console.error("[Push] Subscribe error:",i),y.error("à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸ªà¸¡à¸±à¸à¸£ Push Notification à¹à¸à¹")}},k=async()=>{try{const b=await(await navigator.serviceWorker.ready).pushManager.getSubscription();b&&(await d.mutateAsync({endpoint:b.endpoint}),await b.unsubscribe()),p("pushEnabled",!1),y.success("à¸à¸´à¸ Push Notification à¹à¸¥à¹à¸§")}catch(i){console.error("[Push] Unsubscribe error:",i),y.error("à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸¢à¸à¹à¸¥à¸´à¸à¹à¸à¹")}},j=()=>{try{const i=new AudioContext,b=i.createOscillator(),C=i.createGain();b.connect(C),C.connect(i.destination),b.frequency.value=880,C.gain.value=.3,b.start(),C.gain.exponentialRampToValueAtTime(.001,i.currentTime+.3),b.stop(i.currentTime+.3),y.success("à¹à¸ªà¸µà¸¢à¸à¸à¸à¸ªà¸à¸!")}catch{y.error("à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¹à¸¥à¹à¸à¹à¸ªà¸µà¸¢à¸à¹à¸à¹")}},f=()=>{t.vibration?(navigator.vibrate([100,50,100,50,200]),y.success("สัà¹à¸à¸à¸à¸ªà¸à¸!")):y.error("à¸à¸¸à¸à¸à¸£à¸à¹à¸à¸µà¹à¹à¸¡à¹à¸£à¸à¸à¸£à¸±à¸à¸à¸²à¸£à¸ªà¸±à¹à¸")};return e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:213",className:"min-h-screen bg-background pb-24",children:[e.jsx("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:215",className:"sticky top-0 z-20 bg-background/90 backdrop-blur-xl border-b border-border/50 px-4 py-3",children:e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:216",className:"max-w-lg mx-auto flex items-center gap-3",children:[e.jsx("button",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:217",onClick:()=>
6n("/live-signal"),className:"p-2 -ml-2 rounded-lg hover:bg-card/80",children:e.jsx(Ce,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:218",className:"w-5 h-5"})}),e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:220",children:[e.jsx("h1",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:221",className:"text-lg font-bold",children:"à¸à¸±à¹à¸à¸à¹à¸²à¸ªà¸±à¸à¸à¸²à¸"}),e.jsx("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:222",className:"text-xs text-muted-foreground",children:"Signal & Notification Settings"})]})]})}),e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:227",className:"max-w-lg mx-auto px-4 py-4 space-y-4",children:[e.jsxs(R,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:229",className:"p-4 bg-card/50 border-border/50",children:[e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:230",className:"flex items-center gap-2 mb-3",children:[e.jsx(ke,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:231",className:"w-4 h-4 text-primary"}),e.jsx("h2",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:232",className:"text-sm font-semibold",children:"à¸à¸§à¸²à¸¡à¸ªà¸²à¸¡à¸²à¸£à¸à¸à¸¸à¸à¸à¸£à¸à¹"})]}),e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:234",className:"grid grid-cols-2 gap-x-4",children:[e.jsx(D,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:235",supported:t.pushApi&&t.serviceWorker,label:"Push Notification"}),e.jsx(D,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:236",supported:t.vibration,label:"Vibration"}),e.jsx(D,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:237",supported:t.webAudio,label:"Sound Alert"}),e.jsx(D,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:238",supported:t.documentPiP,label:"Picture-in-Picture"}),e.jsx(D,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:239",supported:t.standalone,label:"Installed (PWA)"}),e.jsx(D,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:240",supported:t.notificationApi,label:"Notification API"})]}),!t.standalone&&e.jsx("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:243",className:"mt-3 p-2 rounded-lg bg-amber-500/10 border border-amber-500/20",children:e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:244",className:"flex items-start gap-2",children:[e.jsx(Ne,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:245",className:"w-3.5 h-3.5 text-amber-400 mt-0.5 shrink-0"}),e.jsx("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:246",className:"text-[10px] text-amber-200/80",children:t.ios?"à¹à¸à¸´à¹à¸¡à¸¥à¸ Home Screen: à¹à¸à¸° Share > Add to Home Screen à¹à¸à¸·à¹à¸à¸£à¸±à¸à¹à¸à¹à¸à¹à¸à¸·à¸à¸à¹à¸à¸à¹à¸à¹à¸¡à¸£à¸¹à¸à¹à¸à¸":t.android?"à¸à¸´à¸à¸à¸±à¹à¸à¹à¸à¸: à¹à¸à¸°à¹à¸¡à¸à¸¹ â® > Install App à¹à¸à¸·à¹à¸à¸à¸£à¸°à¸ªà¸à¸à¸²à¸£à¸à¹à¸à¸µà¹à¸à¸µà¸à¸µà¹à¸ªà¸¸à¸":"à¸à¸´à¸à¸à¸±à¹à¸à¹à¸à¹à¸ PWA à¹à¸à¸·à¹à¸à¸£à¸±à¸ Push Notification à¹à¸¡à¹à¸à¸´à¸à¹à¸à¸£à¸²à¸§à¹à¹à¸à¸à¸£à¹"})]})})]}),e.jsx(R,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:259",className:"p-4 bg-card/50 border-border/50",children:e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:260",className:"flex items-center justify-between",children:[e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:261",className:"flex items-center gap-3",children:[e.jsx("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:262",className:"w-9 h-9 rounded-lg bg-primary/10 flex items-center justify-center",children:e.jsx(Ae,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:263",className:"w-5 h-5 text-primary"})}),e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:265",children:[e.jsx("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:266",className:"text-sm font-medium",children:"à¹à¸à¸´à¸à¹à¸à¹à¸ªà¸±à¸à¸à¸²à¸"}),e.jsx("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:267",className:"text-[10px] text-muted-foreground",children:"รัà¸à¸ªà¸±à¸à¸à¸²à¸à¸à¸²à¸à¸£à¸°à¸à¸à¸ªà¸¹à¸à¸£"})]})]}),e.jsx(U,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:270",checked:o?.enabled??!0,onCheckedChange:i=>p("enabled",i)})]})}),e.jsxs(R,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:278",className:"p-4 bg-card/50 border-border/50 space-y-4",children:[e.jsxs("h3",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:279",className:"text-sm font-semibold flex items-center gap-2",children:[e.jsx(Ee,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:280",className:"w-4 h-4 text-blue-400"}),"à¹à¸ªà¸µà¸¢à¸à¹à¸¥à¸°à¸à¸²à¸£à¸ªà¸±à¹à¸"]}),e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:284",className:"flex items-center justify-between",children:[e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:285",children:[e.jsx("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:286",className:"text-sm",children:"à¹à¸ªà¸µà¸¢à¸à¹à¸à¹à¸à¹à¸à¸·à¸à¸"}),e.jsx("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:287",className:"text-[10px] text-muted-foreground",children:"à¹à¸¥à¹à¸à¹à¸ªà¸µà¸¢à¸à¹à¸¡à¸·à¹à¸à¸¡à¸µà¸ªà¸±à¸à¸à¸²à¸à¹à¸«à¸¡à¹"})]}),e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:289",className:"flex items-center gap-2",children:[e.jsx(L,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:290",variant:"ghost",size:"sm",onClick:j,className:"text-xs h-7 px-2",children:"à¸à¸à¸ªà¸à¸"}),e.jsx(U,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:293",checked:o?.soundEnabled??!0,onCheckedChange:i=>p("soundEnabled",i)})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:300",className:"flex items-center justify-between",children:[e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:301",children:[e.jsx("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:302",className:"text-sm",children:"à¸à¸²à¸£à¸ªà¸±à¹à¸"}),e.jsx("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:303",className:"text-[10px] text-muted-foreground",children:t.vibration?"สัà¹à¸à¹à¸¡à¸·à¹à¸à¸¡à¸µà¸ªà¸±à¸à¸à¸²à¸à¹à¸«à¸¡à¹":"à¸à¸¸à¸à¸à¸£à¸à¹à¹à¸¡à¹à¸£à¸à¸à¸£à¸±à¸"})]}),e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:307",className:"flex items-center gap-2",children:[t.vibration&&e.jsx(L,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:309",variant:"ghost",size:"sm",onClick:f,className:"text-xs h-7 px-2",children:"à¸à¸à¸ªà¸à¸"}),e.jsx(U,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:313",checked:o?.vibrationEnabled??!0,onCheckedChange:i=>p("vibrationEnabled",i),disabled:!t.vibration})]})]})]}),e.jsxs(R,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:323",className:"p-4 bg-card/50 border-border/50 space-y-4",children:[e.jsxs("h3",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:324",className:"text-sm font-semibold flex items-center gap-2",children:[e.jsx(Re,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:325",className:"w-4 h-4 text-green-400"}),"Push Notification"]}),e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:329",className:"flex items-center justify-between",children:[e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:330",children:[e.jsx("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:331",className:"text-sm",children:"à¹à¸à¹à¸à¹à¸à¸·à¸à¸à¹à¸¡à¹à¸à¸´à¸à¹à¸à¸"}),e.jsx("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:332",className:"text-[10px] text-muted-foreground",children:c==="granted"?"à¸à¸à¸¸à¸à¸²à¸à¹à¸¥à¹à¸§":c==="denied"?"à¸à¸¹à¸à¸à¸à¸´à¹à¸ªà¸ - à¹à¸à¸´à¸à¹à¸à¸à¸±à¹à¸à¸à¹à¸²à¹à¸à¸£à¸²à¸§à¹à¹à¸à¸à¸£à¹":"ยัà¸à¹à¸¡à¹à¹à¸à¹à¸à¸à¸à¸à¸¸à¸à¸²à¸"})]}),c==="granted"&&o?.pushEnabled?e.jsx(L,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:341",variant:"outline",size:"sm",onClick:k,className:"text-xs h-8",children:"à¸à¸´à¸ Push"}):e.jsx(L,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:345",size:"sm",onClick:m,disabled:!t.pushApi||!t.serviceWorker||c==="denied",className:"text-xs h-8",children:"à¹à¸à¸´à¸ Push"})]}),c==="denied"&&e.jsx("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:357",className:"p-2 rounded-lg bg-red-500/10 border border-red-500/20",children:e.jsx("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:358",className:"text-[10px] text-red-300",children:"Push Notification à¸à¸¹à¸à¸à¸¥à¹à¸à¸ à¸à¸£à¸¸à¸à¸²à¹à¸à¸´à¸à¹à¸à¸à¸±à¹à¸à¸à¹à¸²à¹à¸à¸£à¸²à¸§à¹à¹à¸à¸à¸£à¹ > Site Settings > Notifications"})})]}),e.jsxs(R,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:366",className:"p-4 bg-card/50 border-border/50 space-y-4",children:[e.jsxs("h3",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:367",className:"text-sm font-semibold flex items-center gap-2",children:[e.jsx(_e,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:368",className:"w-4 h-4 text-purple-400"}),"à¸à¸±à¸§à¸à¸£à¸à¸à¸ªà¸±à¸à¸à¸²à¸"]}),e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:372",children:[e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:373",className:"flex items-center justify-between mb-2",children:[e.jsx("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:374",className:"text-sm",children:"à¸à¸§à¸²à¸¡à¸¡à¸±à¹à¸à¹à¸à¸à¸±à¹à¸à¸à¹à¸³"}),e.jsxs(ee,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:375",variant:"outline",className:"text-xs",children:[o?.minConfidence??50,"%"]})]}),e.jsx(st,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:379",defaultValue:[o?.minConfidence??50],min:50,max:90,step:5,onValueCommit:N,className:"w-full"}),e.jsxs("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:387",className:"text-[10px] text-muted-foreground mt-1",children:["à¹à¸à¹à¸à¹à¸à¸·à¸à¸à¹à¸à¸à¸²à¸°à¸ªà¸±à¸à¸à¸²à¸à¸à¸µà¹à¸¡à¸µà¸à¸§à¸²à¸¡à¸¡à¸±à¹à¸à¹à¸ ",o?.minConfidence??50,"% à¸à¸¶à¹à¸à¹à¸"]})]}),e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:392",children:[e.jsx("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:393",className:"text-sm mb-2",children:"à¸à¸£à¸à¸à¸à¸²à¸¡à¸à¸¥à¸à¸³à¸à¸²à¸¢"}),e.jsx("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:394",className:"flex gap-2",children:["all","player","banker"].map(i=>e.jsx(L,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:396",variant:(o?.filterPrediction??"all")===i?"default":"outline",size:"sm",onClick:()=>v(i),className:"text-xs flex-1 h-8",children:i==="all"?"à¸à¸±à¹à¸à¸«à¸¡à¸":i==="player"?"Player":"Banker"},i))})]})]}),e.jsxs(R,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:411",className:"p-4 bg-card/50 border-border/50 space-y-4",children:[e.jsxs("h3",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:412",className:"text-sm font-semibold flex items-center gap-2",children:[e.jsx(De,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:413",className:"w-4 h-4 text-orange-400"}
6),"à¸à¹à¸§à¸à¹à¸§à¸¥à¸²à¸«à¹à¸²à¸¡à¸£à¸à¸à¸§à¸ (Quiet Hours)"]}),e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:417",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:418",children:[e.jsx("label",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:419",className:"text-xs text-muted-foreground mb-1 block",children:"à¹à¸£à¸´à¹à¸¡"}),e.jsx("input",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:420",type:"time",value:o?.quietHoursStart??"00:00",onChange:i=>S("quietHoursStart",i.target.value),className:"w-full px-3 py-2 rounded-lg bg-background border border-border text-sm"})]}),e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:427",children:[e.jsx("label",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:428",className:"text-xs text-muted-foreground mb-1 block",children:"สิà¹à¸à¸ªà¸¸à¸"}),e.jsx("input",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:429",type:"time",value:o?.quietHoursEnd??"06:00",onChange:i=>S("quietHoursEnd",i.target.value),className:"w-full px-3 py-2 rounded-lg bg-background border border-border text-sm"})]})]}),e.jsx("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:437",className:"text-[10px] text-muted-foreground",children:"ระà¸à¸à¸à¸°à¹à¸¡à¹à¹à¸à¹à¸à¹à¸à¸·à¸à¸à¹à¸à¸à¹à¸§à¸à¹à¸§à¸¥à¸²à¸à¸µà¹ (à¹à¸ªà¸µà¸¢à¸, สัà¹à¸, Push)"})]}),e.jsxs(R,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:443",className:"p-4 bg-card/50 border-border/50 space-y-4",children:[e.jsxs("h3",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:444",className:"text-sm font-semibold flex items-center gap-2",children:[e.jsx(Me,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:445",className:"w-4 h-4 text-cyan-400"}),"Widget & PiP"]}),e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:449",className:"flex items-center justify-between",children:[e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:450",children:[e.jsx("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:451",className:"text-sm",children:"Floating Widget"}),e.jsx("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:452",className:"text-[10px] text-muted-foreground",children:"à¹à¸ªà¸à¸ widget ลà¸à¸¢à¸à¸à¸«à¸à¹à¸²à¸à¸"})]}),e.jsx(U,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:454",checked:localStorage.getItem("floating_signal_widget_enabled")!=="false",onCheckedChange:i=>{localStorage.setItem("floating_signal_widget_enabled",i?"true":"false"),y.success(i?"à¹à¸à¸´à¸ Widget à¹à¸¥à¹à¸§":"à¸à¸´à¸ Widget à¹à¸¥à¹à¸§")}})]}),t.documentPiP&&e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:464",className:"flex items-center justify-between",children:[e.jsxs("div",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:465",children:[e.jsx("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:466",className:"text-sm",children:"Picture-in-Picture"}),e.jsx("p",{"data-loc":"client/src/pages/SignalSettingsPage.tsx:467",className:"text-[10px] text-muted-foreground",children:"à¹à¸ªà¸à¸à¸ªà¸±à¸à¸à¸²à¸à¹à¸à¸«à¸à¹à¸²à¸à¹à¸²à¸à¸¥à¸à¸¢ (Chrome 116+)"})]}),e.jsxs(ee,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:469",variant:"outline",className:"text-[10px]",children:[e.jsx(Te,{"data-loc":"client/src/pages/SignalSettingsPage.tsx:470",className:"w-3 h-3 mr-1"}),"รà¸à¸à¸£à¸±à¸"]})]})]})]})]})}function nt(s){const a="=".repeat((4-s.length%4)%4),n=(s+a).replace(/-/g,"+").replace(/_/g,"/"),t=window.atob(n),r=new Uint8Array(t.length);for(let c=0;c<t.length;++c)r[c]=t.charCodeAt(c);return r}export{wt 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.