yo-moss-ai 0.0.31 → 0.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/bin/runtime-manifest.json +1 -1
  2. package/dist/assets/{AppCredits-CRmo9qq0.js → AppCredits-CcYYBDcJ.js} +1 -1
  3. package/dist/assets/{AppLayout-C2dN6CXA.css → AppLayout-Cxc77hoF.css} +1 -1
  4. package/dist/assets/AppLayout-Dv30rTP-.js +1 -0
  5. package/dist/assets/{Camera-6uN6sKd7.js → Camera-pI2mn1H2.js} +1 -1
  6. package/dist/assets/{FindMoss-DckN2-qz.js → FindMoss-BH6rZdes.js} +1 -1
  7. package/dist/assets/{Flash-Bh4b5sX8.js → Flash-Db4K4O55.js} +2 -2
  8. package/dist/assets/Gamepad-D9WkZeiN.js +1 -0
  9. package/dist/assets/{Hardware-iN_RKoXh.js → Hardware-CrM-fIzs.js} +1 -1
  10. package/dist/assets/{Hotkeys-DvctJQ0-.js → Hotkeys-C0yLnB6E.js} +1 -1
  11. package/dist/assets/{McpHub-Nxbl_6cG.js → McpHub-DZTnv1FV.js} +3 -3
  12. package/dist/assets/MiHome-B4uifPse.css +1 -0
  13. package/dist/assets/MiHome-SoQqL1X_.js +1 -0
  14. package/dist/assets/{PhBell.vue-Dn0fgosE.js → PhBell.vue-DXfPY8QY.js} +1 -1
  15. package/dist/assets/{PhKeyboard.vue-DrhZ1eGL.js → PhKeyboard.vue-arBuzAmR.js} +1 -1
  16. package/dist/assets/{PhLightbulb.vue-DiTVpYAj.js → PhLightbulb.vue-BtYanApV.js} +1 -1
  17. package/dist/assets/{PhLightning.vue-Bc6F7Xjg.js → PhLightning.vue-FONo4UB7.js} +1 -1
  18. package/dist/assets/{PhPlugs.vue-Dhvp3XfM.js → PhPlugs.vue-gRp026up.js} +1 -1
  19. package/dist/assets/{PhPlus.vue-DxI6mB_a.js → PhPlus.vue-DYYrWQPh.js} +1 -1
  20. package/dist/assets/{PhSpeakerHigh.vue-DPCVdaA1.js → PhSpeakerHigh.vue-ClryVrQw.js} +1 -1
  21. package/dist/assets/{PhTelevisionSimple.vue-CVExaZR8.js → PhTelevisionSimple.vue-BrHfjo04.js} +1 -1
  22. package/dist/assets/{Remotes-DIQ1m9-W.js → Remotes-DtstgJ7Z.js} +1 -1
  23. package/dist/assets/{Terminal-DuHT8sGy.js → Terminal-ryk22u5D.js} +1 -1
  24. package/dist/assets/{Yunxiangji-Cv5zknc_.js → Yunxiangji-KKYySJrg.js} +1 -1
  25. package/dist/assets/{index-CaD9jpX7.js → index-CSKTeMnN.js} +28 -28
  26. package/dist/assets/{usePtzControl-hvfvLi7I.js → usePtzControl-Dh7nUmLV.js} +1 -1
  27. package/dist/index.html +1 -1
  28. package/dist-server/board-presets.mjs +1 -1
  29. package/dist-server/camera.mjs +1 -1
  30. package/dist-server/dev-ui.mjs +1 -1
  31. package/dist-server/device-chat-sync.mjs +1 -1
  32. package/dist-server/device-config-view.mjs +1 -1
  33. package/dist-server/device-focus.mjs +1 -1
  34. package/dist-server/device-http.mjs +1 -1
  35. package/dist-server/device-identity.mjs +1 -1
  36. package/dist-server/device-presence.mjs +1 -1
  37. package/dist-server/device-probe.mjs +1 -1
  38. package/dist-server/device-registry.mjs +1 -1
  39. package/dist-server/device-routes.mjs +1 -1
  40. package/dist-server/device-runtime.mjs +1 -1
  41. package/dist-server/device-session.mjs +1 -1
  42. package/dist-server/ffmpeg.mjs +1 -1
  43. package/dist-server/gimbal-control.mjs +1 -1
  44. package/dist-server/home-path.mjs +1 -1
  45. package/dist-server/index.mjs +1 -1
  46. package/dist-server/ir-import-validate.mjs +1 -1
  47. package/dist-server/known-scan-device.mjs +1 -1
  48. package/dist-server/lan-discover.mjs +1 -1
  49. package/dist-server/listen-port.mjs +1 -1
  50. package/dist-server/mcp/backoff.mjs +1 -1
  51. package/dist-server/mcp/bridge-manager.mjs +1 -1
  52. package/dist-server/mcp/builtin-tools.mjs +1 -1
  53. package/dist-server/mcp/dedupe-servers.mjs +1 -1
  54. package/dist-server/mcp/doctor.mjs +1 -1
  55. package/dist-server/mcp/fixtures/echo-mcp.mjs +1 -1
  56. package/dist-server/mcp/fixtures/hotkey-mcp.mjs +1 -1
  57. package/dist-server/mcp/fixtures/mihome-mcp.mjs +1 -1
  58. package/dist-server/mcp/fixtures/onvif-mcp.mjs +1 -1
  59. package/dist-server/mcp/fixtures/shell-mcp.mjs +1 -1
  60. package/dist-server/mcp/fixtures/yunxiangji-mcp.mjs +1 -1
  61. package/dist-server/mcp/hotkey-agent-docs.mjs +1 -1
  62. package/dist-server/mcp/hotkey-driver.mjs +1 -1
  63. package/dist-server/mcp/hotkey-handlers.mjs +1 -1
  64. package/dist-server/mcp/hotkey-import-validate.mjs +1 -1
  65. package/dist-server/mcp/hotkey-store.mjs +1 -1
  66. package/dist-server/mcp/http-client.mjs +1 -1
  67. package/dist-server/mcp/http-pipe.mjs +1 -1
  68. package/dist-server/mcp/local-probe.mjs +1 -1
  69. package/dist-server/mcp/marketplace.mjs +1 -1
  70. package/dist-server/mcp/onvif-handlers.mjs +1 -1
  71. package/dist-server/mcp/parse-server-json.mjs +1 -1
  72. package/dist-server/mcp/paths.mjs +1 -1
  73. package/dist-server/mcp/routes.mjs +1 -1
  74. package/dist-server/mcp/schema.mjs +1 -1
  75. package/dist-server/mcp/settings.mjs +1 -1
  76. package/dist-server/mcp/shell-approval.mjs +1 -1
  77. package/dist-server/mcp/shell-policy.mjs +1 -1
  78. package/dist-server/mcp/shell-trash.mjs +1 -1
  79. package/dist-server/mcp/stdio-pipe.mjs +1 -1
  80. package/dist-server/mcp/store.mjs +1 -1
  81. package/dist-server/mcp/task-notify.mjs +1 -1
  82. package/dist-server/mcp/ws-connect.mjs +1 -1
  83. package/dist-server/mcp/yunxiangji.mjs +1 -1
  84. package/dist-server/media-cache.mjs +1 -1
  85. package/dist-server/mihome/cloud.mjs +1 -1
  86. package/dist-server/mihome/devices.mjs +1 -1
  87. package/dist-server/mihome/local.mjs +1 -1
  88. package/dist-server/mihome/mcp-desc.mjs +1 -1
  89. package/dist-server/mihome/queue.mjs +1 -1
  90. package/dist-server/mihome/rc4.mjs +1 -1
  91. package/dist-server/mihome/routes.mjs +1 -1
  92. package/dist-server/mihome/service.mjs +1 -1
  93. package/dist-server/mihome/sign.mjs +1 -1
  94. package/dist-server/mihome/spec.mjs +1 -1
  95. package/dist-server/mihome/store.mjs +1 -1
  96. package/dist-server/onboard-preview.mjs +1 -1
  97. package/dist-server/spa-fallback.mjs +1 -1
  98. package/dist-server/tab-focus.mjs +1 -1
  99. package/dist-server/voice-wake.mjs +1 -1
  100. package/package.json +1 -1
  101. package/dist/assets/AppLayout-ZSQtLvk5.js +0 -1
  102. package/dist/assets/Gamepad-Ci5viu_C.js +0 -1
  103. package/dist/assets/MiHome-BrH3mAX8.js +0 -1
  104. package/dist/assets/MiHome-CrfRQedH.css +0 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "mediaVersion": "0.0.31",
2
+ "mediaVersion": "0.0.32",
3
3
  "mediaFiles": [
4
4
  {
5
5
  "path": "models/mediapipe/blaze_face_full_range.tflite",
@@ -1 +1 @@
1
- import{d as o,o as p,m as r,A as c,b as s,t as a,g as t}from"./index-CaD9jpX7.js";import{_ as n}from"./_plugin-vue_export-helper-DlAUqK2U.js";const _=2026,i="YOKOCHEN YIMENG",C=`Copyright © ${_} ${i}. All rights reserved.`,d=["8144064","3715287"],l=`QQ:${d.join(" QQ:")}`,m={class:"app-credits-copy"},O={class:"app-credits-qq"},f=o({__name:"AppCredits",props:{variant:{default:"page"}},setup(e){return(A,I)=>(p(),r("p",{class:c(["app-credits",e.variant])},[s("span",m,a(t(C)),1),s("span",O,a(t(l)),1)],2))}}),E=n(f,[["__scopeId","data-v-f2e65ba2"]]);export{E as A,C,l as a};
1
+ import{d as o,o as p,m as r,A as c,b as s,t as a,g as t}from"./index-CSKTeMnN.js";import{_ as n}from"./_plugin-vue_export-helper-DlAUqK2U.js";const _=2026,i="YOKOCHEN YIMENG",C=`Copyright © ${_} ${i}. All rights reserved.`,d=["8144064","3715287"],l=`QQ:${d.join(" QQ:")}`,m={class:"app-credits-copy"},O={class:"app-credits-qq"},f=o({__name:"AppCredits",props:{variant:{default:"page"}},setup(e){return(A,I)=>(p(),r("p",{class:c(["app-credits",e.variant])},[s("span",m,a(t(C)),1),s("span",O,a(t(l)),1)],2))}}),E=n(f,[["__scopeId","data-v-f2e65ba2"]]);export{E as A,C,l as a};
@@ -1 +1 @@
1
- .device-switcher-hint[data-v-eeb08584]{margin:0 0 12px;font-size:13px;color:var(--text-secondary, #909399);line-height:1.6}.device-switcher-toolbar[data-v-eeb08584]{display:flex;gap:8px;margin-bottom:12px}[data-v-eeb08584] .is-offline{opacity:.65}[data-v-eeb08584] .is-active{--el-table-tr-bg-color: #f5f4ff}.fs-btn[data-v-d1158f40]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--border-color);border-radius:8px;background:#fff;color:var(--text-secondary);cursor:pointer}.fs-btn[data-v-d1158f40]:hover,.fs-btn.on[data-v-d1158f40]{color:var(--text, #303133);border-color:#5b4cdb73;background:#5b4cdb1f}.shell-approval[data-v-d1158f40]{display:flex;flex-direction:column;gap:12px}.shell-approval-alert[data-v-d1158f40]{margin-bottom:4px}.shell-approval-meta[data-v-d1158f40]{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.shell-approval-tag[data-v-d1158f40]{display:inline-block;padding:2px 8px;border-radius:999px;background:#e6a23c26;color:#b88230;font-size:12px;font-weight:600}.shell-approval-reason[data-v-d1158f40]{font-size:13px;color:var(--muted, #606266)}.shell-approval-cmd[data-v-d1158f40]{margin:0;padding:12px 14px;border-radius:6px;border:1px solid var(--border-color);background:#fafafa;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.5;white-space:pre-wrap;word-break:break-all}.shell-approval-cwd[data-v-d1158f40]{margin:0;font-size:12px;color:var(--muted, #606266)}.shell-approval-hint[data-v-d1158f40]{margin:0;font-size:12px;color:var(--muted, #909399)}
1
+ .device-switcher-hint[data-v-eeb08584]{margin:0 0 12px;font-size:13px;color:var(--text-secondary, #909399);line-height:1.6}.device-switcher-toolbar[data-v-eeb08584]{display:flex;gap:8px;margin-bottom:12px}[data-v-eeb08584] .is-offline{opacity:.65}[data-v-eeb08584] .is-active{--el-table-tr-bg-color: #f5f4ff}.fs-btn[data-v-a9b40ffc]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--border-color);border-radius:8px;background:#fff;color:var(--text-secondary);cursor:pointer}.fs-btn[data-v-a9b40ffc]:hover,.fs-btn.on[data-v-a9b40ffc]{color:var(--text, #303133);border-color:#5b4cdb73;background:#5b4cdb1f}.shell-approval[data-v-a9b40ffc]{display:flex;flex-direction:column;gap:12px}.shell-approval-alert[data-v-a9b40ffc]{margin-bottom:4px}.shell-approval-meta[data-v-a9b40ffc]{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.shell-approval-tag[data-v-a9b40ffc]{display:inline-block;padding:2px 8px;border-radius:999px;background:#e6a23c26;color:#b88230;font-size:12px;font-weight:600}.shell-approval-reason[data-v-a9b40ffc]{font-size:13px;color:var(--muted, #606266)}.shell-approval-cmd[data-v-a9b40ffc]{margin:0;padding:12px 14px;border-radius:6px;border:1px solid var(--border-color);background:#fafafa;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.5;white-space:pre-wrap;word-break:break-all}.shell-approval-cwd[data-v-a9b40ffc]{margin:0;font-size:12px;color:var(--muted, #606266)}.shell-approval-hint[data-v-a9b40ffc]{margin:0;font-size:12px;color:var(--muted, #909399)}
@@ -0,0 +1 @@
1
+ import{d as b,u as l0,a as Y,c as L,w as A,r as _,o as l,b as a,e as $,f as S,g as n,t as M,h as I,i as t0,E as G,j as z,k as P,l as a0,m as t,n as x,p as k,q as B,s as r,v as d,x as s0,y as o0,z as r0,A as C,F as R,B as n0,C as U,D as J,G as i0,H as K,K as u0}from"./index-CSKTeMnN.js";import{A as d0}from"./AppCredits-CcYYBDcJ.js";import{_ as e0}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{I as h0}from"./PhBell.vue-DXfPY8QY.js";import{H as v0,I as c0}from"./PhPlugs.vue-gRp026up.js";import{G as p0}from"./PhKeyboard.vue-arBuzAmR.js";import{F as H0}from"./PhTelevisionSimple.vue-BrHfjo04.js";import"./esp-flasher-CE6TSjIH.js";const V0={class:"device-switcher-toolbar"},g0=b({__name:"DeviceSwitcherDialog",props:{modelValue:{type:Boolean,default:!1},modelModifiers:{}},emits:["update:modelValue"],setup(f){const e=l0(f,"modelValue"),i=Y(),p=a0(),g=I(""),H=I(!1),s=I("");function v(V){return t0(V)}function m(V){return i.activeDeviceId===V.id&&i.mossOnline}function y({row:V}){const h=[];return i.activeDeviceId===V.id&&h.push("is-active"),V.online||h.push("is-offline"),h.join(" ")}async function c(){H.value=!0;try{await i.refresh()}catch{}finally{H.value=!1}}async function w(){H.value=!0;try{await i.refresh()}finally{H.value=!1}}function O(){e.value=!1,p.push({path:"/device",query:P()})}async function q(V){try{const{value:h}=await G.prompt("给这台 MOSS 起个名字。","改名",{confirmButtonText:"保存",cancelButtonText:"取消",customClass:"moss-message-box moss-message-box-narrow",inputValue:V.displayName||"",inputPlaceholder:"例如 客厅的 MOSS",inputPattern:/\S+/,inputErrorMessage:"请填写名称"});await i.renameDevice(V.id,h.trim()),z.success("已改名")}catch(h){if(h==="cancel")return;z.error(h instanceof Error?h.message:"改名失败")}}async function D(V){const h=V.displayName||V.hostname||"MOSS";try{await G.confirm(`确定将「${h}」从列表中移除?之后若要再用,可重新添加。`,"移除设备",{type:"warning",confirmButtonText:"移除",cancelButtonText:"取消",confirmButtonClass:"el-button--danger"})}catch(Z){return void 0}s.value=V.id;try{await i.removeDevice(V.id),z.success("已移除"),i.devices.length||(e.value=!1,p.push("/device"))}catch(Z){z.error(Z instanceof Error?Z.message:"移除失败")}finally{s.value=""}}async function N(V){if(!V.online){z.warning("这台 MOSS 目前离线");return}if(m(V)){e.value=!1;return}g.value=V.id;try{await i.activateDevice(V.id),e.value=!1;const h=i.homePath();p.currentRoute.value.path!==h?p.push({path:h,query:P(V.id)}):p.replace({path:h,query:P(V.id)}),z.success(`已切换到 ${V.displayName||V.hostname||"MOSS"}`)}catch(h){z.error(h instanceof Error?h.message:"无法切换设备")}finally{g.value=""}}return(V,h)=>{const Z=_("el-button"),o=_("el-table-column"),j=_("el-tag"),F=_("el-table"),E=_("el-empty"),T=_("el-dialog");return l(),L(T,{modelValue:e.value,"onUpdate:modelValue":h[0]||(h[0]=u=>e.value=u),class:"moss-dialog device-switcher-dialog",title:"切换设备",width:"640px","align-center":"","destroy-on-close":"",onOpen:c},{default:A(()=>[h[5]||(h[5]=a("p",{class:"device-switcher-hint"}," 每个浏览器标签盯一台。再开一个标签,在这里选另一台即可同时看。 ",-1)),a("div",V0,[$(Z,{loading:H.value,onClick:w},{default:A(()=>[...h[1]||(h[1]=[S("刷新列表",-1)])]),_:1},8,["loading"]),$(Z,{type:"primary",plain:"",onClick:O},{default:A(()=>[...h[2]||(h[2]=[S("添加设备",-1)])]),_:1})]),n(i).devices.length?(l(),L(F,{key:0,data:n(i).devices,"row-key":"id","row-class-name":y,class:"device-switcher-table","max-height":"360"},{default:A(()=>[$(o,{label:"名称","min-width":"140"},{default:A(({row:u})=>[a("strong",null,M(u.displayName||u.hostname||"未命名"),1)]),_:1}),$(o,{label:"类型","min-width":"120"},{default:A(({row:u})=>[a("div",null,M(u.boardLabel||v(u.board)),1)]),_:1}),$(o,{label:"状态",width:"72",align:"center"},{default:A(({row:u})=>[$(j,{type:u.online?"success":"info",size:"small"},{default:A(()=>[S(M(u.online?"在线":"离线"),1)]),_:2},1032,["type"])]),_:1}),$(o,{label:"操作",width:"220",align:"right"},{default:A(({row:u})=>[$(Z,{size:"small",link:"",onClick:W=>q(u)},{default:A(()=>[...h[3]||(h[3]=[S("改名",-1)])]),_:1},8,["onClick"]),$(Z,{size:"small",link:"",type:"danger",loading:s.value===u.id,onClick:W=>D(u)},{default:A(()=>[...h[4]||(h[4]=[S(" 移除 ",-1)])]),_:1},8,["loading","onClick"]),$(Z,{type:"primary",size:"small",disabled:!u.online,loading:g.value===u.id,onClick:W=>N(u)},{default:A(()=>[S(M(m(u)?"当前":"切换"),1)]),_:2},1032,["disabled","loading","onClick"])]),_:1})]),_:1},8,["data"])):(l(),L(E,{key:1,description:"还没有设备。请添加一台,或等已绑定的 MOSS 上线。"}))]),_:1},8,["modelValue"])}}}),m0=e0(g0,[["__scopeId","data-v-eeb08584"]]),$0="/assets/logo-550w-purple-C42Lszoj.png",y0=["width","height","fill","transform"],Z0={key:0},f0=a("path",{d:"M216.49,104.49l-80,80a12,12,0,0,1-17,0l-80-80a12,12,0,0,1,17-17L128,159l71.51-71.52a12,12,0,0,1,17,17Z"},null,-1),A0=[f0],M0={key:1},w0=a("path",{d:"M208,96l-80,80L48,96Z",opacity:"0.2"},null,-1),k0=a("path",{d:"M215.39,92.94A8,8,0,0,0,208,88H48a8,8,0,0,0-5.66,13.66l80,80a8,8,0,0,0,11.32,0l80-80A8,8,0,0,0,215.39,92.94ZM128,164.69,67.31,104H188.69Z"},null,-1),b0=[w0,k0],_0={key:2},S0=a("path",{d:"M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,48,88H208a8,8,0,0,1,5.66,13.66Z"},null,-1),C0=[S0],z0={key:3},x0=a("path",{d:"M212.24,100.24l-80,80a6,6,0,0,1-8.48,0l-80-80a6,6,0,0,1,8.48-8.48L128,167.51l75.76-75.75a6,6,0,0,1,8.48,8.48Z"},null,-1),B0=[x0],N0={key:4},L0=a("path",{d:"M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z"},null,-1),q0=[L0],D0={key:5},P0=a("path",{d:"M210.83,98.83l-80,80a4,4,0,0,1-5.66,0l-80-80a4,4,0,0,1,5.66-5.66L128,170.34l77.17-77.17a4,4,0,1,1,5.66,5.66Z"},null,-1),O0=[P0],E0={name:"PhCaretDown"},I0=b({...E0,props:{weight:{type:String},size:{type:[String,Number]},color:{type:String},mirrored:{type:Boolean}},setup(f){const e=f,i=d("weight","regular"),p=d("size","1em"),g=d("color","currentColor"),H=d("mirrored",!1),s=r(()=>e.weight??i),v=r(()=>e.size??p),m=r(()=>e.color??g),y=r(()=>e.mirrored!==void 0?e.mirrored?"scale(-1, 1)":void 0:H?"scale(-1, 1)":void 0);return(c,w)=>(l(),t("svg",B({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 256",width:v.value,height:v.value,fill:m.value,transform:y.value},c.$attrs),[x(c.$slots,"default"),s.value==="bold"?(l(),t("g",Z0,A0)):s.value==="duotone"?(l(),t("g",M0,b0)):s.value==="fill"?(l(),t("g",_0,C0)):s.value==="light"?(l(),t("g",z0,B0)):s.value==="regular"?(l(),t("g",N0,q0)):s.value==="thin"?(l(),t("g",D0,O0)):k("",!0)],16,y0))}}),j0=["width","height","fill","transform"],F0={key:0},T0=a("path",{d:"M148,96V48a12,12,0,0,1,24,0V84h36a12,12,0,0,1,0,24H160A12,12,0,0,1,148,96ZM96,148H48a12,12,0,0,0,0,24H84v36a12,12,0,0,0,24,0V160A12,12,0,0,0,96,148Zm112,0H160a12,12,0,0,0-12,12v48a12,12,0,0,0,24,0V172h36a12,12,0,0,0,0-24ZM96,36A12,12,0,0,0,84,48V84H48a12,12,0,0,0,0,24H96a12,12,0,0,0,12-12V48A12,12,0,0,0,96,36Z"},null,-1),W0=[T0],G0={key:1},R0=a("path",{d:"M208,64V192a16,16,0,0,1-16,16H64a16,16,0,0,1-16-16V64A16,16,0,0,1,64,48H192A16,16,0,0,1,208,64Z",opacity:"0.2"},null,-1),U0=a("path",{d:"M152,96V48a8,8,0,0,1,16,0V88h40a8,8,0,0,1,0,16H160A8,8,0,0,1,152,96ZM96,152H48a8,8,0,0,0,0,16H88v40a8,8,0,0,0,16,0V160A8,8,0,0,0,96,152Zm112,0H160a8,8,0,0,0-8,8v48a8,8,0,0,0,16,0V168h40a8,8,0,0,0,0-16ZM96,40a8,8,0,0,0-8,8V88H48a8,8,0,0,0,0,16H96a8,8,0,0,0,8-8V48A8,8,0,0,0,96,40Z"},null,-1),J0=[R0,U0],K0={key:2},Q0=a("path",{d:"M152,96V48a8,8,0,0,1,13.66-5.66l48,48A8,8,0,0,1,208,104H160A8,8,0,0,1,152,96ZM96,152H48a8,8,0,0,0-5.66,13.66l48,48A8,8,0,0,0,104,208V160A8,8,0,0,0,96,152ZM99.06,40.61a8,8,0,0,0-8.72,1.73l-48,48A8,8,0,0,0,48,104H96a8,8,0,0,0,8-8V48A8,8,0,0,0,99.06,40.61ZM208,152H160a8,8,0,0,0-8,8v48a8,8,0,0,0,13.66,5.66l48-48A8,8,0,0,0,208,152Z"},null,-1),X0=[Q0],Y0={key:3},a1=a("path",{d:"M154,96V48a6,6,0,0,1,12,0V90h42a6,6,0,0,1,0,12H160A6,6,0,0,1,154,96ZM96,154H48a6,6,0,0,0,0,12H90v42a6,6,0,0,0,12,0V160A6,6,0,0,0,96,154Zm112,0H160a6,6,0,0,0-6,6v48a6,6,0,0,0,12,0V166h42a6,6,0,0,0,0-12ZM96,42a6,6,0,0,0-6,6V90H48a6,6,0,0,0,0,12H96a6,6,0,0,0,6-6V48A6,6,0,0,0,96,42Z"},null,-1),e1=[a1],l1={key:4},t1=a("path",{d:"M152,96V48a8,8,0,0,1,16,0V88h40a8,8,0,0,1,0,16H160A8,8,0,0,1,152,96ZM96,152H48a8,8,0,0,0,0,16H88v40a8,8,0,0,0,16,0V160A8,8,0,0,0,96,152Zm112,0H160a8,8,0,0,0-8,8v48a8,8,0,0,0,16,0V168h40a8,8,0,0,0,0-16ZM96,40a8,8,0,0,0-8,8V88H48a8,8,0,0,0,0,16H96a8,8,0,0,0,8-8V48A8,8,0,0,0,96,40Z"},null,-1),s1=[t1],o1={key:5},r1=a("path",{d:"M156,96V48a4,4,0,0,1,8,0V92h44a4,4,0,0,1,0,8H160A4,4,0,0,1,156,96ZM96,156H48a4,4,0,0,0,0,8H92v44a4,4,0,0,0,8,0V160A4,4,0,0,0,96,156Zm112,0H160a4,4,0,0,0-4,4v48a4,4,0,0,0,8,0V164h44a4,4,0,0,0,0-8ZM96,44a4,4,0,0,0-4,4V92H48a4,4,0,0,0,0,8H96a4,4,0,0,0,4-4V48A4,4,0,0,0,96,44Z"},null,-1),n1=[r1],i1={name:"PhCornersIn"},u1=b({...i1,props:{weight:{type:String},size:{type:[String,Number]},color:{type:String},mirrored:{type:Boolean}},setup(f){const e=f,i=d("weight","regular"),p=d("size","1em"),g=d("color","currentColor"),H=d("mirrored",!1),s=r(()=>e.weight??i),v=r(()=>e.size??p),m=r(()=>e.color??g),y=r(()=>e.mirrored!==void 0?e.mirrored?"scale(-1, 1)":void 0:H?"scale(-1, 1)":void 0);return(c,w)=>(l(),t("svg",B({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 256",width:v.value,height:v.value,fill:m.value,transform:y.value},c.$attrs),[x(c.$slots,"default"),s.value==="bold"?(l(),t("g",F0,W0)):s.value==="duotone"?(l(),t("g",G0,J0)):s.value==="fill"?(l(),t("g",K0,X0)):s.value==="light"?(l(),t("g",Y0,e1)):s.value==="regular"?(l(),t("g",l1,s1)):s.value==="thin"?(l(),t("g",o1,n1)):k("",!0)],16,j0))}}),d1=["width","height","fill","transform"],h1={key:0},v1=a("path",{d:"M220,48V88a12,12,0,0,1-24,0V60H168a12,12,0,0,1,0-24h40A12,12,0,0,1,220,48ZM88,196H60V168a12,12,0,0,0-24,0v40a12,12,0,0,0,12,12H88a12,12,0,0,0,0-24Zm120-40a12,12,0,0,0-12,12v28H168a12,12,0,0,0,0,24h40a12,12,0,0,0,12-12V168A12,12,0,0,0,208,156ZM88,36H48A12,12,0,0,0,36,48V88a12,12,0,0,0,24,0V60H88a12,12,0,0,0,0-24Z"},null,-1),c1=[v1],p1={key:1},H1=a("path",{d:"M208,48V208H48V48Z",opacity:"0.2"},null,-1),V1=a("path",{d:"M216,48V88a8,8,0,0,1-16,0V56H168a8,8,0,0,1,0-16h40A8,8,0,0,1,216,48ZM88,200H56V168a8,8,0,0,0-16,0v40a8,8,0,0,0,8,8H88a8,8,0,0,0,0-16Zm120-40a8,8,0,0,0-8,8v32H168a8,8,0,0,0,0,16h40a8,8,0,0,0,8-8V168A8,8,0,0,0,208,160ZM88,40H48a8,8,0,0,0-8,8V88a8,8,0,0,0,16,0V56H88a8,8,0,0,0,0-16Z"},null,-1),g1=[H1,V1],m1={key:2},$1=a("path",{d:"M93.66,202.34A8,8,0,0,1,88,216H48a8,8,0,0,1-8-8V168a8,8,0,0,1,13.66-5.66ZM88,40H48a8,8,0,0,0-8,8V88a8,8,0,0,0,13.66,5.66l40-40A8,8,0,0,0,88,40ZM211.06,160.61a8,8,0,0,0-8.72,1.73l-40,40A8,8,0,0,0,168,216h40a8,8,0,0,0,8-8V168A8,8,0,0,0,211.06,160.61ZM208,40H168a8,8,0,0,0-5.66,13.66l40,40A8,8,0,0,0,216,88V48A8,8,0,0,0,208,40Z"},null,-1),y1=[$1],Z1={key:3},f1=a("path",{d:"M214,48V88a6,6,0,0,1-12,0V54H168a6,6,0,0,1,0-12h40A6,6,0,0,1,214,48ZM88,202H54V168a6,6,0,0,0-12,0v40a6,6,0,0,0,6,6H88a6,6,0,0,0,0-12Zm120-40a6,6,0,0,0-6,6v34H168a6,6,0,0,0,0,12h40a6,6,0,0,0,6-6V168A6,6,0,0,0,208,162ZM88,42H48a6,6,0,0,0-6,6V88a6,6,0,0,0,12,0V54H88a6,6,0,0,0,0-12Z"},null,-1),A1=[f1],M1={key:4},w1=a("path",{d:"M216,48V88a8,8,0,0,1-16,0V56H168a8,8,0,0,1,0-16h40A8,8,0,0,1,216,48ZM88,200H56V168a8,8,0,0,0-16,0v40a8,8,0,0,0,8,8H88a8,8,0,0,0,0-16Zm120-40a8,8,0,0,0-8,8v32H168a8,8,0,0,0,0,16h40a8,8,0,0,0,8-8V168A8,8,0,0,0,208,160ZM88,40H48a8,8,0,0,0-8,8V88a8,8,0,0,0,16,0V56H88a8,8,0,0,0,0-16Z"},null,-1),k1=[w1],b1={key:5},_1=a("path",{d:"M212,48V88a4,4,0,0,1-8,0V52H168a4,4,0,0,1,0-8h40A4,4,0,0,1,212,48ZM88,204H52V168a4,4,0,0,0-8,0v40a4,4,0,0,0,4,4H88a4,4,0,0,0,0-8Zm120-40a4,4,0,0,0-4,4v36H168a4,4,0,0,0,0,8h40a4,4,0,0,0,4-4V168A4,4,0,0,0,208,164ZM88,44H48a4,4,0,0,0-4,4V88a4,4,0,0,0,8,0V52H88a4,4,0,0,0,0-8Z"},null,-1),S1=[_1],C1={name:"PhCornersOut"},z1=b({...C1,props:{weight:{type:String},size:{type:[String,Number]},color:{type:String},mirrored:{type:Boolean}},setup(f){const e=f,i=d("weight","regular"),p=d("size","1em"),g=d("color","currentColor"),H=d("mirrored",!1),s=r(()=>e.weight??i),v=r(()=>e.size??p),m=r(()=>e.color??g),y=r(()=>e.mirrored!==void 0?e.mirrored?"scale(-1, 1)":void 0:H?"scale(-1, 1)":void 0);return(c,w)=>(l(),t("svg",B({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 256",width:v.value,height:v.value,fill:m.value,transform:y.value},c.$attrs),[x(c.$slots,"default"),s.value==="bold"?(l(),t("g",h1,c1)):s.value==="duotone"?(l(),t("g",p1,g1)):s.value==="fill"?(l(),t("g",m1,y1)):s.value==="light"?(l(),t("g",Z1,A1)):s.value==="regular"?(l(),t("g",M1,k1)):s.value==="thin"?(l(),t("g",b1,S1)):k("",!0)],16,d1))}}),x1=["width","height","fill","transform"],B1={key:0},N1=a("path",{d:"M156,88H100a12,12,0,0,0-12,12v56a12,12,0,0,0,12,12h56a12,12,0,0,0,12-12V100A12,12,0,0,0,156,88Zm-12,56H112V112h32Zm88-4H220V116h12a12,12,0,0,0,0-24H220V56a20,20,0,0,0-20-20H164V24a12,12,0,0,0-24,0V36H116V24a12,12,0,0,0-24,0V36H56A20,20,0,0,0,36,56V92H24a12,12,0,0,0,0,24H36v24H24a12,12,0,0,0,0,24H36v36a20,20,0,0,0,20,20H92v12a12,12,0,0,0,24,0V220h24v12a12,12,0,0,0,24,0V220h36a20,20,0,0,0,20-20V164h12a12,12,0,0,0,0-24Zm-36,56H60V60H196Z"},null,-1),L1=[N1],q1={key:1},D1=a("path",{d:"M200,48H56a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H200a8,8,0,0,0,8-8V56A8,8,0,0,0,200,48ZM152,152H104V104h48Z",opacity:"0.2"},null,-1),P1=a("path",{d:"M152,96H104a8,8,0,0,0-8,8v48a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8V104A8,8,0,0,0,152,96Zm-8,48H112V112h32Zm88,0H216V112h16a8,8,0,0,0,0-16H216V56a16,16,0,0,0-16-16H160V24a8,8,0,0,0-16,0V40H112V24a8,8,0,0,0-16,0V40H56A16,16,0,0,0,40,56V96H24a8,8,0,0,0,0,16H40v32H24a8,8,0,0,0,0,16H40v40a16,16,0,0,0,16,16H96v16a8,8,0,0,0,16,0V216h32v16a8,8,0,0,0,16,0V216h40a16,16,0,0,0,16-16V160h16a8,8,0,0,0,0-16Zm-32,56H56V56H200v95.87s0,.09,0,.13,0,.09,0,.13V200Z"},null,-1),O1=[D1,P1],E1={key:2},I1=a("path",{d:"M104,104h48v48H104Zm136,48a8,8,0,0,1-8,8H216v40a16,16,0,0,1-16,16H160v16a8,8,0,0,1-16,0V216H112v16a8,8,0,0,1-16,0V216H56a16,16,0,0,1-16-16V160H24a8,8,0,0,1,0-16H40V112H24a8,8,0,0,1,0-16H40V56A16,16,0,0,1,56,40H96V24a8,8,0,0,1,16,0V40h32V24a8,8,0,0,1,16,0V40h40a16,16,0,0,1,16,16V96h16a8,8,0,0,1,0,16H216v32h16A8,8,0,0,1,240,152ZM168,96a8,8,0,0,0-8-8H96a8,8,0,0,0-8,8v64a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8Z"},null,-1),j1=[I1],F1={key:3},T1=a("path",{d:"M152,98H104a6,6,0,0,0-6,6v48a6,6,0,0,0,6,6h48a6,6,0,0,0,6-6V104A6,6,0,0,0,152,98Zm-6,48H110V110h36Zm86,0H214V110h18a6,6,0,0,0,0-12H214V56a14,14,0,0,0-14-14H158V24a6,6,0,0,0-12,0V42H110V24a6,6,0,0,0-12,0V42H56A14,14,0,0,0,42,56V98H24a6,6,0,0,0,0,12H42v36H24a6,6,0,0,0,0,12H42v42a14,14,0,0,0,14,14H98v18a6,6,0,0,0,12,0V214h36v18a6,6,0,0,0,12,0V214h42a14,14,0,0,0,14-14V158h18a6,6,0,0,0,0-12Zm-30,54a2,2,0,0,1-2,2H56a2,2,0,0,1-2-2V56a2,2,0,0,1,2-2H200a2,2,0,0,1,2,2Z"},null,-1),W1=[T1],G1={key:4},R1=a("path",{d:"M152,96H104a8,8,0,0,0-8,8v48a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8V104A8,8,0,0,0,152,96Zm-8,48H112V112h32Zm88,0H216V112h16a8,8,0,0,0,0-16H216V56a16,16,0,0,0-16-16H160V24a8,8,0,0,0-16,0V40H112V24a8,8,0,0,0-16,0V40H56A16,16,0,0,0,40,56V96H24a8,8,0,0,0,0,16H40v32H24a8,8,0,0,0,0,16H40v40a16,16,0,0,0,16,16H96v16a8,8,0,0,0,16,0V216h32v16a8,8,0,0,0,16,0V216h40a16,16,0,0,0,16-16V160h16a8,8,0,0,0,0-16Zm-32,56H56V56H200v95.87s0,.09,0,.13,0,.09,0,.13V200Z"},null,-1),U1=[R1],J1={key:5},K1=a("path",{d:"M152,100H104a4,4,0,0,0-4,4v48a4,4,0,0,0,4,4h48a4,4,0,0,0,4-4V104A4,4,0,0,0,152,100Zm-4,48H108V108h40Zm84,0H212V108h20a4,4,0,0,0,0-8H212V56a12,12,0,0,0-12-12H156V24a4,4,0,0,0-8,0V44H108V24a4,4,0,0,0-8,0V44H56A12,12,0,0,0,44,56v44H24a4,4,0,0,0,0,8H44v40H24a4,4,0,0,0,0,8H44v44a12,12,0,0,0,12,12h44v20a4,4,0,0,0,8,0V212h40v20a4,4,0,0,0,8,0V212h44a12,12,0,0,0,12-12V156h20a4,4,0,0,0,0-8Zm-28,52a4,4,0,0,1-4,4H56a4,4,0,0,1-4-4V56a4,4,0,0,1,4-4H200a4,4,0,0,1,4,4Z"},null,-1),Q1=[K1],X1={name:"PhCpu"},Y1=b({...X1,props:{weight:{type:String},size:{type:[String,Number]},color:{type:String},mirrored:{type:Boolean}},setup(f){const e=f,i=d("weight","regular"),p=d("size","1em"),g=d("color","currentColor"),H=d("mirrored",!1),s=r(()=>e.weight??i),v=r(()=>e.size??p),m=r(()=>e.color??g),y=r(()=>e.mirrored!==void 0?e.mirrored?"scale(-1, 1)":void 0:H?"scale(-1, 1)":void 0);return(c,w)=>(l(),t("svg",B({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 256",width:v.value,height:v.value,fill:m.value,transform:y.value},c.$attrs),[x(c.$slots,"default"),s.value==="bold"?(l(),t("g",B1,L1)):s.value==="duotone"?(l(),t("g",q1,O1)):s.value==="fill"?(l(),t("g",E1,j1)):s.value==="light"?(l(),t("g",F1,W1)):s.value==="regular"?(l(),t("g",G1,U1)):s.value==="thin"?(l(),t("g",J1,Q1)):k("",!0)],16,x1))}}),a8=["width","height","fill","transform"],e8={key:0},l8=a("path",{d:"M209.88,69.83A115.19,115.19,0,0,0,128,36h-.41C63.85,36.22,12,88.76,12,153.13V176a20,20,0,0,0,20,20H224a20,20,0,0,0,20-20V152A115.25,115.25,0,0,0,209.88,69.83ZM220,172H127.32l46.44-65A12,12,0,1,0,154.24,93L97.82,172H36V153.13c0-1.72,0-3.43.14-5.13H56a12,12,0,0,0,0-24H40.62c10.91-33.39,40-58.52,75.38-63.21V80a12,12,0,0,0,24,0V60.8A92,92,0,0,1,215.66,124H200a12,12,0,0,0,0,24h19.9c.06,1.33.1,2.66.1,4Z"},null,-1),t8=[l8],s8={key:1},o8=a("path",{d:"M232,152v24a8,8,0,0,1-8,8H32a8,8,0,0,1-8-8V153.13C24,95.65,70.15,48.2,127.63,48A104,104,0,0,1,232,152Z",opacity:"0.2"},null,-1),r8=a("path",{d:"M207.06,72.67A111.24,111.24,0,0,0,128,40h-.4C66.07,40.21,16,91,16,153.13V176a16,16,0,0,0,16,16H224a16,16,0,0,0,16-16V152A111.25,111.25,0,0,0,207.06,72.67ZM224,176H119.71l54.76-75.3a8,8,0,0,0-12.94-9.42L99.92,176H32V153.13c0-3.08.15-6.12.43-9.13H56a8,8,0,0,0,0-16H35.27c10.32-38.86,44-68.24,84.73-71.66V80a8,8,0,0,0,16,0V56.33A96.14,96.14,0,0,1,221,128H200a8,8,0,0,0,0,16h23.67c.21,2.65.33,5.31.33,8Z"},null,-1),n8=[o8,r8],i8={key:2},u8=a("path",{d:"M240,152v24a16,16,0,0,1-16,16H115.93a4,4,0,0,1-3.24-6.35L174.27,101a8.21,8.21,0,0,0-1.37-11.3,8,8,0,0,0-11.37,1.61l-72,99.06A4,4,0,0,1,86.25,192H32a16,16,0,0,1-16-16V153.13c0-1.79,0-3.57.13-5.33a4,4,0,0,1,4-3.8H48a8,8,0,0,0,8-8.53A8.17,8.17,0,0,0,47.73,128H23.92a4,4,0,0,1-3.87-5c12-43.84,49.66-77.13,95.52-82.28a4,4,0,0,1,4.43,4V72a8,8,0,0,0,8.53,8A8.17,8.17,0,0,0,136,71.73V44.67a4,4,0,0,1,4.43-4A112.18,112.18,0,0,1,236.23,123a4,4,0,0,1-3.88,5H208.27a8.17,8.17,0,0,0-8.25,7.47,8,8,0,0,0,8,8.53h27.92a4,4,0,0,1,4,3.86C240,149.23,240,150.61,240,152Z"},null,-1),d8=[u8],h8={key:3},v8=a("path",{d:"M205.65,74.08A109.26,109.26,0,0,0,128,42h-.39C67.17,42.21,18,92.06,18,153.13V176a14,14,0,0,0,14,14H224a14,14,0,0,0,14-14V152A109.3,109.3,0,0,0,205.65,74.08ZM226,176a2,2,0,0,1-2,2H115.78l57.07-78.47a6,6,0,0,0-9.7-7.06L100.94,178H32a2,2,0,0,1-2-2V153.13A102.36,102.36,0,0,1,30.62,142H56a6,6,0,0,0,0-12H32.71C42.6,88.4,78.53,56.86,122,54.19V80a6,6,0,0,0,12,0V54.19A98.05,98.05,0,0,1,223.53,130H200a6,6,0,0,0,0,12h25.5c.33,3.3.5,6.64.5,10Z"},null,-1),c8=[v8],p8={key:4},H8=a("path",{d:"M207.06,72.67A111.24,111.24,0,0,0,128,40h-.4C66.07,40.21,16,91,16,153.13V176a16,16,0,0,0,16,16H224a16,16,0,0,0,16-16V152A111.25,111.25,0,0,0,207.06,72.67ZM224,176H119.71l54.76-75.3a8,8,0,0,0-12.94-9.42L99.92,176H32V153.13c0-3.08.15-6.12.43-9.13H56a8,8,0,0,0,0-16H35.27c10.32-38.86,44-68.24,84.73-71.66V80a8,8,0,0,0,16,0V56.33A96.14,96.14,0,0,1,221,128H200a8,8,0,0,0,0,16h23.67c.21,2.65.33,5.31.33,8Z"},null,-1),V8=[H8],g8={key:5},m8=a("path",{d:"M204.23,75.5A107.37,107.37,0,0,0,127.62,44C68.28,44.21,20,93.16,20,153.13V176a12,12,0,0,0,12,12H224a12,12,0,0,0,12-12V152A107.25,107.25,0,0,0,204.23,75.5ZM228,176a4,4,0,0,1-4,4H111.85l59.38-81.65a4,4,0,1,0-6.46-4.7L102,180H32a4,4,0,0,1-4-4V153.13A103.42,103.42,0,0,1,28.84,140H56a4,4,0,0,0,0-8H30.21C39.59,87.66,77.84,53.93,124,52.09V80a4,4,0,0,0,8,0V52.08A100.08,100.08,0,0,1,226,132H200a4,4,0,0,0,0,8h27.29a101.6,101.6,0,0,1,.71,12Z"},null,-1),$8=[m8],y8={name:"PhGauge"},Z8=b({...y8,props:{weight:{type:String},size:{type:[String,Number]},color:{type:String},mirrored:{type:Boolean}},setup(f){const e=f,i=d("weight","regular"),p=d("size","1em"),g=d("color","currentColor"),H=d("mirrored",!1),s=r(()=>e.weight??i),v=r(()=>e.size??p),m=r(()=>e.color??g),y=r(()=>e.mirrored!==void 0?e.mirrored?"scale(-1, 1)":void 0:H?"scale(-1, 1)":void 0);return(c,w)=>(l(),t("svg",B({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 256",width:v.value,height:v.value,fill:m.value,transform:y.value},c.$attrs),[x(c.$slots,"default"),s.value==="bold"?(l(),t("g",e8,t8)):s.value==="duotone"?(l(),t("g",s8,n8)):s.value==="fill"?(l(),t("g",i8,d8)):s.value==="light"?(l(),t("g",h8,c8)):s.value==="regular"?(l(),t("g",p8,V8)):s.value==="thin"?(l(),t("g",g8,$8)):k("",!0)],16,a8))}}),f8=["width","height","fill","transform"],A8={key:0},M8=a("path",{d:"M222.14,105.85l-80-80a20,20,0,0,0-28.28,0l-80,80A19.86,19.86,0,0,0,28,120v96a12,12,0,0,0,12,12h64a12,12,0,0,0,12-12V164h24v52a12,12,0,0,0,12,12h64a12,12,0,0,0,12-12V120A19.86,19.86,0,0,0,222.14,105.85ZM204,204H164V152a12,12,0,0,0-12-12H104a12,12,0,0,0-12,12v52H52V121.65l76-76,76,76Z"},null,-1),w8=[M8],k8={key:1},b8=a("path",{d:"M216,120v96H152V152H104v64H40V120a8,8,0,0,1,2.34-5.66l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,216,120Z",opacity:"0.2"},null,-1),_8=a("path",{d:"M219.31,108.68l-80-80a16,16,0,0,0-22.62,0l-80,80A15.87,15.87,0,0,0,32,120v96a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V160h32v56a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V120A15.87,15.87,0,0,0,219.31,108.68ZM208,208H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48V120l80-80,80,80Z"},null,-1),S8=[b8,_8],C8={key:2},z8=a("path",{d:"M224,120v96a8,8,0,0,1-8,8H160a8,8,0,0,1-8-8V164a4,4,0,0,0-4-4H108a4,4,0,0,0-4,4v52a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V120a16,16,0,0,1,4.69-11.31l80-80a16,16,0,0,1,22.62,0l80,80A16,16,0,0,1,224,120Z"},null,-1),x8=[z8],B8={key:3},N8=a("path",{d:"M217.9,110.1l-80-80a14,14,0,0,0-19.8,0l-80,80A13.92,13.92,0,0,0,34,120v96a6,6,0,0,0,6,6h64a6,6,0,0,0,6-6V158h36v58a6,6,0,0,0,6,6h64a6,6,0,0,0,6-6V120A13.92,13.92,0,0,0,217.9,110.1ZM210,210H158V152a6,6,0,0,0-6-6H104a6,6,0,0,0-6,6v58H46V120a2,2,0,0,1,.58-1.42l80-80a2,2,0,0,1,2.84,0l80,80A2,2,0,0,1,210,120Z"},null,-1),L8=[N8],q8={key:4},D8=a("path",{d:"M219.31,108.68l-80-80a16,16,0,0,0-22.62,0l-80,80A15.87,15.87,0,0,0,32,120v96a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V160h32v56a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V120A15.87,15.87,0,0,0,219.31,108.68ZM208,208H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48V120l80-80,80,80Z"},null,-1),P8=[D8],O8={key:5},E8=a("path",{d:"M216.49,111.51l-80-80a12,12,0,0,0-17,0l-80,80A12,12,0,0,0,36,120v96a4,4,0,0,0,4,4h64a4,4,0,0,0,4-4V156h40v60a4,4,0,0,0,4,4h64a4,4,0,0,0,4-4V120A12,12,0,0,0,216.49,111.51ZM212,212H156V152a4,4,0,0,0-4-4H104a4,4,0,0,0-4,4v60H44V120a4,4,0,0,1,1.17-2.83l80-80a4,4,0,0,1,5.66,0l80,80A4,4,0,0,1,212,120Z"},null,-1),I8=[E8],j8={name:"PhHouse"},F8=b({...j8,props:{weight:{type:String},size:{type:[String,Number]},color:{type:String},mirrored:{type:Boolean}},setup(f){const e=f,i=d("weight","regular"),p=d("size","1em"),g=d("color","currentColor"),H=d("mirrored",!1),s=r(()=>e.weight??i),v=r(()=>e.size??p),m=r(()=>e.color??g),y=r(()=>e.mirrored!==void 0?e.mirrored?"scale(-1, 1)":void 0:H?"scale(-1, 1)":void 0);return(c,w)=>(l(),t("svg",B({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 256",width:v.value,height:v.value,fill:m.value,transform:y.value},c.$attrs),[x(c.$slots,"default"),s.value==="bold"?(l(),t("g",A8,w8)):s.value==="duotone"?(l(),t("g",k8,S8)):s.value==="fill"?(l(),t("g",C8,x8)):s.value==="light"?(l(),t("g",B8,L8)):s.value==="regular"?(l(),t("g",q8,P8)):s.value==="thin"?(l(),t("g",O8,I8)):k("",!0)],16,f8))}}),T8=["width","height","fill","transform"],W8={key:0},G8=a("path",{d:"M208,144H140V98.32a44,44,0,1,0-24,0V144H48a20,20,0,0,0-20,20v44a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V164A20,20,0,0,0,208,144ZM108,56a20,20,0,1,1,20,20A20,20,0,0,1,108,56Zm96,148H52V168H204ZM172,104h32a12,12,0,0,1,0,24H172a12,12,0,0,1,0-24Z"},null,-1),R8=[G8],U8={key:1},J8=a("path",{d:"M216,160v48a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V160a8,8,0,0,1,8-8H208A8,8,0,0,1,216,160ZM128,88A32,32,0,1,0,96,56,32,32,0,0,0,128,88Z",opacity:"0.2"},null,-1),K8=a("path",{d:"M208,144H136V95.19a40,40,0,1,0-16,0V144H48a16,16,0,0,0-16,16v48a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V160A16,16,0,0,0,208,144ZM104,56a24,24,0,1,1,24,24A24,24,0,0,1,104,56ZM208,208H48V160H208v48Zm-40-96h32a8,8,0,0,1,0,16H168a8,8,0,0,1,0-16Z"},null,-1),Q8=[J8,K8],X8={key:2},Y8=a("path",{d:"M224,160v48a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V160a16,16,0,0,1,16-16h72V95.19a40,40,0,1,1,16,0V144h72A16,16,0,0,1,224,160Zm-64-40a8,8,0,0,0,8,8h32a8,8,0,0,0,0-16H168A8,8,0,0,0,160,120Z"},null,-1),a2=[Y8],e2={key:3},l2=a("path",{d:"M208,146H134V93.52a38,38,0,1,0-12,0V146H48a14,14,0,0,0-14,14v48a14,14,0,0,0,14,14H208a14,14,0,0,0,14-14V160A14,14,0,0,0,208,146ZM102,56a26,26,0,1,1,26,26A26,26,0,0,1,102,56ZM210,208a2,2,0,0,1-2,2H48a2,2,0,0,1-2-2V160a2,2,0,0,1,2-2H208a2,2,0,0,1,2,2Zm-42-94h32a6,6,0,0,1,0,12H168a6,6,0,0,1,0-12Z"},null,-1),t2=[l2],s2={key:4},o2=a("path",{d:"M208,144H136V95.19a40,40,0,1,0-16,0V144H48a16,16,0,0,0-16,16v48a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V160A16,16,0,0,0,208,144ZM104,56a24,24,0,1,1,24,24A24,24,0,0,1,104,56ZM208,208H48V160H208v48Zm-40-96h32a8,8,0,0,1,0,16H168a8,8,0,0,1,0-16Z"},null,-1),r2=[o2],n2={key:5},i2=a("path",{d:"M208,148H132V91.77a36,36,0,1,0-8,0V148H48a12,12,0,0,0-12,12v48a12,12,0,0,0,12,12H208a12,12,0,0,0,12-12V160A12,12,0,0,0,208,148ZM100,56a28,28,0,1,1,28,28A28,28,0,0,1,100,56ZM212,208a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V160a4,4,0,0,1,4-4H208a4,4,0,0,1,4,4Zm-48-88a4,4,0,0,1,4-4h32a4,4,0,0,1,0,8H168A4,4,0,0,1,164,120Z"},null,-1),u2=[i2],d2={name:"PhJoystick"},h2=b({...d2,props:{weight:{type:String},size:{type:[String,Number]},color:{type:String},mirrored:{type:Boolean}},setup(f){const e=f,i=d("weight","regular"),p=d("size","1em"),g=d("color","currentColor"),H=d("mirrored",!1),s=r(()=>e.weight??i),v=r(()=>e.size??p),m=r(()=>e.color??g),y=r(()=>e.mirrored!==void 0?e.mirrored?"scale(-1, 1)":void 0:H?"scale(-1, 1)":void 0);return(c,w)=>(l(),t("svg",B({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 256",width:v.value,height:v.value,fill:m.value,transform:y.value},c.$attrs),[x(c.$slots,"default"),s.value==="bold"?(l(),t("g",W8,R8)):s.value==="duotone"?(l(),t("g",U8,Q8)):s.value==="fill"?(l(),t("g",X8,a2)):s.value==="light"?(l(),t("g",e2,t2)):s.value==="regular"?(l(),t("g",s2,r2)):s.value==="thin"?(l(),t("g",n2,u2)):k("",!0)],16,T8))}}),v2=["width","height","fill","transform"],c2={key:0},p2=a("path",{d:"M208,76H180V56A52,52,0,0,0,76,56V76H48A20,20,0,0,0,28,96V208a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V96A20,20,0,0,0,208,76ZM100,56a28,28,0,0,1,56,0V76H100ZM204,204H52V100H204Z"},null,-1),H2=[p2],V2={key:1},g2=a("path",{d:"M216,96V208a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8H208A8,8,0,0,1,216,96Z",opacity:"0.2"},null,-1),m2=a("path",{d:"M208,80H176V56a48,48,0,0,0-96,0V80H48A16,16,0,0,0,32,96V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V96A16,16,0,0,0,208,80ZM96,56a32,32,0,0,1,64,0V80H96ZM208,208H48V96H208V208Z"},null,-1),$2=[g2,m2],y2={key:2},Z2=a("path",{d:"M208,80H176V56a48,48,0,0,0-96,0V80H48A16,16,0,0,0,32,96V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V96A16,16,0,0,0,208,80ZM96,56a32,32,0,0,1,64,0V80H96Z"},null,-1),f2=[Z2],A2={key:3},M2=a("path",{d:"M208,82H174V56a46,46,0,0,0-92,0V82H48A14,14,0,0,0,34,96V208a14,14,0,0,0,14,14H208a14,14,0,0,0,14-14V96A14,14,0,0,0,208,82ZM94,56a34,34,0,0,1,68,0V82H94ZM210,208a2,2,0,0,1-2,2H48a2,2,0,0,1-2-2V96a2,2,0,0,1,2-2H208a2,2,0,0,1,2,2Z"},null,-1),w2=[M2],k2={key:4},b2=a("path",{d:"M208,80H176V56a48,48,0,0,0-96,0V80H48A16,16,0,0,0,32,96V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V96A16,16,0,0,0,208,80ZM96,56a32,32,0,0,1,64,0V80H96ZM208,208H48V96H208V208Z"},null,-1),_2=[b2],S2={key:5},C2=a("path",{d:"M208,84H172V56a44,44,0,0,0-88,0V84H48A12,12,0,0,0,36,96V208a12,12,0,0,0,12,12H208a12,12,0,0,0,12-12V96A12,12,0,0,0,208,84ZM92,56a36,36,0,0,1,72,0V84H92ZM212,208a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V96a4,4,0,0,1,4-4H208a4,4,0,0,1,4,4Z"},null,-1),z2=[C2],x2={name:"PhLockSimple"},Q=b({...x2,props:{weight:{type:String},size:{type:[String,Number]},color:{type:String},mirrored:{type:Boolean}},setup(f){const e=f,i=d("weight","regular"),p=d("size","1em"),g=d("color","currentColor"),H=d("mirrored",!1),s=r(()=>e.weight??i),v=r(()=>e.size??p),m=r(()=>e.color??g),y=r(()=>e.mirrored!==void 0?e.mirrored?"scale(-1, 1)":void 0:H?"scale(-1, 1)":void 0);return(c,w)=>(l(),t("svg",B({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 256",width:v.value,height:v.value,fill:m.value,transform:y.value},c.$attrs),[x(c.$slots,"default"),s.value==="bold"?(l(),t("g",c2,H2)):s.value==="duotone"?(l(),t("g",V2,$2)):s.value==="fill"?(l(),t("g",y2,f2)):s.value==="light"?(l(),t("g",A2,w2)):s.value==="regular"?(l(),t("g",k2,_2)):s.value==="thin"?(l(),t("g",S2,z2)):k("",!0)],16,v2))}}),B2=["width","height","fill","transform"],N2={key:0},L2=a("path",{d:"M40,92H70.06a36,36,0,0,0,67.88,0H216a12,12,0,0,0,0-24H137.94a36,36,0,0,0-67.88,0H40a12,12,0,0,0,0,24Zm64-24A12,12,0,1,1,92,80,12,12,0,0,1,104,68Zm112,96H201.94a36,36,0,0,0-67.88,0H40a12,12,0,0,0,0,24h94.06a36,36,0,0,0,67.88,0H216a12,12,0,0,0,0-24Zm-48,24a12,12,0,1,1,12-12A12,12,0,0,1,168,188Z"},null,-1),q2=[L2],D2={key:1},P2=a("path",{d:"M128,80a24,24,0,1,1-24-24A24,24,0,0,1,128,80Zm40,72a24,24,0,1,0,24,24A24,24,0,0,0,168,152Z",opacity:"0.2"},null,-1),O2=a("path",{d:"M40,88H73a32,32,0,0,0,62,0h81a8,8,0,0,0,0-16H135a32,32,0,0,0-62,0H40a8,8,0,0,0,0,16Zm64-24A16,16,0,1,1,88,80,16,16,0,0,1,104,64ZM216,168H199a32,32,0,0,0-62,0H40a8,8,0,0,0,0,16h97a32,32,0,0,0,62,0h17a8,8,0,0,0,0-16Zm-48,24a16,16,0,1,1,16-16A16,16,0,0,1,168,192Z"},null,-1),E2=[P2,O2],I2={key:2},j2=a("path",{d:"M32,80a8,8,0,0,1,8-8H77.17a28,28,0,0,1,53.66,0H216a8,8,0,0,1,0,16H130.83a28,28,0,0,1-53.66,0H40A8,8,0,0,1,32,80Zm184,88H194.83a28,28,0,0,0-53.66,0H40a8,8,0,0,0,0,16H141.17a28,28,0,0,0,53.66,0H216a8,8,0,0,0,0-16Z"},null,-1),F2=[j2],T2={key:3},W2=a("path",{d:"M40,86H74.6a30,30,0,0,0,58.8,0H216a6,6,0,0,0,0-12H133.4a30,30,0,0,0-58.8,0H40a6,6,0,0,0,0,12Zm64-24A18,18,0,1,1,86,80,18,18,0,0,1,104,62ZM216,170H197.4a30,30,0,0,0-58.8,0H40a6,6,0,0,0,0,12h98.6a30,30,0,0,0,58.8,0H216a6,6,0,0,0,0-12Zm-48,24a18,18,0,1,1,18-18A18,18,0,0,1,168,194Z"},null,-1),G2=[W2],R2={key:4},U2=a("path",{d:"M40,88H73a32,32,0,0,0,62,0h81a8,8,0,0,0,0-16H135a32,32,0,0,0-62,0H40a8,8,0,0,0,0,16Zm64-24A16,16,0,1,1,88,80,16,16,0,0,1,104,64ZM216,168H199a32,32,0,0,0-62,0H40a8,8,0,0,0,0,16h97a32,32,0,0,0,62,0h17a8,8,0,0,0,0-16Zm-48,24a16,16,0,1,1,16-16A16,16,0,0,1,168,192Z"},null,-1),J2=[U2],K2={key:5},Q2=a("path",{d:"M40,84H76.29a28,28,0,0,0,55.42,0H216a4,4,0,0,0,0-8H131.71a28,28,0,0,0-55.42,0H40a4,4,0,0,0,0,8Zm64-24A20,20,0,1,1,84,80,20,20,0,0,1,104,60ZM216,172H195.71a28,28,0,0,0-55.42,0H40a4,4,0,0,0,0,8H140.29a28,28,0,0,0,55.42,0H216a4,4,0,0,0,0-8Zm-48,24a20,20,0,1,1,20-20A20,20,0,0,1,168,196Z"},null,-1),X2=[Q2],Y2={name:"PhSlidersHorizontal"},X=b({...Y2,props:{weight:{type:String},size:{type:[String,Number]},color:{type:String},mirrored:{type:Boolean}},setup(f){const e=f,i=d("weight","regular"),p=d("size","1em"),g=d("color","currentColor"),H=d("mirrored",!1),s=r(()=>e.weight??i),v=r(()=>e.size??p),m=r(()=>e.color??g),y=r(()=>e.mirrored!==void 0?e.mirrored?"scale(-1, 1)":void 0:H?"scale(-1, 1)":void 0);return(c,w)=>(l(),t("svg",B({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 256",width:v.value,height:v.value,fill:m.value,transform:y.value},c.$attrs),[x(c.$slots,"default"),s.value==="bold"?(l(),t("g",N2,q2)):s.value==="duotone"?(l(),t("g",D2,E2)):s.value==="fill"?(l(),t("g",I2,F2)):s.value==="light"?(l(),t("g",T2,G2)):s.value==="regular"?(l(),t("g",R2,J2)):s.value==="thin"?(l(),t("g",K2,X2)):k("",!0)],16,B2))}}),aa={class:"app-shell moss-admin"},ea={class:"sidebar"},la={class:"brand"},ta=["src"],sa={class:"nav-icon"},oa={key:0,class:"nav-lock","aria-hidden":"true"},ra={class:"nav"},na=["onClick"],ia={class:"nav-icon"},ua={class:"nav-label"},da={key:0,class:"nav-lock","aria-hidden":"true"},ha={class:"nav-icon"},va={class:"sidebar-status-text"},ca={class:"sidebar-status-label"},pa={class:"sidebar-status-meta"},Ha={class:"page-header"},Va={class:"page-heading"},ga={class:"page-heading-copy"},ma={class:"page-sub"},$a={class:"page-heading-actions"},ya=["title"],Za={class:"device-chip-name"},fa=["title"],Aa={class:"page-credits"},Ma={key:0,class:"shell-approval"},wa={class:"shell-approval-meta"},ka={class:"shell-approval-tag"},ba={class:"shell-approval-reason"},_a={class:"shell-approval-cmd"},Sa={key:0,class:"shell-approval-cwd"},Ca=b({__name:"AppLayout",setup(f){const e=Y(),i=i0(),p=a0(),{isFullscreen:g}=s0(),H=I(!1),s={remote:H0,camera:c0,mcp:v0,hotkeys:p0,hardware:X,gamepad:h2,yunxiangji:h0,mihome:F8};function v(Z){return s[Z]||X}const m=r(()=>[{path:"/hardware",label:"硬件配置",requiresMoss:!0,icon:"hardware"},{path:"/remotes",label:"红外配置",requiresMoss:!0,icon:"remote",hide:!e.hasIr},{path:"/camera",label:"视觉中枢",requiresMoss:!0,icon:"camera"},{path:"/gamepad",label:"手柄控制",requiresMoss:!0,icon:"gamepad"},{path:"/hotkeys",label:"快捷键",requiresMoss:!0,icon:"hotkeys"},{path:"/yunxiangji",label:"云享记",requiresMoss:!0,icon:"yunxiangji"},{path:"/mcp",label:"MCP工具",requiresMoss:!0,icon:"mcp"},{path:"/mihome",label:"米家设备",requiresMoss:!0,icon:"mihome"}].filter(o=>!o.hide)),y=r(()=>String(i.meta.title||"MOSS 配置")),c=r(()=>String(i.meta.subtitle||"")),w=r(()=>i.meta.layoutFit===!0);function O(Z){return i.path===Z.path}function q(Z){return Z.requiresMoss&&!e.mossOnline}const D=r(()=>!e.mossOnline);function N(){H.value=!0}function V(Z){if(q(Z)){z.warning("MOSS 设备离线,请先确认设备在线后再进入配置页面"),N();return}p.push({path:Z.path,query:P()})}function h(){if(D.value){z.warning("MOSS 设备离线,请先确认设备在线后再进入控制中枢"),N();return}p.push({path:"/terminal",query:P()})}return o0(()=>e.deviceSwitcherTick,()=>{N()}),r0(async()=>{e.hydrated||await e.refresh(),e.listenEvents(),e.mossOnline||e.probeMoss().catch(()=>{}),!e.activeDeviceId&&i.path!=="/device"&&i.path!=="/flash"&&N()}),(Z,o)=>{const j=_("router-view"),F=_("el-alert"),E=_("el-button"),T=_("el-dialog");return l(),t(R,null,[a("div",aa,[a("aside",ea,[a("div",la,[a("img",{class:"brand-logo",src:n($0),alt:"550W"},null,8,ta),o[6]||(o[6]=a("div",{class:"tagline"},"550W 超级量子计算机指令终端",-1))]),a("button",{class:C(["nav-hub",{locked:D.value}]),type:"button",onClick:h},[a("span",sa,[$(n(Z8),{size:18,weight:"regular"})]),o[7]||(o[7]=a("span",{class:"nav-hub-copy"},[a("strong",null,"控制中枢"),a("small",null,"运行监视与操控")],-1)),D.value?(l(),t("span",oa,[$(n(Q),{size:16,weight:"regular"})])):k("",!0)],2),a("nav",ra,[o[9]||(o[9]=a("div",{class:"nav-kicker"},"配置",-1)),(l(!0),t(R,null,n0(m.value,u=>(l(),t("button",{key:u.path,class:C(["nav-item",{active:O(u),locked:q(u)}]),type:"button",onClick:W=>V(u)},[a("span",ia,[(l(),L(K(v(u.icon)),{size:18,weight:"regular"}))]),a("span",ua,M(u.label),1),q(u)?(l(),t("span",da,[$(n(Q),{size:16,weight:"regular"})])):k("",!0)],10,na))),128)),o[10]||(o[10]=a("div",{class:"nav-kicker"},"维护",-1)),a("button",{class:C(["nav-item quiet",{active:O("/flash")}]),type:"button",onClick:o[0]||(o[0]=u=>n(p).push("/flash"))},[a("span",ha,[$(n(Y1),{size:18,weight:"regular"})]),o[8]||(o[8]=a("span",{class:"nav-label"},"烧录固件",-1))],2)]),a("button",{class:"sidebar-status",type:"button",onClick:N},[a("span",{class:C(["dot",n(e).statusTone])},null,2),a("div",va,[a("div",ca,M(n(e).deviceName||"未选择设备"),1),a("div",pa,M(n(e).productLabel)+" · "+M(n(e).mossOnline?"在线":"离线"),1)]),o[11]||(o[11]=a("span",{class:"sidebar-status-action"},"切换设备",-1))])]),a("main",{class:C(["main",{"main--compact":w.value}])},[a("header",Ha,[a("div",Va,[a("div",ga,[a("h1",null,M(y.value),1),a("p",ma,M(c.value||" "),1)]),a("div",$a,[a("button",{type:"button",class:"device-chip",title:`切换设备:${n(e).deviceName||"未选择设备"}`,onClick:N},[a("span",{class:C(["dot",n(e).statusTone])},null,2),a("span",Za,M(n(e).deviceName||"未选择设备"),1),a("span",{class:C(["device-chip-state",n(e).statusTone])},M(n(e).mossOnline?"在线":n(e).statusLabel),3),$(n(I0),{size:14,weight:"bold"})],8,ya),a("button",{type:"button",class:C(["fs-btn",{on:n(g)}]),title:n(g)?`退出全屏 (${n(J)})`:`全屏显示 (${n(J)})`,onClick:o[1]||(o[1]=(...u)=>n(U)&&n(U)(...u))},[n(g)?(l(),L(n(u1),{key:0,size:16,weight:"bold"})):(l(),L(n(z1),{key:1,size:16,weight:"bold"}))],10,fa)])])]),a("div",{class:C(["page-body",{"page-body--fit":w.value}])},[$(j,null,{default:A(({Component:u})=>[(l(),L(u0,{include:"MiHome"},[(l(),L(K(u)))],1024))]),_:1})],2),a("footer",Aa,[$(d0)])],2)]),$(m0,{modelValue:H.value,"onUpdate:modelValue":o[2]||(o[2]=u=>H.value=u)},null,8,["modelValue"]),$(T,{modelValue:n(e).shellApprovalVisible,"onUpdate:modelValue":o[5]||(o[5]=u=>n(e).shellApprovalVisible=u),class:"moss-dialog",title:"高危命令需您授权",width:"520px","align-center":"","close-on-click-modal":!1,"close-on-press-escape":!1,"show-close":!1},{footer:A(()=>[$(E,{onClick:o[3]||(o[3]=u=>n(e).decideShellApproval(!1))},{default:A(()=>[...o[15]||(o[15]=[S("拒绝",-1)])]),_:1}),$(E,{type:"primary",onClick:o[4]||(o[4]=u=>n(e).decideShellApproval(!0))},{default:A(()=>[...o[16]||(o[16]=[S("允许执行",-1)])]),_:1})]),default:A(()=>[n(e).shellApprovalCurrent?(l(),t("div",Ma,[$(F,{type:"warning","show-icon":"",closable:!1,class:"shell-approval-alert"},{default:A(()=>[...o[12]||(o[12]=[S(" 智能体请求执行以下高危命令。需您在本机确认后,MOSS 才会继续执行。 ",-1)])]),_:1}),a("div",wa,[a("span",ka,M(n(e).shellApprovalCategoryLabel),1),a("span",ba,M(n(e).shellApprovalCurrent.reason),1)]),a("pre",_a,M(n(e).shellApprovalCurrent.command),1),n(e).shellApprovalCurrent.cwd?(l(),t("p",Sa,[o[13]||(o[13]=S(" 工作目录:",-1)),a("code",null,M(n(e).shellApprovalCurrent.cwd),1)])):k("",!0),o[14]||(o[14]=a("p",{class:"shell-approval-hint"},"5 分钟内未确认将自动取消。",-1))])):k("",!0)]),_:1},8,["modelValue"])],64)}}}),Oa=e0(Ca,[["__scopeId","data-v-a9b40ffc"]]);export{Oa as default};
@@ -1 +1 @@
1
- import{d as Pe,a as $e,z as Le,I as Oe,m as c,b as s,e as d,w as m,F as xe,B as je,p as V,t as C,c as Ae,M as Re,P as Ue,q as K,Q as q,g as R,h as o,s as U,K as G,r as z,R as Fe,o as r,f as J,A as Ne,j as F}from"./index-CaD9jpX7.js";import{u as Ie,m as Q}from"./usePtzControl-hvfvLi7I.js";import"./esp-flasher-CE6TSjIH.js";const We={class:"camera-layout"},Ke={class:"panel camera-side"},qe={class:"panel-bd camera-side-bd"},Ge={class:"camera-side-main"},Je={key:0,class:"hint"},Qe={key:1,class:"hint"},Xe={class:"actions"},Ye={key:2,class:"device-list"},Ze=["onClick"],He={class:"hint",style:{margin:"4px 0 0"}},et={key:0},tt={key:3,class:"hint"},at={key:4,class:"hint danger"},nt={key:5,class:"hint success"},lt={class:"actions camera-side-actions"},st={class:"panel camera-preview"},ot={class:"panel-bd camera-preview-bd"},ut={class:"camera-stage"},rt=["src"],it={key:1,class:"camera-placeholder"},ct={class:"ptz-pad"},dt=["disabled"],vt=["disabled"],pt=["disabled"],ft=["disabled"],mt=["disabled"],ht={key:0,class:"hint"},yt={key:1,class:"hint"},Vt=Pe({__name:"Camera",setup(_t){const X=o(!1),ue=o(!1),N=o(!1),u=o(!1),re=$e(),Y=U(()=>re.hasOnboardCamera),Z=U(()=>re.hasGimbal),h=o(""),g=o(""),S=o(!1),H=o(!1),w=o([]),ie=o(""),p=o(""),O=o(""),i=o(""),ee=o(""),B=o(null),x=o(!1),l=o({hostname:"",port:80,username:"admin",password:"",path:"/onvif/device_service"}),D=U(()=>Z.value||x.value),_e=o(!0),E=Ie(D,_e),ge=U(()=>!i.value||i.value==="mpegts"&&(!S.value||!!g.value)||i.value==="mjpeg"&&!p.value),we=U(()=>u.value?g.value||"正在读取画面…":Y.value?"板载画面暂不支持":"连接后在这里显示画面");let M=null,v=!1,y=0,P=0,te=!1,$=0,I=0,ae=0,ne=0,b=0,L=!1;function j(){var e;$=Date.now(),I=((e=B.value)==null?void 0:e.currentTime)||I}function le(){window.clearTimeout(ne),ne=0}function se(){window.clearInterval(ae),ae=0}function be(){se(),j(),ae=window.setInterval(()=>{if(!v||document.hidden||i.value!=="mpegts"||!$)return;const e=B.value;if(!e)return;if(e.paused){const t=e.play();t&&typeof t.catch=="function"&&t.catch(()=>{})}const a=e.currentTime||0;if(a>I+.04){I=a,$=Date.now();return}Date.now()-$>8e3&&(console.warn("[mpegts] stall, reconnect"),me())},1e3)}function ke(){var a;const e=B.value;return(a=e==null?void 0:e.buffered)!=null&&a.length?e.buffered.end(e.buffered.length-1)-e.currentTime:0}function Ve(){if(i.value!=="mjpeg"||!p.value)return;const e=p.value.replace(/([?&])t=\d+/,`$1t=${Date.now()}`);p.value=e.includes("t=")?e:`${p.value}${p.value.includes("?")?"&":"?"}t=${Date.now()}`}function Ce(e){!v||!u.value||i.value!=="mpegts"||(console.warn("[mpegts]",e),window.clearTimeout(y),y=0,P=0,L=!1,_(),A(te))}function oe(){if(!v)return;if(document.hidden){b=Date.now(),i.value==="mpegts"&&(L=!0,_());return}const e=b?Date.now()-b:0;if(b=0,Ve(),i.value!=="mpegts")return;if(L||e>400||ke()>.7){Ce("tab visible, resync live");return}const a=B.value;if(a!=null&&a.paused){const t=a.play();t&&typeof t.catch=="function"&&t.catch(()=>{})}j()}function ce(e){e.persisted&&oe()}function de(){!v||i.value!=="mpegts"||(b=b||Date.now(),L=!0,_())}function ve(){return window.location.origin}function pe(e){return`${e.hostname}:${e.port}${e.path}`}function fe(e){ie.value=pe(e),l.value.hostname=e.hostname,l.value.port=e.port,l.value.path=e.path||"/onvif/device_service"}async function Se(){X.value=!0,h.value="";try{const e=await G("/api/camera/discover",{method:"POST"});w.value=e.devices||[],ue.value=!0,w.value.length===1&&fe(w.value[0]),F[w.value.length?"success":"warning"](w.value.length?`找到 ${w.value.length} 路视频源`:"没有扫到设备")}catch(e){h.value=e instanceof Error?e.message:"扫描失败",F.error(h.value)}finally{X.value=!1}}async function Be(){var e,a;try{const t=await G("/api/camera/status");if(H.value=!!((e=t.saved)!=null&&e.password_set),(a=t.saved)!=null&&a.hostname){const f=!!t.connected;l.value.hostname=f&&t.hostname||t.saved.hostname,l.value.port=Number(f&&t.port||t.saved.port||80),l.value.path=f&&t.path||t.saved.path||"/onvif/device_service",l.value.username=f&&t.username||t.saved.username||"admin"}u.value=!!t.connected,x.value=!!t.ptz||!!t.gimbalAvailable,ee.value=t.encoding||"",t.info&&(O.value=[t.info.manufacturer,t.info.model].filter(Boolean).join(" ")),t.connected&&he(t)}catch{}}function Te(e){u.value=!0,x.value=!!e.ptz||!!e.gimbalAvailable,ee.value=e.encoding||"",O.value=e.info?[e.info.manufacturer,e.info.model].filter(Boolean).join(" "):"",H.value=!0,he(e)}async function ze(){if(!l.value.hostname.trim()||l.value.hostname.trim()==="onboard"){F.warning(Y.value?"板载画面暂不支持,请填写 Onvif 地址":"请填写摄像头地址");return}if(!N.value){N.value=!0,h.value="";try{const e=await G("/api/camera/connect",{method:"POST",body:JSON.stringify(l.value),timeoutMs:75e3});Te(e),h.value="",F.success(e.ptz?"已连接,可用方向键转云台":"已连接。这台设备没有云台")}catch(e){h.value=e instanceof Error?e.message:"连接失败",F.error(h.value)}finally{N.value=!1}}}async function De(){ye(),E.release();try{await G("/api/camera/disconnect",{method:"POST"})}catch{}u.value=!1,x.value=!1,O.value="",g.value=""}function A(e){te=e,i.value="mpegts",Fe(()=>{if(!v)return;if(!B.value){g.value="画面组件未就绪";return}if(!Q.isSupported()){g.value="当前浏览器不支持直播预览";return}_(),S.value=!1;const a=e?"&codec=h264":"",t=Q.createPlayer({type:"mpegts",isLive:!0,cors:!0,url:`${ve()}/api/camera/stream?t=${Date.now()}${a}`,hasAudio:!1,hasVideo:!0},{enableWorker:!1,enableStashBuffer:!1,liveBufferLatencyChasing:!0,liveBufferLatencyChasingOnPaused:!0,liveBufferLatencyMaxLatency:.5,liveBufferLatencyMinRemain:.12,liveSync:!0,liveSyncMaxLatency:.6,liveSyncTargetLatency:.2,liveSyncPlaybackRate:1.6,autoCleanupSourceBuffer:!0,autoCleanupMaxBackwardDuration:3,autoCleanupMinBackwardDuration:1});M=t,j(),t.attachMediaElement(B.value),t.load(),(()=>{const k=t.play();k&&typeof k.catch=="function"&&k.catch(()=>{})})();const T=()=>{M!==t||!v||S.value||(le(),P=0,g.value="",S.value=!0,j(),be())};le(),ne=window.setTimeout(()=>{if(!(M!==t||!v)){if(!e&&!S.value){console.warn("[mpegts] no media in time, transcode"),_(),A(!0);return}T()}},e?6e3:8e3),t.on(Q.Events.MEDIA_INFO,T),t.on(Q.Events.ERROR,(k,W)=>{if(!(M!==t||!v)){if(console.warn("[mpegts]",k,W),!e&&/hevc|h265|codec/i.test(`${k} ${W}`)){_(),A(!0);return}Date.now()-$<4e3&&$||me()}})})}function me(){if(!v||!u.value||y)return;j(),_();const e=Math.min(200*2**P,1600);P+=1,g.value=P>1?"画面中断,正在重连…":"正在同步画面…",y=window.setTimeout(()=>{y=0,!(!v||!u.value)&&A(te)},e)}function _(){le();const e=M;if(M=null,!!e){try{e.pause()}catch{}try{e.unload()}catch{}try{e.detachMediaElement()}catch{}try{e.destroy()}catch{}}}function he(e){window.clearTimeout(y),y=0,L=!1,b=0,se(),_(),v=!0,P=0,g.value="",S.value=!1;const a=e.playMode||(e.liveDirect?"mjpeg":"mpegts");if(a==="mpegts"){const t=/hevc|h265/.test(e.encoding||ee.value);A(t);return}i.value=a==="snapshot"?"mjpeg":a,p.value=e.liveDirect||`${ve()}/api/camera/stream?t=${Date.now()}`}function ye(){v=!1,window.clearTimeout(y),y=0,L=!1,b=0,se(),_(),p.value="",i.value="",S.value=!1}return Le(()=>{Be(),document.addEventListener("visibilitychange",oe),document.addEventListener("freeze",de),window.addEventListener("pageshow",ce)}),Oe(()=>{document.removeEventListener("visibilitychange",oe),document.removeEventListener("freeze",de),window.removeEventListener("pageshow",ce),ye()}),(e,a)=>{const t=z("el-button"),f=z("el-input"),T=z("el-form-item"),k=z("el-input-number"),W=z("el-collapse-item"),Ee=z("el-collapse"),Me=z("el-form");return r(),c("div",We,[s("section",Ke,[a[9]||(a[9]=s("div",{class:"panel-hd"},"视觉源",-1)),s("div",qe,[s("div",Ge,[Y.value?(r(),c("p",Je,"板载画面暂不支持。云台方向键仍可用。")):(r(),c("p",Qe,"扫描或填写 Onvif 地址后连接。画面在右侧预览。")),s("div",Xe,[d(t,{type:"primary",loading:X.value,onClick:Se},{default:m(()=>[...a[6]||(a[6]=[J("扫描局域网",-1)])]),_:1},8,["loading"])]),w.value.length?(r(),c("div",Ye,[(r(!0),c(xe,null,je(w.value,n=>(r(),c("div",{key:n.hostname+":"+n.port+n.path,class:Ne(["device-item",{active:ie.value===pe(n)}]),onClick:gt=>fe(n)},[s("strong",null,C(n.name||n.hostname),1),s("div",He,[J(C(n.hostname)+":"+C(n.port)+" ",1),n.hardware?(r(),c("span",et," · "+C(n.hardware),1)):V("",!0)])],10,Ze))),128))])):ue.value?(r(),c("p",tt,"这一轮没有扫到 Onvif 设备,可以在下面手动填写 IP。")):V("",!0),d(Me,{"label-position":"top",class:"config-form",style:{"margin-top":"12px"}},{default:m(()=>[d(T,{label:"地址"},{default:m(()=>[d(f,{modelValue:l.value.hostname,"onUpdate:modelValue":a[0]||(a[0]=n=>l.value.hostname=n),placeholder:"例如 192.168.1.64"},null,8,["modelValue"])]),_:1}),d(T,{label:"端口"},{default:m(()=>[d(k,{modelValue:l.value.port,"onUpdate:modelValue":a[1]||(a[1]=n=>l.value.port=n),min:1,max:65535},null,8,["modelValue"]),a[7]||(a[7]=s("div",{class:"hint"},"常见是 80。海康有时是 80 或 8000。",-1))]),_:1}),d(T,{label:"账号"},{default:m(()=>[d(f,{modelValue:l.value.username,"onUpdate:modelValue":a[2]||(a[2]=n=>l.value.username=n),placeholder:"常见是 admin"},null,8,["modelValue"])]),_:1}),d(T,{label:"密码"},{default:m(()=>[d(f,{modelValue:l.value.password,"onUpdate:modelValue":a[3]||(a[3]=n=>l.value.password=n),type:"password","show-password":"",placeholder:H.value?"已保存,不改可留空":""},null,8,["modelValue","placeholder"])]),_:1}),d(Ee,{class:"soft-collapse"},{default:m(()=>[d(W,{title:"高级:Onvif 路径"},{default:m(()=>[d(f,{modelValue:l.value.path,"onUpdate:modelValue":a[4]||(a[4]=n=>l.value.path=n),placeholder:"/onvif/device_service"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),h.value?(r(),c("p",at,C(h.value),1)):V("",!0),u.value&&O.value?(r(),c("p",nt,C(O.value),1)):V("",!0)]),s("div",lt,[u.value?(r(),Ae(t,{key:0,onClick:De},{default:m(()=>[...a[8]||(a[8]=[J("断开",-1)])]),_:1})):V("",!0),d(t,{type:"primary",loading:N.value,onClick:ze},{default:m(()=>[J(C(u.value?"重新连接":"连接摄像头"),1)]),_:1},8,["loading"])])])]),s("section",st,[a[10]||(a[10]=s("div",{class:"panel-hd"},"画面与云台",-1)),s("div",ot,[s("div",ut,[Re(s("video",{ref_key:"videoEl",ref:B,class:"camera-frame",muted:"",autoplay:"",playsinline:""},null,512),[[Ue,u.value&&i.value==="mpegts"]]),u.value&&i.value==="mjpeg"&&p.value?(r(),c("img",{key:0,class:"camera-frame",src:p.value,alt:"摄像头画面"},null,8,rt)):V("",!0),!u.value||ge.value?(r(),c("div",it,C(we.value),1)):V("",!0),s("div",ct,[s("button",K({class:"ptz-btn",type:"button",disabled:!D.value},q(R(E).pointerBind("up"),!0)),"上",16,dt),s("button",K({class:"ptz-btn",type:"button",disabled:!D.value},q(R(E).pointerBind("left"),!0)),"左",16,vt),s("button",{class:"ptz-btn stop",type:"button",disabled:!D.value,onClick:a[5]||(a[5]=n=>R(E).send("stop"))},"停",8,pt),s("button",K({class:"ptz-btn",type:"button",disabled:!D.value},q(R(E).pointerBind("right"),!0)),"右",16,ft),s("button",K({class:"ptz-btn",type:"button",disabled:!D.value},q(R(E).pointerBind("down"),!0)),"下",16,mt)])]),Z.value&&!u.value?(r(),c("p",ht,"板载云台由步进电机驱动,语音/人脸跟踪时会互让。")):u.value&&!x.value&&!Z.value?(r(),c("p",yt,"已连上,但没有云台。画面仍可看。")):V("",!0)])])])}}});export{Vt as default};
1
+ import{d as $e,a as Me,z as Pe,I as Oe,m as c,b as s,e as d,w as m,F as xe,B as je,p as S,t as V,c as Ae,N as Ne,Q as Re,q as K,R as q,g as N,h as o,s as R,L as G,r as z,S as Ue,o as r,f as J,A as Fe,j as U}from"./index-CSKTeMnN.js";import{u as Ie,m as Q}from"./usePtzControl-Dh7nUmLV.js";import"./esp-flasher-CE6TSjIH.js";const We={class:"camera-layout"},Ke={class:"panel camera-side"},qe={class:"panel-bd camera-side-bd"},Ge={class:"camera-side-main"},Je={key:0,class:"hint"},Qe={key:1,class:"hint"},Xe={class:"actions"},Ye={key:2,class:"device-list"},Ze=["onClick"],He={class:"hint",style:{margin:"4px 0 0"}},et={key:0},tt={key:3,class:"hint"},at={key:4,class:"hint danger"},nt={key:5,class:"hint success"},lt={class:"actions camera-side-actions"},st={class:"panel camera-preview"},ot={class:"panel-bd camera-preview-bd"},ut={class:"camera-stage"},rt=["src"],it={key:1,class:"camera-placeholder"},ct={class:"ptz-pad"},dt=["disabled"],vt=["disabled"],pt=["disabled"],ft=["disabled"],mt=["disabled"],ht={key:0,class:"hint"},yt={key:1,class:"hint"},St=$e({__name:"Camera",setup(_t){const X=o(!1),ue=o(!1),F=o(!1),u=o(!1),re=Me(),Y=R(()=>re.hasOnboardCamera),Z=R(()=>re.hasGimbal),h=o(""),g=o(""),C=o(!1),H=o(!1),w=o([]),ie=o(""),p=o(""),O=o(""),i=o(""),ee=o(""),B=o(null),x=o(!1),l=o({hostname:"",port:80,username:"admin",password:"",path:"/onvif/device_service"}),D=R(()=>Z.value||x.value),_e=o(!0),E=Ie(D,_e),ge=R(()=>!i.value||i.value==="mpegts"&&(!C.value||!!g.value)||i.value==="mjpeg"&&!p.value),we=R(()=>u.value?g.value||"正在读取画面…":Y.value?"板载画面暂不支持":"连接后在这里显示画面");let L=null,v=!1,y=0,$=0,te=!1,M=0,I=0,ae=0,ne=0,b=0,P=!1;function j(){var e;M=Date.now(),I=((e=B.value)==null?void 0:e.currentTime)||I}function le(){window.clearTimeout(ne),ne=0}function se(){window.clearInterval(ae),ae=0}function be(){se(),j(),ae=window.setInterval(()=>{if(!v||document.hidden||i.value!=="mpegts"||!M)return;const e=B.value;if(!e)return;if(e.paused){const t=e.play();t&&typeof t.catch=="function"&&t.catch(()=>{})}const a=e.currentTime||0;if(a>I+.04){I=a,M=Date.now();return}Date.now()-M>8e3&&(console.warn("[mpegts] stall, reconnect"),me())},1e3)}function ke(){var a;const e=B.value;return(a=e==null?void 0:e.buffered)!=null&&a.length?e.buffered.end(e.buffered.length-1)-e.currentTime:0}function Se(){if(i.value!=="mjpeg"||!p.value)return;const e=p.value.replace(/([?&])t=\d+/,`$1t=${Date.now()}`);p.value=e.includes("t=")?e:`${p.value}${p.value.includes("?")?"&":"?"}t=${Date.now()}`}function Ve(e){!v||!u.value||i.value!=="mpegts"||(console.warn("[mpegts]",e),window.clearTimeout(y),y=0,$=0,P=!1,_(),A(te))}function oe(){if(!v)return;if(document.hidden){b=Date.now(),i.value==="mpegts"&&(P=!0,_());return}const e=b?Date.now()-b:0;if(b=0,Se(),i.value!=="mpegts")return;if(P||e>400||ke()>.7){Ve("tab visible, resync live");return}const a=B.value;if(a!=null&&a.paused){const t=a.play();t&&typeof t.catch=="function"&&t.catch(()=>{})}j()}function ce(e){e.persisted&&oe()}function de(){!v||i.value!=="mpegts"||(b=b||Date.now(),P=!0,_())}function ve(){return window.location.origin}function pe(e){return`${e.hostname}:${e.port}${e.path}`}function fe(e){ie.value=pe(e),l.value.hostname=e.hostname,l.value.port=e.port,l.value.path=e.path||"/onvif/device_service"}async function Ce(){X.value=!0,h.value="";try{const e=await G("/api/camera/discover",{method:"POST"});w.value=e.devices||[],ue.value=!0,w.value.length===1&&fe(w.value[0]),U[w.value.length?"success":"warning"](w.value.length?`找到 ${w.value.length} 路视频源`:"没有扫到设备")}catch(e){h.value=e instanceof Error?e.message:"扫描失败",U.error(h.value)}finally{X.value=!1}}async function Be(){var e,a;try{const t=await G("/api/camera/status");if(H.value=!!((e=t.saved)!=null&&e.password_set),(a=t.saved)!=null&&a.hostname){const f=!!t.connected;l.value.hostname=f&&t.hostname||t.saved.hostname,l.value.port=Number(f&&t.port||t.saved.port||80),l.value.path=f&&t.path||t.saved.path||"/onvif/device_service",l.value.username=f&&t.username||t.saved.username||"admin"}u.value=!!t.connected,x.value=!!t.ptz||!!t.gimbalAvailable,ee.value=t.encoding||"",t.info&&(O.value=[t.info.manufacturer,t.info.model].filter(Boolean).join(" ")),t.connected&&he(t)}catch{}}function Te(e){u.value=!0,x.value=!!e.ptz||!!e.gimbalAvailable,ee.value=e.encoding||"",O.value=e.info?[e.info.manufacturer,e.info.model].filter(Boolean).join(" "):"",H.value=!0,he(e)}async function ze(){if(!l.value.hostname.trim()||l.value.hostname.trim()==="onboard"){U.warning(Y.value?"板载画面暂不支持,请填写 Onvif 地址":"请填写摄像头地址");return}if(!F.value){F.value=!0,h.value="";try{const e=await G("/api/camera/connect",{method:"POST",body:JSON.stringify(l.value),timeoutMs:75e3});Te(e),h.value="",U.success(e.ptz?"已连接,可用方向键转云台":"已连接。这台设备没有云台")}catch(e){h.value=e instanceof Error?e.message:"连接失败",U.error(h.value)}finally{F.value=!1}}}async function De(){ye(),E.release();try{await G("/api/camera/disconnect",{method:"POST"})}catch{}u.value=!1,x.value=!1,O.value="",g.value=""}function A(e){te=e,i.value="mpegts",Ue(()=>{if(!v)return;if(!B.value){g.value="画面组件未就绪";return}if(!Q.isSupported()){g.value="当前浏览器不支持直播预览";return}_(),C.value=!1;const a=e?"&codec=h264":"",t=Q.createPlayer({type:"mpegts",isLive:!0,cors:!0,url:`${ve()}/api/camera/stream?t=${Date.now()}${a}`,hasAudio:!1,hasVideo:!0},{enableWorker:!1,enableStashBuffer:!1,liveBufferLatencyChasing:!0,liveBufferLatencyChasingOnPaused:!0,liveBufferLatencyMaxLatency:.5,liveBufferLatencyMinRemain:.12,liveSync:!0,liveSyncMaxLatency:.6,liveSyncTargetLatency:.2,liveSyncPlaybackRate:1.6,autoCleanupSourceBuffer:!0,autoCleanupMaxBackwardDuration:3,autoCleanupMinBackwardDuration:1});L=t,j(),t.attachMediaElement(B.value),t.load(),(()=>{const k=t.play();k&&typeof k.catch=="function"&&k.catch(()=>{})})();const T=()=>{L!==t||!v||C.value||(le(),$=0,g.value="",C.value=!0,j(),be())};le(),ne=window.setTimeout(()=>{if(!(L!==t||!v)){if(!e&&!C.value){console.warn("[mpegts] no media in time, transcode"),_(),A(!0);return}T()}},e?6e3:8e3),t.on(Q.Events.MEDIA_INFO,T),t.on(Q.Events.ERROR,(k,W)=>{if(!(L!==t||!v)){if(console.warn("[mpegts]",k,W),!e&&/hevc|h265|codec/i.test(`${k} ${W}`)){_(),A(!0);return}Date.now()-M<4e3&&M||me()}})})}function me(){if(!v||!u.value||y)return;j(),_();const e=Math.min(200*2**$,1600);$+=1,g.value=$>1?"画面中断,正在重连…":"正在同步画面…",y=window.setTimeout(()=>{y=0,!(!v||!u.value)&&A(te)},e)}function _(){le();const e=L;if(L=null,!!e){try{e.pause()}catch{}try{e.unload()}catch{}try{e.detachMediaElement()}catch{}try{e.destroy()}catch{}}}function he(e){window.clearTimeout(y),y=0,P=!1,b=0,se(),_(),v=!0,$=0,g.value="",C.value=!1;const a=e.playMode||(e.liveDirect?"mjpeg":"mpegts");if(a==="mpegts"){const t=/hevc|h265/.test(e.encoding||ee.value);A(t);return}i.value=a==="snapshot"?"mjpeg":a,p.value=e.liveDirect||`${ve()}/api/camera/stream?t=${Date.now()}`}function ye(){v=!1,window.clearTimeout(y),y=0,P=!1,b=0,se(),_(),p.value="",i.value="",C.value=!1}return Pe(()=>{Be(),document.addEventListener("visibilitychange",oe),document.addEventListener("freeze",de),window.addEventListener("pageshow",ce)}),Oe(()=>{document.removeEventListener("visibilitychange",oe),document.removeEventListener("freeze",de),window.removeEventListener("pageshow",ce),ye()}),(e,a)=>{const t=z("el-button"),f=z("el-input"),T=z("el-form-item"),k=z("el-input-number"),W=z("el-collapse-item"),Ee=z("el-collapse"),Le=z("el-form");return r(),c("div",We,[s("section",Ke,[a[9]||(a[9]=s("div",{class:"panel-hd"},"视觉源",-1)),s("div",qe,[s("div",Ge,[Y.value?(r(),c("p",Je,"板载画面暂不支持。云台方向键仍可用。")):(r(),c("p",Qe,"扫描或填写 Onvif 地址后连接。画面在右侧预览。")),s("div",Xe,[d(t,{type:"primary",loading:X.value,onClick:Ce},{default:m(()=>[...a[6]||(a[6]=[J("扫描局域网",-1)])]),_:1},8,["loading"])]),w.value.length?(r(),c("div",Ye,[(r(!0),c(xe,null,je(w.value,n=>(r(),c("div",{key:n.hostname+":"+n.port+n.path,class:Fe(["device-item",{active:ie.value===pe(n)}]),onClick:gt=>fe(n)},[s("strong",null,V(n.name||n.hostname),1),s("div",He,[J(V(n.hostname)+":"+V(n.port)+" ",1),n.hardware?(r(),c("span",et," · "+V(n.hardware),1)):S("",!0)])],10,Ze))),128))])):ue.value?(r(),c("p",tt,"这一轮没有扫到 Onvif 设备,可以在下面手动填写 IP。")):S("",!0),d(Le,{"label-position":"top",class:"config-form",style:{"margin-top":"12px"}},{default:m(()=>[d(T,{label:"地址"},{default:m(()=>[d(f,{modelValue:l.value.hostname,"onUpdate:modelValue":a[0]||(a[0]=n=>l.value.hostname=n),placeholder:"例如 192.168.1.64"},null,8,["modelValue"])]),_:1}),d(T,{label:"端口"},{default:m(()=>[d(k,{modelValue:l.value.port,"onUpdate:modelValue":a[1]||(a[1]=n=>l.value.port=n),min:1,max:65535},null,8,["modelValue"]),a[7]||(a[7]=s("div",{class:"hint"},"常见是 80。海康有时是 80 或 8000。",-1))]),_:1}),d(T,{label:"账号"},{default:m(()=>[d(f,{modelValue:l.value.username,"onUpdate:modelValue":a[2]||(a[2]=n=>l.value.username=n),placeholder:"常见是 admin"},null,8,["modelValue"])]),_:1}),d(T,{label:"密码"},{default:m(()=>[d(f,{modelValue:l.value.password,"onUpdate:modelValue":a[3]||(a[3]=n=>l.value.password=n),type:"password","show-password":"",placeholder:H.value?"已保存,不改可留空":""},null,8,["modelValue","placeholder"])]),_:1}),d(Ee,{class:"soft-collapse"},{default:m(()=>[d(W,{title:"高级:Onvif 路径"},{default:m(()=>[d(f,{modelValue:l.value.path,"onUpdate:modelValue":a[4]||(a[4]=n=>l.value.path=n),placeholder:"/onvif/device_service"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),h.value?(r(),c("p",at,V(h.value),1)):S("",!0),u.value&&O.value?(r(),c("p",nt,V(O.value),1)):S("",!0)]),s("div",lt,[u.value?(r(),Ae(t,{key:0,onClick:De},{default:m(()=>[...a[8]||(a[8]=[J("断开",-1)])]),_:1})):S("",!0),d(t,{type:"primary",loading:F.value,onClick:ze},{default:m(()=>[J(V(u.value?"重新连接":"连接摄像头"),1)]),_:1},8,["loading"])])])]),s("section",st,[a[10]||(a[10]=s("div",{class:"panel-hd"},"画面与云台",-1)),s("div",ot,[s("div",ut,[Ne(s("video",{ref_key:"videoEl",ref:B,class:"camera-frame",muted:"",autoplay:"",playsinline:""},null,512),[[Re,u.value&&i.value==="mpegts"]]),u.value&&i.value==="mjpeg"&&p.value?(r(),c("img",{key:0,class:"camera-frame",src:p.value,alt:"摄像头画面"},null,8,rt)):S("",!0),!u.value||ge.value?(r(),c("div",it,V(we.value),1)):S("",!0),s("div",ct,[s("button",K({class:"ptz-btn",type:"button",disabled:!D.value},q(N(E).pointerBind("up"),!0)),"上",16,dt),s("button",K({class:"ptz-btn",type:"button",disabled:!D.value},q(N(E).pointerBind("left"),!0)),"左",16,vt),s("button",{class:"ptz-btn stop",type:"button",disabled:!D.value,onClick:a[5]||(a[5]=n=>N(E).send("stop"))},"停",8,pt),s("button",K({class:"ptz-btn",type:"button",disabled:!D.value},q(N(E).pointerBind("right"),!0)),"右",16,ft),s("button",K({class:"ptz-btn",type:"button",disabled:!D.value},q(N(E).pointerBind("down"),!0)),"下",16,mt)])]),Z.value&&!u.value?(r(),c("p",ht,"板载云台由步进电机驱动,语音/人脸跟踪时会互让。")):u.value&&!x.value&&!Z.value?(r(),c("p",yt,"已连上,但没有云台。画面仍可看。")):S("",!0)])])])}}});export{St as default};
@@ -1 +1 @@
1
- import{d as Te,a as Ae,z as De,I as ze,o as M,m as S,b as a,J as Fe,t as I,g as re,A as Ue,h as g,s as z,K as ue,j as k,e as V,w as ae,p as H,F as Re,B as Xe,c as $e,l as Ge,r as ve,f as ne,i as Ce,L as Ve,E as He,k as Ie}from"./index-CaD9jpX7.js";import{S as Je,C as Ke,P as Ze,W as qe,a as je,O as Qe,G as oe,M as pe,b as et,V as ie,c as me,d as fe,L as tt,E as st,e as at,B as nt,f as ot,D as it,A as rt,N as lt,g as ct,F as dt}from"./engine-3d-DoxdUZhy.js";import{_ as Ye}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./esp-flasher-CE6TSjIH.js";const ut={class:"moss-wire"},vt={class:"hud","aria-hidden":"true"},pt={class:"scene-tag tag-b"},mt={class:"propel-strip"},ft="/stl/moss.stl",ht=9344678,gt=.98,_t=.985,yt=1.035,bt=.215,wt=.7,Mt=0,St=.226,xt=.245,Et=.08,Ot=.26,Ct=.0164,It=.375,Lt=.372,Pt=16722468,he=.0022,Le=14,Pe=.88,Nt=-.9,Tt=.14,At=Te({__name:"MossWireframe",setup(P){const v=-Math.PI/6,f=Math.PI/6,T=-Math.PI/2,E=Math.PI/2,A=g(null),_=Ae(),p=g(0),N=g(Le),O=z(()=>_.deviceName||"UNNAMED"),D=z(()=>R(p.value)),B=z(()=>R(N.value));let F=()=>{};function R(n){return`${n>0?"+":""}${n}°`}function U(n,o){const i=n.getAttribute("position");let d=0,m=0,l=0,t=0;for(let e=0;e<i.count;e++){const c=i.getX(e),r=i.getY(e),b=i.getZ(e);o(c,r,b)&&(d+=c,m+=r,l+=b,t+=1)}return t?new ie(d/t,m/t,l/t):(n.computeBoundingBox(),n.boundingBox.getCenter(new ie))}function X(){const n=new oe,o=(l,t)=>new ot({color:l,transparent:t<1,opacity:t,depthWrite:!1,blending:t<1?rt:lt,side:it}),i=new me(new fe(.04,32),o(13114910,.16)),d=new me(new fe(.02,28),o(16726578,.42)),m=new me(new fe(.0075,24),o(Pt,1));return n.add(i,d,m),{group:n,glow:d}}function W(n){const o=new ct;return o.setAttribute("position",new dt(n,3)),o.computeVertexNormals(),o}function J(n){const o=n.getAttribute("position"),i=[],d=[],m=[];for(let l=0;l<o.count;l+=3){const t=[o.getX(l),o.getX(l+1),o.getX(l+2)],e=[o.getY(l),o.getY(l+1),o.getY(l+2)],c=Math.min(...e),r=Math.max(...e),b=Math.max(...t),y=c>gt?i:r>wt||b>=bt&&r>Mt?d:m;for(let L=0;L<3;L++)y.push(o.getX(l+L),o.getY(l+L),o.getZ(l+L))}return{base:W(i),arm:W(d),frame:W(m)}}function K(n){return new tt(new st(n,28),new at({color:ht}))}return De(()=>{const n=A.value;if(!n)return;const o=new Je;o.background=new Ke(132362);const i=new Ze(32,1,.1,4e3);i.up.set(0,1,0),i.position.set(0,0,2.6);const d=new qe({antialias:!0,alpha:!1});d.setPixelRatio(Math.min(window.devicePixelRatio||1,2)),d.outputColorSpace=je,n.appendChild(d.domElement);const m=new Qe(i,d.domElement);m.enableDamping=!1,m.enablePan=!1,m.enableRotate=!1,m.enableZoom=!1,m.autoRotate=!1;const l=new oe,t=new oe,e=new oe;e.rotation.x=pe.degToRad(Le),t.add(e),l.add(t),o.add(l);const c=[];let r=0,b=!1,y=!1,L=0,le=0,Z=1,$=2.6,Q=2.6,ye=.8,be=6,ce=null;const ke=performance.now();function Be(s){return Math.min(E,Math.max(T,s))}function de(s){const u=pe.degToRad(i.fov),w=2*s*Math.tan(u/2),h=-Pe*w/2;i.up.set(0,1,0),i.position.set(0,h,s),i.near=Math.max(s*.02,.01),i.far=s*40,i.updateProjectionMatrix(),m.target.set(0,h,0),i.lookAt(0,h,0)}function We(s){const u=new nt().setFromObject(s),w=u.getSize(new ie),h=u.getCenter(new ie);s.position.x-=h.x,s.position.z-=h.z,s.position.y-=u.max.y;const x=Math.max(w.y,.01),C=Math.max(w.x,w.z,.01),te=pe.degToRad(i.fov),q=Math.tan(te/2),se=x/((Pe-Nt)*q),G=C/(1.8*q*Math.max(i.aspect,.2)),Y=Math.max(se,G);ye=Y*.45,be=Y*3.2,$=Y,Q=Y,de($)}function we(){const s=n.clientWidth||1,u=n.clientHeight||1;i.aspect=s/u,i.updateProjectionMatrix(),d.setSize(s,u,!1),de($)}const Me=s=>{y=!0,L=s.clientX,le=s.clientY,n.setPointerCapture(s.pointerId)},Se=s=>{y&&(t.rotation.y+=(s.clientX-L)*.008,e.rotation.x=Be(e.rotation.x+(s.clientY-le)*.008),L=s.clientX,le=s.clientY)},ee=s=>{y=!1,n.hasPointerCapture(s.pointerId)&&n.releasePointerCapture(s.pointerId)},xe=s=>{s.preventDefault();const u=Math.exp(s.deltaY*.0016);Q=Math.min(be,Math.max(ye,Q*u))};n.addEventListener("pointerdown",Me),n.addEventListener("pointermove",Se),n.addEventListener("pointerup",ee),n.addEventListener("pointercancel",ee),n.addEventListener("wheel",xe,{passive:!1});const Ee=new ResizeObserver(we);Ee.observe(n),we(),new et().loadAsync(ft).then(s=>{if(b){s.dispose();return}const{base:u,arm:w,frame:h}=J(s),x=U(s,(Y,j)=>j>=_t&&j<=yt),C=U(s,(Y,j)=>Y>=St&&Y<=xt&&j>=Et&&j<=Ot);s.dispose(),u.translate(-x.x,-x.y,-x.z),w.translate(-x.x,-x.y,-x.z),h.translate(-C.x,-C.y,-C.z),e.position.copy(C).sub(x);const te=K(u),q=K(w),se=K(h);u.dispose(),w.dispose(),h.dispose(),l.add(te),t.add(q),e.add(se);const G=X();G.group.position.set(Ct-C.x,It-C.y,Lt-C.z),e.add(G.group),ce=G.glow.material,c.push(te,q,se,G.group),We(l)});const Oe=()=>{r=window.requestAnimationFrame(Oe),y||(t.rotation.y>f?(t.rotation.y-=he,t.rotation.y<=f&&(t.rotation.y=f,Z=-1)):t.rotation.y<v?(t.rotation.y+=he,t.rotation.y>=v&&(t.rotation.y=v,Z=1)):(t.rotation.y+=he*Z,t.rotation.y>=f?(t.rotation.y=f,Z=-1):t.rotation.y<=v&&(t.rotation.y=v,Z=1)));const s=Math.round(t.rotation.y*180/Math.PI);s!==p.value&&(p.value=s);const u=Math.round(e.rotation.x*180/Math.PI);if(u!==N.value&&(N.value=u),$+=(Q-$)*Tt,de($),ce){const w=(performance.now()-ke)/1e3;ce.opacity=.28+Math.sin(w*2.2)*.1}d.render(o,i)};Oe(),F=()=>{b=!0,window.cancelAnimationFrame(r),Ee.disconnect(),n.removeEventListener("pointerdown",Me),n.removeEventListener("pointermove",Se),n.removeEventListener("pointerup",ee),n.removeEventListener("pointercancel",ee),n.removeEventListener("wheel",xe),m.dispose(),c.forEach(s=>{s.traverse(u=>{var x;const w=u;(x=w.geometry)==null||x.dispose();const h=w.material;Array.isArray(h)?h.forEach(C=>C.dispose()):h==null||h.dispose()})}),d.dispose(),d.domElement.remove()}}),ze(()=>{F()}),(n,o)=>(M(),S("div",ut,[a("div",{ref_key:"host",ref:A,class:"moss-gl"},null,512),a("div",vt,[o[1]||(o[1]=Fe('<i class="hud-corner tl" data-v-08430a60></i><i class="hud-corner tr" data-v-08430a60></i><i class="hud-corner bl" data-v-08430a60></i><i class="hud-corner br" data-v-08430a60></i><div class="hud-grid" data-v-08430a60></div><div class="crt" data-v-08430a60></div><div class="scene-tag tag-a" data-v-08430a60><small data-v-08430a60>NEAR UNIT</small><b data-v-08430a60>MOSS</b><em data-v-08430a60>550W CORE · GROUND</em></div><div class="heading" data-v-08430a60><small data-v-08430a60>HEADING</small><b data-v-08430a60>UEG · 550W</b></div>',8)),a("div",pt,[o[0]||(o[0]=a("small",null,"LINK",-1)),a("b",null,I(re(_).mossOnline?"ONLINE":"LOST"),1),a("em",null,I(O.value),1)])]),a("div",mt,[a("div",null,[o[2]||(o[2]=a("span",null,"YAW",-1)),a("b",null,I(D.value),1)]),a("div",null,[o[3]||(o[3]=a("span",null,"PITCH",-1)),a("b",null,I(B.value),1)]),a("div",null,[o[4]||(o[4]=a("span",null,"LINK",-1)),a("b",{class:Ue(re(_).mossOnline?"ok":"bad")},I(re(_).mossOnline?"ONLINE":"LOST"),3)])])]))}}),Dt=Ye(At,[["__scopeId","data-v-08430a60"]]);function ge(P){const v=String(P||"").toLowerCase().replace(/[^0-9a-f]/g,"");return v.length!==12?"":v.match(/.{2}/g).join(":")}function Ne(P){return String(P||"").trim().replace(/\/$/,"")}function _e(P=[],v={}){const f=Ne(v.baseUrl),T=ge(v.mac);return(P||[]).some(E=>{const A=ge(E.mac)||ge(E.id);if(T&&A)return T===A;if(f&&E.baseUrl&&Ne(E.baseUrl)===f)return!0;const _=String(v.hostname||"").trim().toLowerCase(),p=String(E.hostname||"").trim().toLowerCase();return!!(_&&p&&_===p)})}function Ut(P,v=[]){return(v||[]).filter(f=>!_e(P,f))}const Yt={class:"device-page uxp-page-stack"},kt={class:"status-strip is-offline"},Bt={class:"status-actions"},Wt={class:"device-body"},zt={class:"panel body-card"},Ft={class:"panel-bd body-bd"},Rt={class:"scan-bar"},Xt={key:0,class:"hint danger"},$t={key:1,class:"device-list scan-list"},Gt=["onClick"],Vt={class:"hint",style:{margin:"4px 0 0"}},Ht={key:2,class:"hint"},Jt={key:3,class:"hint"},Kt={key:4,class:"hint danger"},Zt={key:5,class:"hint success"},qt={class:"actions foot"},jt={class:"panel body-card"},Qt={class:"panel-bd body-bd"},es={key:1,class:"hint"},ts={key:2,class:"hint"},ss={key:3,class:"hint danger"},as={class:"actions foot"},ns={class:"panel body-card moss-stage-card"},os={class:"panel-bd moss-stage-bd"},is=Te({__name:"FindMoss",setup(P){const v=Ge(),f=Ae(),T=g(!1),E=g(!1),A=g(0),_=g([]),p=g(""),N=g(""),O=g(""),D=g(!1),B=g(!1),F=g(""),R=g(!1),U=g(""),X=g(""),W=z(()=>({baseUrl:d(p.value||N.value),name:""})),J=z(()=>!!W.value.baseUrl&&_e(f.devices,W.value)),K=z(()=>!!W.value.baseUrl&&!J.value),n=z(()=>D.value&&!J.value);De(()=>{i().catch(()=>{})});function o(t){const e=Ce(t.board)!=="MOSS"?Ce(t.board):t.product||"MOSS",c=t.mac||t.baseUrl;return`${e} · ${c}`}async function i(){T.value=!0,O.value="";try{const e=(await ue("/api/discover",{method:"POST",timeoutMs:3e4})).devices||[];_.value=Ut(f.devices,e),A.value=e.length-_.value.length,E.value=!0,p.value&&!_.value.some(c=>c.baseUrl===p.value)&&(p.value="",D.value=!1),!p.value&&_.value.length===1&&(p.value=_.value[0].baseUrl)}catch(t){O.value=t instanceof Error?t.message:"寻找失败",k.error(O.value)}finally{T.value=!1}}function d(t){const e=t.trim();return e?e.startsWith("http")?e.replace(/\/$/,""):e.includes(":")?`http://${e}`:`http://${e}:5500`:""}async function m(){var e,c;const t=d(p.value||N.value);if(!t){O.value="请先选择或填写 MOSS 地址",k.warning("请先选择或填写 MOSS 地址");return}if(_e(f.devices,{baseUrl:t})){k.warning("这台已在设备列表中,请返回选择");return}if(!B.value){B.value=!0,O.value="";try{const r=await ue("/api/device/select",{method:"POST",body:JSON.stringify({baseUrl:t})});D.value=!0,F.value=(e=r.health)!=null&&e.display_name||(c=r.health)!=null&&c.hostname?`:${r.health.display_name||r.health.hostname}`:"",k.success("已连上这台 MOSS,请命名并加入列表")}catch(r){D.value=!1,F.value="",O.value=r instanceof Error?r.message:"连接失败。请确认电脑和 MOSS 在同一 Wi-Fi。",k.error(O.value)}finally{B.value=!1}}}async function l(){var t,e,c;R.value=!0,U.value="",X.value="正在登记设备…";try{const r=await ue("/api/bind/lan",{method:"POST",body:JSON.stringify({baseUrl:d(p.value||N.value)}),timeoutMs:15e3});if((t=r.device)!=null&&t.id){Ve(r.device.id);try{const{value:b}=await He.prompt("给这台 MOSS 起个名字,方便以后辨认。","命名设备",{confirmButtonText:"保存",cancelButtonText:"稍后再说",customClass:"moss-message-box moss-message-box-narrow",inputPlaceholder:"例如 客厅的 MOSS",inputPattern:/\S+/,inputErrorMessage:"请填写名称"});await f.renameDevice(r.device.id,b.trim())}catch(b){if(b!=="cancel")throw b}}if(await f.refresh().catch(()=>{}),r.mossOnline){k.success("已加入列表,请选择后进入"),v.push({path:"/devices",query:Ie((e=r.device)==null?void 0:e.id)});return}k.warning("已加入。若列表里还是离线,稍等几秒再刷新。"),v.push({path:"/devices",query:Ie((c=r.device)==null?void 0:c.id)})}catch(r){U.value=r instanceof Error?r.message:"加入失败。请先扫描并连接局域网里的 MOSS。",X.value="",k.error(U.value)}finally{R.value=!1}}return(t,e)=>{const c=ve("el-button"),r=ve("el-input"),b=ve("el-alert");return M(),S("div",Yt,[a("section",kt,[e[3]||(e[3]=a("div",{class:"status-copy"},[a("div",{class:"status-title-row"},[a("strong",{class:"status-title"},"添加一台局域网 MOSS")]),a("p",{class:"status-meta"},"电脑和设备连同一 Wi-Fi。扫到它、连上,再起个名字加入列表。")],-1)),a("div",Bt,[V(c,{onClick:e[0]||(e[0]=y=>re(v).push("/devices"))},{default:ae(()=>[...e[2]||(e[2]=[ne("返回设备列表",-1)])]),_:1})])]),a("div",Wt,[a("section",zt,[e[7]||(e[7]=a("div",{class:"panel-hd"},"1. 扫描并连接",-1)),a("div",Ft,[e[6]||(e[6]=a("p",{class:"hint"},"只列出尚未加入的设备。已在「选择设备」里的不会出现。",-1)),a("div",Rt,[V(c,{type:"primary",loading:T.value,onClick:i},{default:ae(()=>[...e[4]||(e[4]=[ne("扫描局域网",-1)])]),_:1},8,["loading"]),V(r,{modelValue:N.value,"onUpdate:modelValue":e[1]||(e[1]=y=>N.value=y),placeholder:"或填写新设备 IP,例如 192.168.1.32"},null,8,["modelValue"])]),J.value?(M(),S("p",Xt,"这个地址已在设备列表中,请返回列表选择。")):H("",!0),_.value.length?(M(),S("div",$t,[(M(!0),S(Re,null,Xe(_.value,y=>(M(),S("div",{key:y.baseUrl,class:Ue(["device-item",{active:p.value===y.baseUrl}]),onClick:L=>p.value=y.baseUrl},[a("strong",null,I(y.name),1),a("div",Vt,I(o(y)),1)],10,Gt))),128))])):E.value&&A.value?(M(),S("p",Ht,"扫到的都已在列表里,请返回选择,或填一台新设备的 IP。")):E.value?(M(),S("p",Jt,"这一轮没扫到。确认设备和电脑同一网段,或直接填 IP。")):H("",!0),O.value?(M(),S("p",Kt,I(O.value),1)):H("",!0),D.value?(M(),S("p",Zt,"已连上局域网"+I(F.value)+",请在右侧命名并加入列表。",1)):H("",!0),a("div",qt,[V(c,{type:"primary",loading:B.value,disabled:!K.value||B.value,onClick:m},{default:ae(()=>[...e[5]||(e[5]=[ne(" 连接这台 MOSS ",-1)])]),_:1},8,["loading","disabled"])])])]),a("section",jt,[e[9]||(e[9]=a("div",{class:"panel-hd"},"2. 命名并加入",-1)),a("div",Qt,[D.value?(M(),S("p",es,"写入后会请你给这台起个名字,然后回到设备列表。")):(M(),$e(b,{key:0,type:"info",closable:!1,"show-icon":"",title:"先在左侧连上要添加的那台,再命名加入。"})),X.value?(M(),S("p",ts,I(X.value),1)):H("",!0),U.value?(M(),S("p",ss,I(U.value),1)):H("",!0),a("div",as,[V(c,{type:"primary",loading:R.value,disabled:!n.value,onClick:l},{default:ae(()=>[...e[8]||(e[8]=[ne(" 加入列表 ",-1)])]),_:1},8,["loading","disabled"])])])]),a("section",ns,[e[10]||(e[10]=a("div",{class:"panel-hd"},"MOSS",-1)),a("div",os,[V(Dt)])])])])}}}),us=Ye(is,[["__scopeId","data-v-2e897d0d"]]);export{us as default};
1
+ import{d as Te,a as Ae,z as De,I as ze,o as M,m as S,b as a,J as Fe,t as I,g as re,A as Ue,h as g,s as z,L as ue,j as k,e as V,w as ae,p as H,F as Re,B as Xe,c as $e,l as Ge,r as ve,f as ne,i as Ce,M as Ve,E as He,k as Ie}from"./index-CSKTeMnN.js";import{S as Je,C as Ze,P as Ke,W as qe,a as je,O as Qe,G as oe,M as pe,b as et,V as ie,c as me,d as fe,L as tt,E as st,e as at,B as nt,f as ot,D as it,A as rt,N as lt,g as ct,F as dt}from"./engine-3d-DoxdUZhy.js";import{_ as Ye}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./esp-flasher-CE6TSjIH.js";const ut={class:"moss-wire"},vt={class:"hud","aria-hidden":"true"},pt={class:"scene-tag tag-b"},mt={class:"propel-strip"},ft="/stl/moss.stl",ht=9344678,gt=.98,_t=.985,yt=1.035,bt=.215,wt=.7,Mt=0,St=.226,xt=.245,Et=.08,Ot=.26,Ct=.0164,It=.375,Lt=.372,Pt=16722468,he=.0022,Le=14,Pe=.88,Nt=-.9,Tt=.14,At=Te({__name:"MossWireframe",setup(P){const v=-Math.PI/6,f=Math.PI/6,T=-Math.PI/2,E=Math.PI/2,A=g(null),_=Ae(),p=g(0),N=g(Le),O=z(()=>_.deviceName||"UNNAMED"),D=z(()=>R(p.value)),B=z(()=>R(N.value));let F=()=>{};function R(n){return`${n>0?"+":""}${n}°`}function U(n,o){const i=n.getAttribute("position");let d=0,m=0,l=0,t=0;for(let e=0;e<i.count;e++){const c=i.getX(e),r=i.getY(e),b=i.getZ(e);o(c,r,b)&&(d+=c,m+=r,l+=b,t+=1)}return t?new ie(d/t,m/t,l/t):(n.computeBoundingBox(),n.boundingBox.getCenter(new ie))}function X(){const n=new oe,o=(l,t)=>new ot({color:l,transparent:t<1,opacity:t,depthWrite:!1,blending:t<1?rt:lt,side:it}),i=new me(new fe(.04,32),o(13114910,.16)),d=new me(new fe(.02,28),o(16726578,.42)),m=new me(new fe(.0075,24),o(Pt,1));return n.add(i,d,m),{group:n,glow:d}}function W(n){const o=new ct;return o.setAttribute("position",new dt(n,3)),o.computeVertexNormals(),o}function J(n){const o=n.getAttribute("position"),i=[],d=[],m=[];for(let l=0;l<o.count;l+=3){const t=[o.getX(l),o.getX(l+1),o.getX(l+2)],e=[o.getY(l),o.getY(l+1),o.getY(l+2)],c=Math.min(...e),r=Math.max(...e),b=Math.max(...t),y=c>gt?i:r>wt||b>=bt&&r>Mt?d:m;for(let L=0;L<3;L++)y.push(o.getX(l+L),o.getY(l+L),o.getZ(l+L))}return{base:W(i),arm:W(d),frame:W(m)}}function Z(n){return new tt(new st(n,28),new at({color:ht}))}return De(()=>{const n=A.value;if(!n)return;const o=new Je;o.background=new Ze(132362);const i=new Ke(32,1,.1,4e3);i.up.set(0,1,0),i.position.set(0,0,2.6);const d=new qe({antialias:!0,alpha:!1});d.setPixelRatio(Math.min(window.devicePixelRatio||1,2)),d.outputColorSpace=je,n.appendChild(d.domElement);const m=new Qe(i,d.domElement);m.enableDamping=!1,m.enablePan=!1,m.enableRotate=!1,m.enableZoom=!1,m.autoRotate=!1;const l=new oe,t=new oe,e=new oe;e.rotation.x=pe.degToRad(Le),t.add(e),l.add(t),o.add(l);const c=[];let r=0,b=!1,y=!1,L=0,le=0,K=1,$=2.6,Q=2.6,ye=.8,be=6,ce=null;const ke=performance.now();function Be(s){return Math.min(E,Math.max(T,s))}function de(s){const u=pe.degToRad(i.fov),w=2*s*Math.tan(u/2),h=-Pe*w/2;i.up.set(0,1,0),i.position.set(0,h,s),i.near=Math.max(s*.02,.01),i.far=s*40,i.updateProjectionMatrix(),m.target.set(0,h,0),i.lookAt(0,h,0)}function We(s){const u=new nt().setFromObject(s),w=u.getSize(new ie),h=u.getCenter(new ie);s.position.x-=h.x,s.position.z-=h.z,s.position.y-=u.max.y;const x=Math.max(w.y,.01),C=Math.max(w.x,w.z,.01),te=pe.degToRad(i.fov),q=Math.tan(te/2),se=x/((Pe-Nt)*q),G=C/(1.8*q*Math.max(i.aspect,.2)),Y=Math.max(se,G);ye=Y*.45,be=Y*3.2,$=Y,Q=Y,de($)}function we(){const s=n.clientWidth||1,u=n.clientHeight||1;i.aspect=s/u,i.updateProjectionMatrix(),d.setSize(s,u,!1),de($)}const Me=s=>{y=!0,L=s.clientX,le=s.clientY,n.setPointerCapture(s.pointerId)},Se=s=>{y&&(t.rotation.y+=(s.clientX-L)*.008,e.rotation.x=Be(e.rotation.x+(s.clientY-le)*.008),L=s.clientX,le=s.clientY)},ee=s=>{y=!1,n.hasPointerCapture(s.pointerId)&&n.releasePointerCapture(s.pointerId)},xe=s=>{s.preventDefault();const u=Math.exp(s.deltaY*.0016);Q=Math.min(be,Math.max(ye,Q*u))};n.addEventListener("pointerdown",Me),n.addEventListener("pointermove",Se),n.addEventListener("pointerup",ee),n.addEventListener("pointercancel",ee),n.addEventListener("wheel",xe,{passive:!1});const Ee=new ResizeObserver(we);Ee.observe(n),we(),new et().loadAsync(ft).then(s=>{if(b){s.dispose();return}const{base:u,arm:w,frame:h}=J(s),x=U(s,(Y,j)=>j>=_t&&j<=yt),C=U(s,(Y,j)=>Y>=St&&Y<=xt&&j>=Et&&j<=Ot);s.dispose(),u.translate(-x.x,-x.y,-x.z),w.translate(-x.x,-x.y,-x.z),h.translate(-C.x,-C.y,-C.z),e.position.copy(C).sub(x);const te=Z(u),q=Z(w),se=Z(h);u.dispose(),w.dispose(),h.dispose(),l.add(te),t.add(q),e.add(se);const G=X();G.group.position.set(Ct-C.x,It-C.y,Lt-C.z),e.add(G.group),ce=G.glow.material,c.push(te,q,se,G.group),We(l)});const Oe=()=>{r=window.requestAnimationFrame(Oe),y||(t.rotation.y>f?(t.rotation.y-=he,t.rotation.y<=f&&(t.rotation.y=f,K=-1)):t.rotation.y<v?(t.rotation.y+=he,t.rotation.y>=v&&(t.rotation.y=v,K=1)):(t.rotation.y+=he*K,t.rotation.y>=f?(t.rotation.y=f,K=-1):t.rotation.y<=v&&(t.rotation.y=v,K=1)));const s=Math.round(t.rotation.y*180/Math.PI);s!==p.value&&(p.value=s);const u=Math.round(e.rotation.x*180/Math.PI);if(u!==N.value&&(N.value=u),$+=(Q-$)*Tt,de($),ce){const w=(performance.now()-ke)/1e3;ce.opacity=.28+Math.sin(w*2.2)*.1}d.render(o,i)};Oe(),F=()=>{b=!0,window.cancelAnimationFrame(r),Ee.disconnect(),n.removeEventListener("pointerdown",Me),n.removeEventListener("pointermove",Se),n.removeEventListener("pointerup",ee),n.removeEventListener("pointercancel",ee),n.removeEventListener("wheel",xe),m.dispose(),c.forEach(s=>{s.traverse(u=>{var x;const w=u;(x=w.geometry)==null||x.dispose();const h=w.material;Array.isArray(h)?h.forEach(C=>C.dispose()):h==null||h.dispose()})}),d.dispose(),d.domElement.remove()}}),ze(()=>{F()}),(n,o)=>(M(),S("div",ut,[a("div",{ref_key:"host",ref:A,class:"moss-gl"},null,512),a("div",vt,[o[1]||(o[1]=Fe('<i class="hud-corner tl" data-v-08430a60></i><i class="hud-corner tr" data-v-08430a60></i><i class="hud-corner bl" data-v-08430a60></i><i class="hud-corner br" data-v-08430a60></i><div class="hud-grid" data-v-08430a60></div><div class="crt" data-v-08430a60></div><div class="scene-tag tag-a" data-v-08430a60><small data-v-08430a60>NEAR UNIT</small><b data-v-08430a60>MOSS</b><em data-v-08430a60>550W CORE · GROUND</em></div><div class="heading" data-v-08430a60><small data-v-08430a60>HEADING</small><b data-v-08430a60>UEG · 550W</b></div>',8)),a("div",pt,[o[0]||(o[0]=a("small",null,"LINK",-1)),a("b",null,I(re(_).mossOnline?"ONLINE":"LOST"),1),a("em",null,I(O.value),1)])]),a("div",mt,[a("div",null,[o[2]||(o[2]=a("span",null,"YAW",-1)),a("b",null,I(D.value),1)]),a("div",null,[o[3]||(o[3]=a("span",null,"PITCH",-1)),a("b",null,I(B.value),1)]),a("div",null,[o[4]||(o[4]=a("span",null,"LINK",-1)),a("b",{class:Ue(re(_).mossOnline?"ok":"bad")},I(re(_).mossOnline?"ONLINE":"LOST"),3)])])]))}}),Dt=Ye(At,[["__scopeId","data-v-08430a60"]]);function ge(P){const v=String(P||"").toLowerCase().replace(/[^0-9a-f]/g,"");return v.length!==12?"":v.match(/.{2}/g).join(":")}function Ne(P){return String(P||"").trim().replace(/\/$/,"")}function _e(P=[],v={}){const f=Ne(v.baseUrl),T=ge(v.mac);return(P||[]).some(E=>{const A=ge(E.mac)||ge(E.id);if(T&&A)return T===A;if(f&&E.baseUrl&&Ne(E.baseUrl)===f)return!0;const _=String(v.hostname||"").trim().toLowerCase(),p=String(E.hostname||"").trim().toLowerCase();return!!(_&&p&&_===p)})}function Ut(P,v=[]){return(v||[]).filter(f=>!_e(P,f))}const Yt={class:"device-page uxp-page-stack"},kt={class:"status-strip is-offline"},Bt={class:"status-actions"},Wt={class:"device-body"},zt={class:"panel body-card"},Ft={class:"panel-bd body-bd"},Rt={class:"scan-bar"},Xt={key:0,class:"hint danger"},$t={key:1,class:"device-list scan-list"},Gt=["onClick"],Vt={class:"hint",style:{margin:"4px 0 0"}},Ht={key:2,class:"hint"},Jt={key:3,class:"hint"},Zt={key:4,class:"hint danger"},Kt={key:5,class:"hint success"},qt={class:"actions foot"},jt={class:"panel body-card"},Qt={class:"panel-bd body-bd"},es={key:1,class:"hint"},ts={key:2,class:"hint"},ss={key:3,class:"hint danger"},as={class:"actions foot"},ns={class:"panel body-card moss-stage-card"},os={class:"panel-bd moss-stage-bd"},is=Te({__name:"FindMoss",setup(P){const v=Ge(),f=Ae(),T=g(!1),E=g(!1),A=g(0),_=g([]),p=g(""),N=g(""),O=g(""),D=g(!1),B=g(!1),F=g(""),R=g(!1),U=g(""),X=g(""),W=z(()=>({baseUrl:d(p.value||N.value),name:""})),J=z(()=>!!W.value.baseUrl&&_e(f.devices,W.value)),Z=z(()=>!!W.value.baseUrl&&!J.value),n=z(()=>D.value&&!J.value);De(()=>{i().catch(()=>{})});function o(t){const e=Ce(t.board)!=="MOSS"?Ce(t.board):t.product||"MOSS",c=t.mac||t.baseUrl;return`${e} · ${c}`}async function i(){T.value=!0,O.value="";try{const e=(await ue("/api/discover",{method:"POST",timeoutMs:3e4})).devices||[];_.value=Ut(f.devices,e),A.value=e.length-_.value.length,E.value=!0,p.value&&!_.value.some(c=>c.baseUrl===p.value)&&(p.value="",D.value=!1),!p.value&&_.value.length===1&&(p.value=_.value[0].baseUrl)}catch(t){O.value=t instanceof Error?t.message:"寻找失败",k.error(O.value)}finally{T.value=!1}}function d(t){const e=t.trim();return e?e.startsWith("http")?e.replace(/\/$/,""):e.includes(":")?`http://${e}`:`http://${e}:5500`:""}async function m(){var e,c;const t=d(p.value||N.value);if(!t){O.value="请先选择或填写 MOSS 地址",k.warning("请先选择或填写 MOSS 地址");return}if(_e(f.devices,{baseUrl:t})){k.warning("这台已在设备列表中,请返回选择");return}if(!B.value){B.value=!0,O.value="";try{const r=await ue("/api/device/select",{method:"POST",body:JSON.stringify({baseUrl:t})});D.value=!0,F.value=(e=r.health)!=null&&e.display_name||(c=r.health)!=null&&c.hostname?`:${r.health.display_name||r.health.hostname}`:"",k.success("已连上这台 MOSS,请命名并加入列表")}catch(r){D.value=!1,F.value="",O.value=r instanceof Error?r.message:"连接失败。请确认电脑和 MOSS 在同一 Wi-Fi。",k.error(O.value)}finally{B.value=!1}}}async function l(){var t,e,c;R.value=!0,U.value="",X.value="正在登记设备…";try{const r=await ue("/api/bind/lan",{method:"POST",body:JSON.stringify({baseUrl:d(p.value||N.value)}),timeoutMs:15e3});if((t=r.device)!=null&&t.id){Ve(r.device.id);try{const{value:b}=await He.prompt("给这台 MOSS 起个名字,方便以后辨认。","命名设备",{confirmButtonText:"保存",cancelButtonText:"稍后再说",customClass:"moss-message-box moss-message-box-narrow",inputPlaceholder:"例如 客厅的 MOSS",inputPattern:/\S+/,inputErrorMessage:"请填写名称"});await f.renameDevice(r.device.id,b.trim())}catch(b){if(b!=="cancel")throw b}}if(await f.refresh().catch(()=>{}),r.mossOnline){k.success("已加入列表,请选择后进入"),v.push({path:"/devices",query:Ie((e=r.device)==null?void 0:e.id)});return}k.warning("已加入。若列表里还是离线,稍等几秒再刷新。"),v.push({path:"/devices",query:Ie((c=r.device)==null?void 0:c.id)})}catch(r){U.value=r instanceof Error?r.message:"加入失败。请先扫描并连接局域网里的 MOSS。",X.value="",k.error(U.value)}finally{R.value=!1}}return(t,e)=>{const c=ve("el-button"),r=ve("el-input"),b=ve("el-alert");return M(),S("div",Yt,[a("section",kt,[e[3]||(e[3]=a("div",{class:"status-copy"},[a("div",{class:"status-title-row"},[a("strong",{class:"status-title"},"添加一台局域网 MOSS")]),a("p",{class:"status-meta"},"电脑和设备连同一 Wi-Fi。扫到它、连上,再起个名字加入列表。")],-1)),a("div",Bt,[V(c,{onClick:e[0]||(e[0]=y=>re(v).push("/devices"))},{default:ae(()=>[...e[2]||(e[2]=[ne("返回设备列表",-1)])]),_:1})])]),a("div",Wt,[a("section",zt,[e[7]||(e[7]=a("div",{class:"panel-hd"},"1. 扫描并连接",-1)),a("div",Ft,[e[6]||(e[6]=a("p",{class:"hint"},"只列出尚未加入的设备。已在「选择设备」里的不会出现。",-1)),a("div",Rt,[V(c,{type:"primary",loading:T.value,onClick:i},{default:ae(()=>[...e[4]||(e[4]=[ne("扫描局域网",-1)])]),_:1},8,["loading"]),V(r,{modelValue:N.value,"onUpdate:modelValue":e[1]||(e[1]=y=>N.value=y),placeholder:"或填写新设备 IP,例如 192.168.1.32"},null,8,["modelValue"])]),J.value?(M(),S("p",Xt,"这个地址已在设备列表中,请返回列表选择。")):H("",!0),_.value.length?(M(),S("div",$t,[(M(!0),S(Re,null,Xe(_.value,y=>(M(),S("div",{key:y.baseUrl,class:Ue(["device-item",{active:p.value===y.baseUrl}]),onClick:L=>p.value=y.baseUrl},[a("strong",null,I(y.name),1),a("div",Vt,I(o(y)),1)],10,Gt))),128))])):E.value&&A.value?(M(),S("p",Ht,"扫到的都已在列表里,请返回选择,或填一台新设备的 IP。")):E.value?(M(),S("p",Jt,"这一轮没扫到。确认设备和电脑同一网段,或直接填 IP。")):H("",!0),O.value?(M(),S("p",Zt,I(O.value),1)):H("",!0),D.value?(M(),S("p",Kt,"已连上局域网"+I(F.value)+",请在右侧命名并加入列表。",1)):H("",!0),a("div",qt,[V(c,{type:"primary",loading:B.value,disabled:!Z.value||B.value,onClick:m},{default:ae(()=>[...e[5]||(e[5]=[ne(" 连接这台 MOSS ",-1)])]),_:1},8,["loading","disabled"])])])]),a("section",jt,[e[9]||(e[9]=a("div",{class:"panel-hd"},"2. 命名并加入",-1)),a("div",Qt,[D.value?(M(),S("p",es,"写入后会请你给这台起个名字,然后回到设备列表。")):(M(),$e(b,{key:0,type:"info",closable:!1,"show-icon":"",title:"先在左侧连上要添加的那台,再命名加入。"})),X.value?(M(),S("p",ts,I(X.value),1)):H("",!0),U.value?(M(),S("p",ss,I(U.value),1)):H("",!0),a("div",as,[V(c,{type:"primary",loading:R.value,disabled:!n.value,onClick:l},{default:ae(()=>[...e[8]||(e[8]=[ne(" 加入列表 ",-1)])]),_:1},8,["loading","disabled"])])])]),a("section",ns,[e[10]||(e[10]=a("div",{class:"panel-hd"},"MOSS",-1)),a("div",os,[V(Dt)])])])])}}}),us=Ye(is,[["__scopeId","data-v-2e897d0d"]]);export{us as default};
@@ -1,3 +1,3 @@
1
- import{z as we,I as ke,h as u,s as H,d as _e,y as be,m as P,b as s,g as l,c as x,p as V,F as Ce,B as Ee,t as M,e as j,w as F,f as _,A as te,r as X,o as f,j as R,E as Se,R as Be}from"./index-CaD9jpX7.js";import{T as se,E as Pe,C as ne}from"./esp-flasher-CE6TSjIH.js";import{_ as Fe}from"./_plugin-vue_export-helper-DlAUqK2U.js";const $e={1027:"FTDI",1659:"Prolific",4292:"Silicon Labs CP210x",6790:"WCH CH340/CH9102",12346:"Espressif USB"},De=921600,Te=115200,xe=0;function Y(o){return o<1024?`${o} B`:o<1024*1024?`${(o/1024).toFixed(1)} KB`:`${(o/(1024*1024)).toFixed(2)} MB`}function K(o){return typeof o=="number"?o.toString(16).toUpperCase().padStart(4,"0"):""}function oe(o,e){const c=o.getInfo(),g=c.usbVendorId,w=c.usbProductId,b=g&&$e[g]||"USB 串口";return g&&w?`${b}(${K(g)}:${K(w)})`:`${b} ${e+1}`}function Me(o){const e=Array.from(o,c=>String.fromCharCode(c)).join("");return ne.MD5(ne.enc.Latin1.parse(e)).toString()}function L(o,e){return o instanceof DOMException&&o.name==="NotFoundError"?"已取消选择串口":o instanceof DOMException&&o.name==="SecurityError"?"当前页面不是安全上下文,无法使用串口。请用 localhost 或 HTTPS,并用 Chrome / Edge。":o instanceof Error&&o.message?o.message:e}function Le(){const o=u(!1),e=u([]),c=u(""),g=u(""),w=u(""),b=u(""),N=u(""),C=u(null),t=u(0),p=u([]),i=u(""),T=u(!1),E=u(!1),I=u(!1),O=u(!1),$=u(!1),S=u(!1),r=u("");let y=null,m=null,k=null,U=!0;const re=H(()=>(i.value?[...p.value,i.value]:p.value).join(`
1
+ import{z as we,I as ke,h as u,s as H,d as _e,y as be,m as P,b as s,g as l,c as x,p as V,F as Ce,B as Ee,t as M,e as j,w as F,f as _,A as te,r as X,o as f,j as q,E as Se,S as Be}from"./index-CSKTeMnN.js";import{T as se,E as Pe,C as ne}from"./esp-flasher-CE6TSjIH.js";import{_ as Fe}from"./_plugin-vue_export-helper-DlAUqK2U.js";const $e={1027:"FTDI",1659:"Prolific",4292:"Silicon Labs CP210x",6790:"WCH CH340/CH9102",12346:"Espressif USB"},De=921600,Te=115200,xe=0;function Y(o){return o<1024?`${o} B`:o<1024*1024?`${(o/1024).toFixed(1)} KB`:`${(o/(1024*1024)).toFixed(2)} MB`}function K(o){return typeof o=="number"?o.toString(16).toUpperCase().padStart(4,"0"):""}function oe(o,e){const c=o.getInfo(),g=c.usbVendorId,w=c.usbProductId,b=g&&$e[g]||"USB 串口";return g&&w?`${b}(${K(g)}:${K(w)})`:`${b} ${e+1}`}function Me(o){const e=Array.from(o,c=>String.fromCharCode(c)).join("");return ne.MD5(ne.enc.Latin1.parse(e)).toString()}function L(o,e){return o instanceof DOMException&&o.name==="NotFoundError"?"已取消选择串口":o instanceof DOMException&&o.name==="SecurityError"?"当前页面不是安全上下文,无法使用串口。请用 localhost 或 HTTPS,并用 Chrome / Edge。":o instanceof Error&&o.message?o.message:e}function Le(){const o=u(!1),e=u([]),c=u(""),g=u(""),w=u(""),b=u(""),N=u(""),C=u(null),t=u(0),p=u([]),i=u(""),T=u(!1),E=u(!1),I=u(!1),O=u(!1),$=u(!1),S=u(!1),r=u("");let y=null,m=null,k=null,U=!0;const re=H(()=>(i.value?[...p.value,i.value]:p.value).join(`
2
2
  `)||"等待操作…"),z=H(()=>T.value||E.value||I.value||O.value||$.value),Z=H(()=>e.value.find(a=>a.key===c.value)||null),ie=H(()=>{var a;return S.value&&!z.value&&!!((a=C.value)!=null&&a.length)}),ue=H(()=>C.value?Y(C.value.length):""),ce={clean(){p.value=[],i.value=""},writeLine(a){p.value.push(i.value+a),i.value="",ee()},write(a){i.value+=a}};function ee(){p.value.length>400&&(p.value=p.value.slice(-300))}function v(a){i.value&&(p.value.push(i.value),i.value=""),p.value.push(a),ee()}function D(){return typeof navigator<"u"?navigator.serial:void 0}function ve(a){var n,h;e.value=a.map((d,B)=>{const le=d.getInfo();return{key:`${K(le.usbVendorId)||"port"}-${K(le.usbProductId)||B}-${B}`,port:d,label:oe(d,B)}}),c.value&&!e.value.some(d=>d.key===c.value)?(c.value=((n=e.value[0])==null?void 0:n.key)||"",k=((h=e.value[0])==null?void 0:h.port)||null):!c.value&&e.value.length&&(c.value=e.value[0].key,k=e.value[0].port)}async function J(){const a=D();if(a)try{ve(await a.getPorts()),S.value&&!T.value&&k&&!e.value.some(n=>n.port===k)&&(v("USB 已拔出"),S.value=!1,g.value="",w.value="",b.value="",await A())}catch(n){r.value=L(n,"读取串口失败")}}function W(a){var n;c.value=a,k=((n=e.value.find(h=>h.key===a))==null?void 0:n.port)||null}async function G(){var n;const a=D();if(!a){r.value="当前浏览器不支持串口,请用 Chrome 或 Edge浏览器";return}r.value="";try{const h=await a.requestPort();await J();const d=e.value.find(B=>B.port===h);if(d)W(d.key);else{const B={key:`picked-${Date.now()}`,port:h,label:oe(h,e.value.length)};e.value=[...e.value,B],W(B.key)}v(`已选择:${((n=Z.value)==null?void 0:n.label)||"USB 设备"}`)}catch(h){const d=L(h,"选择串口失败");d!=="已取消选择串口"&&(r.value=d)}}async function de(){if(z.value)return;if($.value&&await Q(),!D()){r.value="当前浏览器不支持串口,请用 Chrome 或 Edge浏览器";return}T.value=!0,r.value="";try{if(!k&&(await G(),!k))return;y=new se(k,!1),m=new Pe({transport:y,baudrate:De,terminal:ce,debugLogging:!1}),g.value=await m.main();try{w.value=await m.chip.getChipDescription(m)}catch{w.value=g.value}try{b.value=await m.chip.readMac(m)}catch{b.value=""}S.value=!0,v(`已识别:${w.value||g.value}`)}catch(n){S.value=!1,r.value=L(n,"没连上。请按住 BOOT 再点一下复位,然后重试。"),v(`连接失败:${r.value}`),await A()}finally{T.value=!1}}async function A(){try{await(y==null?void 0:y.disconnect())}catch{}y=null,m=null}async function ae(){$.value&&await Q(),U=!0,await A(),S.value=!1,g.value="",w.value="",b.value="",t.value=0,v("已断开")}async function fe(){const a=C.value;if(!m||!S.value||E.value||!(a!=null&&a.length)){a!=null&&a.length||(r.value="请先选择固件文件");return}E.value=!0,r.value="",t.value=0;try{v(`开始烧录 ${N.value}(${Y(a.length)})`),await m.writeFlash({fileArray:[{data:a,address:xe}],flashMode:"keep",flashFreq:"keep",flashSize:"detect",eraseAll:!1,compress:!0,reportProgress:(n,h,d)=>{t.value=d?Math.round(h/d*100):0},calculateMD5Hash:Me}),await m.after(),t.value=100,v("烧录完成,设备已重启")}catch(n){r.value=L(n,"烧录失败"),v(`烧录失败:${r.value}`)}finally{E.value=!1}}async function pe(){if(!(!m||!S.value||I.value)){I.value=!0,r.value="";try{v("正在清空芯片…"),await m.eraseFlash(),v("芯片已清空")}catch(a){r.value=L(a,"清空失败"),v(`清空失败:${r.value}`)}finally{I.value=!1}}}async function he(){if(!(!y||O.value)){O.value=!0;try{await y.setDTR(!1),await new Promise(a=>setTimeout(a,100)),await y.setDTR(!0),v("已重启设备")}catch(a){r.value=L(a,"重启失败")}finally{O.value=!1}}}async function ge(){if(!$.value&&(r.value="",S.value&&(await ae(),await new Promise(a=>setTimeout(a,400))),!(!k&&(await G(),!k))))try{y=new se(k,!1),await y.connect(Te),$.value=!0,U=!1,v("已打开运行日志");const a=new TextDecoder;let n="";await y.rawRead(h=>{n+=a.decode(h,{stream:!0}),n=n.replace(/\r/g,"");const d=n.split(`
3
- `);n=d.pop()||"";for(const B of d)v(B)},()=>U),n&&v(n)}catch(a){r.value=L(a,"打开运行日志失败"),v(`运行日志失败:${r.value}`),await A()}finally{$.value=!1,U=!0}}async function Q(){U=!0,$.value=!1,await A(),v("已关闭运行日志")}async function ye(a){a&&(N.value=a.name,C.value=new Uint8Array(await a.arrayBuffer()),t.value=0,v(`已选择固件 ${a.name}(${Y(C.value.length)})`))}function me(){N.value="",C.value=null,t.value=0}function q(){J()}return we(()=>{var a,n;if(o.value=!!D(),!o.value){r.value="当前浏览器不支持串口,请用 Chrome 或 Edge浏览器";return}J(),(a=D())==null||a.addEventListener("connect",q),(n=D())==null||n.addEventListener("disconnect",q)}),ke(()=>{var a,n;(a=D())==null||a.removeEventListener("connect",q),(n=D())==null||n.removeEventListener("disconnect",q),U=!0,A()}),{serialSupported:o,ports:e,selectedKey:c,selectedPortItem:Z,chipName:g,chipDesc:w,chipMac:b,firmwareName:N,firmwareSize:ue,firmwareProgress:t,logs:p,consoleText:re,connecting:T,flashing:E,erasing:I,resetting:O,monitoring:$,connected:S,busy:z,canFlash:ie,lastError:r,selectPort:W,requestPort:G,connect:de,disconnect:ae,flash:fe,eraseFlash:pe,resetDevice:he,startMonitor:ge,stopMonitor:Q,pickFirmware:ye,clearFirmware:me}}const Ne={class:"flash-page"},Ie={class:"flash-steps"},Ue={class:"panel flash-card"},Ae={class:"panel-bd flash-card-bd"},Oe={class:"flash-card-main"},He={key:1,class:"device-list"},Ve=["onClick"],Re={key:2,class:"hint"},qe={key:3,class:"kv-grid"},je={class:"kv"},Ke={class:"kv-v success"},ze={class:"kv"},Je={class:"kv-v"},We={key:4,class:"hint danger"},Ge={class:"actions"},Qe={class:"panel flash-card"},Xe={class:"panel-bd flash-card-bd"},Ye={class:"flash-card-main"},Ze=["disabled"],ea={key:0},aa={key:1},la={class:"actions"},ta={class:"panel flash-console"},sa={class:"panel-hd panel-hd-row"},na={class:"flash-hd-actions"},oa={class:"panel-bd flash-console-bd"},ra=_e({__name:"Flash",setup(o){const e=Le(),c=u(null);async function g(C){var p;const t=C.target;await e.pickFirmware((p=t.files)==null?void 0:p[0]),t.value=""}async function w(){await e.connect(),e.connected.value?R.success(`已连上 ${e.chipDesc.value||e.chipName.value}`):e.lastError.value&&R.error(e.lastError.value)}async function b(){await e.flash(),!e.lastError.value&&e.firmwareProgress.value>=100?R.success("烧录完成,设备已重启"):e.lastError.value&&R.error(e.lastError.value)}async function N(){try{await Se.confirm("会把芯片里的程序全部清掉,确定吗?","清空芯片",{type:"warning",confirmButtonText:"清空",cancelButtonText:"取消"})}catch{return}await e.eraseFlash(),e.lastError.value||R.success("芯片已清空")}return be(()=>e.consoleText.value,async()=>{await Be(),c.value&&(c.value.scrollTop=c.value.scrollHeight)}),(C,t)=>{const p=X("el-alert"),i=X("el-button"),T=X("el-progress");return f(),P("div",Ne,[s("div",Ie,[s("section",Ue,[t[7]||(t[7]=s("div",{class:"panel-hd"},"1. 连接设备",-1)),s("div",Ae,[s("div",Oe,[l(e).serialSupported.value?V("",!0):(f(),x(p,{key:0,title:"请用 Chrome 或 Edge浏览器 打开本页。Safari、Firefox 选不了 USB 串口。",type:"error","show-icon":"",closable:!1})),t[2]||(t[2]=s("p",{class:"hint"},"用 USB 线把 MOSS 接到电脑,点「选择设备」。弹窗里选那一个串口即可。",-1)),t[3]||(t[3]=s("p",{class:"hint"},"连不上时:按住板上的 BOOT 不放,再按一下复位,然后松开 BOOT,重新连接。",-1)),l(e).ports.value.length?(f(),P("div",He,[(f(!0),P(Ce,null,Ee(l(e).ports.value,E=>(f(),P("div",{key:E.key,class:te(["device-item",{active:l(e).selectedKey.value===E.key}]),onClick:I=>l(e).selectPort(E.key)},[s("strong",null,M(E.label),1)],10,Ve))),128))])):(f(),P("p",Re,"还没选过设备。")),l(e).connected.value?(f(),P("div",qe,[s("div",je,[t[0]||(t[0]=s("div",{class:"kv-k"},"芯片",-1)),s("div",Ke,M(l(e).chipDesc.value||l(e).chipName.value),1)]),s("div",ze,[t[1]||(t[1]=s("div",{class:"kv-k"},"编号",-1)),s("div",Je,[s("code",null,M(l(e).chipMac.value||"-"),1)])])])):V("",!0),l(e).lastError.value?(f(),P("p",We,M(l(e).lastError.value),1)):V("",!0)]),s("div",Ge,[j(i,{disabled:l(e).busy.value,onClick:l(e).requestPort},{default:F(()=>[...t[4]||(t[4]=[_("选择设备",-1)])]),_:1},8,["disabled","onClick"]),l(e).connected.value?(f(),x(i,{key:1,type:"warning",disabled:l(e).busy.value,onClick:l(e).disconnect},{default:F(()=>[...t[6]||(t[6]=[_("断开",-1)])]),_:1},8,["disabled","onClick"])):(f(),x(i,{key:0,type:"primary",loading:l(e).connecting.value,disabled:l(e).busy.value,onClick:w},{default:F(()=>[...t[5]||(t[5]=[_(" 连接 ",-1)])]),_:1},8,["loading","disabled"]))])])]),s("section",Qe,[t[11]||(t[11]=s("div",{class:"panel-hd"},"2. 选择固件",-1)),s("div",Xe,[s("div",Ye,[t[8]||(t[8]=s("p",{class:"hint"},[_("选一份合并好的 "),s("code",null,".bin"),_(" 固件。选好后点下面的「开始烧录」。")],-1)),s("label",{class:te(["file-pick",{ready:l(e).firmwareName.value,disabled:l(e).flashing.value}])},[s("input",{type:"file",accept:".bin",disabled:l(e).flashing.value,onChange:g},null,40,Ze),l(e).firmwareName.value?(f(),P("span",ea,M(l(e).firmwareName.value)+" · "+M(l(e).firmwareSize.value),1)):(f(),P("span",aa,"点击选择固件文件"))],2),l(e).flashing.value||l(e).firmwareProgress.value>0?(f(),x(T,{key:0,percentage:l(e).firmwareProgress.value,status:l(e).firmwareProgress.value>=100&&!l(e).flashing.value?"success":void 0},null,8,["percentage","status"])):V("",!0)]),s("div",la,[j(i,{type:"primary",loading:l(e).flashing.value,disabled:!l(e).canFlash.value,onClick:b},{default:F(()=>[...t[9]||(t[9]=[_(" 开始烧录 ",-1)])]),_:1},8,["loading","disabled"]),l(e).firmwareName.value?(f(),x(i,{key:0,disabled:l(e).flashing.value,onClick:l(e).clearFirmware},{default:F(()=>[...t[10]||(t[10]=[_(" 换一份 ",-1)])]),_:1},8,["disabled","onClick"])):V("",!0)])])])]),s("section",ta,[s("div",sa,[t[16]||(t[16]=s("span",null,"日志",-1)),s("div",na,[l(e).monitoring.value?(f(),x(i,{key:1,type:"warning",onClick:l(e).stopMonitor},{default:F(()=>[...t[13]||(t[13]=[_("停止",-1)])]),_:1},8,["onClick"])):(f(),x(i,{key:0,disabled:l(e).flashing.value||l(e).connecting.value,onClick:l(e).startMonitor},{default:F(()=>[...t[12]||(t[12]=[_(" 查看运行日志 ",-1)])]),_:1},8,["disabled","onClick"])),j(i,{disabled:!l(e).connected.value&&!l(e).monitoring.value||l(e).flashing.value,loading:l(e).resetting.value,onClick:l(e).resetDevice},{default:F(()=>[...t[14]||(t[14]=[_(" 重启设备 ",-1)])]),_:1},8,["disabled","loading","onClick"]),j(i,{disabled:!l(e).connected.value||l(e).busy.value,loading:l(e).erasing.value,onClick:N},{default:F(()=>[...t[15]||(t[15]=[_(" 清空芯片 ",-1)])]),_:1},8,["disabled","loading"])])]),s("div",oa,[t[17]||(t[17]=s("p",{class:"hint"},"烧录过程会显示在这里。烧完后可点「查看运行日志」,看设备有没有正常启动。",-1)),s("pre",{ref_key:"logEl",ref:c,class:"flash-log"},M(l(e).consoleText.value),513)])])])}}}),va=Fe(ra,[["__scopeId","data-v-fa02be36"]]);export{va as default};
3
+ `);n=d.pop()||"";for(const B of d)v(B)},()=>U),n&&v(n)}catch(a){r.value=L(a,"打开运行日志失败"),v(`运行日志失败:${r.value}`),await A()}finally{$.value=!1,U=!0}}async function Q(){U=!0,$.value=!1,await A(),v("已关闭运行日志")}async function ye(a){a&&(N.value=a.name,C.value=new Uint8Array(await a.arrayBuffer()),t.value=0,v(`已选择固件 ${a.name}(${Y(C.value.length)})`))}function me(){N.value="",C.value=null,t.value=0}function R(){J()}return we(()=>{var a,n;if(o.value=!!D(),!o.value){r.value="当前浏览器不支持串口,请用 Chrome 或 Edge浏览器";return}J(),(a=D())==null||a.addEventListener("connect",R),(n=D())==null||n.addEventListener("disconnect",R)}),ke(()=>{var a,n;(a=D())==null||a.removeEventListener("connect",R),(n=D())==null||n.removeEventListener("disconnect",R),U=!0,A()}),{serialSupported:o,ports:e,selectedKey:c,selectedPortItem:Z,chipName:g,chipDesc:w,chipMac:b,firmwareName:N,firmwareSize:ue,firmwareProgress:t,logs:p,consoleText:re,connecting:T,flashing:E,erasing:I,resetting:O,monitoring:$,connected:S,busy:z,canFlash:ie,lastError:r,selectPort:W,requestPort:G,connect:de,disconnect:ae,flash:fe,eraseFlash:pe,resetDevice:he,startMonitor:ge,stopMonitor:Q,pickFirmware:ye,clearFirmware:me}}const Ne={class:"flash-page"},Ie={class:"flash-steps"},Ue={class:"panel flash-card"},Ae={class:"panel-bd flash-card-bd"},Oe={class:"flash-card-main"},He={key:1,class:"device-list"},Ve=["onClick"],qe={key:2,class:"hint"},Re={key:3,class:"kv-grid"},je={class:"kv"},Ke={class:"kv-v success"},ze={class:"kv"},Je={class:"kv-v"},We={key:4,class:"hint danger"},Ge={class:"actions"},Qe={class:"panel flash-card"},Xe={class:"panel-bd flash-card-bd"},Ye={class:"flash-card-main"},Ze=["disabled"],ea={key:0},aa={key:1},la={class:"actions"},ta={class:"panel flash-console"},sa={class:"panel-hd panel-hd-row"},na={class:"flash-hd-actions"},oa={class:"panel-bd flash-console-bd"},ra=_e({__name:"Flash",setup(o){const e=Le(),c=u(null);async function g(C){var p;const t=C.target;await e.pickFirmware((p=t.files)==null?void 0:p[0]),t.value=""}async function w(){await e.connect(),e.connected.value?q.success(`已连上 ${e.chipDesc.value||e.chipName.value}`):e.lastError.value&&q.error(e.lastError.value)}async function b(){await e.flash(),!e.lastError.value&&e.firmwareProgress.value>=100?q.success("烧录完成,设备已重启"):e.lastError.value&&q.error(e.lastError.value)}async function N(){try{await Se.confirm("会把芯片里的程序全部清掉,确定吗?","清空芯片",{type:"warning",confirmButtonText:"清空",cancelButtonText:"取消"})}catch{return}await e.eraseFlash(),e.lastError.value||q.success("芯片已清空")}return be(()=>e.consoleText.value,async()=>{await Be(),c.value&&(c.value.scrollTop=c.value.scrollHeight)}),(C,t)=>{const p=X("el-alert"),i=X("el-button"),T=X("el-progress");return f(),P("div",Ne,[s("div",Ie,[s("section",Ue,[t[7]||(t[7]=s("div",{class:"panel-hd"},"1. 连接设备",-1)),s("div",Ae,[s("div",Oe,[l(e).serialSupported.value?V("",!0):(f(),x(p,{key:0,title:"请用 Chrome 或 Edge浏览器 打开本页。Safari、Firefox 选不了 USB 串口。",type:"error","show-icon":"",closable:!1})),t[2]||(t[2]=s("p",{class:"hint"},"用 USB 线把 MOSS 接到电脑,点「选择设备」。弹窗里选那一个串口即可。",-1)),t[3]||(t[3]=s("p",{class:"hint"},"连不上时:按住板上的 BOOT 不放,再按一下复位,然后松开 BOOT,重新连接。",-1)),l(e).ports.value.length?(f(),P("div",He,[(f(!0),P(Ce,null,Ee(l(e).ports.value,E=>(f(),P("div",{key:E.key,class:te(["device-item",{active:l(e).selectedKey.value===E.key}]),onClick:I=>l(e).selectPort(E.key)},[s("strong",null,M(E.label),1)],10,Ve))),128))])):(f(),P("p",qe,"还没选过设备。")),l(e).connected.value?(f(),P("div",Re,[s("div",je,[t[0]||(t[0]=s("div",{class:"kv-k"},"芯片",-1)),s("div",Ke,M(l(e).chipDesc.value||l(e).chipName.value),1)]),s("div",ze,[t[1]||(t[1]=s("div",{class:"kv-k"},"编号",-1)),s("div",Je,[s("code",null,M(l(e).chipMac.value||"-"),1)])])])):V("",!0),l(e).lastError.value?(f(),P("p",We,M(l(e).lastError.value),1)):V("",!0)]),s("div",Ge,[j(i,{disabled:l(e).busy.value,onClick:l(e).requestPort},{default:F(()=>[...t[4]||(t[4]=[_("选择设备",-1)])]),_:1},8,["disabled","onClick"]),l(e).connected.value?(f(),x(i,{key:1,type:"warning",disabled:l(e).busy.value,onClick:l(e).disconnect},{default:F(()=>[...t[6]||(t[6]=[_("断开",-1)])]),_:1},8,["disabled","onClick"])):(f(),x(i,{key:0,type:"primary",loading:l(e).connecting.value,disabled:l(e).busy.value,onClick:w},{default:F(()=>[...t[5]||(t[5]=[_(" 连接 ",-1)])]),_:1},8,["loading","disabled"]))])])]),s("section",Qe,[t[11]||(t[11]=s("div",{class:"panel-hd"},"2. 选择固件",-1)),s("div",Xe,[s("div",Ye,[t[8]||(t[8]=s("p",{class:"hint"},[_("选一份合并好的 "),s("code",null,".bin"),_(" 固件。选好后点下面的「开始烧录」。")],-1)),s("label",{class:te(["file-pick",{ready:l(e).firmwareName.value,disabled:l(e).flashing.value}])},[s("input",{type:"file",accept:".bin",disabled:l(e).flashing.value,onChange:g},null,40,Ze),l(e).firmwareName.value?(f(),P("span",ea,M(l(e).firmwareName.value)+" · "+M(l(e).firmwareSize.value),1)):(f(),P("span",aa,"点击选择固件文件"))],2),l(e).flashing.value||l(e).firmwareProgress.value>0?(f(),x(T,{key:0,percentage:l(e).firmwareProgress.value,status:l(e).firmwareProgress.value>=100&&!l(e).flashing.value?"success":void 0},null,8,["percentage","status"])):V("",!0)]),s("div",la,[j(i,{type:"primary",loading:l(e).flashing.value,disabled:!l(e).canFlash.value,onClick:b},{default:F(()=>[...t[9]||(t[9]=[_(" 开始烧录 ",-1)])]),_:1},8,["loading","disabled"]),l(e).firmwareName.value?(f(),x(i,{key:0,disabled:l(e).flashing.value,onClick:l(e).clearFirmware},{default:F(()=>[...t[10]||(t[10]=[_(" 换一份 ",-1)])]),_:1},8,["disabled","onClick"])):V("",!0)])])])]),s("section",ta,[s("div",sa,[t[16]||(t[16]=s("span",null,"日志",-1)),s("div",na,[l(e).monitoring.value?(f(),x(i,{key:1,type:"warning",onClick:l(e).stopMonitor},{default:F(()=>[...t[13]||(t[13]=[_("停止",-1)])]),_:1},8,["onClick"])):(f(),x(i,{key:0,disabled:l(e).flashing.value||l(e).connecting.value,onClick:l(e).startMonitor},{default:F(()=>[...t[12]||(t[12]=[_(" 查看运行日志 ",-1)])]),_:1},8,["disabled","onClick"])),j(i,{disabled:!l(e).connected.value&&!l(e).monitoring.value||l(e).flashing.value,loading:l(e).resetting.value,onClick:l(e).resetDevice},{default:F(()=>[...t[14]||(t[14]=[_(" 重启设备 ",-1)])]),_:1},8,["disabled","loading","onClick"]),j(i,{disabled:!l(e).connected.value||l(e).busy.value,loading:l(e).erasing.value,onClick:N},{default:F(()=>[...t[15]||(t[15]=[_(" 清空芯片 ",-1)])]),_:1},8,["disabled","loading"])])]),s("div",oa,[t[17]||(t[17]=s("p",{class:"hint"},"烧录过程会显示在这里。烧完后可点「查看运行日志」,看设备有没有正常启动。",-1)),s("pre",{ref_key:"logEl",ref:c,class:"flash-log"},M(l(e).consoleText.value),513)])])])}}}),va=Fe(ra,[["__scopeId","data-v-fa02be36"]]);export{va as default};
@@ -0,0 +1 @@
1
+ import{d as x,o as i,m as o,n as C,p as w,q as B,s as r,b as a,v as p,A as c,J as F,f as X,X as c0,Y as g0,Z as m0,_ as v0,$ as p0,a0 as h0,a1 as A0,a2 as f0,a3 as H0,a4 as Z0,a5 as y0,a as V0,t as u,e as $,a6 as z,g as t,F as $0,B as b0,P as T,r as M0,a7 as G}from"./index-CSKTeMnN.js";import{H as L0}from"./PhLightning.vue-FONo4UB7.js";import{_ as Q}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./esp-flasher-CE6TSjIH.js";const k0=["width","height","fill","transform"],x0={key:0},w0=a("path",{d:"M232,44H160a43.86,43.86,0,0,0-32,13.85A43.86,43.86,0,0,0,96,44H24A12,12,0,0,0,12,56V200a12,12,0,0,0,12,12H96a20,20,0,0,1,20,20,12,12,0,0,0,24,0,20,20,0,0,1,20-20h72a12,12,0,0,0,12-12V56A12,12,0,0,0,232,44ZM96,188H36V68H96a20,20,0,0,1,20,20V192.81A43.79,43.79,0,0,0,96,188Zm124,0H160a43.71,43.71,0,0,0-20,4.83V88a20,20,0,0,1,20-20h60Z"},null,-1),S0=[w0],z0={key:1},C0=a("path",{d:"M232,56V200H160a32,32,0,0,0-32,32,32,32,0,0,0-32-32H24V56H96a32,32,0,0,1,32,32,32,32,0,0,1,32-32Z",opacity:"0.2"},null,-1),B0=a("path",{d:"M232,48H160a40,40,0,0,0-32,16A40,40,0,0,0,96,48H24a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H96a24,24,0,0,1,24,24,8,8,0,0,0,16,0,24,24,0,0,1,24-24h72a8,8,0,0,0,8-8V56A8,8,0,0,0,232,48ZM96,192H32V64H96a24,24,0,0,1,24,24V200A39.81,39.81,0,0,0,96,192Zm128,0H160a39.81,39.81,0,0,0-24,8V88a24,24,0,0,1,24-24h64Z"},null,-1),T0=[C0,B0],X0={key:2},Y0=a("path",{d:"M240,56V200a8,8,0,0,1-8,8H160a24,24,0,0,0-24,23.94,7.9,7.9,0,0,1-5.12,7.55A8,8,0,0,1,120,232a24,24,0,0,0-24-24H24a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8H88a32,32,0,0,1,32,32v87.73a8.17,8.17,0,0,0,7.47,8.25,8,8,0,0,0,8.53-8V80a32,32,0,0,1,32-32h64A8,8,0,0,1,240,56Z"},null,-1),O0=[Y0],P0={key:3},N0=a("path",{d:"M232,50H160a38,38,0,0,0-32,17.55A38,38,0,0,0,96,50H24a6,6,0,0,0-6,6V200a6,6,0,0,0,6,6H96a26,26,0,0,1,26,26,6,6,0,0,0,12,0,26,26,0,0,1,26-26h72a6,6,0,0,0,6-6V56A6,6,0,0,0,232,50ZM96,194H30V62H96a26,26,0,0,1,26,26V204.31A37.86,37.86,0,0,0,96,194Zm130,0H160a37.87,37.87,0,0,0-26,10.32V88a26,26,0,0,1,26-26h66Z"},null,-1),E0=[N0],R0={key:4},G0=a("path",{d:"M232,48H160a40,40,0,0,0-32,16A40,40,0,0,0,96,48H24a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H96a24,24,0,0,1,24,24,8,8,0,0,0,16,0,24,24,0,0,1,24-24h72a8,8,0,0,0,8-8V56A8,8,0,0,0,232,48ZM96,192H32V64H96a24,24,0,0,1,24,24V200A39.81,39.81,0,0,0,96,192Zm128,0H160a39.81,39.81,0,0,0-24,8V88a24,24,0,0,1,24-24h64Z"},null,-1),F0=[G0],U0={key:5},D0=a("path",{d:"M232,52H160a36,36,0,0,0-32,19.54A36,36,0,0,0,96,52H24a4,4,0,0,0-4,4V200a4,4,0,0,0,4,4H96a28,28,0,0,1,28,28,4,4,0,0,0,8,0,28,28,0,0,1,28-28h72a4,4,0,0,0,4-4V56A4,4,0,0,0,232,52ZM96,196H28V60H96a28,28,0,0,1,28,28V209.4A35.93,35.93,0,0,0,96,196Zm132,0H160a35.94,35.94,0,0,0-28,13.41V88a28,28,0,0,1,28-28h68Z"},null,-1),j0=[D0],q0={name:"PhBookOpen"},I0=x({...q0,props:{weight:{type:String},size:{type:[String,Number]},color:{type:String},mirrored:{type:Boolean}},setup(d){const e=d,Z=p("weight","regular"),y=p("size","1em"),h=p("color","currentColor"),m=p("mirrored",!1),s=r(()=>e.weight??Z),v=r(()=>e.size??y),A=r(()=>e.color??h),n=r(()=>e.mirrored!==void 0?e.mirrored?"scale(-1, 1)":void 0:m?"scale(-1, 1)":void 0);return(H,M)=>(i(),o("svg",B({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 256",width:v.value,height:v.value,fill:A.value,transform:n.value},H.$attrs),[C(H.$slots,"default"),s.value==="bold"?(i(),o("g",x0,S0)):s.value==="duotone"?(i(),o("g",z0,T0)):s.value==="fill"?(i(),o("g",X0,O0)):s.value==="light"?(i(),o("g",P0,E0)):s.value==="regular"?(i(),o("g",R0,F0)):s.value==="thin"?(i(),o("g",U0,j0)):w("",!0)],16,k0))}}),W0=["width","height","fill","transform"],K0={key:0},J0=a("path",{d:"M208,52H182.42L170,33.34A12,12,0,0,0,160,28H96a12,12,0,0,0-10,5.34L73.57,52H48A28,28,0,0,0,20,80V192a28,28,0,0,0,28,28H208a28,28,0,0,0,28-28V80A28,28,0,0,0,208,52Zm4,140a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V80a4,4,0,0,1,4-4H80a12,12,0,0,0,10-5.34L102.42,52h51.15L166,70.66A12,12,0,0,0,176,76h32a4,4,0,0,1,4,4ZM128,84a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,84Zm0,72a24,24,0,1,1,24-24A24,24,0,0,1,128,156Z"},null,-1),Q0=[J0],_0={key:1},a1=a("path",{d:"M208,64H176L160,40H96L80,64H48A16,16,0,0,0,32,80V192a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V80A16,16,0,0,0,208,64ZM128,168a36,36,0,1,1,36-36A36,36,0,0,1,128,168Z",opacity:"0.2"},null,-1),l1=a("path",{d:"M208,56H180.28L166.65,35.56A8,8,0,0,0,160,32H96a8,8,0,0,0-6.65,3.56L75.71,56H48A24,24,0,0,0,24,80V192a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V80A24,24,0,0,0,208,56Zm8,136a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V80a8,8,0,0,1,8-8H80a8,8,0,0,0,6.66-3.56L100.28,48h55.43l13.63,20.44A8,8,0,0,0,176,72h32a8,8,0,0,1,8,8ZM128,88a44,44,0,1,0,44,44A44.05,44.05,0,0,0,128,88Zm0,72a28,28,0,1,1,28-28A28,28,0,0,1,128,160Z"},null,-1),t1=[a1,l1],e1={key:2},s1=a("path",{d:"M208,56H180.28L166.65,35.56A8,8,0,0,0,160,32H96a8,8,0,0,0-6.65,3.56L75.71,56H48A24,24,0,0,0,24,80V192a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V80A24,24,0,0,0,208,56Zm-44,76a36,36,0,1,1-36-36A36,36,0,0,1,164,132Z"},null,-1),n1=[s1],i1={key:3},o1=a("path",{d:"M208,58H179.21L165,36.67A6,6,0,0,0,160,34H96a6,6,0,0,0-5,2.67L76.78,58H48A22,22,0,0,0,26,80V192a22,22,0,0,0,22,22H208a22,22,0,0,0,22-22V80A22,22,0,0,0,208,58Zm10,134a10,10,0,0,1-10,10H48a10,10,0,0,1-10-10V80A10,10,0,0,1,48,70H80a6,6,0,0,0,5-2.67L99.21,46h57.57L171,67.33A6,6,0,0,0,176,70h32a10,10,0,0,1,10,10ZM128,90a42,42,0,1,0,42,42A42,42,0,0,0,128,90Zm0,72a30,30,0,1,1,30-30A30,30,0,0,1,128,162Z"},null,-1),r1=[o1],d1={key:4},u1=a("path",{d:"M208,56H180.28L166.65,35.56A8,8,0,0,0,160,32H96a8,8,0,0,0-6.65,3.56L75.71,56H48A24,24,0,0,0,24,80V192a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V80A24,24,0,0,0,208,56Zm8,136a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V80a8,8,0,0,1,8-8H80a8,8,0,0,0,6.66-3.56L100.28,48h55.43l13.63,20.44A8,8,0,0,0,176,72h32a8,8,0,0,1,8,8ZM128,88a44,44,0,1,0,44,44A44.05,44.05,0,0,0,128,88Zm0,72a28,28,0,1,1,28-28A28,28,0,0,1,128,160Z"},null,-1),c1=[u1],g1={key:5},m1=a("path",{d:"M208,60H178.13L163.32,37.78A4,4,0,0,0,160,36H96a4,4,0,0,0-3.32,1.78L77.85,60H48A20,20,0,0,0,28,80V192a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V80A20,20,0,0,0,208,60Zm12,132a12,12,0,0,1-12,12H48a12,12,0,0,1-12-12V80A12,12,0,0,1,48,68H80a4,4,0,0,0,3.33-1.78L98.13,44h59.72l14.82,22.22A4,4,0,0,0,176,68h32a12,12,0,0,1,12,12ZM128,92a40,40,0,1,0,40,40A40,40,0,0,0,128,92Zm0,72a32,32,0,1,1,32-32A32,32,0,0,1,128,164Z"},null,-1),v1=[m1],p1={name:"PhCamera"},h1=x({...p1,props:{weight:{type:String},size:{type:[String,Number]},color:{type:String},mirrored:{type:Boolean}},setup(d){const e=d,Z=p("weight","regular"),y=p("size","1em"),h=p("color","currentColor"),m=p("mirrored",!1),s=r(()=>e.weight??Z),v=r(()=>e.size??y),A=r(()=>e.color??h),n=r(()=>e.mirrored!==void 0?e.mirrored?"scale(-1, 1)":void 0:m?"scale(-1, 1)":void 0);return(H,M)=>(i(),o("svg",B({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 256",width:v.value,height:v.value,fill:A.value,transform:n.value},H.$attrs),[C(H.$slots,"default"),s.value==="bold"?(i(),o("g",K0,Q0)):s.value==="duotone"?(i(),o("g",_0,t1)):s.value==="fill"?(i(),o("g",e1,n1)):s.value==="light"?(i(),o("g",i1,r1)):s.value==="regular"?(i(),o("g",d1,c1)):s.value==="thin"?(i(),o("g",g1,v1)):w("",!0)],16,W0))}}),A1=["width","height","fill","transform"],f1={key:0},H1=a("path",{d:"M232,116h-4.72A100.21,100.21,0,0,0,140,28.72V24a12,12,0,0,0-24,0v4.72A100.21,100.21,0,0,0,28.72,116H24a12,12,0,0,0,0,24h4.72A100.21,100.21,0,0,0,116,227.28V232a12,12,0,0,0,24,0v-4.72A100.21,100.21,0,0,0,227.28,140H232a12,12,0,0,0,0-24Zm-92,87v-3a12,12,0,0,0-24,0v3a76.15,76.15,0,0,1-63-63h3a12,12,0,0,0,0-24H53a76.15,76.15,0,0,1,63-63v3a12,12,0,0,0,24,0V53a76.15,76.15,0,0,1,63,63h-3a12,12,0,0,0,0,24h3A76.15,76.15,0,0,1,140,203ZM128,84a44,44,0,1,0,44,44A44.05,44.05,0,0,0,128,84Zm0,64a20,20,0,1,1,20-20A20,20,0,0,1,128,148Z"},null,-1),Z1=[H1],y1={key:1},V1=a("path",{d:"M160,128a32,32,0,1,1-32-32A32,32,0,0,1,160,128Z",opacity:"0.2"},null,-1),$1=a("path",{d:"M232,120h-8.34A96.14,96.14,0,0,0,136,32.34V24a8,8,0,0,0-16,0v8.34A96.14,96.14,0,0,0,32.34,120H24a8,8,0,0,0,0,16h8.34A96.14,96.14,0,0,0,120,223.66V232a8,8,0,0,0,16,0v-8.34A96.14,96.14,0,0,0,223.66,136H232a8,8,0,0,0,0-16Zm-96,87.6V200a8,8,0,0,0-16,0v7.6A80.15,80.15,0,0,1,48.4,136H56a8,8,0,0,0,0-16H48.4A80.15,80.15,0,0,1,120,48.4V56a8,8,0,0,0,16,0V48.4A80.15,80.15,0,0,1,207.6,120H200a8,8,0,0,0,0,16h7.6A80.15,80.15,0,0,1,136,207.6ZM128,88a40,40,0,1,0,40,40A40,40,0,0,0,128,88Zm0,64a24,24,0,1,1,24-24A24,24,0,0,1,128,152Z"},null,-1),b1=[V1,$1],M1={key:2},L1=a("path",{d:"M232,120h-8.34A96.14,96.14,0,0,0,136,32.34V24a8,8,0,0,0-16,0v8.34A96.14,96.14,0,0,0,32.34,120H24a8,8,0,0,0,0,16h8.34A96.14,96.14,0,0,0,120,223.66V232a8,8,0,0,0,16,0v-8.34A96.14,96.14,0,0,0,223.66,136H232a8,8,0,0,0,0-16Zm-32,16h7.6A80.15,80.15,0,0,1,136,207.6V200a8,8,0,0,0-16,0v7.6A80.15,80.15,0,0,1,48.4,136H56a8,8,0,0,0,0-16H48.4A80.15,80.15,0,0,1,120,48.4V56a8,8,0,0,0,16,0V48.4A80.15,80.15,0,0,1,207.6,120H200a8,8,0,0,0,0,16Zm-32-8a40,40,0,1,1-40-40A40,40,0,0,1,168,128Z"},null,-1),k1=[L1],x1={key:3},w1=a("path",{d:"M232,122H221.8A94.13,94.13,0,0,0,134,34.2V24a6,6,0,0,0-12,0V34.2A94.13,94.13,0,0,0,34.2,122H24a6,6,0,0,0,0,12H34.2A94.13,94.13,0,0,0,122,221.8V232a6,6,0,0,0,12,0V221.8A94.13,94.13,0,0,0,221.8,134H232a6,6,0,0,0,0-12Zm-98,87.76V200a6,6,0,0,0-12,0v9.76A82.09,82.09,0,0,1,46.24,134H56a6,6,0,0,0,0-12H46.24A82.09,82.09,0,0,1,122,46.24V56a6,6,0,0,0,12,0V46.24A82.09,82.09,0,0,1,209.76,122H200a6,6,0,0,0,0,12h9.76A82.09,82.09,0,0,1,134,209.76ZM128,90a38,38,0,1,0,38,38A38,38,0,0,0,128,90Zm0,64a26,26,0,1,1,26-26A26,26,0,0,1,128,154Z"},null,-1),S1=[w1],z1={key:4},C1=a("path",{d:"M232,120h-8.34A96.14,96.14,0,0,0,136,32.34V24a8,8,0,0,0-16,0v8.34A96.14,96.14,0,0,0,32.34,120H24a8,8,0,0,0,0,16h8.34A96.14,96.14,0,0,0,120,223.66V232a8,8,0,0,0,16,0v-8.34A96.14,96.14,0,0,0,223.66,136H232a8,8,0,0,0,0-16Zm-96,87.6V200a8,8,0,0,0-16,0v7.6A80.15,80.15,0,0,1,48.4,136H56a8,8,0,0,0,0-16H48.4A80.15,80.15,0,0,1,120,48.4V56a8,8,0,0,0,16,0V48.4A80.15,80.15,0,0,1,207.6,120H200a8,8,0,0,0,0,16h7.6A80.15,80.15,0,0,1,136,207.6ZM128,88a40,40,0,1,0,40,40A40,40,0,0,0,128,88Zm0,64a24,24,0,1,1,24-24A24,24,0,0,1,128,152Z"},null,-1),B1=[C1],T1={key:5},X1=a("path",{d:"M232,124H219.91A92.13,92.13,0,0,0,132,36.09V24a4,4,0,0,0-8,0V36.09A92.13,92.13,0,0,0,36.09,124H24a4,4,0,0,0,0,8H36.09A92.13,92.13,0,0,0,124,219.91V232a4,4,0,0,0,8,0V219.91A92.13,92.13,0,0,0,219.91,132H232a4,4,0,0,0,0-8ZM132,211.9V200a4,4,0,0,0-8,0v11.9A84.11,84.11,0,0,1,44.1,132H56a4,4,0,0,0,0-8H44.1A84.11,84.11,0,0,1,124,44.1V56a4,4,0,0,0,8,0V44.1A84.11,84.11,0,0,1,211.9,124H200a4,4,0,0,0,0,8h11.9A84.11,84.11,0,0,1,132,211.9ZM128,92a36,36,0,1,0,36,36A36,36,0,0,0,128,92Zm0,64a28,28,0,1,1,28-28A28,28,0,0,1,128,156Z"},null,-1),Y1=[X1],O1={name:"PhCrosshair"},J=x({...O1,props:{weight:{type:String},size:{type:[String,Number]},color:{type:String},mirrored:{type:Boolean}},setup(d){const e=d,Z=p("weight","regular"),y=p("size","1em"),h=p("color","currentColor"),m=p("mirrored",!1),s=r(()=>e.weight??Z),v=r(()=>e.size??y),A=r(()=>e.color??h),n=r(()=>e.mirrored!==void 0?e.mirrored?"scale(-1, 1)":void 0:m?"scale(-1, 1)":void 0);return(H,M)=>(i(),o("svg",B({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 256",width:v.value,height:v.value,fill:A.value,transform:n.value},H.$attrs),[C(H.$slots,"default"),s.value==="bold"?(i(),o("g",f1,Z1)):s.value==="duotone"?(i(),o("g",y1,b1)):s.value==="fill"?(i(),o("g",M1,k1)):s.value==="light"?(i(),o("g",x1,S1)):s.value==="regular"?(i(),o("g",z1,B1)):s.value==="thin"?(i(),o("g",T1,Y1)):w("",!0)],16,A1))}}),P1=["width","height","fill","transform"],N1={key:0},E1=a("path",{d:"M176,116H152a12,12,0,0,1,0-24h24a12,12,0,0,1,0,24ZM104,92h-4V88a12,12,0,0,0-24,0v4H72a12,12,0,0,0,0,24h4v4a12,12,0,0,0,24,0v-4h4a12,12,0,0,0,0-24ZM244.76,202.94a40,40,0,0,1-61,5.35,7,7,0,0,1-.53-.56L144.67,164H111.33L72.81,207.73c-.17.19-.35.38-.53.56A40,40,0,0,1,4.62,173.05a1.18,1.18,0,0,1,0-.2L21,88.79A63.88,63.88,0,0,1,83.88,36H172a64.08,64.08,0,0,1,62.93,52.48,1.8,1.8,0,0,1,0,.19l16.36,84.17a1.77,1.77,0,0,1,0,.2A39.74,39.74,0,0,1,244.76,202.94ZM172,140a40,40,0,0,0,0-80H83.89A39.9,39.9,0,0,0,44.62,93.06a1.55,1.55,0,0,0,0,.21l-16.34,84a16,16,0,0,0,13,18.44,16.07,16.07,0,0,0,13.86-4.21L96.9,144.07a12,12,0,0,1,9-4.07Zm55.76,37.31-7-35.95a63.84,63.84,0,0,1-44.27,22.46l24.41,27.72a16,16,0,0,0,26.85-14.23Z"},null,-1),R1=[E1],G1={key:1},F1=a("path",{d:"M216.86,207.57a28,28,0,0,1-24.66-7.77L150.09,152H172a51.94,51.94,0,0,0,51.2-61h0l16.36,84.17A28,28,0,0,1,216.86,207.57Z",opacity:"0.2"},null,-1),U1=a("path",{d:"M176,112H152a8,8,0,0,1,0-16h24a8,8,0,0,1,0,16ZM104,96H96V88a8,8,0,0,0-16,0v8H72a8,8,0,0,0,0,16h8v8a8,8,0,0,0,16,0v-8h8a8,8,0,0,0,0-16ZM241.48,200.65a36,36,0,0,1-54.94,4.81c-.12-.12-.24-.24-.35-.37L146.48,160h-37L69.81,205.09l-.35.37A36.08,36.08,0,0,1,44,216,36,36,0,0,1,8.56,173.75a.68.68,0,0,1,0-.14L24.93,89.52A59.88,59.88,0,0,1,83.89,40H172a60.08,60.08,0,0,1,59,49.25c0,.06,0,.12,0,.18l16.37,84.17a.68.68,0,0,1,0,.14A35.74,35.74,0,0,1,241.48,200.65ZM172,144a44,44,0,0,0,0-88H83.89A43.9,43.9,0,0,0,40.68,92.37l0,.13L24.3,176.59A20,20,0,0,0,58,194.3l41.92-47.59a8,8,0,0,1,6-2.71Zm59.7,32.59-8.74-45A60,60,0,0,1,172,160h-4.2L198,194.31a20.09,20.09,0,0,0,17.46,5.39,20,20,0,0,0,16.23-23.11Z"},null,-1),D1=[F1,U1],j1={key:2},q1=a("path",{d:"M247.44,173.75a.68.68,0,0,0,0-.14L231.05,89.44c0-.06,0-.12,0-.18A60.08,60.08,0,0,0,172,40H83.89a59.88,59.88,0,0,0-59,49.52L8.58,173.61a.68.68,0,0,0,0,.14,36,36,0,0,0,60.9,31.71l.35-.37L109.52,160h37l39.71,45.09c.11.13.23.25.35.37A36.08,36.08,0,0,0,212,216a36,36,0,0,0,35.43-42.25ZM104,112H96v8a8,8,0,0,1-16,0v-8H72a8,8,0,0,1,0-16h8V88a8,8,0,0,1,16,0v8h8a8,8,0,0,1,0,16Zm40-8a8,8,0,0,1,8-8h24a8,8,0,0,1,0,16H152A8,8,0,0,1,144,104Zm84.37,87.47a19.84,19.84,0,0,1-12.9,8.23A20.09,20.09,0,0,1,198,194.31L167.8,160H172a60,60,0,0,0,51-28.38l8.74,45A19.82,19.82,0,0,1,228.37,191.47Z"},null,-1),I1=[q1],W1={key:3},K1=a("path",{d:"M176,110H152a6,6,0,0,1,0-12h24a6,6,0,0,1,0,12ZM104,98H94V88a6,6,0,0,0-12,0V98H72a6,6,0,0,0,0,12H82v10a6,6,0,0,0,12,0V110h10a6,6,0,0,0,0-12ZM239.84,199.5A34,34,0,0,1,212,214,34.11,34.11,0,0,1,188,204.05l-.26-.28L147.38,158H108.62L68.31,203.76,68,204A34,34,0,0,1,44,214a34,34,0,0,1-33.46-39.91s0-.06,0-.1L26.9,89.88A57.89,57.89,0,0,1,83.89,42H172a58.07,58.07,0,0,1,57.05,47.63c0,.07,0,.12,0,.19L245.46,174s0,.07,0,.11A33.75,33.75,0,0,1,239.84,199.5ZM172,146a46,46,0,0,0,0-92H83.89A45.9,45.9,0,0,0,38.71,92a.36.36,0,0,0,0,.1L22.33,176.23a22,22,0,0,0,37.11,19.45l42-47.65a6,6,0,0,1,4.5-2Zm61.67,30.23-9.79-50.35A58.06,58.06,0,0,1,172,158h-8.63l33.19,37.68a22,22,0,0,0,37.11-19.45Z"},null,-1),J1=[K1],Q1={key:4},_1=a("path",{d:"M176,112H152a8,8,0,0,1,0-16h24a8,8,0,0,1,0,16ZM104,96H96V88a8,8,0,0,0-16,0v8H72a8,8,0,0,0,0,16h8v8a8,8,0,0,0,16,0v-8h8a8,8,0,0,0,0-16ZM241.48,200.65a36,36,0,0,1-54.94,4.81c-.12-.12-.24-.24-.35-.37L146.48,160h-37L69.81,205.09l-.35.37A36.08,36.08,0,0,1,44,216,36,36,0,0,1,8.56,173.75a.68.68,0,0,1,0-.14L24.93,89.52A59.88,59.88,0,0,1,83.89,40H172a60.08,60.08,0,0,1,59,49.25c0,.06,0,.12,0,.18l16.37,84.17a.68.68,0,0,1,0,.14A35.74,35.74,0,0,1,241.48,200.65ZM172,144a44,44,0,0,0,0-88H83.89A43.9,43.9,0,0,0,40.68,92.37l0,.13L24.3,176.59A20,20,0,0,0,58,194.3l41.92-47.59a8,8,0,0,1,6-2.71Zm59.7,32.59-8.74-45A60,60,0,0,1,172,160h-4.2L198,194.31a20.09,20.09,0,0,0,17.46,5.39,20,20,0,0,0,16.23-23.11Z"},null,-1),a2=[_1],l2={key:5},t2=a("path",{d:"M176,108H152a4,4,0,0,1,0-8h24a4,4,0,0,1,0,8Zm-72-8H92V88a4,4,0,0,0-8,0v12H72a4,4,0,0,0,0,8H84v12a4,4,0,0,0,8,0V108h12a4,4,0,0,0,0-8Zm134.21,98.36a32,32,0,0,1-48.84,4.27l-.17-.18L148.29,156H107.72L66.81,202.44l-.18.19A32.08,32.08,0,0,1,44,212a32,32,0,0,1-31.5-37.56L28.87,90.21A55.87,55.87,0,0,1,83.89,44H172a56.07,56.07,0,0,1,55.1,46.1.29.29,0,0,1,0,.1l16.37,84.16A31.86,31.86,0,0,1,238.21,198.36ZM172,148a48,48,0,1,0,0-96H83.9A47.9,47.9,0,0,0,36.74,91.67L20.36,175.9a24,24,0,0,0,19.48,27.73,24,24,0,0,0,21-6.58l42-47.69a4,4,0,0,1,3-1.36Zm63.63,27.83-11-56.66A56.09,56.09,0,0,1,172,156H159l36.16,41.06a24,24,0,0,0,40.52-21.23Z"},null,-1),e2=[t2],s2={name:"PhGameController"},n2=x({...s2,props:{weight:{type:String},size:{type:[String,Number]},color:{type:String},mirrored:{type:Boolean}},setup(d){const e=d,Z=p("weight","regular"),y=p("size","1em"),h=p("color","currentColor"),m=p("mirrored",!1),s=r(()=>e.weight??Z),v=r(()=>e.size??y),A=r(()=>e.color??h),n=r(()=>e.mirrored!==void 0?e.mirrored?"scale(-1, 1)":void 0:m?"scale(-1, 1)":void 0);return(H,M)=>(i(),o("svg",B({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 256",width:v.value,height:v.value,fill:A.value,transform:n.value},H.$attrs),[C(H.$slots,"default"),s.value==="bold"?(i(),o("g",N1,R1)):s.value==="duotone"?(i(),o("g",G1,D1)):s.value==="fill"?(i(),o("g",j1,I1)):s.value==="light"?(i(),o("g",W1,J1)):s.value==="regular"?(i(),o("g",Q1,a2)):s.value==="thin"?(i(),o("g",l2,e2)):w("",!0)],16,P1))}}),i2=["width","height","fill","transform"],o2={key:0},r2=a("path",{d:"M240.49,15.51a12,12,0,0,0-17,0L173.94,65.09l-2.54-2.55a36.05,36.05,0,0,0-50.91,0L100,83l-3.51-3.52a12,12,0,0,0-17,17L83,100,62.54,120.49a36,36,0,0,0,0,50.91l2.55,2.54L15.51,223.51a12,12,0,0,0,17,17l49.57-49.58,2.54,2.55a36.06,36.06,0,0,0,50.91,0L156,173l3.51,3.52a12,12,0,0,0,17-17L173,156l20.49-20.49a36,36,0,0,0,0-50.91l-2.55-2.54,49.58-49.57A12,12,0,0,0,240.49,15.51Zm-121.95,161a12,12,0,0,1-17,0L79.51,154.43a12,12,0,0,1,0-17L100,117l39,39Zm58-57.95h0L156,139l-39-39,20.49-20.49a12,12,0,0,1,17,0l22.06,22.06a12,12,0,0,1,0,17ZM85.27,33.37a12,12,0,0,1,21.46-10.74l8,16A12,12,0,1,1,93.27,49.37Zm-68,57.26a12,12,0,0,1,16.1-5.36l16,8a12,12,0,1,1-10.74,21.46l-16-8A12,12,0,0,1,17.27,90.63Zm221.46,74.74a12,12,0,0,1-16.1,5.36l-16-8a12,12,0,0,1,10.74-21.46l16,8A12,12,0,0,1,238.73,165.37Zm-68,57.26a12,12,0,1,1-21.46,10.74l-8-16a12,12,0,0,1,21.46-10.74Z"},null,-1),d2=[r2],u2={key:1},c2=a("path",{d:"M185,127,127,185a24,24,0,0,1-33.94,0L71,162.91A24,24,0,0,1,71,129L129,71a24,24,0,0,1,33.94,0L185,93.09A24,24,0,0,1,185,127Z",opacity:"0.2"},null,-1),g2=a("path",{d:"M237.66,18.34a8,8,0,0,0-11.32,0l-52.4,52.41-5.37-5.38a32.05,32.05,0,0,0-45.26,0L100,88.69l-6.34-6.35A8,8,0,0,0,82.34,93.66L88.69,100,65.37,123.31a32,32,0,0,0,0,45.26l5.38,5.37-52.41,52.4a8,8,0,0,0,11.32,11.32l52.4-52.41,5.37,5.38a32.06,32.06,0,0,0,45.26,0L156,167.31l6.34,6.35a8,8,0,0,0,11.32-11.32L167.31,156l23.32-23.31a32,32,0,0,0,0-45.26l-5.38-5.37,52.41-52.4A8,8,0,0,0,237.66,18.34Zm-116.29,161a16,16,0,0,1-22.62,0L76.69,157.25a16,16,0,0,1,0-22.62L100,111.31,144.69,156Zm57.94-57.94h0L156,144.69,111.31,100l23.32-23.31a16,16,0,0,1,22.62,0l22.06,22a16,16,0,0,1,0,22.63ZM88.57,35A8,8,0,0,1,103.43,29l8,20A8,8,0,0,1,96.57,55ZM24.57,93A8,8,0,0,1,35,88.57l20,8A8,8,0,0,1,49,111.43l-20-8A8,8,0,0,1,24.57,93ZM231.43,163a8,8,0,0,1-10.4,4.46l-20-8A8,8,0,1,1,207,144.57l20,8A8,8,0,0,1,231.43,163Zm-64,58.06A8,8,0,0,1,152.57,227l-8-20A8,8,0,0,1,159.43,201Z"},null,-1),m2=[c2,g2],v2={key:2},p2=a("path",{d:"M88.57,35A8,8,0,0,1,103.43,29l8,20A8,8,0,0,1,96.57,55ZM29,103.43l20,8A8,8,0,1,0,55,96.57l-20-8A8,8,0,0,0,29,103.43ZM227,152.57l-20-8A8,8,0,1,0,201,159.43l20,8A8,8,0,0,0,227,152.57ZM159.43,201A8,8,0,0,0,144.57,207l8,20A8,8,0,1,0,167.43,221ZM237.91,18.52a8,8,0,0,0-11.5-.18L174,70.75l-5.38-5.38a32,32,0,0,0-45.28,0L106.14,82.54a4,4,0,0,0,0,5.66l61.7,61.66a4,4,0,0,0,5.66,0l16.74-16.74a32.76,32.76,0,0,0,9.81-22.52,31.82,31.82,0,0,0-9.37-23.17l-5.38-5.37,52.2-52.17A8.22,8.22,0,0,0,237.91,18.52ZM85.64,90.34a8,8,0,0,0-11.49.18,8.22,8.22,0,0,0,.41,11.37L80.67,108,65.34,123.31A31.82,31.82,0,0,0,56,146.47,32.75,32.75,0,0,0,65.77,169l5,4.94L18.49,226.13a8.21,8.21,0,0,0-.61,11.1,8,8,0,0,0,11.72.43L82,185.25l5.37,5.38a32.1,32.1,0,0,0,45.29,0L148,175.31l6.34,6.35a8,8,0,0,0,11.32-11.32Z"},null,-1),h2=[p2],A2={key:3},f2=a("path",{d:"M236.24,19.76a6,6,0,0,0-8.48,0L173.94,73.57l-6.79-6.78a30,30,0,0,0-42.42,0L100,91.51l-7.76-7.75a6,6,0,0,0-8.48,8.48L91.51,100,66.79,124.73a30,30,0,0,0,0,42.42l6.78,6.79L19.76,227.76a6,6,0,1,0,8.48,8.48l53.82-53.81,6.79,6.78a30,30,0,0,0,42.42,0L156,164.49l7.76,7.75a6,6,0,0,0,8.48-8.48L164.49,156l24.72-24.73a30,30,0,0,0,0-42.42l-6.78-6.79,53.81-53.82A6,6,0,0,0,236.24,19.76Zm-113.45,161a18,18,0,0,1-25.46,0L75.27,158.67a18,18,0,0,1,0-25.46L100,108.49,147.51,156Zm57.94-57.94L156,147.51,108.49,100l24.72-24.73a18,18,0,0,1,25.46,0l22.06,22.06a18,18,0,0,1,0,25.46ZM90.43,34.23a6,6,0,0,1,11.14-4.46l8,20a6,6,0,1,1-11.14,4.46Zm-64,59.54a6,6,0,0,1,7.8-3.34l20,8a6,6,0,1,1-4.46,11.14l-20-8A6,6,0,0,1,26.43,93.77Zm203.14,68.46a6,6,0,0,1-7.8,3.34l-20-8a6,6,0,0,1,4.46-11.14l20,8A6,6,0,0,1,229.57,162.23Zm-64,59.54a6,6,0,1,1-11.14,4.46l-8-20a6,6,0,0,1,11.14-4.46Z"},null,-1),H2=[f2],Z2={key:4},y2=a("path",{d:"M237.66,18.34a8,8,0,0,0-11.32,0l-52.4,52.41-5.37-5.38a32.05,32.05,0,0,0-45.26,0L100,88.69l-6.34-6.35A8,8,0,0,0,82.34,93.66L88.69,100,65.37,123.31a32,32,0,0,0,0,45.26l5.38,5.37-52.41,52.4a8,8,0,0,0,11.32,11.32l52.4-52.41,5.37,5.38a32,32,0,0,0,45.26,0L156,167.31l6.34,6.35a8,8,0,0,0,11.32-11.32L167.31,156l23.32-23.31a32,32,0,0,0,0-45.26l-5.38-5.37,52.41-52.4A8,8,0,0,0,237.66,18.34Zm-116.29,161a16,16,0,0,1-22.62,0L76.69,157.25a16,16,0,0,1,0-22.62L100,111.31,144.69,156Zm57.94-57.94L156,144.69,111.31,100l23.32-23.31a16,16,0,0,1,22.62,0l22.06,22A16,16,0,0,1,179.31,121.37ZM88.57,35A8,8,0,0,1,103.43,29l8,20A8,8,0,0,1,96.57,55ZM24.57,93A8,8,0,0,1,35,88.57l20,8A8,8,0,0,1,49,111.43l-20-8A8,8,0,0,1,24.57,93ZM231.43,163a8,8,0,0,1-10.4,4.46l-20-8A8,8,0,1,1,207,144.57l20,8A8,8,0,0,1,231.43,163Zm-64,58.06A8,8,0,0,1,152.57,227l-8-20A8,8,0,0,1,159.43,201Z"},null,-1),V2=[y2],$2={key:5},b2=a("path",{d:"M234.83,21.17a4,4,0,0,0-5.66,0L173.94,76.4l-8.2-8.2a28,28,0,0,0-39.6,0L100,94.34l-9.17-9.17a4,4,0,0,0-5.66,5.66L94.34,100,68.2,126.14a28,28,0,0,0,0,39.6l8.2,8.2L21.17,229.17a4,4,0,0,0,5.66,5.66L82.06,179.6l8.2,8.2a28,28,0,0,0,39.6,0L156,161.66l9.17,9.17a4,4,0,0,0,5.66-5.66L161.66,156l26.14-26.14a28,28,0,0,0,0-39.6l-8.2-8.2,55.23-55.23A4,4,0,0,0,234.83,21.17Zm-110.63,161a20,20,0,0,1-28.28,0L73.86,160.08a20,20,0,0,1,0-28.28L100,105.66,150.34,156Zm57.94-57.94L156,150.34,105.66,100,131.8,73.86a20,20,0,0,1,28.28,0l22.06,22.06A20,20,0,0,1,182.14,124.2ZM92.29,33.49a4,4,0,1,1,7.42-3l8,20a4,4,0,0,1-2.22,5.2A3.91,3.91,0,0,1,104,56a4,4,0,0,1-3.71-2.51Zm-64,61a4,4,0,0,1,5.2-2.22l20,8A4,4,0,0,1,52,108a3.91,3.91,0,0,1-1.49-.29l-20-8A4,4,0,0,1,28.29,94.51Zm199.42,67A4,4,0,0,1,224,164a3.91,3.91,0,0,1-1.49-.29l-20-8a4,4,0,1,1,3-7.42l20,8A4,4,0,0,1,227.71,161.49Zm-64,61a4,4,0,0,1-2.22,5.2A3.91,3.91,0,0,1,160,228a4,4,0,0,1-3.71-2.51l-8-20a4,4,0,0,1,7.42-3Z"},null,-1),M2=[b2],L2={name:"PhPlugsConnected"},k2=x({...L2,props:{weight:{type:String},size:{type:[String,Number]},color:{type:String},mirrored:{type:Boolean}},setup(d){const e=d,Z=p("weight","regular"),y=p("size","1em"),h=p("color","currentColor"),m=p("mirrored",!1),s=r(()=>e.weight??Z),v=r(()=>e.size??y),A=r(()=>e.color??h),n=r(()=>e.mirrored!==void 0?e.mirrored?"scale(-1, 1)":void 0:m?"scale(-1, 1)":void 0);return(H,M)=>(i(),o("svg",B({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 256",width:v.value,height:v.value,fill:A.value,transform:n.value},H.$attrs),[C(H.$slots,"default"),s.value==="bold"?(i(),o("g",o2,d2)):s.value==="duotone"?(i(),o("g",u2,m2)):s.value==="fill"?(i(),o("g",v2,h2)):s.value==="light"?(i(),o("g",A2,H2)):s.value==="regular"?(i(),o("g",Z2,V2)):s.value==="thin"?(i(),o("g",$2,M2)):w("",!0)],16,i2))}}),x2=["width","height","fill","transform"],w2={key:0},S2=a("path",{d:"M72,104a16,16,0,1,1,16,16A16,16,0,0,1,72,104Zm96,16a16,16,0,1,0-16-16A16,16,0,0,0,168,120Zm68-40V192a36,36,0,0,1-36,36H56a36,36,0,0,1-36-36V80A36,36,0,0,1,56,44h60V16a12,12,0,0,1,24,0V44h60A36,36,0,0,1,236,80Zm-24,0a12,12,0,0,0-12-12H56A12,12,0,0,0,44,80V192a12,12,0,0,0,12,12H200a12,12,0,0,0,12-12Zm-12,82a30,30,0,0,1-30,30H86a30,30,0,0,1,0-60h84A30,30,0,0,1,200,162Zm-80-6v12h16V156ZM86,168H96V156H86a6,6,0,0,0,0,12Zm90-6a6,6,0,0,0-6-6H160v12h10A6,6,0,0,0,176,162Z"},null,-1),z2=[S2],C2={key:1},B2=a("path",{d:"M200,56H56A24,24,0,0,0,32,80V192a24,24,0,0,0,24,24H200a24,24,0,0,0,24-24V80A24,24,0,0,0,200,56ZM164,184H92a20,20,0,0,1,0-40h72a20,20,0,0,1,0,40Z",opacity:"0.2"},null,-1),T2=a("path",{d:"M200,48H136V16a8,8,0,0,0-16,0V48H56A32,32,0,0,0,24,80V192a32,32,0,0,0,32,32H200a32,32,0,0,0,32-32V80A32,32,0,0,0,200,48Zm16,144a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V80A16,16,0,0,1,56,64H200a16,16,0,0,1,16,16ZM72,108a12,12,0,1,1,12,12A12,12,0,0,1,72,108Zm88,0a12,12,0,1,1,12,12A12,12,0,0,1,160,108Zm4,28H92a28,28,0,0,0,0,56h72a28,28,0,0,0,0-56Zm-24,16v24H116V152ZM80,164a12,12,0,0,1,12-12h8v24H92A12,12,0,0,1,80,164Zm84,12h-8V152h8a12,12,0,0,1,0,24Z"},null,-1),X2=[B2,T2],Y2={key:2},O2=a("path",{d:"M200,48H136V16a8,8,0,0,0-16,0V48H56A32,32,0,0,0,24,80V192a32,32,0,0,0,32,32H200a32,32,0,0,0,32-32V80A32,32,0,0,0,200,48ZM172,96a12,12,0,1,1-12,12A12,12,0,0,1,172,96ZM96,184H80a16,16,0,0,1,0-32H96ZM84,120a12,12,0,1,1,12-12A12,12,0,0,1,84,120Zm60,64H112V152h32Zm32,0H160V152h16a16,16,0,0,1,0,32Z"},null,-1),P2=[O2],N2={key:3},E2=a("path",{d:"M200,50H134V16a6,6,0,0,0-12,0V50H56A30,30,0,0,0,26,80V192a30,30,0,0,0,30,30H200a30,30,0,0,0,30-30V80A30,30,0,0,0,200,50Zm18,142a18,18,0,0,1-18,18H56a18,18,0,0,1-18-18V80A18,18,0,0,1,56,62H200a18,18,0,0,1,18,18ZM74,108a10,10,0,1,1,10,10A10,10,0,0,1,74,108Zm88,0a10,10,0,1,1,10,10A10,10,0,0,1,162,108Zm2,30H92a26,26,0,0,0,0,52h72a26,26,0,0,0,0-52Zm-22,12v28H114V150ZM78,164a14,14,0,0,1,14-14h10v28H92A14,14,0,0,1,78,164Zm86,14H154V150h10a14,14,0,0,1,0,28Z"},null,-1),R2=[E2],G2={key:4},F2=a("path",{d:"M200,48H136V16a8,8,0,0,0-16,0V48H56A32,32,0,0,0,24,80V192a32,32,0,0,0,32,32H200a32,32,0,0,0,32-32V80A32,32,0,0,0,200,48Zm16,144a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V80A16,16,0,0,1,56,64H200a16,16,0,0,1,16,16Zm-52-56H92a28,28,0,0,0,0,56h72a28,28,0,0,0,0-56Zm-24,16v24H116V152ZM80,164a12,12,0,0,1,12-12h8v24H92A12,12,0,0,1,80,164Zm84,12h-8V152h8a12,12,0,0,1,0,24ZM72,108a12,12,0,1,1,12,12A12,12,0,0,1,72,108Zm88,0a12,12,0,1,1,12,12A12,12,0,0,1,160,108Z"},null,-1),U2=[F2],D2={key:5},j2=a("path",{d:"M200,52H132V16a4,4,0,0,0-8,0V52H56A28,28,0,0,0,28,80V192a28,28,0,0,0,28,28H200a28,28,0,0,0,28-28V80A28,28,0,0,0,200,52Zm20,140a20,20,0,0,1-20,20H56a20,20,0,0,1-20-20V80A20,20,0,0,1,56,60H200a20,20,0,0,1,20,20ZM76,108a8,8,0,1,1,8,8A8,8,0,0,1,76,108Zm88,0a8,8,0,1,1,8,8A8,8,0,0,1,164,108Zm0,32H92a24,24,0,0,0,0,48h72a24,24,0,0,0,0-48Zm-20,8v32H112V148ZM76,164a16,16,0,0,1,16-16h12v32H92A16,16,0,0,1,76,164Zm88,16H152V148h12a16,16,0,0,1,0,32Z"},null,-1),q2=[j2],I2={name:"PhRobot"},W2=x({...I2,props:{weight:{type:String},size:{type:[String,Number]},color:{type:String},mirrored:{type:Boolean}},setup(d){const e=d,Z=p("weight","regular"),y=p("size","1em"),h=p("color","currentColor"),m=p("mirrored",!1),s=r(()=>e.weight??Z),v=r(()=>e.size??y),A=r(()=>e.color??h),n=r(()=>e.mirrored!==void 0?e.mirrored?"scale(-1, 1)":void 0:m?"scale(-1, 1)":void 0);return(H,M)=>(i(),o("svg",B({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 256",width:v.value,height:v.value,fill:A.value,transform:n.value},H.$attrs),[C(H.$slots,"default"),s.value==="bold"?(i(),o("g",w2,z2)):s.value==="duotone"?(i(),o("g",C2,X2)):s.value==="fill"?(i(),o("g",Y2,P2)):s.value==="light"?(i(),o("g",N2,R2)):s.value==="regular"?(i(),o("g",G2,U2)):s.value==="thin"?(i(),o("g",D2,q2)):w("",!0)],16,x2))}}),K2={class:"gp-viz-frame"},J2={viewBox:"0 0 441 383",class:"gp-viz-svg","aria-hidden":"true"},Q2={id:"Controller"},_2=["transform"],a8=["transform"],O=9.5,l8=.12,t8=x({__name:"GamepadVisualizer",props:{buttons:{},leftX:{},leftY:{},rightX:{},rightY:{},leftTrigger:{},rightTrigger:{},compact:{type:Boolean},fill:{type:Boolean}},setup(d){const e=d,Z=r(()=>({cx:113+h(e.leftX)*O,cy:160+h(e.leftY)*O})),y=r(()=>({cx:278+h(e.rightX)*O,cy:238+h(e.rightY)*O}));function h(A){return Math.max(-1,Math.min(1,A))}function m(A){return A?"gp-btn gp-btn--on":"gp-btn"}function s(A=0){return A>.08?"gp-btn gp-btn--on":"gp-btn"}function v(A,n){return Math.hypot(A,n)>l8}return(A,n)=>(i(),o("div",{class:c(["gp-viz",{compact:d.compact,fill:d.fill}])},[a("div",K2,[(i(),o("svg",J2,[a("g",Q2,[n[2]||(n[2]=a("path",{d:"M220.5 294.5C220.5 294.5 195 294.5 150 294.5C105 294.5 81.5 378.5 49.5 378.5C17.5 378.5 4 363.9 4 317.5C4 271.1 43.5 165.5 55 137.5C66.5 109.5 95.5 92.0001 128 92.0001C154 92.0001 200.5 92.0001 220.5 92.0001",class:"gp-body"},null,-1)),n[3]||(n[3]=a("path",{d:"M220 294.5C220 294.5 245.5 294.5 290.5 294.5C335.5 294.5 359 378.5 391 378.5C423 378.5 436.5 363.9 436.5 317.5C436.5 271.1 397 165.5 385.5 137.5C374 109.5 345 92.0001 312.5 92.0001C286.5 92.0001 240 92.0001 220 92.0001",class:"gp-body"},null,-1)),a("path",{d:"m152.5,52.9702c0,4.61877 -3.358,8.36308 -7.5,8.36308l-13,0c-4.142,0 -7.5,-3.74432 -7.5,-8.36308l0,-22.8591c0,-8.62177 6.268,-15.6111 14,-15.6111c7.732,0 14,6.98932 14,15.6111l0,22.8591z",class:c(s(d.leftTrigger))},null,2),a("path",{d:"m316.83334,53.44044c0,4.6352 -3.43795,8.39285 -7.67857,8.39285l-13.30953,0c-4.24062,0 -7.67857,-3.75765 -7.67857,-8.39285l0,-22.94046c0,-8.65246 6.41724,-15.66665 14.33334,-15.66665c7.9161,0 14.33334,7.0142 14.33334,15.66665l0,22.94046l-0.00001,0z",class:c(s(d.rightTrigger))},null,2),a("rect",{x:"116.83332",y:"66.83335",width:"43.33334",height:"17.00004",rx:"6.5",class:c(m(d.buttons[4]))},null,2),n[4]||(n[4]=a("text",{x:"138.5",y:"79","text-anchor":"middle",class:"gp-shoulder-label"},"LB",-1)),a("rect",{x:"281.33334",y:"67",width:"42.66666",height:"17.00003",rx:"6.5",class:c(m(d.buttons[5]))},null,2),n[5]||(n[5]=F('<text x="302.5" y="79" text-anchor="middle" class="gp-shoulder-label" data-v-7d8f9ecf>RB</text><line x1="27.50001" y1="214.49998" x2="126.00001" y2="302.5" class="gp-grip-line" data-v-7d8f9ecf></line><line x1="306.59558" y1="200.43247" x2="410.73581" y2="295.73418" class="gp-grip-line" transform="rotate(89 358.666 248.083)" data-v-7d8f9ecf></line><circle cx="113" cy="160" r="37.5" class="gp-stick-well" data-v-7d8f9ecf></circle><circle cx="278" cy="238" r="37.5" class="gp-stick-well" data-v-7d8f9ecf></circle>',5)),a("g",{transform:`translate(${Z.value.cx-113}, ${Z.value.cy-160})`},[a("circle",{cx:"113",cy:"160",r:"28",class:c(["gp-stick-knob",{"gp-stick-knob--on":d.buttons[10]||v(d.leftX,d.leftY)}])},null,2),n[0]||(n[0]=a("circle",{cx:"113",cy:"160",r:"22",class:"gp-stick-ring-inner"},null,-1))],8,_2),a("g",{transform:`translate(${y.value.cx-278}, ${y.value.cy-238})`},[a("circle",{cx:"278",cy:"238",r:"28",class:c(["gp-stick-knob",{"gp-stick-knob--on":d.buttons[11]||v(d.rightX,d.rightY)}])},null,2),n[1]||(n[1]=a("circle",{cx:"278",cy:"238",r:"22",class:"gp-stick-ring-inner"},null,-1))],8,a8),n[6]||(n[6]=a("circle",{cx:"166",cy:"238",r:"37.5",class:"gp-stick-well"},null,-1)),a("rect",{x:"159",y:"211",width:"14",height:"20",class:c(m(d.buttons[12]))},null,2),a("rect",{x:"159",y:"244",width:"14",height:"20",class:c(m(d.buttons[13]))},null,2),a("rect",{x:"142",y:"228",width:"14",height:"20",transform:"rotate(-90 149 238)",class:c(m(d.buttons[14]))},null,2),a("rect",{x:"176",y:"228",width:"14",height:"20",transform:"rotate(-90 183 238)",class:c(m(d.buttons[15]))},null,2),n[7]||(n[7]=a("rect",{x:"159",y:"228",width:"14",height:"19",class:"gp-btn gp-btn--center"},null,-1)),n[8]||(n[8]=a("circle",{cx:"329",cy:"160",r:"37.5",class:"gp-stick-well"},null,-1)),a("circle",{cx:"329",cy:"140",r:"13",class:c(m(d.buttons[3]))},null,2),n[9]||(n[9]=a("text",{x:"329",y:"144","text-anchor":"middle",class:"gp-face-label"},"Y",-1)),a("circle",{cx:"310",cy:"162",r:"13",class:c(m(d.buttons[2]))},null,2),n[10]||(n[10]=a("text",{x:"310",y:"166","text-anchor":"middle",class:"gp-face-label"},"X",-1)),a("circle",{cx:"348",cy:"161",r:"13",class:c(m(d.buttons[1]))},null,2),n[11]||(n[11]=a("text",{x:"348",y:"165","text-anchor":"middle",class:"gp-face-label"},"B",-1)),a("circle",{cx:"330",cy:"181",r:"13",class:c(m(d.buttons[0]))},null,2),n[12]||(n[12]=a("text",{x:"330",y:"185","text-anchor":"middle",class:"gp-face-label"},"A",-1)),a("circle",{cx:"188",cy:"162",r:"10",class:c(m(d.buttons[8]))},null,2),n[13]||(n[13]=a("rect",{x:"184",y:"159",width:"8",height:"6",rx:"1",class:"gp-back-icon"},null,-1)),a("circle",{cx:"253",cy:"162",r:"10",class:c(m(d.buttons[9]))},null,2),n[14]||(n[14]=F('<g class="gp-menu-icon" pointer-events="none" data-v-7d8f9ecf><line x1="248" y1="158" x2="258" y2="158" data-v-7d8f9ecf></line><line x1="248" y1="162" x2="258" y2="162" data-v-7d8f9ecf></line><line x1="248" y1="166" x2="258" y2="166" data-v-7d8f9ecf></line></g><rect x="211.5" y="153" width="18" height="18" rx="9" class="gp-btn gp-btn--center" data-v-7d8f9ecf></rect><g class="gp-home-icon" pointer-events="none" data-v-7d8f9ecf><path d="M220.5 158 V164 M218 160.5 L220.5 158 L223 160.5 M218 166 H223" data-v-7d8f9ecf></path></g><circle cx="220.5" cy="125" r="14" class="gp-share-ring" data-v-7d8f9ecf></circle><path d="M215.5 125 L220.5 120 L225.5 125 V130 H215.5 Z" class="gp-share-icon" pointer-events="none" data-v-7d8f9ecf></path>',5))])]))]),n[15]||(n[15]=a("div",{class:"gp-legend"},[a("span",null,[a("i",{class:"dot on"}),X("按键按下")]),a("span",null,[a("i",{class:"dot"}),X("等待输入")])],-1))],2))}}),e8=Q(t8,[["__scopeId","data-v-7d8f9ecf"]]);function s8(){return c0(),{monitor:g0(),ptz:y0,ptzControlEnabled:Z0,voiceControlEnabled:H0,hwControlEnabled:f0,cameraConnected:A0,cameraPtz:h0,canPtz:p0,deviceVolume:v0,loadCameraStatus:m0}}const n8={class:"gamepad-page uxp-page-stack uxp-page-fit"},i8={class:"status-card-main"},o8={class:"status-copy"},r8={class:"status-card-actions"},d8={class:"stat-strip"},u8={class:"gamepad-layout uxp-page-fit uxp-page-fit-stretch"},c8={class:"gamepad-main uxp-page-fit-stretch"},g8={class:"panel device-panel uxp-page-fit-stretch"},m8={class:"panel-hd panel-hd-row"},v8={class:"gp-slots",role:"tablist","aria-label":"手柄插槽"},p8=["aria-selected","onClick"],h8={key:0,class:"gp-slot-dot","aria-hidden":"true"},A8={class:"panel-bd device-panel-bd uxp-page-fit-stretch"},f8={class:"device-preview"},H8={class:"viz-wrap"},Z8={key:0,class:"device-hint"},y8={key:1,class:"device-meta"},V8={class:"device-mapping"},$8={class:"device-tags"},b8={class:"panel map-panel"},M8={class:"panel-hd"},L8={class:"panel-bd"},k8={class:"map-grid"},x8={class:"map-card"},w8={class:"map-card-hd"},S8={class:"map-card"},z8={class:"map-card-hd"},C8={class:"map-card"},B8={class:"map-card-hd"},T8={class:"map-card"},X8={class:"map-card-hd"},Y8={class:"map-card"},O8={class:"map-card"},P8={class:"map-card-hd"},N8={class:"gamepad-side"},E8={class:"panel link-panel"},R8={class:"panel-hd"},G8={class:"panel-bd"},F8={class:"link-list"},U8={class:"panel input-panel"},D8={class:"panel-hd"},j8={class:"panel-bd input-panel-bd"},q8={class:"metric-block"},I8={class:"stick-grid"},W8={class:"stick-cell"},K8={class:"stick-well"},J8={class:"stick-cell"},Q8={class:"stick-well"},_8={class:"metric-block"},a4={class:"trigger-grid"},l4={class:"trigger-cell"},t4={class:"trigger-bar"},e4={class:"trigger-cell"},s4={class:"trigger-bar is-rt"},n4={class:"metric-block"},i4={class:"drift-row"},o4={class:"drift-well"},r4={class:"drift-meta"},d4={class:"panel guide-panel"},u4={class:"panel-hd"},c4=x({__name:"Gamepad",setup(d){const e=V0(),{monitor:Z,ptz:y,ptzControlEnabled:h,voiceControlEnabled:m,hwControlEnabled:s,cameraConnected:v,cameraPtz:A,canPtz:n,deviceVolume:H}=s8(),M=Z.active,{status:V,input:g,slots:U,selectedSlot:P,selectSlot:_}=Z,a0=Array.from({length:16},()=>!1),S=r(()=>U.some(b=>b.connected)),D=r(()=>({idle:"空闲",listening:"聆听中",speaking:"播报中",connecting:"连接中",activating:"激活中"})[String(e.mossChatState)]||String(e.mossChatState)),l0=r(()=>M.value?V.connected?"手柄已连接 · 全局映射生效中":S.value?"手柄待激活":"等待手柄连接":"手柄监听已暂停"),t0=r(()=>M.value?V.connected?`${V.name} · 离开本页后映射仍后台运行`:S.value?"已检测到手柄,请按任意键完成浏览器激活":"USB 或蓝牙连接手柄后,按任意键激活":"开启后可在任意页面使用语音、灯光、音量与云台映射"),e0=r(()=>v.value&&A.value?"已连接 · 支持云台":v.value?"已连接 · 无云台":"未连接"),s0=r(()=>V.connected?`P${P.value+1} 已激活`:S.value?"待按键激活":"未连接"),n0=r(()=>Math.hypot(g.leftX,g.leftY)),N=r(()=>!V.connected||n0.value<.08),j=r(()=>V.connected?N.value?"中心正常":"检测到偏移":"等待输入"),E=r(()=>G.some(b=>e.hw[b])),i0=r(()=>{const b=G.filter(l=>e.hw[l]).length;return b?`${b} / ${G.length} 路灯亮`:"当前全关"}),Y=r(()=>e.hw.motor||e.hw.motor_dir==="forward"||e.hw.motor_dir==="backward"),q=r(()=>e.mossOnline&&m.value),I=r(()=>e.mossOnline&&s.value),W=r(()=>e.mossOnline?H.value==null?"读取中":`${H.value}%`:"需 MOSS 在线"),o0=r(()=>h.value?n.value?y.moving.value?y.moving.value.replace("_"," ").toUpperCase():"待命":"云台未就绪":"已关闭");function L(b){return b.toFixed(2)}function K(b){return b.toFixed(3)}function R(b,l){const k=Math.max(-1,Math.min(1,b))*38,f=Math.max(-1,Math.min(1,l))*38;return{transform:`translate(calc(-50% + ${k}%), calc(-50% + ${f}%))`}}const r0=r(()=>R(g.leftX,g.leftY)),d0=r(()=>R(g.rightX,g.rightY)),u0=r(()=>R(g.leftX,g.leftY));return(b,l)=>{const k=M0("el-switch");return i(),o("div",n8,[a("section",{class:c(["status-card",t(M)?t(V).connected?"is-ready":(S.value,"is-pending"):"is-pending"])},[a("div",i8,[l[6]||(l[6]=a("span",{class:"status-dot","aria-hidden":"true"},null,-1)),a("div",o8,[a("strong",null,u(l0.value),1),a("p",null,u(t0.value),1)])]),a("div",r8,[$(k,{modelValue:t(M),"onUpdate:modelValue":l[0]||(l[0]=f=>z(M)?M.value=f:null),"inline-prompt":"","active-text":"全局监听","inactive-text":"已暂停"},null,8,["modelValue"])])],2),a("div",d8,[a("article",{class:c(["stat-chip",t(e).mossOnline?"is-on":"is-off"])},[$(t(W2),{size:18,weight:"duotone"}),a("div",null,[l[7]||(l[7]=a("strong",null,"MOSS",-1)),a("p",null,u(t(e).mossOnline?D.value:"离线"),1)])],2),a("article",{class:c(["stat-chip",t(v)?"is-on":"is-off"])},[$(t(h1),{size:18,weight:"duotone"}),a("div",null,[l[8]||(l[8]=a("strong",null,"摄像头",-1)),a("p",null,u(e0.value),1)])],2),a("article",{class:c(["stat-chip",t(V).connected?"is-on":S.value?"is-pending":"is-off"])},[$(t(n2),{size:18,weight:"duotone"}),a("div",null,[l[9]||(l[9]=a("strong",null,"手柄",-1)),a("p",null,u(s0.value),1)])],2),a("article",{class:c(["stat-chip",N.value?"is-on":"is-warn"])},[$(t(J),{size:18,weight:"duotone"}),a("div",null,[l[10]||(l[10]=a("strong",null,"摇杆中心",-1)),a("p",null,u(j.value),1)])],2)]),a("div",u8,[a("div",c8,[a("section",g8,[a("div",m8,[l[11]||(l[11]=a("span",null,"设备预览",-1)),a("div",v8,[(i(!0),o($0,null,b0(t(U),f=>(i(),o("button",{key:f.index,type:"button",role:"tab",class:c(["gp-slot",{active:t(P)===f.index,linked:f.connected}]),"aria-selected":t(P)===f.index,onClick:g4=>t(_)(f.index)},[X(" P"+u(f.index+1)+" ",1),f.connected?(i(),o("i",h8)):w("",!0)],10,p8))),128))])]),a("div",A8,[a("div",f8,[a("div",H8,[$(e8,{fill:"",buttons:t(V).connected?t(g).buttons:t(a0),"left-x":t(V).connected?t(g).leftX:0,"left-y":t(V).connected?t(g).leftY:0,"right-x":t(V).connected?t(g).rightX:0,"right-y":t(V).connected?t(g).rightY:0,"left-trigger":t(V).connected?t(g).leftTrigger:0,"right-trigger":t(V).connected?t(g).rightTrigger:0},null,8,["buttons","left-x","left-y","right-x","right-y","left-trigger","right-trigger"])]),t(V).connected?(i(),o("div",y8,[a("p",V8,"映射模式:"+u(t(V).mapping||"标准"),1),a("div",$8,[a("span",null,"左摇杆 "+u(L(t(g).leftX))+", "+u(L(t(g).leftY)),1),a("span",null,"右摇杆 "+u(L(t(g).rightX))+", "+u(L(t(g).rightY)),1),a("span",null,"LT "+u(L(t(g).leftTrigger))+" · RT "+u(L(t(g).rightTrigger)),1)])])):(i(),o("p",Z8,u(S.value?"已检测到手柄,按任意键激活":"USB / 蓝牙连接后,按任意键激活"),1))])])]),a("section",b8,[a("div",M8,[$(t(L0),{size:18,weight:"duotone"}),l[12]||(l[12]=a("span",null,"按键映射",-1))]),a("div",L8,[l[31]||(l[31]=a("p",{class:"panel-desc"},[X("以下映射在"),a("strong",null,"全部页面"),X("后台生效,无需停留本页。可在右侧查看实时输入与联动状态。")],-1)),a("div",k8,[a("article",x8,[a("header",w8,[l[13]||(l[13]=a("span",{class:"key-badge"},"A",-1)),$(k,{modelValue:t(m),"onUpdate:modelValue":l[1]||(l[1]=f=>z(m)?m.value=f:null),disabled:!t(e).mossOnline,size:"small"},null,8,["modelValue","disabled"])]),l[14]||(l[14]=a("h3",null,"语音唤醒 / 挂断",-1)),l[15]||(l[15]=a("p",null,"空闲时唤醒 MOSS;聆听或播报中再次按下挂断。",-1)),a("footer",{class:c(q.value?"ft-on":"ft-off")},u(q.value?"可用":"需 MOSS 在线"),3)]),a("article",S8,[a("header",z8,[l[16]||(l[16]=a("span",{class:"key-badge"},"X",-1)),$(k,{modelValue:t(s),"onUpdate:modelValue":l[2]||(l[2]=f=>z(s)?s.value=f:null),disabled:!t(e).mossOnline,size:"small"},null,8,["modelValue","disabled"])]),l[17]||(l[17]=a("h3",null,"全部灯光",-1)),l[18]||(l[18]=a("p",null,"一键开关眼灯、流水灯、面板灯与底灯。",-1)),a("footer",{class:c(E.value?"ft-on":"ft-muted")},u(i0.value),3)]),a("article",C8,[a("header",B8,[l[19]||(l[19]=a("span",{class:"key-badge"},"B",-1)),$(k,{modelValue:t(s),"onUpdate:modelValue":l[3]||(l[3]=f=>z(s)?s.value=f:null),disabled:!t(e).mossOnline,size:"small"},null,8,["modelValue","disabled"])]),l[20]||(l[20]=a("h3",null,"眼部电机",-1)),l[21]||(l[21]=a("p",null,"启动正转;再次按下停止。",-1)),a("footer",{class:c(Y.value?"ft-on":"ft-muted")},u(Y.value?"运行中":"已停止"),3)]),a("article",T8,[a("header",X8,[l[22]||(l[22]=F('<span class="key-badges" data-v-781b1e70><span class="key-badge" data-v-781b1e70>LB</span><span class="key-badge key-badge--soft" data-v-781b1e70>A</span><span class="key-badge key-badge--soft" data-v-781b1e70>B</span><span class="key-badge key-badge--soft" data-v-781b1e70>X</span><span class="key-badge key-badge--soft" data-v-781b1e70>Y</span></span>',1)),$(k,{modelValue:t(s),"onUpdate:modelValue":l[4]||(l[4]=f=>z(s)?s.value=f:null),disabled:!t(e).mossOnline,size:"small"},null,8,["modelValue","disabled"])]),l[23]||(l[23]=a("h3",null,"灯光分控",-1)),l[24]||(l[24]=a("p",null,"按住 LB,再点 A 眼灯、B 流水灯、X 面板灯、Y 底灯。按住期间不会触发语音、全灯或电机。",-1)),a("footer",{class:c(I.value?"ft-on":"ft-off")},u(I.value?"可用":"需 MOSS 在线且开启灯光控制"),3)]),a("article",Y8,[l[25]||(l[25]=a("header",{class:"map-card-hd"},[a("span",{class:"key-badges"},[a("span",{class:"key-badge"},"LT"),a("span",{class:"key-badge"},"RT")])],-1)),l[26]||(l[26]=a("h3",null,"设备音量",-1)),l[27]||(l[27]=a("p",null,"LT 减、RT 加,每次 5%。按住连续调节,到顶或到底时提示一次。",-1)),a("footer",{class:c(t(e).mossOnline?"ft-on":"ft-off")},u(W.value),3)]),a("article",O8,[a("header",P8,[l[28]||(l[28]=a("span",{class:"key-badge key-badge--soft"},"◎",-1)),$(k,{modelValue:t(h),"onUpdate:modelValue":l[5]||(l[5]=f=>z(h)?h.value=f:null),size:"small"},null,8,["modelValue"])]),l[29]||(l[29]=a("h3",null,"云台控制",-1)),l[30]||(l[30]=a("p",null,"左摇杆或方向键平移。本机摄像头无变焦。",-1)),a("footer",{class:c(t(n)&&t(h)?"ft-on":"ft-off")},u(o0.value),3)])])])])]),a("aside",N8,[a("section",E8,[a("div",R8,[$(t(k2),{size:18,weight:"duotone"}),l[32]||(l[32]=a("span",null,"联动状态",-1))]),a("div",G8,[a("ul",F8,[a("li",null,[l[33]||(l[33]=a("span",null,"语音链路",-1)),a("strong",{class:c(t(e).mossOnline?"ok":"muted")},u(D.value),3)]),a("li",null,[l[34]||(l[34]=a("span",null,"云台",-1)),a("strong",{class:c(t(n)?"ok":"muted")},u(t(n)?"就绪":"不可用"),3)]),a("li",null,[l[35]||(l[35]=a("span",null,"灯光",-1)),a("strong",{class:c(E.value?"ok":"muted")},u(E.value?"部分开启":"全关"),3)]),a("li",null,[l[36]||(l[36]=a("span",null,"电机",-1)),a("strong",{class:c(Y.value?"ok":"muted")},u(Y.value?"运行":"停止"),3)]),a("li",null,[l[37]||(l[37]=a("span",null,"音量",-1)),a("strong",{class:c(t(e).mossOnline?"ok":"muted")},u(W.value),3)])])])]),a("section",U8,[a("div",D8,[$(t(J),{size:18,weight:"duotone"}),l[38]||(l[38]=a("span",null,"输入检测",-1))]),a("div",j8,[a("div",q8,[l[41]||(l[41]=a("div",{class:"metric-label"},"摇杆",-1)),a("div",I8,[a("div",W8,[l[39]||(l[39]=a("span",null,"左",-1)),a("div",K8,[a("i",{class:"stick-dot",style:T(r0.value)},null,4)]),a("code",null,u(L(t(g).leftX))+", "+u(L(t(g).leftY)),1)]),a("div",J8,[l[40]||(l[40]=a("span",null,"右",-1)),a("div",Q8,[a("i",{class:"stick-dot",style:T(d0.value)},null,4)]),a("code",null,u(L(t(g).rightX))+", "+u(L(t(g).rightY)),1)])])]),a("div",_8,[l[44]||(l[44]=a("div",{class:"metric-label"},"扳机",-1)),a("div",a4,[a("div",l4,[a("div",t4,[a("i",{style:T({height:`${t(g).leftTrigger*100}%`})},null,4)]),a("code",null,u(L(t(g).leftTrigger)),1),l[42]||(l[42]=a("em",null,"LT",-1))]),a("div",e4,[a("div",s4,[a("i",{style:T({height:`${t(g).rightTrigger*100}%`})},null,4)]),a("code",null,u(L(t(g).rightTrigger)),1),l[43]||(l[43]=a("em",null,"RT",-1))])])]),a("div",n4,[l[45]||(l[45]=a("div",{class:"metric-label"},"漂移检测",-1)),a("div",i4,[a("div",o4,[a("i",{class:"drift-dot",style:T(u0.value)},null,4)]),a("div",r4,[a("code",null,"X "+u(K(t(g).leftX)),1),a("code",null,"Y "+u(K(t(g).leftY)),1),a("span",{class:c(N.value?"ok":"warn")},u(j.value),3)])])])])]),a("section",d4,[a("div",u4,[$(t(I0),{size:18,weight:"duotone"}),l[46]||(l[46]=a("span",null,"使用说明",-1))]),l[47]||(l[47]=a("div",{class:"panel-bd"},[a("ol",{class:"guide-list"},[a("li",null,"连接手柄后,在任意页面按一次按键完成浏览器激活。"),a("li",null,"保持顶部「全局监听」开启,即可在其他页面使用映射。"),a("li",null,"按住 LB 再按 A / B / X / Y,可单独开关四盏灯。"),a("li",null,"LT 减音量、RT 加音量;云台用左摇杆或方向键,不再用肩键变焦。"),a("li",null,"若摇杆漂移,可在本页查看中心偏移量并校准手柄。")])],-1))])])])])}}}),A4=Q(c4,[["__scopeId","data-v-781b1e70"]]);export{A4 as default};