1 line
30 KiB
JavaScript
1 line
30 KiB
JavaScript
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7133],{87133:(e,t,a)=>{a.r(t),a.d(t,{default:()=>A});var s=a(20475),r=a(20107),l=a(72167),i=a(35601),o=a(42541),n=a(76554),d=a(64219),c=a(49153),u=a(21906),m=a(45934),p=a(29475),h=a(39997);let f=(0,h.A)("LockOpen",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 9.9-1",key:"1mm8w8"}]]);var g=a(52161),v=a(97801),x=a(32857),w=a(49573);let N=(0,h.A)("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);var b=a(98969);let y=(0,h.A)("Clock1",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 14.5 8",key:"12zbmj"}]]),C=(0,h.A)("Calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]),j=e=>{let{loading:t,scheduleData:a,onStartTimeChange:i,onEndTimeChange:n,onSchedulingToggle:u}=e,[m,h]=(0,r.useState)({text:"Disabled",color:"text-red-600",icon:N}),f=()=>{if(!a.enabled){h({text:"Disabled",color:"text-red-600",icon:N});return}let e=new Date,t=60*e.getHours()+e.getMinutes(),[s,r]=a.startTime.split(":").map(Number),[l,i]=a.endTime.split(":").map(Number),o=60*s+r,n=60*l+i;o<=n?t>=o&&t<=n?h({text:"Active",color:"text-green-600",icon:b.A}):h({text:"Inactive",color:"text-yellow-500",icon:y}):t>=o||t<=n?h({text:"Active",color:"text-green-600",icon:b.A}):h({text:"Inactive",color:"text-yellow-500",icon:y})},g=()=>{a.active?h({text:"Active",color:"text-green-600",icon:b.A}):a.enabled&&!a.active?h({text:"Inactive",color:"text-yellow-500",icon:y}):h({text:"Disabled",color:"text-red-600",icon:N})};(0,r.useEffect)(()=>{g();let e=setInterval(f,6e4);return()=>{clearInterval(e)}},[a]);let v=m.icon;return(0,s.jsxs)(l.Zp,{children:[(0,s.jsxs)(l.aR,{children:[(0,s.jsxs)(l.ZB,{className:"flex items-center justify-between",children:[(0,s.jsx)("div",{children:(0,s.jsx)("span",{children:"Cell Locking Scheduler"})}),(0,s.jsxs)("div",{className:"flex items-center",children:[(0,s.jsx)(v,{className:"h-4 w-4 mr-1 ".concat(m.color)}),(0,s.jsx)("div",{className:"text-sm text-gray-500",children:m.text})]})]}),(0,s.jsx)(l.BT,{children:"Schedule the device to lock to specific cells at certain times."})]}),(0,s.jsxs)(l.Wu,{children:[a.enabled&&(0,s.jsxs)(w.Fc,{className:"mb-6",children:[(0,s.jsx)(p.A,{className:"h-4 w-4",color:"orange"}),(0,s.jsx)(w.XL,{children:"Scheduled Cell Locking Active"}),(0,s.jsx)(w.TN,{children:"Cell locking is currently being managed by the scheduler. Manual changes to cell locks may be overridden during scheduled hours."})]}),(0,s.jsxs)("div",{className:"grid lg:grid-cols-2 grid-cols-1 grid-flow-row gap-4",children:[(0,s.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,s.jsx)(c.J,{htmlFor:"start-time",children:"Start Time"}),(0,s.jsx)(d.p,{type:"time",id:"start-time",value:a.startTime,onChange:e=>i(e.target.value),disabled:t||a.enabled,placeholder:"START TIME"})]}),(0,s.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,s.jsx)(c.J,{htmlFor:"end-time",children:"End Time"}),(0,s.jsx)(d.p,{type:"time",id:"end-time",value:a.endTime,onChange:e=>n(e.target.value),disabled:t||a.enabled,placeholder:"END TIME"})]}),(0,s.jsx)("div",{className:"lg:col-span-2 col-span-1",children:(0,s.jsx)("p",{className:"text-sm text-gray-500",children:"Make sure to properly set the timezone using Luci for this to properly work. The scheduler will lock the device to the selected cells during the specified time range. The scheduler will not lock the device if the time range is not valid (e.g. start time is after end time)."})})]})]}),(0,s.jsx)(l.wL,{className:"border-t py-4",children:(0,s.jsxs)(o.$,{onClick:()=>u(!a.enabled),disabled:t||!a.locked&&!a.enabled,children:[(0,s.jsx)(C,{className:"h-4 w-4"}),a.enabled?"Disable Scheduler":"Enable Scheduler"]})})]})};var R=a(88926);let A=()=>{let{toast:e}=(0,x.dj)(),[t,a]=(0,r.useState)(!1),[h,w]=(0,r.useState)(!1),[N,b]=(0,r.useState)(!1),[y,C]=(0,r.useState)(!1),[A,E]=(0,r.useState)({enabled:!1,startTime:"",endTime:"",active:!1,status:"",message:"",locked:!1}),[T,k]=(0,r.useState)({EARFCN1:"",PCI1:"",EARFCN2:"",PCI2:"",EARFCN3:"",PCI3:""}),[F,S]=(0,r.useState)({NRARFCN:"",NRPCI:"",SCS:"",NRBAND:""}),P=e=>{let t=e.match(/\+QNWLOCK:\s*(.+?)\n/);return t?t[1].replace(/"/g,"").split(",").map(e=>e.trim()):null},I=async()=>{try{a(!0);let e=await fetch("/cgi-bin/quecmanager/at_cmd/fetch_data.sh?set=8"),t=await e.json();if(!e.ok)throw Error("Failed to fetch current status");console.log("Current cell locking status:",t);let s=P(t[2].response);console.log("Persist status:",s),s&&s.length>=2&&(b("1"===s[1]),C("1"===s[2]));let r=P(t[0].response);if(console.log("Current LTE lock status:",r),r){let e={EARFCN1:r[2],PCI1:r[3],EARFCN2:r[4],PCI2:r[5],EARFCN3:r[6],PCI3:r[7]};k(e),console.log("New LTE state:",e),parseInt(r[1])>0&&w(!0)}let l=P(t[1].response);if(console.log("Current NR5G lock status:",l),l&&l.length>=5){let e={NRPCI:l[1],NRARFCN:l[2],SCS:l[3],NRBAND:l[4]};S(e),console.log("New NR5G state:",e),parseInt(l[1])>0&&w(!0)}}catch(t){console.error("Error fetching current status:",t),e({title:"Error",description:"Failed to fetch current cell locking status",variant:"destructive"})}finally{a(!1)}},L=async t=>{try{let s;if(a(!0),t&&(!A.startTime||!A.endTime))throw Error("Please set both start and end times");let r=t?{enabled:!0,startTime:A.startTime,endTime:A.endTime}:{enabled:!1},l=await fetch("/cgi-bin/quecmanager/cell-locking/handle_scheduled_locking.sh",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)}),i=await l.text();if(!l.ok)throw Error("Server responded with status: ".concat(l.status));try{s=JSON.parse(i)}catch(e){throw Error("Failed to parse response: ".concat(i))}if("success"===s.status)E(e=>({...e,enabled:t})),e({title:"Success",description:t?"Cell locking schedule enabled":"Cell locking schedule disabled"});else throw Error(s.message||"Failed to update scheduling")}catch(e){}finally{a(!1),await I()}},_=async()=>{try{var t,s,r,l;a(!0);let i=[];if(T.EARFCN1&&T.PCI1&&i.push([T.EARFCN1,T.PCI1]),T.EARFCN2&&T.PCI2&&i.push([T.EARFCN2,T.PCI2]),T.EARFCN3&&T.PCI3&&i.push([T.EARFCN3,T.PCI3]),0===i.length)throw Error("Please fill at least one EARFCN and PCI pair");let o='AT+QNWLOCK="common/4g",'.concat(i.length);i.forEach(e=>{let[t,a]=e;o+=",".concat(t,",").concat(a)});let n=await (0,R.a)(o,!0);if((null===(t=n.response)||void 0===t?void 0:t.status)!=="success")throw Error((null===(r=n.response)||void 0===r?void 0:r.raw_output)||"Failed to lock LTE cells");await new Promise(e=>setTimeout(e,1e3));let d=await (0,R.a)('AT+QNWLOCK="save_ctrl",1,0',!0);if((null===(s=d.response)||void 0===s?void 0:s.status)!=="success")throw Error((null===(l=d.response)||void 0===l?void 0:l.raw_output)||"Failed to save LTE lock configuration");await I(),e({title:"Success",description:"LTE cells locked successfully with ".concat(i.length," pair").concat(i.length>1?"s":"")})}catch(t){a(!1),e({title:"Error",description:t instanceof Error?t.message:"Failed to lock LTE cells",variant:"destructive"})}},D=async()=>{try{var t,s,r,l;if(a(!0),!F.NRPCI||!F.NRARFCN||!F.SCS||!F.NRBAND)throw Error("Please fill all NR5G fields");let i='AT+QNWLOCK="common/5g",'.concat(F.NRPCI,",").concat(F.NRARFCN,",").concat(F.SCS,",").concat(F.NRBAND),o=await (0,R.a)(i,!0);if((null===(t=o.response)||void 0===t?void 0:t.status)!=="success")throw Error((null===(r=o.response)||void 0===r?void 0:r.raw_output)||"Failed to lock NR5G cell");await new Promise(e=>setTimeout(e,1e3));let n=await (0,R.a)('AT+QNWLOCK="save_ctrl",0,1',!0);if((null===(s=n.response)||void 0===s?void 0:s.status)!=="success")throw Error((null===(l=n.response)||void 0===l?void 0:l.raw_output)||"Failed to save NR5G lock configuration");await I(),e({title:"Success",description:"NR5G cell locked successfully"})}catch(t){a(!1),e({title:"Error",description:t instanceof Error?t.message:"Failed to lock NR5G cell",variant:"destructive"})}},O=async()=>{try{var t,s,r,l,i,o,n,d;a(!0);let c=await (0,R.a)('AT+QNWLOCK="common/4g",0',!0);if((null===(t=c.response)||void 0===t?void 0:t.status)!=="success")throw Error((null===(i=c.response)||void 0===i?void 0:i.raw_output)||"Failed to reset LTE lock");await new Promise(e=>setTimeout(e,1e3));let u=await (0,R.a)('AT+QNWLOCK="save_ctrl",0,0',!0);if((null===(s=u.response)||void 0===s?void 0:s.status)!=="success")throw Error((null===(o=u.response)||void 0===o?void 0:o.raw_output)||"Failed to save LTE reset configuration");let m=await (0,R.a)("AT+COPS=2",!0);if((null===(r=m.response)||void 0===r?void 0:r.status)!=="success")throw Error((null===(n=m.response)||void 0===n?void 0:n.raw_output)||"Failed to disconnect from network");await new Promise(e=>setTimeout(e,2e3));let p=await (0,R.a)("AT+COPS=0",!0);if((null===(l=p.response)||void 0===l?void 0:l.status)!=="success")throw Error((null===(d=p.response)||void 0===d?void 0:d.raw_output)||"Failed to reconnect to network");await I(),e({title:"Success",description:"LTE cell locking reset to default"})}catch(t){a(!1),e({title:"Error",description:"Failed to reset LTE cell locking",variant:"destructive"})}},M=async()=>{try{var t,s,r,l,i,o,n,d;a(!0);let c=await (0,R.a)('AT+QNWLOCK="common/5g",0',!0);if((null===(t=c.response)||void 0===t?void 0:t.status)!=="success")throw Error((null===(i=c.response)||void 0===i?void 0:i.raw_output)||"Failed to reset NR5G lock");let u=await (0,R.a)('AT+QNWLOCK="save_ctrl",0,0',!0);if((null===(s=u.response)||void 0===s?void 0:s.status)!=="success")throw Error((null===(o=u.response)||void 0===o?void 0:o.raw_output)||"Failed to save NR5G reset configuration");let m=await (0,R.a)("AT+COPS=2",!0);if((null===(r=m.response)||void 0===r?void 0:r.status)!=="success")throw Error((null===(n=m.response)||void 0===n?void 0:n.raw_output)||"Failed to disconnect from network");await new Promise(e=>setTimeout(e,2e3));let p=await (0,R.a)("AT+COPS=0",!0);if((null===(l=p.response)||void 0===l?void 0:l.status)!=="success")throw Error((null===(d=p.response)||void 0===d?void 0:d.raw_output)||"Failed to reconnect to network");await I(),e({title:"Success",description:"NR5G cell locking reset to default"})}catch(t){a(!1),e({title:"Error",description:"Failed to reset NR5G cell locking",variant:"destructive"})}},z=async t=>{try{var s,r;a(!0);let l=await (0,R.a)('AT+QNWLOCK="save_ctrl",'.concat(t?"1":"0",",").concat(y?"1":"0"),!0);if((null===(s=l.response)||void 0===s?void 0:s.status)!=="success")throw Error((null===(r=l.response)||void 0===r?void 0:r.raw_output)||"Failed to update LTE persist setting");await I(),e({title:"Success",description:"LTE persist on boot ".concat(t?"enabled":"disabled")}),await new Promise(e=>setTimeout(e,2e3)),window.location.reload()}catch(t){e({title:"Error",description:"Failed to update LTE persist setting",variant:"destructive"})}finally{a(!1)}},G=async t=>{try{var s,r;a(!0);let l=await (0,R.a)('AT+QNWLOCK="save_ctrl",'.concat(N?"1":"0",",").concat(t?"1":"0"),!0);if((null===(s=l.response)||void 0===s?void 0:s.status)!=="success")throw Error((null===(r=l.response)||void 0===r?void 0:r.raw_output)||"Failed to update NR5G persist setting");await I(),e({title:"Success",description:"NR5G persist on boot ".concat(t?"enabled":"disabled")}),await new Promise(e=>setTimeout(e,2e3)),window.location.reload()}catch(t){e({title:"Error",description:"Failed to update NR5G persist setting",variant:"destructive"})}finally{a(!1)}};return(0,r.useEffect)(()=>{(async()=>{let e=await fetch("/cgi-bin/quecmanager/cell-locking/get_cell_lock.sh"),t=await e.json();E({enabled:t.enabled,startTime:t.start_time||"",endTime:t.end_time||"",active:t.active,status:t.status,message:t.message,locked:t.locked}),w(t.locked),b("1"===t.ltePersist),C("1"===t.nr5gPersist),await I()})()},[]),(0,r.useEffect)(()=>{E(e=>({...e,locked:h}))},[h]),(0,s.jsxs)("div",{className:"grid gap-6",children:[(0,s.jsxs)(l.Zp,{children:[(0,s.jsxs)(l.aR,{children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)(l.ZB,{children:"4G LTE Cellular Locking"}),(0,s.jsx)(m.E,{children:h?(0,s.jsxs)("p",{className:"flex items-center gap-x-1",children:[(0,s.jsx)(p.A,{className:"h-3 w-3"}),"Locked"]}):(0,s.jsxs)("p",{className:"flex items-center gap-x-1",children:[(0,s.jsx)(f,{className:"h-3 w-3"}),"Unlocked"]})})]}),(0,s.jsx)(l.BT,{children:"Lock the device to specific LTE Physical Cell IDs."})]}),(0,s.jsx)(l.Wu,{children:(0,s.jsxs)("form",{className:"grid lg:grid-cols-2 grid-cols-1 grid-flow-row gap-6",children:[(0,s.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,s.jsx)(c.J,{htmlFor:"EARFCN1",children:"EARFCN 1"}),(0,s.jsx)(d.p,{type:"text",id:"EARFCN1",placeholder:"EARFCN 1",value:T.EARFCN1,onChange:e=>k(t=>({...t,EARFCN1:e.target.value})),disabled:t||A.enabled&&h})]}),(0,s.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,s.jsx)(c.J,{htmlFor:"PCI1",children:"PCI 1"}),(0,s.jsx)(d.p,{type:"text",id:"PCI1",placeholder:"PCI 1",value:T.PCI1,onChange:e=>k(t=>({...t,PCI1:e.target.value})),disabled:t||A.enabled&&h})]}),(0,s.jsx)(n.w,{className:"my-1 col-span-2 w-full"}),(0,s.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,s.jsx)(c.J,{htmlFor:"EARFCN2",children:"EARFCN 2"}),(0,s.jsx)(d.p,{type:"text",id:"EARFCN2",placeholder:"EARFCN 2",value:T.EARFCN2,onChange:e=>k(t=>({...t,EARFCN2:e.target.value})),disabled:t||A.enabled&&h})]}),(0,s.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,s.jsx)(c.J,{htmlFor:"PCI2",children:"PCI 2"}),(0,s.jsx)(d.p,{type:"text",id:"PCI2",placeholder:"PCI 2",value:T.PCI2,onChange:e=>k(t=>({...t,PCI2:e.target.value})),disabled:t||A.enabled&&h})]}),(0,s.jsx)(n.w,{className:"my-1 col-span-2 w-full"}),(0,s.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,s.jsx)(c.J,{htmlFor:"EARFCN3",children:"EARFCN 3"}),(0,s.jsx)(d.p,{type:"text",id:"EARFCN3",placeholder:"EARFCN 3",value:T.EARFCN3,onChange:e=>k(t=>({...t,EARFCN3:e.target.value})),disabled:t||A.enabled&&h})]}),(0,s.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,s.jsx)(c.J,{htmlFor:"PCI3",children:"PCI 3"}),(0,s.jsx)(d.p,{type:"text",id:"PCI3",placeholder:"PCI 3",value:T.PCI3,onChange:e=>k(t=>({...t,PCI3:e.target.value})),disabled:t||A.enabled&&h})]})]})}),(0,s.jsxs)(l.wL,{className:"border-t py-4 grid grid-flow-row md:grid-cols-3 grid-cols-1 gap-4",children:[(0,s.jsxs)(o.$,{onClick:_,disabled:t||A.enabled,children:[(0,s.jsx)(p.A,{className:"h-4 w-4"}),"Lock LTE Cells"]}),(0,s.jsxs)(u.l,{pressed:N,onPressedChange:z,disabled:t||A.enabled,children:[(0,s.jsx)(g.A,{className:"h-4 w-4 mr-2"}),"Persist on Reboot"]}),(0,s.jsxs)(o.$,{variant:"secondary",onClick:O,disabled:t||A.enabled,children:[(0,s.jsx)(v.A,{className:"h-4 w-4"}),"Reset to Default"]})]})]}),(0,s.jsxs)(l.Zp,{children:[(0,s.jsxs)(l.aR,{children:[(0,s.jsx)(l.ZB,{children:"NR5G-SA Cellular Locking"}),(0,s.jsx)(l.BT,{children:"Lock the device to a specific NR5G-SA Physical Cell ID."})]}),(0,s.jsx)(l.Wu,{children:(0,s.jsxs)("form",{className:"grid lg:grid-cols-2 grid-cols-1 grid-flow-row gap-6",children:[(0,s.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,s.jsx)(c.J,{htmlFor:"NR-ARFCN",children:"NR ARFCN"}),(0,s.jsx)(d.p,{type:"text",id:"NR-ARFCN",placeholder:"NR ARFCN",value:F.NRARFCN,onChange:e=>S(t=>({...t,NRARFCN:e.target.value})),disabled:t||A.enabled&&h})]}),(0,s.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,s.jsx)(c.J,{htmlFor:"NR-PCI",children:"NR PCI"}),(0,s.jsx)(d.p,{type:"text",id:"NR-PCI",placeholder:"NR PCI",value:F.NRPCI,onChange:e=>S(t=>({...t,NRPCI:e.target.value})),disabled:t||A.enabled&&h})]}),(0,s.jsx)(n.w,{className:"my-0.5 col-span-2 w-full"}),(0,s.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,s.jsx)(c.J,{htmlFor:"SCS",children:"SCS"}),(0,s.jsxs)(i.l6,{value:F.SCS,onValueChange:e=>S(t=>({...t,SCS:e})),disabled:t||A.enabled&&h,children:[(0,s.jsx)(i.bq,{id:"SCS",children:(0,s.jsx)(i.yv,{placeholder:"SCS"})}),(0,s.jsx)(i.gC,{children:(0,s.jsxs)(i.s3,{children:[(0,s.jsx)(i.TR,{children:"SCS"}),(0,s.jsx)(i.eb,{value:"15",children:"15 kHz"}),(0,s.jsx)(i.eb,{value:"30",children:"30 kHz"}),(0,s.jsx)(i.eb,{value:"60",children:"60 kHz"}),(0,s.jsx)(i.eb,{value:"120",children:"120 kHz"}),(0,s.jsx)(i.eb,{value:"240",children:"240 kHz"})]})})]})]}),(0,s.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,s.jsx)(c.J,{htmlFor:"NRBAND",children:"NR Band"}),(0,s.jsx)(d.p,{type:"text",id:"NRBAND",placeholder:"NR BAND",value:F.NRBAND,onChange:e=>S(t=>({...t,NRBAND:e.target.value})),disabled:t||A.enabled&&h})]})]})}),(0,s.jsxs)(l.wL,{className:"border-t py-4 grid grid-flow-row md:grid-cols-3 grid-cols-1 gap-4",children:[(0,s.jsxs)(o.$,{onClick:D,disabled:t||A.enabled,children:[(0,s.jsx)(p.A,{className:"h-4 w-4"}),"Lock NR5G-SA Cell"]}),(0,s.jsxs)(u.l,{pressed:y,onPressedChange:G,disabled:t||A.enabled,children:[(0,s.jsx)(g.A,{className:"h-4 w-4 mr-2"}),"Persist on Reboot"]}),(0,s.jsxs)(o.$,{variant:"secondary",onClick:M,disabled:t||A.enabled,children:[(0,s.jsx)(v.A,{className:"h-4 w-4"}),"Reset to Default"]})]})]}),(0,s.jsx)(j,{loading:t,scheduleData:A,onStartTimeChange:e=>{E(t=>({...t,startTime:e}))},onEndTimeChange:e=>{E(t=>({...t,endTime:e}))},onSchedulingToggle:L})]})}},49573:(e,t,a)=>{a.d(t,{Fc:()=>n,TN:()=>c,XL:()=>d});var s=a(20475),r=a(20107),l=a(29395),i=a(22250);let o=(0,l.F)("relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"}},defaultVariants:{variant:"default"}}),n=r.forwardRef((e,t)=>{let{className:a,variant:r,...l}=e;return(0,s.jsx)("div",{ref:t,role:"alert",className:(0,i.cn)(o({variant:r}),a),...l})});n.displayName="Alert";let d=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("h5",{ref:t,className:(0,i.cn)("mb-1 font-medium leading-none tracking-tight",a),...r})});d.displayName="AlertTitle";let c=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,i.cn)("text-sm [&_p]:leading-relaxed",a),...r})});c.displayName="AlertDescription"},45934:(e,t,a)=>{a.d(t,{E:()=>o});var s=a(20475);a(20107);var r=a(29395),l=a(22250);let i=(0,r.F)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function o(e){let{className:t,variant:a,...r}=e;return(0,s.jsx)("div",{className:(0,l.cn)(i({variant:a}),t),...r})}},42541:(e,t,a)=>{a.d(t,{$:()=>d,r:()=>n});var s=a(20475),r=a(20107),l=a(61837),i=a(29395),o=a(22250);let n=(0,i.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),d=r.forwardRef((e,t)=>{let{className:a,variant:r,size:i,asChild:d=!1,...c}=e,u=d?l.DX:"button";return(0,s.jsx)(u,{className:(0,o.cn)(n({variant:r,size:i,className:a})),ref:t,...c})});d.displayName="Button"},72167:(e,t,a)=>{a.d(t,{BT:()=>d,Wu:()=>c,ZB:()=>n,Zp:()=>i,aR:()=>o,wL:()=>u});var s=a(20475),r=a(20107),l=a(22250);let i=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,l.cn)("rounded-xl border bg-card text-card-foreground shadow",a),...r})});i.displayName="Card";let o=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,l.cn)("flex flex-col space-y-1.5 p-6",a),...r})});o.displayName="CardHeader";let n=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("h3",{ref:t,className:(0,l.cn)("font-semibold leading-none tracking-tight",a),...r})});n.displayName="CardTitle";let d=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("p",{ref:t,className:(0,l.cn)("text-sm text-muted-foreground",a),...r})});d.displayName="CardDescription";let c=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,l.cn)("p-6 pt-0",a),...r})});c.displayName="CardContent";let u=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,l.cn)("flex items-center p-6 pt-0",a),...r})});u.displayName="CardFooter"},64219:(e,t,a)=>{a.d(t,{p:()=>i});var s=a(20475),r=a(20107),l=a(22250);let i=r.forwardRef((e,t)=>{let{className:a,type:r,...i}=e;return(0,s.jsx)("input",{type:r,className:(0,l.cn)("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",a),ref:t,...i})});i.displayName="Input"},49153:(e,t,a)=>{a.d(t,{J:()=>d});var s=a(20475),r=a(20107),l=a(21840),i=a(29395),o=a(22250);let n=(0,i.F)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),d=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(l.b,{ref:t,className:(0,o.cn)(n(),a),...r})});d.displayName=l.b.displayName},35601:(e,t,a)=>{a.d(t,{TR:()=>f,bq:()=>u,eb:()=>g,gC:()=>h,l6:()=>n,s3:()=>d,yv:()=>c});var s=a(20475),r=a(20107),l=a(7197),i=a(95257),o=a(22250);let n=i.bL,d=i.YJ,c=i.WT,u=r.forwardRef((e,t)=>{let{className:a,children:r,...n}=e;return(0,s.jsxs)(i.l9,{ref:t,className:(0,o.cn)("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",a),...n,children:[r,(0,s.jsx)(i.In,{asChild:!0,children:(0,s.jsx)(l.TBE,{className:"h-4 w-4 opacity-50"})})]})});u.displayName=i.l9.displayName;let m=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(i.PP,{ref:t,className:(0,o.cn)("flex cursor-default items-center justify-center py-1",a),...r,children:(0,s.jsx)(l.Mtm,{})})});m.displayName=i.PP.displayName;let p=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(i.wn,{ref:t,className:(0,o.cn)("flex cursor-default items-center justify-center py-1",a),...r,children:(0,s.jsx)(l.D3D,{})})});p.displayName=i.wn.displayName;let h=r.forwardRef((e,t)=>{let{className:a,children:r,position:l="popper",...n}=e;return(0,s.jsx)(i.ZL,{children:(0,s.jsxs)(i.UC,{ref:t,className:(0,o.cn)("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2","popper"===l&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",a),position:l,...n,children:[(0,s.jsx)(m,{}),(0,s.jsx)(i.LM,{className:(0,o.cn)("p-1","popper"===l&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:r}),(0,s.jsx)(p,{})]})})});h.displayName=i.UC.displayName;let f=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(i.JU,{ref:t,className:(0,o.cn)("px-2 py-1.5 text-sm font-semibold",a),...r})});f.displayName=i.JU.displayName;let g=r.forwardRef((e,t)=>{let{className:a,children:r,...n}=e;return(0,s.jsxs)(i.q7,{ref:t,className:(0,o.cn)("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),...n,children:[(0,s.jsx)("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,s.jsx)(i.VF,{children:(0,s.jsx)(l.Srz,{className:"h-4 w-4"})})}),(0,s.jsx)(i.p4,{children:r})]})});g.displayName=i.q7.displayName,r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(i.wv,{ref:t,className:(0,o.cn)("-mx-1 my-1 h-px bg-muted",a),...r})}).displayName=i.wv.displayName},76554:(e,t,a)=>{a.d(t,{w:()=>o});var s=a(20475),r=a(20107),l=a(88853),i=a(22250);let o=r.forwardRef((e,t)=>{let{className:a,orientation:r="horizontal",decorative:o=!0,...n}=e;return(0,s.jsx)(l.b,{ref:t,decorative:o,orientation:r,className:(0,i.cn)("shrink-0 bg-border","horizontal"===r?"h-[1px] w-full":"h-full w-[1px]",a),...n})});o.displayName=l.b.displayName},21906:(e,t,a)=>{a.d(t,{l:()=>m});var s=a(20475),r=a(20107),l=a(94521),i=a(13061),o=a(34544),n=r.forwardRef((e,t)=>{let{pressed:a,defaultPressed:r=!1,onPressedChange:n,...d}=e,[c=!1,u]=(0,i.i)({prop:a,onChange:n,defaultProp:r});return(0,s.jsx)(o.sG.button,{type:"button","aria-pressed":c,"data-state":c?"on":"off","data-disabled":e.disabled?"":void 0,...d,ref:t,onClick:(0,l.m)(e.onClick,()=>{e.disabled||u(!c)})})});n.displayName="Toggle";var d=a(29395),c=a(22250);let u=(0,d.F)("inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",{variants:{variant:{default:"bg-transparent",outline:"border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground"},size:{default:"h-9 px-3",sm:"h-8 px-2",lg:"h-10 px-3"}},defaultVariants:{variant:"default",size:"default"}}),m=r.forwardRef((e,t)=>{let{className:a,variant:r,size:l,...i}=e;return(0,s.jsx)(n,{ref:t,className:(0,c.cn)(u({variant:r,size:l,className:a})),...i})});m.displayName=n.displayName},32857:(e,t,a)=>{a.d(t,{dj:()=>m,oR:()=>u});var s=a(20107);let r=0,l=new Map,i=e=>{if(l.has(e))return;let t=setTimeout(()=>{l.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);l.set(e,t)},o=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:a}=t;return a?i(a):e.toasts.forEach(e=>{i(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===a||void 0===a?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},n=[],d={toasts:[]};function c(e){d=o(d,e),n.forEach(e=>{e(d)})}function u(e){let{...t}=e,a=(r=(r+1)%Number.MAX_SAFE_INTEGER).toString(),s=()=>c({type:"DISMISS_TOAST",toastId:a});return c({type:"ADD_TOAST",toast:{...t,id:a,open:!0,onOpenChange:e=>{e||s()}}}),{id:a,dismiss:s,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:a}})}}function m(){let[e,t]=s.useState(d);return s.useEffect(()=>(n.push(t),()=>{let e=n.indexOf(t);e>-1&&n.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,t,a)=>{a.d(t,{cn:()=>l});var s=a(64901),r=a(868);function l(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return(0,r.QP)((0,s.$)(t))}},98969:(e,t,a)=>{a.d(t,{A:()=>s});let s=(0,a(39997).A)("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]])},29475:(e,t,a)=>{a.d(t,{A:()=>s});let s=(0,a(39997).A)("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]])},97801:(e,t,a)=>{a.d(t,{A:()=>s});let s=(0,a(39997).A)("RefreshCcw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]])},52161:(e,t,a)=>{a.d(t,{A:()=>s});let s=(0,a(39997).A)("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]])},88926:(e,t,a)=>{a.d(t,{a:()=>s});let s=async function(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:30;try{var s;let r=e.trim().toUpperCase().startsWith("AT")?e.trim():"AT".concat(e.trim()),l=encodeURIComponent(r),i="/cgi-bin/quecmanager/at_cmd/at_queue_client.sh?command=".concat(l);t&&(i+="&wait=1&timeout=".concat(a));let o=await fetch(i,{method:"GET",headers:{Accept:"application/json"},signal:AbortSignal.timeout(1e3*a+5e3)});if(!o.ok)throw Error("AT command failed with status: ".concat(o.status));let n=await o.json();if(n.error)throw Error("AT queue error: ".concat(n.error));if(t&&(null===(s=n.response)||void 0===s?void 0:s.status)==="timeout")throw Error("AT command timed out after ".concat(a," seconds"));return n}catch(e){throw console.error("AT Command error:",e),e}}},88853:(e,t,a)=>{a.d(t,{b:()=>d});var s=a(20107),r=a(34544),l=a(20475),i="horizontal",o=["horizontal","vertical"],n=s.forwardRef((e,t)=>{let{decorative:a,orientation:s=i,...n}=e,d=o.includes(s)?s:i;return(0,l.jsx)(r.sG.div,{"data-orientation":d,...a?{role:"none"}:{"aria-orientation":"vertical"===d?d:void 0,role:"separator"},...n,ref:t})});n.displayName="Separator";var d=n}}]); |