iobroker.govee-smart 2.36.0 → 2.37.0

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 (43) hide show
  1. package/README.md +10 -15
  2. package/admin/custom/assets/{Components-88o3n-Cm.js → Components-DWq4U-Jh.js} +1 -1
  3. package/admin/custom/assets/{ExpertPanel-BnVeJBS6.js → ExpertPanel-DoLtERNi.js} +1 -1
  4. package/admin/custom/assets/{index-C-fBGUPX.js → index-Bnpfk677.js} +1 -1
  5. package/admin/custom/assets/{mf-entry-bootstrap-0-0502dc7c.js → mf-entry-bootstrap-0-1362c6f5.js} +1 -1
  6. package/admin/custom/assets/virtualExposes-ChPmNKIy.js +1 -0
  7. package/admin/custom/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__ConfigCustomGoveeSegmentSet__customComponents_js-TmDuENES.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__ConfigCustomGoveeSegmentSet__customComponents_js-8hDFWCL-.js} +1 -1
  8. package/admin/custom/assets/virtual_mf-exposes-ssr___mfe_internal__ConfigCustomGoveeSegmentSet__customComponents_js-DdZDMvDY.js +2 -0
  9. package/admin/custom/assets/{virtual_mf-exposes___mfe_internal__ConfigCustomGoveeSegmentSet__customComponents_js-DtuKK_L7.js → virtual_mf-exposes___mfe_internal__ConfigCustomGoveeSegmentSet__customComponents_js-BjyhzC0c.js} +2 -2
  10. package/admin/custom/customComponents.js +1 -1
  11. package/admin/custom/mf-manifest.json +1 -1
  12. package/admin/i18n/de.json +5 -5
  13. package/admin/i18n/en.json +5 -5
  14. package/admin/i18n/es.json +5 -5
  15. package/admin/i18n/fr.json +5 -5
  16. package/admin/i18n/it.json +5 -5
  17. package/admin/i18n/nl.json +5 -5
  18. package/admin/i18n/pl.json +5 -5
  19. package/admin/i18n/pt.json +5 -5
  20. package/admin/i18n/ru.json +5 -5
  21. package/admin/i18n/uk.json +5 -5
  22. package/admin/i18n/zh-cn.json +5 -5
  23. package/admin/jsonConfig.json +16 -3
  24. package/build/lib/device-icons.js +10 -10
  25. package/build/lib/device-icons.js.map +2 -2
  26. package/build/lib/govee-lan-client.js +3 -3
  27. package/build/lib/govee-lan-client.js.map +2 -2
  28. package/build/lib/handlers/diagnostics-handler.js +3 -14
  29. package/build/lib/handlers/diagnostics-handler.js.map +2 -2
  30. package/build/lib/local-snapshots.js +202 -39
  31. package/build/lib/local-snapshots.js.map +2 -2
  32. package/build/lib/native-key-migration.js +73 -0
  33. package/build/lib/native-key-migration.js.map +7 -0
  34. package/build/lib/state-manager.js +21 -10
  35. package/build/lib/state-manager.js.map +2 -2
  36. package/build/lib/timing-constants.js +0 -3
  37. package/build/lib/timing-constants.js.map +2 -2
  38. package/build/main.js +37 -60
  39. package/build/main.js.map +3 -3
  40. package/io-package.json +16 -59
  41. package/package.json +2 -2
  42. package/admin/custom/assets/virtualExposes-DcvC5fsO.js +0 -1
  43. package/admin/custom/assets/virtual_mf-exposes-ssr___mfe_internal__ConfigCustomGoveeSegmentSet__customComponents_js-CaQ3vGFP.js +0 -2
package/README.md CHANGED
@@ -103,6 +103,16 @@ This adapter's MQTT authentication and BLE-over-LAN (ptReal) protocol implementa
103
103
  ### **WORK IN PROGRESS**
104
104
  -->
105
105
 
106
+ ### 2.37.0 (2026-09-15)
107
+
108
+ - Changed: The two folders "snapshots" and "diagnostics" at the top of the object tree are gone — a saved local snapshot is kept with its device, and no diagnostics report is stored any more
109
+ - Changed: A diagnostics report is generated and downloaded from the Expert tab only — the adapter keeps no copy in the instance, and the copies left by earlier versions are removed at the first start
110
+ - Changed: Local snapshots saved by earlier versions are carried over into their device objects at the first start, so nothing you saved is lost when the folder disappears
111
+ - Fixed: The instance settings open on the Configuration tab again — the admin remembered the last tab you used, and once you had visited the Expert tab every later visit started there
112
+ - Fixed: The device icons in the object tree are visible on the dark themes again — they were drawn in plain black, invisible on a dark background, and now take the row's text colour
113
+ - Fixed: A group's "membersUnreachable" datapoint is created together with the group — it used to appear only with the first reachability check, up to 20 seconds after the rest of the group
114
+ - Changed: The admin warns when another adapter on the same host takes the LAN port 4002 — the port shows as a fixed field in the adapter settings next to the network interface
115
+
106
116
  ### 2.36.0 (2026-09-14)
107
117
 
108
118
  - Fixed: A command the adapter could not send is no longer confirmed — no cloud connection, or a light reachable on neither channel — the datapoint used to claim the device had taken the value
@@ -136,21 +146,6 @@ This adapter's MQTT authentication and BLE-over-LAN (ptReal) protocol implementa
136
146
  - Fixed: The filter life of an air purifier now carries its unit (%) — Govee declares none, and the datapoint had no unit since its first version
137
147
  - Changed: The DreamView switch, the music auto-colour switch and the DIY-scene selector now carry an explanation in the object tree
138
148
 
139
- ### 2.34.0 (2026-09-10)
140
-
141
- - Fixed: Air purifiers, heaters, humidifiers and fans — choosing a mode or a speed now reaches the device, where the adapter used to send a value Govee rejected as "Invalid parameter type" (#47)
142
- - Fixed: The speed selector of an air purifier now offers the levels the device actually has, instead of the single unusable entry it showed before (#47)
143
- - Fixed: On an appliance updating from an older version the level datapoint accepts values again — it kept the selection list of the previous version and refused every write against it
144
- - Changed: On appliances whose modes share the same level numbers — kettles, some fans and humidifiers — the level is a plain number now; a selection list could only ever show one mode's levels
145
- - Fixed: An installation with no light at all now reads its device states at start — filter life, air quality and every other reported value stayed empty forever (#47)
146
- - Fixed: A heater's target temperature is sent in the shape the Govee API asks for, and the datapoint is labelled in the unit the heater itself reports — a 5–30 °C heater used to read °F
147
- - Fixed: The current speed level now arrives from the cloud together with the mode — until now only the mode updated while the level datapoint kept showing its default
148
- - Fixed: A command the Govee cloud rejects no longer counts as successful, so the datapoint stops showing a change the device never made, and the reason is named
149
- - New: A device's night-light scene is selectable — the adapter received the scene list and the current scene from Govee and threw both away without creating a datapoint
150
- - Fixed: The scene dropdown's "---" entry now carries the same value the adapter writes when it resets the dropdown, so the entry stopped being rewritten on every start
151
- - New: The H7127 air purifier is confirmed by a user report — it is no longer listed as untested and no longer asks for the experimental switch at start
152
- - Changed: The diagnostics report no longer repeats the privacy note the export button already shows, and says instead what only the file itself can say
153
-
154
149
  [Older changelogs can be found there](CHANGELOG_OLD.md)
155
150
 
156
151
  ## Support
@@ -1 +1 @@
1
- import{t as e}from"./_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.js-Bh78u5iG.js";import{ho as t,za as n}from"./_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BqaV2gc_.js";import{n as r,t as i}from"./ExpertPanel-BnVeJBS6.js";t();var a=class extends e{renderItem(t,i){let a=this.props.oContext,o=`${a.adapterName}.${a.instance}`,s=t=>{let n=e.getValue(this.props.data,t);return typeof n==`string`?n:``};return n(r,{socket:a.socket,namespace:o,values:{apiKey:s(`apiKey`),email:s(`goveeEmail`),password:s(`goveePassword`),code:s(`mqttVerificationCode`)},onChange:(e,t)=>void this.onChange(e,t)})}};t();var o={ConnectionConfig:a,ExpertConfig:class extends e{renderItem(e,t){let r=this.props.oContext,a=`${r.adapterName}.${r.instance}`;return n(i,{socket:r.socket,namespace:a})}}};export{o as default};
1
+ import{t as e}from"./_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.js-Bh78u5iG.js";import{ho as t,za as n}from"./_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BqaV2gc_.js";import{n as r,t as i}from"./ExpertPanel-DoLtERNi.js";t();var a=class extends e{renderItem(t,i){let a=this.props.oContext,o=`${a.adapterName}.${a.instance}`,s=t=>{let n=e.getValue(this.props.data,t);return typeof n==`string`?n:``};return n(r,{socket:a.socket,namespace:o,values:{apiKey:s(`apiKey`),email:s(`goveeEmail`),password:s(`goveePassword`),code:s(`mqttVerificationCode`)},onChange:(e,t)=>void this.onChange(e,t)})}};t();var o={ConnectionConfig:a,ExpertConfig:class extends e{renderItem(e,t){let r=this.props.oContext,a=`${r.adapterName}.${r.instance}`;return n(i,{socket:r.socket,namespace:a})}}};export{o as default};
@@ -1 +1 @@
1
- import{Ba as e,Bi as t,Di as n,Kr as r,Mi as i,Qr as a,Ra as o,Ri as s,Ti as c,Xr as l,Ya as u,an as d,ei as f,fi as p,gi as m,ho as h,ii as g,oi as _,xi as v,za as y}from"./_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BqaV2gc_.js";h();function b(e,t){let n=(n,r)=>e.sendTo(t,`mqttAuth`,{action:n,email:r.email,password:r.password,code:r.code});return{testLogin:e=>n(`test`,e),requestCode:e=>n(`requestCode`,e)}}function x(e,t){let[n,r]=u.useState({cloud:!1,mqtt:!1,verifyPending:!1});return u.useEffect(()=>{if(!e)return;let n=`${t}.info.cloudConnected`,i=`${t}.info.mqttConnected`,a=`${t}.info.verificationPending`,o=!0,s=(e,t)=>{o&&r(e=>({...e,cloud:!!(t!=null&&t.val)}))},c=(e,t)=>{o&&r(e=>({...e,mqtt:!!(t!=null&&t.val)}))},l=(e,t)=>{o&&r(e=>({...e,verifyPending:!!(t!=null&&t.val)}))};return Promise.resolve(e.getState(n)).then(e=>s(n,e)).catch(()=>void 0),Promise.resolve(e.getState(i)).then(e=>c(i,e)).catch(()=>void 0),Promise.resolve(e.getState(a)).then(e=>l(a,e)).catch(()=>void 0),Promise.resolve(e.subscribeState(n,s)).catch(()=>void 0),Promise.resolve(e.subscribeState(i,c)).catch(()=>void 0),Promise.resolve(e.subscribeState(a,l)).catch(()=>void 0),()=>{o=!1,e.unsubscribeState(n,s),e.unsubscribeState(i,c),e.unsubscribeState(a,l)}},[e,t]),n}function S(e){switch(e){case`ok`:return`success`;case`verifyRequired`:case`codeSent`:return`info`;case`codeInvalid`:case`codeRejected`:case`needCredentials`:case`throttled`:return`warning`;default:return`error`}}function C(e){return e===`verifyRequired`||e===`codeSent`||e===`codeInvalid`||e===`codeRejected`}function w({on:e,testId:t}){return y(a,{component:`span`,"data-testid":t,"data-on":e?`true`:`false`,sx:{display:`inline-block`,width:12,height:12,borderRadius:`50%`,flexShrink:0,bgcolor:e?`success.main`:`action.disabled`}})}function T(n){let{socket:i,namespace:o,values:s,onChange:c}=n,{apiKey:m,email:h,password:T,code:E}=s,D=u.useMemo(()=>b(i,o),[i,o]),O=x(i,o),[k,A]=u.useState(``),[j,M]=u.useState(null),[N,P]=u.useState(!1),[F,I]=u.useState({apiKey:m,email:h,password:T,code:E});u.useEffect(()=>{I(e=>{let t={...e},n=!1;return e.apiKey!==m&&(t.apiKey=m,n=!0),e.email!==h&&(t.email=h,n=!0),e.password!==T&&(t.password=T,n=!0),e.code!==E&&(t.code=E,n=!0),n?t:e})},[m,h,T,E]);let L=(e,t,n)=>{I(e=>({...e,[t]:n})),c(e,n)};u.useEffect(()=>{O.verifyPending&&P(!0)},[O.verifyPending]);let R=(e,...t)=>d.t(e,...t),z=e=>{M({status:e,text:R(`gsw_conn_st_${e}`)}),C(e)&&P(!0)},B=async()=>{A(`login`);try{let e=await D.testLogin({email:F.email,password:F.password,code:F.code});z(e.status)}catch{z(`loginFailed`)}finally{A(``)}},V=async()=>{A(`code`);try{let e=await D.requestCode({email:F.email,password:F.password});z(e.status)}catch{z(`loginFailed`)}finally{A(``)}},H=F.email.trim()!==``&&F.password.trim()!==``;return e(a,{sx:{maxWidth:640},children:[e(t,{direction:`row`,spacing:1.5,sx:{py:1,alignItems:`center`},children:[y(w,{on:!0,testId:`dot-lan`}),e(a,{children:[y(l,{variant:`subtitle2`,children:R(`gsw_conn_lan_title`)}),y(l,{variant:`body2`,color:`text.secondary`,children:R(`gsw_conn_lan_desc`)})]})]}),y(p,{}),e(t,{direction:`row`,spacing:1.5,sx:{py:1.5,alignItems:`flex-start`},children:[y(a,{sx:{pt:1},children:y(w,{on:O.cloud,testId:`dot-cloud`})}),e(a,{sx:{flexGrow:1},children:[y(l,{variant:`subtitle2`,children:R(`gsw_conn_cloud_title`)}),y(l,{variant:`body2`,color:`text.secondary`,sx:{mb:1},children:R(`gsw_conn_cloud_desc`)}),y(r,{fullWidth:!0,size:`small`,type:`password`,label:R(`gsw_conn_apikey_label`),value:F.apiKey,onChange:e=>L(`apiKey`,`apiKey`,e.target.value),slotProps:{htmlInput:{"data-testid":`conn-apikey`}},autoComplete:`off`})]})]}),y(p,{}),e(t,{direction:`row`,spacing:1.5,sx:{py:1.5,alignItems:`flex-start`},children:[y(a,{sx:{pt:1},children:y(w,{on:O.mqtt,testId:`dot-mqtt`})}),e(a,{sx:{flexGrow:1},children:[y(l,{variant:`subtitle2`,children:R(`gsw_conn_rt_title`)}),y(l,{variant:`body2`,color:`text.secondary`,sx:{mb:1},children:R(`gsw_conn_rt_desc`)}),e(t,{spacing:1,children:[y(r,{fullWidth:!0,size:`small`,label:R(`gsw_conn_email_label`),value:F.email,onChange:e=>L(`goveeEmail`,`email`,e.target.value),slotProps:{htmlInput:{"data-testid":`conn-email`}},autoComplete:`off`}),y(r,{fullWidth:!0,size:`small`,type:`password`,label:R(`gsw_conn_password_label`),value:F.password,onChange:e=>L(`goveePassword`,`password`,e.target.value),slotProps:{htmlInput:{"data-testid":`conn-password`}},autoComplete:`off`}),y(a,{children:y(f,{variant:`contained`,size:`small`,"data-testid":`conn-connect`,disabled:!H||k!==``,onClick:()=>void B(),startIcon:k===`login`?y(g,{size:16,color:`inherit`}):void 0,children:R(`gsw_conn_connect_btn`)})}),y(_,{in:N,unmountOnExit:!0,children:e(t,{spacing:1,sx:{mt:1,pl:1,borderLeft:`2px solid`,borderColor:`divider`},children:[y(l,{variant:`body2`,color:`text.secondary`,children:R(`gsw_conn_2fa_hint`)}),y(r,{fullWidth:!0,size:`small`,label:R(`gsw_conn_code_label`),value:F.code,onChange:e=>L(`mqttVerificationCode`,`code`,e.target.value),slotProps:{htmlInput:{maxLength:8}},autoComplete:`off`}),e(t,{direction:`row`,spacing:1,children:[y(f,{variant:`outlined`,size:`small`,disabled:!H||k!==``,onClick:()=>void V(),startIcon:k===`code`?y(g,{size:16,color:`inherit`}):void 0,children:R(`gsw_conn_request_btn`)}),y(f,{variant:`contained`,size:`small`,disabled:!H||F.code.trim()===``||k!==``,onClick:()=>void B(),startIcon:k===`login`?y(g,{size:16,color:`inherit`}):void 0,children:R(`gsw_conn_verify_btn`)})]})]})})]})]})]}),j&&y(v,{severity:S(j.status),sx:{mt:1},onClose:()=>M(null),children:j.text})]})}var E=class extends Error{};function D(e,t){return{async listDevices(){let n;try{n=await e.sendTo(t,`diagnostics`,{action:`list`})}catch(e){throw new E(e instanceof Error?e.message:String(e))}let r=n==null?void 0:n.devices;if(!Array.isArray(r))throw new E(`The adapter did not answer with a device list`);return r}}}function O(e){return e.filter(e=>e.online&&e.segments>0)}h();var k=4e3;function A(e,t){let n=u.useMemo(()=>D(e,t),[e,t]),[r,i]=u.useState({status:`loading`,slow:!1});return u.useEffect(()=>{let e=!0;i({status:`loading`,slow:!1});let t=setTimeout(()=>{i(e=>e.status===`loading`?{status:`loading`,slow:!0}:e)},k);return n.listDevices().then(t=>{e&&i({status:`ready`,devices:t})}).catch(t=>{e&&i({status:`failed`,message:t instanceof E&&t.message?t.message:d.t(`gsw_listFailed`)})}),()=>{e=!1,clearTimeout(t)}},[n]),r}function j({state:n}){return n.status===`loading`?y(a,{sx:{p:2},children:e(t,{direction:`row`,spacing:2,sx:{alignItems:`center`},children:[y(g,{size:24}),e(a,{children:[y(l,{variant:`body2`,children:d.t(`gsw_loadingDevices`)}),n.slow?y(l,{variant:`caption`,color:`text.secondary`,"data-testid":`list-slow-hint`,children:d.t(`gsw_loadingDevicesSlow`)}):null]})]})}):n.status===`failed`?y(a,{sx:{p:2},children:y(v,{severity:`error`,"data-testid":`list-failed`,children:n.message})}):null}function M(e){return typeof e.fileName==`string`}function N(e,t){return{exportReport(n){return e.sendTo(t,`diagnostics`,{action:`export`,device:n})}}}h();function P(e,t){let n=URL.createObjectURL(new Blob([t],{type:`application/json`})),r=document.createElement(`a`);r.href=n,r.download=e,document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}function F({socket:r,namespace:p}){let h=u.useMemo(()=>N(r,p),[r,p]),_=A(r,p),[b,x]=u.useState(``),[S,C]=u.useState(!1),[w,T]=u.useState(``),[E,D]=u.useState(``),O=_.status===`ready`?_.devices:[];u.useEffect(()=>{O.length===1&&x(O[0].value)},[O]);let k=u.useCallback(()=>{C(!0),T(``),D(``),h.exportReport(b).then(e=>{M(e)?(P(e.fileName,e.content),D(e.fileName)):T(e.error)}).catch(()=>T(d.t(`gsw_diagExportFailed`))).finally(()=>C(!1))},[h,b]);return _.status===`ready`?y(a,{sx:{p:2,maxWidth:720},children:e(t,{spacing:2,children:[y(l,{variant:`body2`,children:d.t(`gsw_diagIntro`)}),O.length===0?y(v,{severity:`info`,"data-testid":`diag-no-devices`,children:d.t(`gsw_diagNoDevices`)}):e(o,{children:[e(m,{fullWidth:!0,children:[y(c,{id:`gsw-diag-device`,children:d.t(`gsw_diagDevice`)}),y(s,{"data-testid":`diag-device-select`,labelId:`gsw-diag-device`,label:d.t(`gsw_diagDevice`),value:b,onChange:e=>x(String(e.target.value)),children:O.map(e=>y(i,{value:e.value,children:e.label},e.value))})]}),y(a,{children:y(f,{"data-testid":`diag-export`,variant:`contained`,disabled:!b||S,onClick:k,startIcon:S?y(g,{size:16}):void 0,children:d.t(`gsw_diagExport`)})})]}),E?e(v,{severity:`success`,children:[d.t(`gsw_diagDone`,E),` `,y(n,{href:`https://github.com/krobipd/ioBroker.govee-smart/issues/new/choose`,target:`_blank`,rel:`noreferrer`,children:d.t(`gsw_diagOpenIssue`)})]}):null,w?y(v,{severity:`error`,children:w}):null,y(l,{variant:`caption`,color:`text.secondary`,children:d.t(`gsw_diagPrivacy`)})]})}):y(j,{state:_})}h();var I={confirmed:{bgcolor:`success.main`,color:`success.contrastText`},flashing:{bgcolor:`warning.light`,color:`#000`,boxShadow:3},gap:{bgcolor:`error.main`,color:`error.contrastText`},open:{bgcolor:`action.disabledBackground`,color:`text.secondary`}};function L(e,t,n,r){return n===e?`flashing`:t.has(e)?`confirmed`:r.has(e)?`gap`:`open`}function R(e){let{total:t,confirmed:n,flashing:r,gaps:i,editable:o,onToggle:s}=e,c=new Set(n),l=new Set(i);return y(a,{sx:{display:`flex`,flexWrap:`wrap`,gap:.5},children:Array.from({length:Math.max(0,t)},(e,t)=>{let n=L(t,c,r,l);return y(a,{"data-testid":`seg-cell-${t}`,className:`seg-cell ${n}`,onClick:o?()=>s==null?void 0:s(t):void 0,sx:{width:34,height:34,display:`flex`,alignItems:`center`,justifyContent:`center`,borderRadius:1,fontSize:12,userSelect:`none`,cursor:o?`pointer`:`default`,...I[n]},children:t},t)})})}function z(e,t){let n=``,r=(n,r,i)=>{let a={action:n,device:r};return i&&(a.indices=i),e.sendTo(t,`segmentWizard`,a)};return{start(e){return n=e,r(`start`,e)},yes:()=>r(`yes`,n),no:()=>r(`no`,n),abort:()=>r(`abort`,n),apply:(e,t)=>r(`apply`,e,t)}}h();function B(e,t){let n=new Set(t),r=[];for(let t=0;t<e;t++)n.has(t)||r.push(t);return r}function V(n){let r=u.useMemo(()=>z(n.socket,n.namespace),[n.socket,n.namespace]),o=A(n.socket,n.namespace),p=u.useMemo(()=>o.status===`ready`?O(o.devices):[],[o]),[h,g]=u.useState(`select`),[_,b]=u.useState(``),[x,S]=u.useState(null),[C,w]=u.useState(0),[T,E]=u.useState([]),[D,k]=u.useState(0),[M,N]=u.useState(``);u.useEffect(()=>{b(p.length?p[0].value:``)},[p]);let P=()=>{S(null),g(`select`)},F=e=>e.error?(N(e.error),P(),!0):e.aborted?(N(``),P(),!0):e.applied||e.done?(k(e.segmentCount??0),S(null),g(`success`),!0):(N(``),e.snapshot&&S(e.snapshot),!1),I=async()=>{if(!_)return;N(``);let e=await r.start(_);F(e)||g(`measure`)},L=async e=>{F(await(e?r.yes():r.no()))},V=()=>{let e=x;if(!e||e.currentIndex<1)return;let t=e.currentIndex;w(t),E(e.confirmed.filter(e=>e<t).sort((e,t)=>e-t)),g(`review`)},H=e=>{E(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e].sort((e,t)=>e-t))},U=async()=>{T.length&&F(await r.apply(_,T))},W=async()=>{await r.abort();let e=await r.start(_);F(e)||g(`measure`)},G=async()=>{await r.abort(),P()},K=()=>{N(``),g(`select`)},q=M?y(v,{severity:`error`,"data-testid":`wiz-error`,sx:{mb:2},children:d.t(`gsw_error`,M)}):null;if(o.status!==`ready`)return y(j,{state:o});if(h===`select`)return e(a,{sx:{maxWidth:520},children:[q,p.length===0?y(v,{severity:`info`,"data-testid":`wiz-no-devices`,children:d.t(`gsw_noDevices`)}):e(t,{spacing:2,children:[e(m,{fullWidth:!0,children:[y(c,{children:d.t(`gsw_deviceLabel`)}),y(s,{"data-testid":`wiz-device-select`,value:_,label:d.t(`gsw_deviceLabel`),onChange:e=>b(e.target.value),children:p.map(e=>y(i,{value:e.value,children:d.t(`gsw_deviceOption`,e.label,String(e.segments))},e.value))})]}),y(a,{children:y(f,{variant:`contained`,"data-testid":`wiz-start`,disabled:!_,onClick:()=>void I(),children:d.t(`gsw_start`)})})]})]});if(h===`measure`&&x){let n=x.currentIndex;return e(a,{sx:{maxWidth:520},children:[y(l,{variant:`h6`,sx:{mb:1},children:d.t(`gsw_measureHint`)}),y(R,{total:n+1,confirmed:x.confirmed,flashing:n,gaps:B(n,x.confirmed),editable:!1}),y(l,{sx:{my:2},children:d.t(`gsw_question`,n)}),e(t,{direction:`row`,spacing:1,sx:{flexWrap:`wrap`},useFlexGap:!0,children:[y(f,{variant:`contained`,color:`success`,"data-testid":`wiz-lit`,onClick:()=>void L(!0),children:d.t(`gsw_lit`)}),y(f,{variant:`outlined`,"data-testid":`wiz-dark`,onClick:()=>void L(!1),children:d.t(`gsw_dark`)}),y(f,{variant:`contained`,"data-testid":`wiz-finish`,disabled:n<1,onClick:V,children:d.t(`gsw_finish`)}),y(f,{variant:`text`,color:`secondary`,"data-testid":`wiz-cancel`,onClick:()=>void G(),children:d.t(`gsw_cancel`)})]})]})}if(h===`review`){let n=T.length?Math.max(...T)+1:0,r=n-T.length,i=r>0?d.t(`gsw_resultGaps`,n,r):d.t(`gsw_resultNoGaps`,n);return e(a,{sx:{maxWidth:520},children:[y(l,{variant:`h6`,sx:{mb:1},children:i}),y(l,{variant:`body2`,sx:{mb:1,opacity:.8},children:d.t(`gsw_reviewHint`)}),y(R,{total:C,confirmed:T,flashing:null,gaps:B(C,T),editable:!0,onToggle:H}),e(t,{direction:`row`,spacing:1,sx:{mt:2,flexWrap:`wrap`},useFlexGap:!0,children:[y(f,{variant:`contained`,"data-testid":`wiz-apply`,disabled:!T.length,onClick:()=>void U(),children:d.t(`gsw_apply`)}),y(f,{variant:`outlined`,"data-testid":`wiz-remeasure`,onClick:()=>void W(),children:d.t(`gsw_remeasure`)}),y(f,{variant:`text`,color:`secondary`,"data-testid":`wiz-cancel`,onClick:()=>void G(),children:d.t(`gsw_cancel`)})]})]})}return e(a,{sx:{maxWidth:520},"data-testid":`wiz-success`,children:[y(v,{severity:`success`,sx:{mb:2},children:d.t(`gsw_applied`,D)}),y(f,{variant:`contained`,"data-testid":`wiz-close`,onClick:K,children:d.t(`gsw_close`)})]})}h();function H({socket:n,namespace:r}){let[i,o]=u.useState(`wizard`);return y(a,{sx:{p:2},children:e(t,{spacing:2,children:[y(l,{variant:`body2`,children:d.t(`gsw_expertIntro`)}),e(t,{direction:`row`,spacing:1,sx:{flexWrap:`wrap`},children:[y(f,{"data-testid":`expert-tool-wizard`,variant:i===`wizard`?`contained`:`outlined`,onClick:()=>o(`wizard`),children:d.t(`gsw_expertWizard`)}),y(f,{"data-testid":`expert-tool-diagnostics`,variant:i===`diagnostics`?`contained`:`outlined`,onClick:()=>o(`diagnostics`),children:d.t(`gsw_expertDiagnostics`)})]}),y(i===`wizard`?V:F,{socket:n,namespace:r})]})})}export{T as n,H as t};
1
+ import{Ba as e,Bi as t,Di as n,Kr as r,Mi as i,Qr as a,Ra as o,Ri as s,Ti as c,Xr as l,Ya as u,an as d,ei as f,fi as p,gi as m,ho as h,ii as g,oi as _,xi as v,za as y}from"./_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BqaV2gc_.js";h();function b(e,t){let n=(n,r)=>e.sendTo(t,`mqttAuth`,{action:n,email:r.email,password:r.password,code:r.code});return{testLogin:e=>n(`test`,e),requestCode:e=>n(`requestCode`,e)}}function x(e,t){let[n,r]=u.useState({cloud:!1,mqtt:!1,verifyPending:!1});return u.useEffect(()=>{if(!e)return;let n=`${t}.info.cloudConnected`,i=`${t}.info.mqttConnected`,a=`${t}.info.verificationPending`,o=!0,s=(e,t)=>{o&&r(e=>({...e,cloud:!!(t!=null&&t.val)}))},c=(e,t)=>{o&&r(e=>({...e,mqtt:!!(t!=null&&t.val)}))},l=(e,t)=>{o&&r(e=>({...e,verifyPending:!!(t!=null&&t.val)}))};return Promise.resolve(e.getState(n)).then(e=>s(n,e)).catch(()=>void 0),Promise.resolve(e.getState(i)).then(e=>c(i,e)).catch(()=>void 0),Promise.resolve(e.getState(a)).then(e=>l(a,e)).catch(()=>void 0),Promise.resolve(e.subscribeState(n,s)).catch(()=>void 0),Promise.resolve(e.subscribeState(i,c)).catch(()=>void 0),Promise.resolve(e.subscribeState(a,l)).catch(()=>void 0),()=>{o=!1,e.unsubscribeState(n,s),e.unsubscribeState(i,c),e.unsubscribeState(a,l)}},[e,t]),n}function S(e){switch(e){case`ok`:return`success`;case`verifyRequired`:case`codeSent`:return`info`;case`codeInvalid`:case`codeRejected`:case`needCredentials`:case`throttled`:return`warning`;default:return`error`}}function C(e){return e===`verifyRequired`||e===`codeSent`||e===`codeInvalid`||e===`codeRejected`}function w({on:e,testId:t}){return y(a,{component:`span`,"data-testid":t,"data-on":e?`true`:`false`,sx:{display:`inline-block`,width:12,height:12,borderRadius:`50%`,flexShrink:0,bgcolor:e?`success.main`:`action.disabled`}})}function T(n){let{socket:i,namespace:o,values:s,onChange:c}=n,{apiKey:m,email:h,password:T,code:E}=s,D=u.useMemo(()=>b(i,o),[i,o]),O=x(i,o),[k,A]=u.useState(``),[j,M]=u.useState(null),[N,P]=u.useState(!1),[F,I]=u.useState({apiKey:m,email:h,password:T,code:E});u.useEffect(()=>{I(e=>{let t={...e},n=!1;return e.apiKey!==m&&(t.apiKey=m,n=!0),e.email!==h&&(t.email=h,n=!0),e.password!==T&&(t.password=T,n=!0),e.code!==E&&(t.code=E,n=!0),n?t:e})},[m,h,T,E]);let L=(e,t,n)=>{I(e=>({...e,[t]:n})),c(e,n)};u.useEffect(()=>{O.verifyPending&&P(!0)},[O.verifyPending]);let R=(e,...t)=>d.t(e,...t),z=e=>{M({status:e,text:R(`gsw_conn_st_${e}`)}),C(e)&&P(!0)},B=async()=>{A(`login`);try{let e=await D.testLogin({email:F.email,password:F.password,code:F.code});z(e.status)}catch{z(`loginFailed`)}finally{A(``)}},V=async()=>{A(`code`);try{let e=await D.requestCode({email:F.email,password:F.password});z(e.status)}catch{z(`loginFailed`)}finally{A(``)}},H=F.email.trim()!==``&&F.password.trim()!==``;return e(a,{sx:{maxWidth:640},children:[e(t,{direction:`row`,spacing:1.5,sx:{py:1,alignItems:`center`},children:[y(w,{on:!0,testId:`dot-lan`}),e(a,{children:[y(l,{variant:`subtitle2`,children:R(`gsw_conn_lan_title`)}),y(l,{variant:`body2`,color:`text.secondary`,children:R(`gsw_conn_lan_desc`)})]})]}),y(p,{}),e(t,{direction:`row`,spacing:1.5,sx:{py:1.5,alignItems:`flex-start`},children:[y(a,{sx:{pt:1},children:y(w,{on:O.cloud,testId:`dot-cloud`})}),e(a,{sx:{flexGrow:1},children:[y(l,{variant:`subtitle2`,children:R(`gsw_conn_cloud_title`)}),y(l,{variant:`body2`,color:`text.secondary`,sx:{mb:1},children:R(`gsw_conn_cloud_desc`)}),y(r,{fullWidth:!0,size:`small`,type:`password`,label:R(`gsw_conn_apikey_label`),value:F.apiKey,onChange:e=>L(`apiKey`,`apiKey`,e.target.value),slotProps:{htmlInput:{"data-testid":`conn-apikey`}},autoComplete:`off`})]})]}),y(p,{}),e(t,{direction:`row`,spacing:1.5,sx:{py:1.5,alignItems:`flex-start`},children:[y(a,{sx:{pt:1},children:y(w,{on:O.mqtt,testId:`dot-mqtt`})}),e(a,{sx:{flexGrow:1},children:[y(l,{variant:`subtitle2`,children:R(`gsw_conn_rt_title`)}),y(l,{variant:`body2`,color:`text.secondary`,sx:{mb:1},children:R(`gsw_conn_rt_desc`)}),e(t,{spacing:1,children:[y(r,{fullWidth:!0,size:`small`,label:R(`gsw_conn_email_label`),value:F.email,onChange:e=>L(`goveeEmail`,`email`,e.target.value),slotProps:{htmlInput:{"data-testid":`conn-email`}},autoComplete:`off`}),y(r,{fullWidth:!0,size:`small`,type:`password`,label:R(`gsw_conn_password_label`),value:F.password,onChange:e=>L(`goveePassword`,`password`,e.target.value),slotProps:{htmlInput:{"data-testid":`conn-password`}},autoComplete:`off`}),y(a,{children:y(f,{variant:`contained`,size:`small`,"data-testid":`conn-connect`,disabled:!H||k!==``,onClick:()=>void B(),startIcon:k===`login`?y(g,{size:16,color:`inherit`}):void 0,children:R(`gsw_conn_connect_btn`)})}),y(_,{in:N,unmountOnExit:!0,children:e(t,{spacing:1,sx:{mt:1,pl:1,borderLeft:`2px solid`,borderColor:`divider`},children:[y(l,{variant:`body2`,color:`text.secondary`,children:R(`gsw_conn_2fa_hint`)}),y(r,{fullWidth:!0,size:`small`,label:R(`gsw_conn_code_label`),value:F.code,onChange:e=>L(`mqttVerificationCode`,`code`,e.target.value),slotProps:{htmlInput:{maxLength:8}},autoComplete:`off`}),e(t,{direction:`row`,spacing:1,children:[y(f,{variant:`outlined`,size:`small`,disabled:!H||k!==``,onClick:()=>void V(),startIcon:k===`code`?y(g,{size:16,color:`inherit`}):void 0,children:R(`gsw_conn_request_btn`)}),y(f,{variant:`contained`,size:`small`,disabled:!H||F.code.trim()===``||k!==``,onClick:()=>void B(),startIcon:k===`login`?y(g,{size:16,color:`inherit`}):void 0,children:R(`gsw_conn_verify_btn`)})]})]})})]})]})]}),j&&y(v,{severity:S(j.status),sx:{mt:1},onClose:()=>M(null),children:j.text})]})}var E=class extends Error{};function D(e,t){return{async listDevices(){let n;try{n=await e.sendTo(t,`diagnostics`,{action:`list`})}catch(e){throw new E(e instanceof Error?e.message:String(e))}let r=n==null?void 0:n.devices;if(!Array.isArray(r))throw new E(`The adapter did not answer with a device list`);return r}}}function O(e){return e.filter(e=>e.online&&e.segments>0)}h();var k=4e3;function A(e,t){let n=u.useMemo(()=>D(e,t),[e,t]),[r,i]=u.useState({status:`loading`,slow:!1});return u.useEffect(()=>{let e=!0;i({status:`loading`,slow:!1});let t=setTimeout(()=>{i(e=>e.status===`loading`?{status:`loading`,slow:!0}:e)},k);return n.listDevices().then(t=>{e&&i({status:`ready`,devices:t})}).catch(t=>{e&&i({status:`failed`,message:t instanceof E&&t.message?t.message:d.t(`gsw_listFailed`)})}),()=>{e=!1,clearTimeout(t)}},[n]),r}function j({state:n}){return n.status===`loading`?y(a,{sx:{p:2},children:e(t,{direction:`row`,spacing:2,sx:{alignItems:`center`},children:[y(g,{size:24}),e(a,{children:[y(l,{variant:`body2`,children:d.t(`gsw_loadingDevices`)}),n.slow?y(l,{variant:`caption`,color:`text.secondary`,"data-testid":`list-slow-hint`,children:d.t(`gsw_loadingDevicesSlow`)}):null]})]})}):n.status===`failed`?y(a,{sx:{p:2},children:y(v,{severity:`error`,"data-testid":`list-failed`,children:n.message})}):null}function M(e){return typeof e.fileName==`string`}function N(e,t){return{exportReport(n){return e.sendTo(t,`diagnostics`,{action:`export`,device:n})}}}h();function P(e,t){let n=URL.createObjectURL(new Blob([t],{type:`application/json`})),r=document.createElement(`a`);r.href=n,r.download=e,document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}function F({socket:r,namespace:p}){let h=u.useMemo(()=>N(r,p),[r,p]),_=A(r,p),[b,x]=u.useState(``),[S,C]=u.useState(!1),[w,T]=u.useState(``),[E,D]=u.useState(``),O=_.status===`ready`?_.devices:[];u.useEffect(()=>{O.length===1&&x(O[0].value)},[O]);let k=u.useCallback(()=>{C(!0),T(``),D(``),h.exportReport(b).then(e=>{M(e)?(P(e.fileName,e.content),D(e.fileName)):T(e.error)}).catch(()=>T(d.t(`gsw_diagExportFailed`))).finally(()=>C(!1))},[h,b]);return _.status===`ready`?y(a,{sx:{p:2,maxWidth:720},children:e(t,{spacing:2,children:[y(l,{variant:`body2`,children:d.t(`gsw_diagIntro`)}),O.length===0?y(v,{severity:`info`,"data-testid":`diag-no-devices`,children:d.t(`gsw_diagNoDevices`)}):e(o,{children:[e(m,{fullWidth:!0,children:[y(c,{id:`gsw-diag-device`,children:d.t(`gsw_diagDevice`)}),y(s,{"data-testid":`diag-device-select`,labelId:`gsw-diag-device`,label:d.t(`gsw_diagDevice`),value:b,onChange:e=>x(String(e.target.value)),children:O.map(e=>y(i,{value:e.value,children:e.label},e.value))})]}),y(a,{children:y(f,{"data-testid":`diag-export`,variant:`contained`,disabled:!b||S,onClick:k,startIcon:S?y(g,{size:16}):void 0,children:d.t(`gsw_diagExport`)})})]}),E?e(v,{severity:`success`,children:[d.t(`gsw_diagDone`,E),` `,y(n,{href:`https://github.com/krobipd/ioBroker.govee-smart/issues/new/choose`,target:`_blank`,rel:`noreferrer`,children:d.t(`gsw_diagOpenIssue`)})]}):null,w?y(v,{severity:`error`,children:w}):null,y(l,{variant:`caption`,color:`text.secondary`,children:d.t(`gsw_diagPrivacy`)})]})}):y(j,{state:_})}h();var I={confirmed:{bgcolor:`success.main`,color:`success.contrastText`},flashing:{bgcolor:`warning.light`,color:`#000`,boxShadow:3},gap:{bgcolor:`error.main`,color:`error.contrastText`},open:{bgcolor:`action.disabledBackground`,color:`text.secondary`}};function L(e,t,n,r){return n===e?`flashing`:t.has(e)?`confirmed`:r.has(e)?`gap`:`open`}function R(e){let{total:t,confirmed:n,flashing:r,gaps:i,editable:o,onToggle:s}=e,c=new Set(n),l=new Set(i);return y(a,{sx:{display:`flex`,flexWrap:`wrap`,gap:.5},children:Array.from({length:Math.max(0,t)},(e,t)=>{let n=L(t,c,r,l);return y(a,{"data-testid":`seg-cell-${t}`,className:`seg-cell ${n}`,onClick:o?()=>s==null?void 0:s(t):void 0,sx:{width:34,height:34,display:`flex`,alignItems:`center`,justifyContent:`center`,borderRadius:1,fontSize:12,userSelect:`none`,cursor:o?`pointer`:`default`,...I[n]},children:t},t)})})}function z(e,t){let n=``,r=(n,r,i)=>{let a={action:n,device:r};return i&&(a.indices=i),e.sendTo(t,`segmentWizard`,a)};return{start(e){return n=e,r(`start`,e)},yes:()=>r(`yes`,n),no:()=>r(`no`,n),abort:()=>r(`abort`,n),apply:(e,t)=>r(`apply`,e,t)}}h();function B(e,t){let n=new Set(t),r=[];for(let t=0;t<e;t++)n.has(t)||r.push(t);return r}function V(n){let r=u.useMemo(()=>z(n.socket,n.namespace),[n.socket,n.namespace]),o=A(n.socket,n.namespace),p=u.useMemo(()=>o.status===`ready`?O(o.devices):[],[o]),[h,g]=u.useState(`select`),[_,b]=u.useState(``),[x,S]=u.useState(null),[C,w]=u.useState(0),[T,E]=u.useState([]),[D,k]=u.useState(0),[M,N]=u.useState(``);u.useEffect(()=>{b(p.length?p[0].value:``)},[p]);let P=()=>{S(null),g(`select`)},F=e=>e.error?(N(e.error),P(),!0):e.aborted?(N(``),P(),!0):e.applied||e.done?(k(e.segmentCount??0),S(null),g(`success`),!0):(N(``),e.snapshot&&S(e.snapshot),!1),I=async()=>{if(!_)return;N(``);let e=await r.start(_);F(e)||g(`measure`)},L=async e=>{F(await(e?r.yes():r.no()))},V=()=>{let e=x;if(!e||e.currentIndex<1)return;let t=e.currentIndex;w(t),E(e.confirmed.filter(e=>e<t).sort((e,t)=>e-t)),g(`review`)},H=e=>{E(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e].sort((e,t)=>e-t))},U=async()=>{T.length&&F(await r.apply(_,T))},W=async()=>{await r.abort();let e=await r.start(_);F(e)||g(`measure`)},G=async()=>{await r.abort(),P()},K=()=>{N(``),g(`select`)},q=M?y(v,{severity:`error`,"data-testid":`wiz-error`,sx:{mb:2},children:d.t(`gsw_error`,M)}):null;if(o.status!==`ready`)return y(j,{state:o});if(h===`select`)return e(a,{sx:{maxWidth:520},children:[q,p.length===0?y(v,{severity:`info`,"data-testid":`wiz-no-devices`,children:d.t(`gsw_noDevices`)}):e(t,{spacing:2,children:[e(m,{fullWidth:!0,children:[y(c,{children:d.t(`gsw_deviceLabel`)}),y(s,{"data-testid":`wiz-device-select`,value:_,label:d.t(`gsw_deviceLabel`),onChange:e=>b(e.target.value),children:p.map(e=>y(i,{value:e.value,children:d.t(`gsw_deviceOption`,e.label,String(e.segments))},e.value))})]}),y(a,{children:y(f,{variant:`contained`,"data-testid":`wiz-start`,disabled:!_,onClick:()=>void I(),children:d.t(`gsw_start`)})})]})]});if(h===`measure`&&x){let n=x.currentIndex;return e(a,{sx:{maxWidth:520},children:[y(l,{variant:`h6`,sx:{mb:1},children:d.t(`gsw_measureHint`)}),y(R,{total:n+1,confirmed:x.confirmed,flashing:n,gaps:B(n,x.confirmed),editable:!1}),y(l,{sx:{my:2},children:d.t(`gsw_question`,n)}),e(t,{direction:`row`,spacing:1,sx:{flexWrap:`wrap`},useFlexGap:!0,children:[y(f,{variant:`contained`,color:`success`,"data-testid":`wiz-lit`,onClick:()=>void L(!0),children:d.t(`gsw_lit`)}),y(f,{variant:`outlined`,"data-testid":`wiz-dark`,onClick:()=>void L(!1),children:d.t(`gsw_dark`)}),y(f,{variant:`contained`,"data-testid":`wiz-finish`,disabled:n<1,onClick:V,children:d.t(`gsw_finish`)}),y(f,{variant:`text`,color:`secondary`,"data-testid":`wiz-cancel`,onClick:()=>void G(),children:d.t(`gsw_cancel`)})]})]})}if(h===`review`){let n=T.length?Math.max(...T)+1:0,r=n-T.length,i=r>0?d.t(`gsw_resultGaps`,n,r):d.t(`gsw_resultNoGaps`,n);return e(a,{sx:{maxWidth:520},children:[y(l,{variant:`h6`,sx:{mb:1},children:i}),y(l,{variant:`body2`,sx:{mb:1,opacity:.8},children:d.t(`gsw_reviewHint`)}),y(R,{total:C,confirmed:T,flashing:null,gaps:B(C,T),editable:!0,onToggle:H}),e(t,{direction:`row`,spacing:1,sx:{mt:2,flexWrap:`wrap`},useFlexGap:!0,children:[y(f,{variant:`contained`,"data-testid":`wiz-apply`,disabled:!T.length,onClick:()=>void U(),children:d.t(`gsw_apply`)}),y(f,{variant:`outlined`,"data-testid":`wiz-remeasure`,onClick:()=>void W(),children:d.t(`gsw_remeasure`)}),y(f,{variant:`text`,color:`secondary`,"data-testid":`wiz-cancel`,onClick:()=>void G(),children:d.t(`gsw_cancel`)})]})]})}return e(a,{sx:{maxWidth:520},"data-testid":`wiz-success`,children:[y(v,{severity:`success`,sx:{mb:2},children:d.t(`gsw_applied`,D)}),y(f,{variant:`contained`,"data-testid":`wiz-close`,onClick:K,children:d.t(`gsw_close`)})]})}h();var H=new Set([`_main`,`_expert`]);function U(e){let t=e.split(`.`)[0];try{let e=window._localStorage??window.localStorage,n=[];for(let r=0;r<e.length;r++){let i=e.key(r);i!=null&&i.endsWith(`.${t}`)&&H.has(e.getItem(i)??``)&&n.push(i)}for(let t of n)e.removeItem(t)}catch{}}function W({socket:n,namespace:r}){let[i,o]=u.useState(`wizard`);return u.useEffect(()=>U(r),[r]),y(a,{sx:{p:2},children:e(t,{spacing:2,children:[y(l,{variant:`body2`,children:d.t(`gsw_expertIntro`)}),e(t,{direction:`row`,spacing:1,sx:{flexWrap:`wrap`},children:[y(f,{"data-testid":`expert-tool-wizard`,variant:i===`wizard`?`contained`:`outlined`,onClick:()=>o(`wizard`),children:d.t(`gsw_expertWizard`)}),y(f,{"data-testid":`expert-tool-diagnostics`,variant:i===`diagnostics`?`contained`:`outlined`,onClick:()=>o(`diagnostics`),children:d.t(`gsw_expertDiagnostics`)})]}),y(i===`wizard`?V:F,{socket:n,namespace:r})]})})}export{T as n,W as t};
@@ -1 +1 @@
1
- import"./virtual_mf-exposes___mfe_internal__ConfigCustomGoveeSegmentSet__customComponents_js-DtuKK_L7.js";import"./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__ConfigCustomGoveeSegmentSet__customComponents_js-TmDuENES.js";import{$t as e,Ba as t,La as n,Qr as r,Ya as i,an as a,cn as o,ho as s,ya as c,za as l}from"./_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BqaV2gc_.js";import{t as u}from"./_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-ld5_knuQ.js";import{n as d,t as f}from"./ExpertPanel-BnVeJBS6.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),s();var p={gsw_deviceLabel:`Device`,gsw_noDevices:`No segment-capable devices found. Enter a Cloud API key in the adapter settings so device capabilities are known.`,gsw_start:`Start measuring`,gsw_measureHint:`Watch the strip — which segment lights up bright white?`,gsw_question:`Segment %s — is it lit?`,gsw_lit:`Lit`,gsw_dark:`Dark (gap)`,gsw_finish:`Finished — end of strip`,gsw_cancel:`Cancel`,gsw_reviewHint:`Click a cell to flip lit / gap, then apply.`,gsw_resultNoGaps:`%s segments, no gaps`,gsw_resultGaps:`%s segments, %s gap(s)`,gsw_apply:`Apply`,gsw_remeasure:`Measure again`,gsw_applied:`Applied: %s segments.`,gsw_error:`Wizard error: %s`,gsw_close:`Close`,gsw_conn_lan_title:`LAN — always on`,gsw_conn_lan_desc:`Local control for lights. No credentials needed.`,gsw_conn_cloud_title:`Cloud API key`,gsw_conn_cloud_desc:`Optional. Adds device names, scenes, snapshots and segments.`,gsw_conn_apikey_label:`Govee API key`,gsw_conn_rt_title:`Real-time status (Govee account)`,gsw_conn_rt_desc:`Optional. Enables live status push over the Govee cloud (AWS IoT).`,gsw_conn_email_label:`Account email`,gsw_conn_password_label:`Account password`,gsw_conn_connect_btn:`Connect`,gsw_conn_2fa_hint:`Govee sent a verification code by email. Enter it here to finish sign-in.`,gsw_conn_code_label:`Verification code`,gsw_conn_request_btn:`Request new code`,gsw_conn_verify_btn:`Confirm code`,gsw_conn_st_ok:`Connected. Save the settings to keep real-time status enabled.`,gsw_conn_st_verifyRequired:`Govee needs a verification code for this device. Check your email and enter the code.`,gsw_conn_st_codeInvalid:`The verification code is invalid. Request a new one and try again.`,gsw_conn_st_passwordRejected:`Email or password was rejected. Please check your credentials.`,gsw_conn_st_emailNotRegistered:`This email is not registered with Govee.`,gsw_conn_st_rateLimited:`Too many attempts. Wait a while before trying again.`,gsw_conn_st_accountLocked:`The account is temporarily locked by Govee. Try again later.`,gsw_conn_st_loginFailed:`Login failed. Please try again.`,gsw_conn_st_mqttNotUp:`Real-time service is not ready yet. Try again in a moment.`,gsw_conn_st_codeSent:`A new verification code was sent to your email.`,gsw_conn_st_codeRejected:`Govee rejected the verification code. Request a new one.`,gsw_conn_st_needCredentials:`Enter email and password first.`,gsw_conn_st_throttled:`Please wait a moment before requesting another code.`,gsw_conn_st_unknownAction:`Unknown action.`,gsw_diagIntro:`Pick a device and press the button: the adapter builds a diagnostics report and your browser saves it as a file. Attach that file to a GitHub issue — the issue forms ask for exactly it.`,gsw_diagDevice:`Device`,gsw_diagExport:`Create report and download`,gsw_diagDone:`Saved as %s.`,gsw_diagOpenIssue:`Open an issue`,gsw_diagNoDevices:`No devices yet. The report is per device — once the adapter has found one, it appears here.`,gsw_diagExportFailed:`The report could not be created. The adapter log says why.`,gsw_diagPrivacy:`The report is pseudonymised: addresses, mail addresses and device names are replaced by stable markers, device ids are shortened, and credentials never appear.`,gsw_loadingDevices:`Loading devices …`,gsw_loadingDevicesSlow:`Still loading — this needs the adapter instance to be running.`,gsw_listFailed:`Could not load the device list. Is the instance running?`,gsw_deviceOption:`%s — currently %s segments`,gsw_expertIntro:`Two tools for when something needs a closer look. Pick one — the device list loads when you do.`,gsw_expertWizard:`Segment detection`,gsw_expertDiagnostics:`Diagnostics`},m={gsw_deviceLabel:`Gerät`,gsw_noDevices:`Keine Geräte mit Segmenten gefunden. Trage einen Cloud-API-Key in den Adaptereinstellungen ein, damit die Gerätefähigkeiten bekannt sind.`,gsw_start:`Messung starten`,gsw_measureHint:`Beobachte den Strip — welches Segment leuchtet hell weiß auf?`,gsw_question:`Segment %s — leuchtet es?`,gsw_lit:`Leuchtet`,gsw_dark:`Dunkel (Lücke)`,gsw_finish:`Fertig — Strip zu Ende`,gsw_cancel:`Abbrechen`,gsw_reviewHint:`Zelle anklicken, um zwischen Leuchtet/Lücke zu wechseln, dann übernehmen.`,gsw_resultNoGaps:`%s Segmente, keine Lücke`,gsw_resultGaps:`%s Segmente, %s Lücke(n)`,gsw_apply:`Übernehmen`,gsw_remeasure:`Nochmal messen`,gsw_applied:`Übernommen: %s Segmente.`,gsw_error:`Wizard-Fehler: %s`,gsw_close:`Schließen`,gsw_conn_lan_title:`LAN — immer aktiv`,gsw_conn_lan_desc:`Lokale Steuerung für Lampen. Keine Zugangsdaten nötig.`,gsw_conn_cloud_title:`Cloud-API-Key`,gsw_conn_cloud_desc:`Optional. Ergänzt Gerätenamen, Szenen, Snapshots und Segmente.`,gsw_conn_apikey_label:`Govee-API-Key`,gsw_conn_rt_title:`Echtzeit-Status (Govee-Konto)`,gsw_conn_rt_desc:`Optional. Aktiviert Live-Status-Push über die Govee-Cloud (AWS IoT).`,gsw_conn_email_label:`Konto-E-Mail`,gsw_conn_password_label:`Konto-Passwort`,gsw_conn_connect_btn:`Verbinden`,gsw_conn_2fa_hint:`Govee hat einen Bestätigungscode per E-Mail geschickt. Zum Abschließen hier eingeben.`,gsw_conn_code_label:`Bestätigungscode`,gsw_conn_request_btn:`Neuen Code anfordern`,gsw_conn_verify_btn:`Code bestätigen`,gsw_conn_st_ok:`Verbunden. Zum dauerhaften Aktivieren die Einstellungen speichern.`,gsw_conn_st_verifyRequired:`Govee benötigt für dieses Gerät einen Bestätigungscode. E-Mail prüfen und Code eingeben.`,gsw_conn_st_codeInvalid:`Der Bestätigungscode ist ungültig. Neuen anfordern und erneut versuchen.`,gsw_conn_st_passwordRejected:`E-Mail oder Passwort wurde abgelehnt. Bitte Zugangsdaten prüfen.`,gsw_conn_st_emailNotRegistered:`Diese E-Mail ist bei Govee nicht registriert.`,gsw_conn_st_rateLimited:`Zu viele Versuche. Bitte etwas warten, bevor du es erneut versuchst.`,gsw_conn_st_accountLocked:`Das Konto ist vorübergehend von Govee gesperrt. Später erneut versuchen.`,gsw_conn_st_loginFailed:`Anmeldung fehlgeschlagen. Bitte erneut versuchen.`,gsw_conn_st_mqttNotUp:`Der Echtzeit-Dienst ist noch nicht bereit. Gleich erneut versuchen.`,gsw_conn_st_codeSent:`Ein neuer Bestätigungscode wurde an deine E-Mail geschickt.`,gsw_conn_st_codeRejected:`Govee hat den Bestätigungscode abgelehnt. Neuen anfordern.`,gsw_conn_st_needCredentials:`Zuerst E-Mail und Passwort eingeben.`,gsw_conn_st_throttled:`Bitte kurz warten, bevor du einen weiteren Code anforderst.`,gsw_conn_st_unknownAction:`Unbekannte Aktion.`,gsw_diagIntro:`Gerät wählen und auf den Knopf drücken: Der Adapter erstellt einen Diagnosebericht, und der Browser legt ihn als Datei ab. Diese Datei an ein GitHub-Issue anhängen — die Formulare fragen genau danach.`,gsw_diagDevice:`Gerät`,gsw_diagExport:`Bericht erstellen und herunterladen`,gsw_diagDone:`Gespeichert als %s.`,gsw_diagOpenIssue:`Issue eröffnen`,gsw_diagNoDevices:`Noch keine Geräte. Der Bericht gilt je Gerät — sobald der Adapter eines gefunden hat, erscheint es hier.`,gsw_diagExportFailed:`Der Bericht konnte nicht erstellt werden. Warum, steht im Adapter-Log.`,gsw_diagPrivacy:`Der Bericht ist anonymisiert: Adressen, E-Mail-Adressen und Gerätenamen werden durch gleichbleibende Marken ersetzt, Gerätekennungen gekürzt, Zugangsdaten tauchen gar nicht auf.`,gsw_loadingDevices:`Geräte werden geladen …`,gsw_loadingDevicesSlow:`Lädt noch — dafür muss die Adapter-Instanz laufen.`,gsw_listFailed:`Die Geräteliste konnte nicht geladen werden. Läuft die Instanz?`,gsw_deviceOption:`%s — bisher %s Segmente`,gsw_expertIntro:`Zwei Werkzeuge für den genaueren Blick. Eines auswählen — die Geräteliste wird dann geladen.`,gsw_expertWizard:`Segment-Erkennung`,gsw_expertDiagnostics:`Diagnose`},h={app:e=>({backgroundColor:e.palette.background.default,color:e.palette.text.primary,height:`100%`}),item:{padding:50,width:600}},g=class extends e{constructor(e){let t={...e};super(e,t),this.state={...this.state,data:{},originalData:{},theme:this.createTheme()},a.extendTranslations(p,`en`),a.extendTranslations(m,`de`);let n=(navigator.language||navigator.userLanguage||`en`).toLowerCase();a.setLanguage(n.substring(0,2))}render(){return this.state.loaded?l(n,{injectFirst:!0,children:l(c,{theme:this.state.theme,children:t(r,{sx:h.app,children:[l(`div`,{style:h.item,children:l(d,{socket:this.socket,namespace:`${this.adapterName}.${this.instance}`,values:{apiKey:String(this.state.data.apiKey??``),email:String(this.state.data.goveeEmail??``),password:String(this.state.data.goveePassword??``),code:String(this.state.data.mqttVerificationCode??``)},onChange:(e,t)=>this.setState({data:{...this.state.data,[e]:t}})})}),l(`div`,{style:h.item,children:l(f,{socket:this.socket,namespace:`${this.adapterName}.${this.instance}`})})]})})}):l(n,{injectFirst:!0,children:l(c,{theme:this.state.theme,children:l(o,{themeType:this.state.themeType})})})}};s(),window.adapterName=`govee-smart`;var _=document.getElementById(`root`);_&&u(_).render(l(i.StrictMode,{children:l(g,{socket:{port:8081}})}));
1
+ import"./virtual_mf-exposes___mfe_internal__ConfigCustomGoveeSegmentSet__customComponents_js-BjyhzC0c.js";import"./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__ConfigCustomGoveeSegmentSet__customComponents_js-8hDFWCL-.js";import{$t as e,Ba as t,La as n,Qr as r,Ya as i,an as a,cn as o,ho as s,ya as c,za as l}from"./_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BqaV2gc_.js";import{t as u}from"./_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-ld5_knuQ.js";import{n as d,t as f}from"./ExpertPanel-DoLtERNi.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),s();var p={gsw_deviceLabel:`Device`,gsw_noDevices:`No segment-capable devices found. Enter a Cloud API key in the adapter settings so device capabilities are known.`,gsw_start:`Start measuring`,gsw_measureHint:`Watch the strip — which segment lights up bright white?`,gsw_question:`Segment %s — is it lit?`,gsw_lit:`Lit`,gsw_dark:`Dark (gap)`,gsw_finish:`Finished — end of strip`,gsw_cancel:`Cancel`,gsw_reviewHint:`Click a cell to flip lit / gap, then apply.`,gsw_resultNoGaps:`%s segments, no gaps`,gsw_resultGaps:`%s segments, %s gap(s)`,gsw_apply:`Apply`,gsw_remeasure:`Measure again`,gsw_applied:`Applied: %s segments.`,gsw_error:`Wizard error: %s`,gsw_close:`Close`,gsw_conn_lan_title:`LAN — always on`,gsw_conn_lan_desc:`Local control for lights. No credentials needed.`,gsw_conn_cloud_title:`Cloud API key`,gsw_conn_cloud_desc:`Optional. Adds device names, scenes, snapshots and segments.`,gsw_conn_apikey_label:`Govee API key`,gsw_conn_rt_title:`Real-time status (Govee account)`,gsw_conn_rt_desc:`Optional. Enables live status push over the Govee cloud (AWS IoT).`,gsw_conn_email_label:`Account email`,gsw_conn_password_label:`Account password`,gsw_conn_connect_btn:`Connect`,gsw_conn_2fa_hint:`Govee sent a verification code by email. Enter it here to finish sign-in.`,gsw_conn_code_label:`Verification code`,gsw_conn_request_btn:`Request new code`,gsw_conn_verify_btn:`Confirm code`,gsw_conn_st_ok:`Connected. Save the settings to keep real-time status enabled.`,gsw_conn_st_verifyRequired:`Govee needs a verification code for this device. Check your email and enter the code.`,gsw_conn_st_codeInvalid:`The verification code is invalid. Request a new one and try again.`,gsw_conn_st_passwordRejected:`Email or password was rejected. Please check your credentials.`,gsw_conn_st_emailNotRegistered:`This email is not registered with Govee.`,gsw_conn_st_rateLimited:`Too many attempts. Wait a while before trying again.`,gsw_conn_st_accountLocked:`The account is temporarily locked by Govee. Try again later.`,gsw_conn_st_loginFailed:`Login failed. Please try again.`,gsw_conn_st_mqttNotUp:`Real-time service is not ready yet. Try again in a moment.`,gsw_conn_st_codeSent:`A new verification code was sent to your email.`,gsw_conn_st_codeRejected:`Govee rejected the verification code. Request a new one.`,gsw_conn_st_needCredentials:`Enter email and password first.`,gsw_conn_st_throttled:`Please wait a moment before requesting another code.`,gsw_conn_st_unknownAction:`Unknown action.`,gsw_diagIntro:`Pick a device and press the button: the adapter builds a diagnostics report and your browser saves it as a file. Attach that file to a GitHub issue — the issue forms ask for exactly it.`,gsw_diagDevice:`Device`,gsw_diagExport:`Create report and download`,gsw_diagDone:`Saved as %s.`,gsw_diagOpenIssue:`Open an issue`,gsw_diagNoDevices:`No devices yet. The report is per device — once the adapter has found one, it appears here.`,gsw_diagExportFailed:`The report could not be created. The adapter log says why.`,gsw_diagPrivacy:`The report is pseudonymised: addresses, mail addresses and device names are replaced by stable markers, device ids are shortened, and credentials never appear.`,gsw_loadingDevices:`Loading devices …`,gsw_loadingDevicesSlow:`Still loading — this needs the adapter instance to be running.`,gsw_listFailed:`Could not load the device list. Is the instance running?`,gsw_deviceOption:`%s — currently %s segments`,gsw_expertIntro:`Two tools for when something needs a closer look. Pick one — the device list loads when you do.`,gsw_expertWizard:`Segment detection`,gsw_expertDiagnostics:`Diagnostics`},m={gsw_deviceLabel:`Gerät`,gsw_noDevices:`Keine Geräte mit Segmenten gefunden. Trage einen Cloud-API-Key in den Adaptereinstellungen ein, damit die Gerätefähigkeiten bekannt sind.`,gsw_start:`Messung starten`,gsw_measureHint:`Beobachte den Strip — welches Segment leuchtet hell weiß auf?`,gsw_question:`Segment %s — leuchtet es?`,gsw_lit:`Leuchtet`,gsw_dark:`Dunkel (Lücke)`,gsw_finish:`Fertig — Strip zu Ende`,gsw_cancel:`Abbrechen`,gsw_reviewHint:`Zelle anklicken, um zwischen Leuchtet/Lücke zu wechseln, dann übernehmen.`,gsw_resultNoGaps:`%s Segmente, keine Lücke`,gsw_resultGaps:`%s Segmente, %s Lücke(n)`,gsw_apply:`Übernehmen`,gsw_remeasure:`Nochmal messen`,gsw_applied:`Übernommen: %s Segmente.`,gsw_error:`Wizard-Fehler: %s`,gsw_close:`Schließen`,gsw_conn_lan_title:`LAN — immer aktiv`,gsw_conn_lan_desc:`Lokale Steuerung für Lampen. Keine Zugangsdaten nötig.`,gsw_conn_cloud_title:`Cloud-API-Key`,gsw_conn_cloud_desc:`Optional. Ergänzt Gerätenamen, Szenen, Snapshots und Segmente.`,gsw_conn_apikey_label:`Govee-API-Key`,gsw_conn_rt_title:`Echtzeit-Status (Govee-Konto)`,gsw_conn_rt_desc:`Optional. Aktiviert Live-Status-Push über die Govee-Cloud (AWS IoT).`,gsw_conn_email_label:`Konto-E-Mail`,gsw_conn_password_label:`Konto-Passwort`,gsw_conn_connect_btn:`Verbinden`,gsw_conn_2fa_hint:`Govee hat einen Bestätigungscode per E-Mail geschickt. Zum Abschließen hier eingeben.`,gsw_conn_code_label:`Bestätigungscode`,gsw_conn_request_btn:`Neuen Code anfordern`,gsw_conn_verify_btn:`Code bestätigen`,gsw_conn_st_ok:`Verbunden. Zum dauerhaften Aktivieren die Einstellungen speichern.`,gsw_conn_st_verifyRequired:`Govee benötigt für dieses Gerät einen Bestätigungscode. E-Mail prüfen und Code eingeben.`,gsw_conn_st_codeInvalid:`Der Bestätigungscode ist ungültig. Neuen anfordern und erneut versuchen.`,gsw_conn_st_passwordRejected:`E-Mail oder Passwort wurde abgelehnt. Bitte Zugangsdaten prüfen.`,gsw_conn_st_emailNotRegistered:`Diese E-Mail ist bei Govee nicht registriert.`,gsw_conn_st_rateLimited:`Zu viele Versuche. Bitte etwas warten, bevor du es erneut versuchst.`,gsw_conn_st_accountLocked:`Das Konto ist vorübergehend von Govee gesperrt. Später erneut versuchen.`,gsw_conn_st_loginFailed:`Anmeldung fehlgeschlagen. Bitte erneut versuchen.`,gsw_conn_st_mqttNotUp:`Der Echtzeit-Dienst ist noch nicht bereit. Gleich erneut versuchen.`,gsw_conn_st_codeSent:`Ein neuer Bestätigungscode wurde an deine E-Mail geschickt.`,gsw_conn_st_codeRejected:`Govee hat den Bestätigungscode abgelehnt. Neuen anfordern.`,gsw_conn_st_needCredentials:`Zuerst E-Mail und Passwort eingeben.`,gsw_conn_st_throttled:`Bitte kurz warten, bevor du einen weiteren Code anforderst.`,gsw_conn_st_unknownAction:`Unbekannte Aktion.`,gsw_diagIntro:`Gerät wählen und auf den Knopf drücken: Der Adapter erstellt einen Diagnosebericht, und der Browser legt ihn als Datei ab. Diese Datei an ein GitHub-Issue anhängen — die Formulare fragen genau danach.`,gsw_diagDevice:`Gerät`,gsw_diagExport:`Bericht erstellen und herunterladen`,gsw_diagDone:`Gespeichert als %s.`,gsw_diagOpenIssue:`Issue eröffnen`,gsw_diagNoDevices:`Noch keine Geräte. Der Bericht gilt je Gerät — sobald der Adapter eines gefunden hat, erscheint es hier.`,gsw_diagExportFailed:`Der Bericht konnte nicht erstellt werden. Warum, steht im Adapter-Log.`,gsw_diagPrivacy:`Der Bericht ist anonymisiert: Adressen, E-Mail-Adressen und Gerätenamen werden durch gleichbleibende Marken ersetzt, Gerätekennungen gekürzt, Zugangsdaten tauchen gar nicht auf.`,gsw_loadingDevices:`Geräte werden geladen …`,gsw_loadingDevicesSlow:`Lädt noch — dafür muss die Adapter-Instanz laufen.`,gsw_listFailed:`Die Geräteliste konnte nicht geladen werden. Läuft die Instanz?`,gsw_deviceOption:`%s — bisher %s Segmente`,gsw_expertIntro:`Zwei Werkzeuge für den genaueren Blick. Eines auswählen — die Geräteliste wird dann geladen.`,gsw_expertWizard:`Segment-Erkennung`,gsw_expertDiagnostics:`Diagnose`},h={app:e=>({backgroundColor:e.palette.background.default,color:e.palette.text.primary,height:`100%`}),item:{padding:50,width:600}},g=class extends e{constructor(e){let t={...e};super(e,t),this.state={...this.state,data:{},originalData:{},theme:this.createTheme()},a.extendTranslations(p,`en`),a.extendTranslations(m,`de`);let n=(navigator.language||navigator.userLanguage||`en`).toLowerCase();a.setLanguage(n.substring(0,2))}render(){return this.state.loaded?l(n,{injectFirst:!0,children:l(c,{theme:this.state.theme,children:t(r,{sx:h.app,children:[l(`div`,{style:h.item,children:l(d,{socket:this.socket,namespace:`${this.adapterName}.${this.instance}`,values:{apiKey:String(this.state.data.apiKey??``),email:String(this.state.data.goveeEmail??``),password:String(this.state.data.goveePassword??``),code:String(this.state.data.mqttVerificationCode??``)},onChange:(e,t)=>this.setState({data:{...this.state.data,[e]:t}})})}),l(`div`,{style:h.item,children:l(f,{socket:this.socket,namespace:`${this.adapterName}.${this.instance}`})})]})})}):l(n,{injectFirst:!0,children:l(c,{theme:this.state.theme,children:l(o,{themeType:this.state.themeType})})})}};s(),window.adapterName=`govee-smart`;var _=document.getElementById(`root`);_&&u(_).render(l(i.StrictMode,{children:l(g,{socket:{port:8081}})}));
@@ -32,4 +32,4 @@ const __mfImport = (src) =>
32
32
  if (__mfModuleCache.pendingShareLoads) {
33
33
  await Promise.all(__mfModuleCache.pendingShareLoads);
34
34
  }
35
- })().then(() => __mfImport("./index-C-fBGUPX.js"));
35
+ })().then(() => __mfImport("./index-Bnpfk677.js"));
@@ -0,0 +1 @@
1
+ import{t as e}from"./virtual_mf-exposes___mfe_internal__ConfigCustomGoveeSegmentSet__customComponents_js-BjyhzC0c.js";export{e as default};
@@ -1 +1 @@
1
- import{t as e}from"./vite-preload-helper-B7qeedMF.js";import{a as t,r as n}from"./_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.js-Bh78u5iG.js";({...t.global});var r=t.share;t.utils,typeof __VUE_HMR_RUNTIME__>`u`&&(globalThis.__VUE_HMR_RUNTIME__={createRecord(){},rerender(){},reload(){}});var i=`__mf_init__virtual:mf:__mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__mf_v__runtimeInit__mf_v__.js__`,a=globalThis[i];if(!a){let e,t,n=new Promise((n,r)=>{e=n,t=r});a=globalThis[i]={initPromise:n,initResolve:e,initReject:t}}var o=a.initResolve,s=`__mf_module_cache__`;globalThis[s]||={share:{},remote:{}},globalThis[s].share||={},globalThis[s].remote||={};var c=globalThis[s];for(let e of Object.keys(c.share))if(e.startsWith(`default:`)){let t=e.slice(8);c.share[t]===void 0&&(c.share[t]=c.share[e])}else if(!e.includes(`:`)){let t=`default:`+e;c.share[t]===void 0&&(c.share[t]=c.share[e])}var l={},u=Array.isArray(`default`)?`default`:[`default`],d=`default`,f=`ConfigCustomGoveeSegmentSet`,p,m;async function h(e){for(let t=0;;t++)try{return await e()}catch(e){throw e}}var g=Symbol(`mf.originalSharedProvider`),_={emit:e=>e},v=(e,t)=>{if(t!==`version-first`)return e;let n={};for(let[t,r]of Object.entries(e))n[t]=Object.assign({},r,{[g]:r});return n},y=(e,t)=>{if(!t)return;let n=Object.entries(e||{}),r=n.find(([,e])=>e===t);if(r)return{version:r[0],provider:t,registered:!0};if(typeof t.version==`string`&&t.version)return{version:t.version,provider:t,registered:!1};let i=n.filter(([,e])=>e===t||!!(t.from&&(e==null?void 0:e.from)===t.from));if(i.length===1)return{version:i[0][0],provider:t,registered:!1}},b=(e,t,n,i)=>{var a;if(!e||!n)return;let o=Array.isArray(n.scope)?n.scope:[n.scope||`default`],s=v(e,i),c={};for(let e of o)c[e||`default`]={[t]:s};let l=(a=r.getRegisteredShare(c,t,{...n,scope:o,strategy:i},_))==null?void 0:a.shared;return(l==null?void 0:l[g])||l},x=(e,t,n,r)=>{var i;let a=e=>S(e,n),o=Object.fromEntries(Object.entries(e||{}).filter(([,e])=>!a(e)));n!=null&&n.version&&((i=n.shareConfig)==null?void 0:i.import)!==!1&&(o[n.version]||(o[n.version]=n));let s=b(o,t,n,r);return a(s)?void 0:s},S=(e,t)=>e===t||!!(t!=null&&t.from&&(e==null?void 0:e.from)===t.from),C=(e,t,n,r,i,a,o,s,c)=>{var l,u;if(c!==`version-first`||!s)return;let d=t==null||(l=t.options)==null||(l=l.shared)==null?void 0:l[i],f=Array.isArray(d)?d.find(e=>(e==null?void 0:e.version)===a):void 0,p=((s==null?void 0:s.from)===(t==null||(u=t.options)==null?void 0:u.name)?s:void 0)||(S(f,s)?f:t?void 0:s);if(p)return e.some(e=>{var i,a;return e!==t&&(e==null||(i=e.options)==null?void 0:i.name)===(o==null?void 0:o.from)&&(e==null||(a=e.shareScopeMap)==null?void 0:a[r])===n})?p:void 0},w=(e,t,n,r,i,a,o,s,c)=>{let l=a.registered?C(e,t,n,r,i,a.version,a.provider,s,c):void 0,u=l||o;if(u&&!(a.registered&&!S(u,s)))return{provider:u,scopeRootProvider:l}};async function T(){return p||=h(()=>e(()=>import(`./_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1-CdZFIn7L.js`),[],import.meta.url)).catch(e=>{throw p=void 0,e}),p}async function E(){return m||=h(()=>e(()=>import(`./virtualExposes-DcvC5fsO.js`),[],import.meta.url)).then(e=>e.default??e).catch(e=>{throw m=void 0,e}),m}async function D(e={},t=[]){var r,i;let a=(e,t,n,r)=>{let i=(Array.isArray(r)?r[0]:r)||`default`,a=t||!n?e:e+`@`+n,o={canonical:i+`:`+a};return i==="default"&&(o.aliases=[a]),o},s=(e,t)=>{let n=e[t.canonical];if(n!==void 0)return n;let r=t.aliases||[];for(let n of r){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n];if(r!==void 0)return e[t.canonical]=r,r}},p=Symbol.for(`module-federation.shared-cache-listeners`),m=Symbol.for(`module-federation.shared-cache-owners`),g=e=>{let t=e[m];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,m,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},_=(e,t)=>{var n;return(n=e[m])==null?void 0:n[t.canonical]},v=(e,t,n,r)=>{var i;e[t.canonical]=n;let a=t.aliases||[];for(let t of a)Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0});let o=e[m];r===void 0?o&&delete o[t.canonical]:g(e)[t.canonical]=r;let s=(i=e[p])==null?void 0:i[t.canonical];if(s)for(let e of s)e(n);return n},C=Symbol.for(`module-federation.tree-shaking-shared-cache`),E=e=>{let t=e[C];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,C,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},D=(e,t,n,r)=>{if(!Array.isArray(n))return r;let i=[...new Set(n)].sort(),a=E(e),o=a[t.canonical]||=[],s=o.find(e=>e.providedExports.length===i.length&&e.providedExports.every((e,t)=>e===i[t]));return s?s.value=r:o.push({providedExports:i,value:r}),r},O=Symbol.for(`module-federation.tree-shaking-shared-selection-cache`),k=e=>{let t=e[O];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,O,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},A=(e,t,n)=>{var r;let i=s(e,t);return i===void 0?(r=e[O])==null||(r=r[t.canonical])==null?void 0:r[n]:i},j=(e,t,n,r)=>{let i=k(e),a=i[t.canonical]||=Object.create(null);return a[n]=r,r},M=((r=globalThis.__FEDERATION__)==null?void 0:r.__INSTANCES__)||[],N=(i=t.find(e=>e==null?void 0:e.from))==null?void 0:i.from,ee=M.find(t=>{var n,r;return(t==null||(n=t.options)==null?void 0:n.name)===N&&(t==null||(r=t.shareScopeMap)==null?void 0:r.default)===e})||M.find(t=>{var n,r;return(t==null||(n=t.options)==null?void 0:n.name)!==f&&(t==null||(r=t.shareScopeMap)==null?void 0:r.default)===e}),P=Object.create(null);for(let[t,n]of Object.entries(e)){let e=P[t]=Object.create(null);for(let[t,r]of Object.entries(n))e[t]=Object.assign({},r)}let{usedShared:F,usedRemotes:I}=await T();var L=l[d];if(L||=l[d]={from:f},t.indexOf(L)>=0)return;t.push(L);let R=e=>{let t=e;for(let e=0;e<5;e++){let e=t==null?void 0:t.default;if(!e||typeof e!=`object`||Object.keys(e).length===0)break;let n=Object.keys(t).filter(e=>e!=="default").map(e=>t[e]);if(n.length>0&&n.some(e=>e!==void 0))break;t=e}return t},z=[],B=globalThis.window===void 0?await Promise.all([]):[],V=`__mf_vite_runtime_share_load_id__`,te=0,H=new Map,U=new Map,W=n({name:f,remotes:I,shared:F,plugins:[ne(),...z,...B],shareStrategy:`version-first`});W.initShareScopeMap(`default`,e);function ne(){return{name:`vite-share-pin-lifecycle-plugin`,resolveShare(e){var t;let n=(t=e.shareInfo)==null?void 0:t[V],r=n===void 0?void 0:U.get(n);if(!r)return e;let i=e.resolver;return e.resolver=(...e)=>(r.pinned.reapply(),i(...e)),r.pinned.reveal(),e}}}let re=W.sharedHandler.hooks.lifecycle.resolveShare,G=new WeakMap;re.on(e=>{var t;let n=(t=e.shareInfo)==null?void 0:t[V],r=e.resolver;return typeof r==`function`&&(e.resolver=(...e)=>{let t=r(...e),i=t==null?void 0:t.shared;return i&&(typeof i==`object`||typeof i==`function`)&&!G.has(i)&&G.set(i,{from:i.from}),n!==void 0&&i&&H.set(n,i),t}),e});let ie=(e,t,n,r)=>{if(!e||e[t]!==n)return;let i=Object.assign({},r,{version:r.version??t,scope:r.scope??(n==null?void 0:n.scope)??[`default`],strategy:`loaded-first`}),a=r.from;e[t]=i;let o=()=>n===void 0?e[t]===void 0:e[t]===n;return{provider:i,reveal(){return e[t]===i&&(n===void 0?delete e[t]:e[t]=n,!0)},reapply(){return o()?(e[t]=i,!0):!1},release(s,c=!0){return r.from=a,e[t]===i?c?s?(i.from=a,s&&i.lib&&(i.loaded=!0),r.strategy===void 0?delete i.strategy:i.strategy=r.strategy,!0):(n===void 0?delete e[t]:e[t]=n,!1):(n===void 0?delete e[t]:e[t]=n,!0):!c&&o()}}},ae=e=>Object.entries(e||{}).map(([e,t])=>({provider:t,version:e,from:t.from,registered:!0})),oe=(e,t)=>{if(t===void 0)return;let n;for(let r of e){let e=r.provider,i=e.treeShaking||e;if(r.loadedFactory===t||e.lib===t||i.lib===t){if(n)return;n=r}}return n},se=async(e,t,n)=>{let r=++te;U.set(r,{pinned:n});try{let n=await W.loadShare(e,{customShareInfo:{shareConfig:t,[V]:r}});return{factory:n===!1?void 0:n,selectedProvider:H.get(r)}}finally{H.delete(r),U.delete(r)}},K=async(e,t,n,r,i,a,o=!0)=>{let s=a.from,c=ie(n,r,i,a);if(!c)return;let l;try{l=await se(e,t,c)}catch(e){throw c.release(!1),e}let u=l==null?void 0:l.factory;if(u===void 0){c.release(!1);return}let d=ae(n),f=c.provider.treeShaking||c.provider,p=c.provider.lib===u||f.lib===u;if(!o&&p){let e=d.findIndex(e=>e.provider===c.provider);e!==-1&&d.splice(e,1)}!o&&!d.some(e=>e.provider===a)&&d.push({provider:a,version:r,from:s,registered:!1,loadedFactory:p?u:void 0});let m=!o&&l.selectedProvider===c.provider&&p?a:l.selectedProvider;if(m&&!d.some(e=>e.provider===m)){let e=G.get(m),t=typeof m.version==`string`&&m.version?m.version:r;d.push({provider:m,version:t,from:e?e.from:m.from,registered:(n==null?void 0:n[t])===m,loadedFactory:u})}let h=d.find(e=>e.provider===m)??oe(d,u);if(!c.release(!0,(h==null?void 0:h.provider)===c.provider)||!h)return;let g=G.get(h.provider);h.from=h.provider===a?s:g?g.from:h.provider.from,g&&(h.provider.from=g.from);let _=typeof u==`function`?u():u,v=await Promise.resolve(_);if(!(h.registered&&(n==null?void 0:n[h.version])!==h.provider))return{provider:h.provider,selection:h,resolved:v}},q=new Set,J=new Map,ce=async(t,n,r)=>{var i;let o=!!((i=n.shareConfig)!=null&&i.singleton);if(!o&&n.canLiveRebind!==!1)try{let i=x(r,t,n,`version-first`),l=y(r,i);if(!l)return;let{version:u}=l;if(!o&&u!==n.version||!i.lib&&!i.loading&&!(i.loaded&&typeof i.get==`function`))return;let d=a(t,o,n.version,n.scope);if(s(c.share,d)!==void 0)return;let f=e[t],p=f==null?void 0:f[u];if(l.registered&&!S(p,i))return;let m,h=i.lib;if(!h&&i.loading&&(h=await i.loading),!h&&i.loaded&&typeof i.get==`function`&&(h=await i.get()),!h)return;let g=typeof h==`function`?h():h,_=await Promise.resolve(g),b=l.registered?p:i;m={provider:b,selection:{provider:b,version:u,from:i.from,registered:l.registered},resolved:_};let C=m==null?void 0:m.provider,w=m==null?void 0:m.selection;if(!w)return;let T=m==null?void 0:m.resolved;if(T===void 0||s(c.share,d)!==void 0||w.registered&&(f==null?void 0:f[w.version])!==C)return;v(c.share,d,R(T),w.from),q.add(C)}catch(e){console.error(`[Module Federation] Failed to bridge materialized shared module "`+t+`"`,e)}},Y=async(t,n,r,i,o)=>{try{var l,u;let d=a(t,(l=n.shareConfig)==null?void 0:l.singleton,n.version,n.scope),p=s(c.share,d),m=_(c.share,d),h=x(r,t,n,`version-first`),g=h||b(r,t,n,`version-first`)||n,C=y(r,g);if(!C)return;let T=S(g,n),{version:E}=C,D=i==null?void 0:i[E],O=w(M,ee,e,`default`,t,C,h,D,`version-first`);if(!O&&!T)return;let{provider:k,scopeRootProvider:A}=O||{provider:g,scopeRootProvider:void 0};if(!((u=n.shareConfig)!=null&&u.singleton)||n.canLiveRebind===!1||p!==void 0&&m!==f)return;let j=e[t],N=j==null?void 0:j[E];if(C.registered&&!A&&!S(N,k))return;let P=await K(t,n.shareConfig,j,E,N,k,C.registered&&!T),F=P==null?void 0:P.provider,I=P==null?void 0:P.selection;if(!I||S(F,n)||o&&(o.version!==I.version||!S({from:I.from},o.provider))||q.has(F))return;let L=P==null?void 0:P.resolved;if(L===void 0)return;let z=s(c.share,d),B=_(c.share,d);if(z!==void 0&&B!==f||I.registered&&(j==null?void 0:j[I.version])!==F)return;o||J.set(t,{version:I.version,provider:{from:I.from}}),q.add(F);let V=R(L);v(c.share,d,V,I.from)}catch(e){console.error(`[Module Federation] Failed to bridge external shared module "`+t+`"`,e)}};for(let[e,t]of Object.entries(F))t.treeShaking||await ce(e,t,P[e]);for(let[e,t]of Object.entries(F)){var X;if(t.treeShaking)continue;let n=a(e,(X=t.shareConfig)==null?void 0:X.singleton,t.version,t.scope);if(s(c.share,n)!==void 0)continue;let r=a(e,!0,t.version,t.scope),i=s(c.share,r);i!==void 0&&v(c.share,n,i,_(c.share,r))}let Z=[`react`,`react/jsx-runtime`,`react-dom`,`react-dom/client`,`@mui/material`,`@mui/icons-material`,`@iobroker/gui-components`,`@iobroker/json-config`].filter(e=>F[e]!==void 0),Q=e=>e.startsWith(`@`)?e.split(`/`).slice(0,2).join(`/`):e.split(`/`)[0];for(let e of Object.keys(F)){if(Z.includes(e))continue;let t=Q(e),n=Z.indexOf(t);if(n===-1){Z.push(e);continue}let r=n;for(;r>0&&Q(Z[r-1])===t&&Z[r-1]!==t;)r--;Z.splice(r,0,e)}var le=async e=>{for(let r of e){var t,n;let e=F[r],i=a(r,(t=e.shareConfig)==null?void 0:t.singleton,e.version,e.scope);if(((n=e.shareConfig)==null?void 0:n.import)===!1||e.treeShaking||s(c.share,i)!==void 0)continue;let o=a(r,!0,e.version,e.scope),l=s(c.share,o);if(l!==void 0){v(c.share,i,l,_(c.share,o));continue}let u=await e.get(),d=typeof u==`function`?u():u,p=await Promise.resolve(d),m=(e=>{let t=e;for(let e=0;e<5;e++){let e=t==null?void 0:t.default;if(!e||typeof e!=`object`||Object.keys(e).length===0)break;let n=Object.keys(t).filter(e=>e!=="default").map(e=>t[e]);if(n.length>0&&n.some(e=>e!==void 0))break;t=e}return t})(p),h=m===p?{...p}:m;h.__esModule!==!0&&Object.defineProperty(h,"__esModule",{value:!0,enumerable:!1}),v(c.share,i,h,f)}};let ue=e=>{var t,n;let r=F[e];if(!r.treeShaking&&((t=r.shareConfig)==null?void 0:t.import)!==!1)return!1;let i=a(e,(n=r.shareConfig)==null?void 0:n.singleton,r.version,r.scope);return r.treeShaking?A(c.share,i,f)===void 0&&s(c.share,i)===void 0:s(c.share,i)===void 0},$=Z.findIndex(e=>{var t,n,r;let i=F[e],o=a(e,(t=i.shareConfig)==null?void 0:t.singleton,i.version,i.scope);return(i.treeShaking?A(c.share,o,f)??s(c.share,o):s(c.share,o))===void 0?i.treeShaking||((n=i.shareConfig)==null?void 0:n.import)===!1?!0:!((r=i.shareConfig)!=null&&r.singleton)||typeof x!=`function`?!1:!!x(P[e],e,i,`version-first`):!1}),de=$===-1?Z:Z.slice(0,$);var fe=$===-1?[]:Z.slice($);await le(de);try{await h(async()=>{await Promise.all(await W.initializeSharing(`default`,{strategy:`version-first`,from:`build`,initScope:t}))})}catch(e){console.error(`[Module Federation]`,e)}for(let[t,n]of Object.entries(F))n.treeShaking||await Y(t,n,e[t],P[t],void 0);try{var pe;let e=(pe=globalThis.__FEDERATION__)==null?void 0:pe.__SHARE__,t=Object.create(null);if(e)for(let[,n]of Object.entries(e))for(let e of u){let r=n==null?void 0:n[e];if(r)for(let[e,n]of Object.entries(r)){let r=F==null?void 0:F[e],i=P[e],a=J.get(e);if(!r||!i||!a||r.treeShaking)continue;let o=t[e]||(t[e]=Object.create(null));for(let[e,t]of Object.entries(n)){if(!t.lib||a.version!==e||!S(t,a.provider))continue;let n=i[e];(t===n||n!=null&&n.from&&t.from===n.from)&&(t===r||r.from&&t.from===r.from||o[e]===void 0&&(o[e]=t))}}}for(let[e,n]of Object.entries(t))await Y(e,F[e],n,P[e],J.get(e))}catch(e){console.error(`[Module Federation] Failed to bridge external shared modules`,e)}let me=async()=>{},he=async(t,n)=>{var r,i;let o=a(t,(r=n.shareConfig)==null?void 0:r.singleton,n.version,n.scope),l=n.treeShaking?A(c.share,o,f):s(c.share,o);if(((i=n.shareConfig)==null?void 0:i.import)!==!1||l!==void 0)return;let u=e=>{let t=e;for(let e=0;e<5;e++){let e=t==null?void 0:t.default;if(!e||typeof e!=`object`||Object.keys(e).length===0)break;let n=Object.keys(t).filter(e=>e!=="default").map(e=>t[e]);if(n.length>0&&n.some(e=>e!==void 0))break;t=e}return t},d=e==null?void 0:e[t],p=b(d,t,n,`version-first`)||n,m=y(d,p);if(!m)return;let{version:h}=m,g=d==null?void 0:d[h],_=await K(t,n.shareConfig,d,h,g,p,m.registered&&!S(p,n)),x=_==null?void 0:_.selection,C=_==null?void 0:_.provider,w=_==null?void 0:_.resolved;if(!x||S(C,n)||w===void 0||(n.treeShaking?A(c.share,o,f):s(c.share,o))!==void 0||x.registered&&(d==null?void 0:d[x.version])!==C)return;let T=u(w);if(n.treeShaking){let e=n.treeShaking.providedExports??n.treeShaking.usedExports??[];D(c.share,o,e,T),j(c.share,o,f,T)}else v(c.share,o,T,x.from)};for(let e of fe){let t=F[e];if(ue(e)){var ge;t.treeShaking?await me(e,t):((ge=t.shareConfig)==null?void 0:ge.import)===!1&&await he(e,t)}if(ue(e))break;await le([e])}return o(W),W}async function O(e){let t=await E();if(!(e in t))throw Error(`[Module Federation] Module ${e} does not exist in container.`);return c.pendingShareLoads&&await Promise.all(c.pendingShareLoads),t[e]().then(e=>()=>e)}export{D as n,O as t};
1
+ import{t as e}from"./vite-preload-helper-B7qeedMF.js";import{a as t,r as n}from"./_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.js-Bh78u5iG.js";({...t.global});var r=t.share;t.utils,typeof __VUE_HMR_RUNTIME__>`u`&&(globalThis.__VUE_HMR_RUNTIME__={createRecord(){},rerender(){},reload(){}});var i=`__mf_init__virtual:mf:__mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__mf_v__runtimeInit__mf_v__.js__`,a=globalThis[i];if(!a){let e,t,n=new Promise((n,r)=>{e=n,t=r});a=globalThis[i]={initPromise:n,initResolve:e,initReject:t}}var o=a.initResolve,s=`__mf_module_cache__`;globalThis[s]||={share:{},remote:{}},globalThis[s].share||={},globalThis[s].remote||={};var c=globalThis[s];for(let e of Object.keys(c.share))if(e.startsWith(`default:`)){let t=e.slice(8);c.share[t]===void 0&&(c.share[t]=c.share[e])}else if(!e.includes(`:`)){let t=`default:`+e;c.share[t]===void 0&&(c.share[t]=c.share[e])}var l={},u=Array.isArray(`default`)?`default`:[`default`],d=`default`,f=`ConfigCustomGoveeSegmentSet`,p,m;async function h(e){for(let t=0;;t++)try{return await e()}catch(e){throw e}}var g=Symbol(`mf.originalSharedProvider`),_={emit:e=>e},v=(e,t)=>{if(t!==`version-first`)return e;let n={};for(let[t,r]of Object.entries(e))n[t]=Object.assign({},r,{[g]:r});return n},y=(e,t)=>{if(!t)return;let n=Object.entries(e||{}),r=n.find(([,e])=>e===t);if(r)return{version:r[0],provider:t,registered:!0};if(typeof t.version==`string`&&t.version)return{version:t.version,provider:t,registered:!1};let i=n.filter(([,e])=>e===t||!!(t.from&&(e==null?void 0:e.from)===t.from));if(i.length===1)return{version:i[0][0],provider:t,registered:!1}},b=(e,t,n,i)=>{var a;if(!e||!n)return;let o=Array.isArray(n.scope)?n.scope:[n.scope||`default`],s=v(e,i),c={};for(let e of o)c[e||`default`]={[t]:s};let l=(a=r.getRegisteredShare(c,t,{...n,scope:o,strategy:i},_))==null?void 0:a.shared;return(l==null?void 0:l[g])||l},x=(e,t,n,r)=>{var i;let a=e=>S(e,n),o=Object.fromEntries(Object.entries(e||{}).filter(([,e])=>!a(e)));n!=null&&n.version&&((i=n.shareConfig)==null?void 0:i.import)!==!1&&(o[n.version]||(o[n.version]=n));let s=b(o,t,n,r);return a(s)?void 0:s},S=(e,t)=>e===t||!!(t!=null&&t.from&&(e==null?void 0:e.from)===t.from),C=(e,t,n,r,i,a,o,s,c)=>{var l,u;if(c!==`version-first`||!s)return;let d=t==null||(l=t.options)==null||(l=l.shared)==null?void 0:l[i],f=Array.isArray(d)?d.find(e=>(e==null?void 0:e.version)===a):void 0,p=((s==null?void 0:s.from)===(t==null||(u=t.options)==null?void 0:u.name)?s:void 0)||(S(f,s)?f:t?void 0:s);if(p)return e.some(e=>{var i,a;return e!==t&&(e==null||(i=e.options)==null?void 0:i.name)===(o==null?void 0:o.from)&&(e==null||(a=e.shareScopeMap)==null?void 0:a[r])===n})?p:void 0},w=(e,t,n,r,i,a,o,s,c)=>{let l=a.registered?C(e,t,n,r,i,a.version,a.provider,s,c):void 0,u=l||o;if(u&&!(a.registered&&!S(u,s)))return{provider:u,scopeRootProvider:l}};async function T(){return p||=h(()=>e(()=>import(`./_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1-CdZFIn7L.js`),[],import.meta.url)).catch(e=>{throw p=void 0,e}),p}async function E(){return m||=h(()=>e(()=>import(`./virtualExposes-ChPmNKIy.js`),[],import.meta.url)).then(e=>e.default??e).catch(e=>{throw m=void 0,e}),m}async function D(e={},t=[]){var r,i;let a=(e,t,n,r)=>{let i=(Array.isArray(r)?r[0]:r)||`default`,a=t||!n?e:e+`@`+n,o={canonical:i+`:`+a};return i==="default"&&(o.aliases=[a]),o},s=(e,t)=>{let n=e[t.canonical];if(n!==void 0)return n;let r=t.aliases||[];for(let n of r){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n];if(r!==void 0)return e[t.canonical]=r,r}},p=Symbol.for(`module-federation.shared-cache-listeners`),m=Symbol.for(`module-federation.shared-cache-owners`),g=e=>{let t=e[m];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,m,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},_=(e,t)=>{var n;return(n=e[m])==null?void 0:n[t.canonical]},v=(e,t,n,r)=>{var i;e[t.canonical]=n;let a=t.aliases||[];for(let t of a)Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0});let o=e[m];r===void 0?o&&delete o[t.canonical]:g(e)[t.canonical]=r;let s=(i=e[p])==null?void 0:i[t.canonical];if(s)for(let e of s)e(n);return n},C=Symbol.for(`module-federation.tree-shaking-shared-cache`),E=e=>{let t=e[C];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,C,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},D=(e,t,n,r)=>{if(!Array.isArray(n))return r;let i=[...new Set(n)].sort(),a=E(e),o=a[t.canonical]||=[],s=o.find(e=>e.providedExports.length===i.length&&e.providedExports.every((e,t)=>e===i[t]));return s?s.value=r:o.push({providedExports:i,value:r}),r},O=Symbol.for(`module-federation.tree-shaking-shared-selection-cache`),k=e=>{let t=e[O];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,O,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},A=(e,t,n)=>{var r;let i=s(e,t);return i===void 0?(r=e[O])==null||(r=r[t.canonical])==null?void 0:r[n]:i},j=(e,t,n,r)=>{let i=k(e),a=i[t.canonical]||=Object.create(null);return a[n]=r,r},M=((r=globalThis.__FEDERATION__)==null?void 0:r.__INSTANCES__)||[],N=(i=t.find(e=>e==null?void 0:e.from))==null?void 0:i.from,ee=M.find(t=>{var n,r;return(t==null||(n=t.options)==null?void 0:n.name)===N&&(t==null||(r=t.shareScopeMap)==null?void 0:r.default)===e})||M.find(t=>{var n,r;return(t==null||(n=t.options)==null?void 0:n.name)!==f&&(t==null||(r=t.shareScopeMap)==null?void 0:r.default)===e}),P=Object.create(null);for(let[t,n]of Object.entries(e)){let e=P[t]=Object.create(null);for(let[t,r]of Object.entries(n))e[t]=Object.assign({},r)}let{usedShared:F,usedRemotes:I}=await T();var L=l[d];if(L||=l[d]={from:f},t.indexOf(L)>=0)return;t.push(L);let R=e=>{let t=e;for(let e=0;e<5;e++){let e=t==null?void 0:t.default;if(!e||typeof e!=`object`||Object.keys(e).length===0)break;let n=Object.keys(t).filter(e=>e!=="default").map(e=>t[e]);if(n.length>0&&n.some(e=>e!==void 0))break;t=e}return t},z=[],B=globalThis.window===void 0?await Promise.all([]):[],V=`__mf_vite_runtime_share_load_id__`,te=0,H=new Map,U=new Map,W=n({name:f,remotes:I,shared:F,plugins:[ne(),...z,...B],shareStrategy:`version-first`});W.initShareScopeMap(`default`,e);function ne(){return{name:`vite-share-pin-lifecycle-plugin`,resolveShare(e){var t;let n=(t=e.shareInfo)==null?void 0:t[V],r=n===void 0?void 0:U.get(n);if(!r)return e;let i=e.resolver;return e.resolver=(...e)=>(r.pinned.reapply(),i(...e)),r.pinned.reveal(),e}}}let re=W.sharedHandler.hooks.lifecycle.resolveShare,G=new WeakMap;re.on(e=>{var t;let n=(t=e.shareInfo)==null?void 0:t[V],r=e.resolver;return typeof r==`function`&&(e.resolver=(...e)=>{let t=r(...e),i=t==null?void 0:t.shared;return i&&(typeof i==`object`||typeof i==`function`)&&!G.has(i)&&G.set(i,{from:i.from}),n!==void 0&&i&&H.set(n,i),t}),e});let ie=(e,t,n,r)=>{if(!e||e[t]!==n)return;let i=Object.assign({},r,{version:r.version??t,scope:r.scope??(n==null?void 0:n.scope)??[`default`],strategy:`loaded-first`}),a=r.from;e[t]=i;let o=()=>n===void 0?e[t]===void 0:e[t]===n;return{provider:i,reveal(){return e[t]===i&&(n===void 0?delete e[t]:e[t]=n,!0)},reapply(){return o()?(e[t]=i,!0):!1},release(s,c=!0){return r.from=a,e[t]===i?c?s?(i.from=a,s&&i.lib&&(i.loaded=!0),r.strategy===void 0?delete i.strategy:i.strategy=r.strategy,!0):(n===void 0?delete e[t]:e[t]=n,!1):(n===void 0?delete e[t]:e[t]=n,!0):!c&&o()}}},ae=e=>Object.entries(e||{}).map(([e,t])=>({provider:t,version:e,from:t.from,registered:!0})),oe=(e,t)=>{if(t===void 0)return;let n;for(let r of e){let e=r.provider,i=e.treeShaking||e;if(r.loadedFactory===t||e.lib===t||i.lib===t){if(n)return;n=r}}return n},se=async(e,t,n)=>{let r=++te;U.set(r,{pinned:n});try{let n=await W.loadShare(e,{customShareInfo:{shareConfig:t,[V]:r}});return{factory:n===!1?void 0:n,selectedProvider:H.get(r)}}finally{H.delete(r),U.delete(r)}},K=async(e,t,n,r,i,a,o=!0)=>{let s=a.from,c=ie(n,r,i,a);if(!c)return;let l;try{l=await se(e,t,c)}catch(e){throw c.release(!1),e}let u=l==null?void 0:l.factory;if(u===void 0){c.release(!1);return}let d=ae(n),f=c.provider.treeShaking||c.provider,p=c.provider.lib===u||f.lib===u;if(!o&&p){let e=d.findIndex(e=>e.provider===c.provider);e!==-1&&d.splice(e,1)}!o&&!d.some(e=>e.provider===a)&&d.push({provider:a,version:r,from:s,registered:!1,loadedFactory:p?u:void 0});let m=!o&&l.selectedProvider===c.provider&&p?a:l.selectedProvider;if(m&&!d.some(e=>e.provider===m)){let e=G.get(m),t=typeof m.version==`string`&&m.version?m.version:r;d.push({provider:m,version:t,from:e?e.from:m.from,registered:(n==null?void 0:n[t])===m,loadedFactory:u})}let h=d.find(e=>e.provider===m)??oe(d,u);if(!c.release(!0,(h==null?void 0:h.provider)===c.provider)||!h)return;let g=G.get(h.provider);h.from=h.provider===a?s:g?g.from:h.provider.from,g&&(h.provider.from=g.from);let _=typeof u==`function`?u():u,v=await Promise.resolve(_);if(!(h.registered&&(n==null?void 0:n[h.version])!==h.provider))return{provider:h.provider,selection:h,resolved:v}},q=new Set,J=new Map,ce=async(t,n,r)=>{var i;let o=!!((i=n.shareConfig)!=null&&i.singleton);if(!o&&n.canLiveRebind!==!1)try{let i=x(r,t,n,`version-first`),l=y(r,i);if(!l)return;let{version:u}=l;if(!o&&u!==n.version||!i.lib&&!i.loading&&!(i.loaded&&typeof i.get==`function`))return;let d=a(t,o,n.version,n.scope);if(s(c.share,d)!==void 0)return;let f=e[t],p=f==null?void 0:f[u];if(l.registered&&!S(p,i))return;let m,h=i.lib;if(!h&&i.loading&&(h=await i.loading),!h&&i.loaded&&typeof i.get==`function`&&(h=await i.get()),!h)return;let g=typeof h==`function`?h():h,_=await Promise.resolve(g),b=l.registered?p:i;m={provider:b,selection:{provider:b,version:u,from:i.from,registered:l.registered},resolved:_};let C=m==null?void 0:m.provider,w=m==null?void 0:m.selection;if(!w)return;let T=m==null?void 0:m.resolved;if(T===void 0||s(c.share,d)!==void 0||w.registered&&(f==null?void 0:f[w.version])!==C)return;v(c.share,d,R(T),w.from),q.add(C)}catch(e){console.error(`[Module Federation] Failed to bridge materialized shared module "`+t+`"`,e)}},Y=async(t,n,r,i,o)=>{try{var l,u;let d=a(t,(l=n.shareConfig)==null?void 0:l.singleton,n.version,n.scope),p=s(c.share,d),m=_(c.share,d),h=x(r,t,n,`version-first`),g=h||b(r,t,n,`version-first`)||n,C=y(r,g);if(!C)return;let T=S(g,n),{version:E}=C,D=i==null?void 0:i[E],O=w(M,ee,e,`default`,t,C,h,D,`version-first`);if(!O&&!T)return;let{provider:k,scopeRootProvider:A}=O||{provider:g,scopeRootProvider:void 0};if(!((u=n.shareConfig)!=null&&u.singleton)||n.canLiveRebind===!1||p!==void 0&&m!==f)return;let j=e[t],N=j==null?void 0:j[E];if(C.registered&&!A&&!S(N,k))return;let P=await K(t,n.shareConfig,j,E,N,k,C.registered&&!T),F=P==null?void 0:P.provider,I=P==null?void 0:P.selection;if(!I||S(F,n)||o&&(o.version!==I.version||!S({from:I.from},o.provider))||q.has(F))return;let L=P==null?void 0:P.resolved;if(L===void 0)return;let z=s(c.share,d),B=_(c.share,d);if(z!==void 0&&B!==f||I.registered&&(j==null?void 0:j[I.version])!==F)return;o||J.set(t,{version:I.version,provider:{from:I.from}}),q.add(F);let V=R(L);v(c.share,d,V,I.from)}catch(e){console.error(`[Module Federation] Failed to bridge external shared module "`+t+`"`,e)}};for(let[e,t]of Object.entries(F))t.treeShaking||await ce(e,t,P[e]);for(let[e,t]of Object.entries(F)){var X;if(t.treeShaking)continue;let n=a(e,(X=t.shareConfig)==null?void 0:X.singleton,t.version,t.scope);if(s(c.share,n)!==void 0)continue;let r=a(e,!0,t.version,t.scope),i=s(c.share,r);i!==void 0&&v(c.share,n,i,_(c.share,r))}let Z=[`react`,`react/jsx-runtime`,`react-dom`,`react-dom/client`,`@mui/material`,`@mui/icons-material`,`@iobroker/gui-components`,`@iobroker/json-config`].filter(e=>F[e]!==void 0),Q=e=>e.startsWith(`@`)?e.split(`/`).slice(0,2).join(`/`):e.split(`/`)[0];for(let e of Object.keys(F)){if(Z.includes(e))continue;let t=Q(e),n=Z.indexOf(t);if(n===-1){Z.push(e);continue}let r=n;for(;r>0&&Q(Z[r-1])===t&&Z[r-1]!==t;)r--;Z.splice(r,0,e)}var le=async e=>{for(let r of e){var t,n;let e=F[r],i=a(r,(t=e.shareConfig)==null?void 0:t.singleton,e.version,e.scope);if(((n=e.shareConfig)==null?void 0:n.import)===!1||e.treeShaking||s(c.share,i)!==void 0)continue;let o=a(r,!0,e.version,e.scope),l=s(c.share,o);if(l!==void 0){v(c.share,i,l,_(c.share,o));continue}let u=await e.get(),d=typeof u==`function`?u():u,p=await Promise.resolve(d),m=(e=>{let t=e;for(let e=0;e<5;e++){let e=t==null?void 0:t.default;if(!e||typeof e!=`object`||Object.keys(e).length===0)break;let n=Object.keys(t).filter(e=>e!=="default").map(e=>t[e]);if(n.length>0&&n.some(e=>e!==void 0))break;t=e}return t})(p),h=m===p?{...p}:m;h.__esModule!==!0&&Object.defineProperty(h,"__esModule",{value:!0,enumerable:!1}),v(c.share,i,h,f)}};let ue=e=>{var t,n;let r=F[e];if(!r.treeShaking&&((t=r.shareConfig)==null?void 0:t.import)!==!1)return!1;let i=a(e,(n=r.shareConfig)==null?void 0:n.singleton,r.version,r.scope);return r.treeShaking?A(c.share,i,f)===void 0&&s(c.share,i)===void 0:s(c.share,i)===void 0},$=Z.findIndex(e=>{var t,n,r;let i=F[e],o=a(e,(t=i.shareConfig)==null?void 0:t.singleton,i.version,i.scope);return(i.treeShaking?A(c.share,o,f)??s(c.share,o):s(c.share,o))===void 0?i.treeShaking||((n=i.shareConfig)==null?void 0:n.import)===!1?!0:!((r=i.shareConfig)!=null&&r.singleton)||typeof x!=`function`?!1:!!x(P[e],e,i,`version-first`):!1}),de=$===-1?Z:Z.slice(0,$);var fe=$===-1?[]:Z.slice($);await le(de);try{await h(async()=>{await Promise.all(await W.initializeSharing(`default`,{strategy:`version-first`,from:`build`,initScope:t}))})}catch(e){console.error(`[Module Federation]`,e)}for(let[t,n]of Object.entries(F))n.treeShaking||await Y(t,n,e[t],P[t],void 0);try{var pe;let e=(pe=globalThis.__FEDERATION__)==null?void 0:pe.__SHARE__,t=Object.create(null);if(e)for(let[,n]of Object.entries(e))for(let e of u){let r=n==null?void 0:n[e];if(r)for(let[e,n]of Object.entries(r)){let r=F==null?void 0:F[e],i=P[e],a=J.get(e);if(!r||!i||!a||r.treeShaking)continue;let o=t[e]||(t[e]=Object.create(null));for(let[e,t]of Object.entries(n)){if(!t.lib||a.version!==e||!S(t,a.provider))continue;let n=i[e];(t===n||n!=null&&n.from&&t.from===n.from)&&(t===r||r.from&&t.from===r.from||o[e]===void 0&&(o[e]=t))}}}for(let[e,n]of Object.entries(t))await Y(e,F[e],n,P[e],J.get(e))}catch(e){console.error(`[Module Federation] Failed to bridge external shared modules`,e)}let me=async()=>{},he=async(t,n)=>{var r,i;let o=a(t,(r=n.shareConfig)==null?void 0:r.singleton,n.version,n.scope),l=n.treeShaking?A(c.share,o,f):s(c.share,o);if(((i=n.shareConfig)==null?void 0:i.import)!==!1||l!==void 0)return;let u=e=>{let t=e;for(let e=0;e<5;e++){let e=t==null?void 0:t.default;if(!e||typeof e!=`object`||Object.keys(e).length===0)break;let n=Object.keys(t).filter(e=>e!=="default").map(e=>t[e]);if(n.length>0&&n.some(e=>e!==void 0))break;t=e}return t},d=e==null?void 0:e[t],p=b(d,t,n,`version-first`)||n,m=y(d,p);if(!m)return;let{version:h}=m,g=d==null?void 0:d[h],_=await K(t,n.shareConfig,d,h,g,p,m.registered&&!S(p,n)),x=_==null?void 0:_.selection,C=_==null?void 0:_.provider,w=_==null?void 0:_.resolved;if(!x||S(C,n)||w===void 0||(n.treeShaking?A(c.share,o,f):s(c.share,o))!==void 0||x.registered&&(d==null?void 0:d[x.version])!==C)return;let T=u(w);if(n.treeShaking){let e=n.treeShaking.providedExports??n.treeShaking.usedExports??[];D(c.share,o,e,T),j(c.share,o,f,T)}else v(c.share,o,T,x.from)};for(let e of fe){let t=F[e];if(ue(e)){var ge;t.treeShaking?await me(e,t):((ge=t.shareConfig)==null?void 0:ge.import)===!1&&await he(e,t)}if(ue(e))break;await le([e])}return o(W),W}async function O(e){let t=await E();if(!(e in t))throw Error(`[Module Federation] Module ${e} does not exist in container.`);return c.pendingShareLoads&&await Promise.all(c.pendingShareLoads),t[e]().then(e=>()=>e)}export{D as n,O as t};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Components-DWq4U-Jh.js","./ExpertPanel-DoLtERNi.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./vite-preload-helper-B7qeedMF.js";var t={"./Components":async()=>{let t=await e(()=>import(`./Components-DWq4U-Jh.js`),__vite__mapDeps([0,1]),import.meta.url),n={};return Object.assign(n,t),Object.defineProperty(n,"__esModule",{value:!0,enumerable:!1}),n}};export{t as default};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Components-88o3n-Cm.js","./ExpertPanel-BnVeJBS6.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./vite-preload-helper-B7qeedMF.js";var t={},n=new Set,r=Promise.resolve();async function i(e){let t=r.then(e,e);return r=t.then(()=>void 0,()=>void 0),t}async function a(e){if(typeof document>`u`)return;let r=t[e]||[];await Promise.all(r.map(e=>{let t=new URL(e,import.meta.url).href;return n.has(t)||(n.add(t),document.querySelector(`link[rel="stylesheet"][href="${t}"]`))?Promise.resolve():new Promise((e,n)=>{let r=document.createElement(`link`);r.rel=`stylesheet`,r.href=t,r.onload=()=>e(),r.onerror=()=>n(Error(`[Module Federation] Failed to load CSS asset: ${t}`)),document.head.appendChild(r)})}))}var o={"./Components":async()=>{await a(`./Components`),await Promise.all([]);let t=await i(()=>e(()=>import(`./Components-88o3n-Cm.js`),__vite__mapDeps([0,1]),import.meta.url)),n=t&&t.__mf_remote_dependency_pending;n&&typeof n.then==`function`&&await n;let r={};return Object.assign(r,t),Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),r}};export{o as t};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Components-DWq4U-Jh.js","./ExpertPanel-DoLtERNi.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./vite-preload-helper-B7qeedMF.js";var t={},n=new Set,r=Promise.resolve();async function i(e){let t=r.then(e,e);return r=t.then(()=>void 0,()=>void 0),t}async function a(e){if(typeof document>`u`)return;let r=t[e]||[];await Promise.all(r.map(e=>{let t=new URL(e,import.meta.url).href;return n.has(t)||(n.add(t),document.querySelector(`link[rel="stylesheet"][href="${t}"]`))?Promise.resolve():new Promise((e,n)=>{let r=document.createElement(`link`);r.rel=`stylesheet`,r.href=t,r.onload=()=>e(),r.onerror=()=>n(Error(`[Module Federation] Failed to load CSS asset: ${t}`)),document.head.appendChild(r)})}))}var o={"./Components":async()=>{await a(`./Components`),await Promise.all([]);let t=await i(()=>e(()=>import(`./Components-DWq4U-Jh.js`),__vite__mapDeps([0,1]),import.meta.url)),n=t&&t.__mf_remote_dependency_pending;n&&typeof n.then==`function`&&await n;let r={};return Object.assign(r,t),Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),r}};export{o as t};
@@ -1 +1 @@
1
- import{n as e,t}from"./assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__ConfigCustomGoveeSegmentSet__customComponents_js-TmDuENES.js";export{t as get,e as init};
1
+ import{n as e,t}from"./assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__ConfigCustomGoveeSegmentSet__customComponents_js-8hDFWCL-.js";export{t as get,e as init};
@@ -1 +1 @@
1
- {"id":"ConfigCustomGoveeSegmentSet","name":"ConfigCustomGoveeSegmentSet","metaData":{"name":"ConfigCustomGoveeSegmentSet","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"ConfigCustomGoveeSegmentSet"},"remoteEntry":{"name":"customComponents.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"customComponents.ssr.js","path":"","type":"module"},"types":{"path":"","name":"","zip":"@mf-types.zip","api":"@mf-types.d.ts"},"globalName":"ConfigCustomGoveeSegmentSet","pluginVersion":"0.2.5","publicPath":"auto"},"shared":[{"id":"ConfigCustomGoveeSegmentSet:@iobroker/gui-components","name":"@iobroker/gui-components","version":"10.0.12","singleton":true,"requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__prebuild___mf_0_iobroker_mf_1_gui_mf_2_components__prebuild__-DXxYvebj.js"]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomGoveeSegmentSet:@iobroker/json-config","name":"@iobroker/json-config","version":"9.0.16","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/lib-D_TOKWDo.js"],"sync":["assets/_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.js-Bh78u5iG.js"]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomGoveeSegmentSet:@mui/icons-material","name":"@mui/icons-material","version":"9.2.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BqaV2gc_.js"]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomGoveeSegmentSet:@mui/material","name":"@mui/material","version":"9.2.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BqaV2gc_.js"]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomGoveeSegmentSet:react","name":"react","version":"19.2.8","singleton":true,"requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BqaV2gc_.js"]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomGoveeSegmentSet:react-dom","name":"react-dom","version":"19.2.8","singleton":true,"requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BqaV2gc_.js"]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomGoveeSegmentSet:react/jsx-runtime","name":"react/jsx-runtime","version":"19.2.8","singleton":true,"requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BqaV2gc_.js"]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomGoveeSegmentSet:react-dom/client","name":"react-dom/client","version":"19.2.8","singleton":true,"requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-ld5_knuQ.js"]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[{"id":"ConfigCustomGoveeSegmentSet:Components","name":"Components","assets":{"js":{"async":["assets/lib-D_TOKWDo.js"],"sync":["assets/Components-88o3n-Cm.js"]},"css":{"async":[],"sync":[]}},"path":"./Components"}]}
1
+ {"id":"ConfigCustomGoveeSegmentSet","name":"ConfigCustomGoveeSegmentSet","metaData":{"name":"ConfigCustomGoveeSegmentSet","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"ConfigCustomGoveeSegmentSet"},"remoteEntry":{"name":"customComponents.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"customComponents.ssr.js","path":"","type":"module"},"types":{"path":"","name":"","zip":"@mf-types.zip","api":"@mf-types.d.ts"},"globalName":"ConfigCustomGoveeSegmentSet","pluginVersion":"0.2.5","publicPath":"auto"},"shared":[{"id":"ConfigCustomGoveeSegmentSet:@iobroker/gui-components","name":"@iobroker/gui-components","version":"10.0.12","singleton":true,"requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__prebuild___mf_0_iobroker_mf_1_gui_mf_2_components__prebuild__-DXxYvebj.js"]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomGoveeSegmentSet:@iobroker/json-config","name":"@iobroker/json-config","version":"9.0.16","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/lib-D_TOKWDo.js"],"sync":["assets/_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.js-Bh78u5iG.js"]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomGoveeSegmentSet:@mui/icons-material","name":"@mui/icons-material","version":"9.2.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BqaV2gc_.js"]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomGoveeSegmentSet:@mui/material","name":"@mui/material","version":"9.2.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BqaV2gc_.js"]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomGoveeSegmentSet:react","name":"react","version":"19.2.8","singleton":true,"requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BqaV2gc_.js"]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomGoveeSegmentSet:react-dom","name":"react-dom","version":"19.2.8","singleton":true,"requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BqaV2gc_.js"]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomGoveeSegmentSet:react/jsx-runtime","name":"react/jsx-runtime","version":"19.2.8","singleton":true,"requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BqaV2gc_.js"]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomGoveeSegmentSet:react-dom/client","name":"react-dom/client","version":"19.2.8","singleton":true,"requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ConfigCustomGoveeSegmentSet__mf_owner__1__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-ld5_knuQ.js"]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[{"id":"ConfigCustomGoveeSegmentSet:Components","name":"Components","assets":{"js":{"async":["assets/lib-D_TOKWDo.js"],"sync":["assets/Components-DWq4U-Jh.js"]},"css":{"async":[],"sync":[]}},"path":"./Components"}]}
@@ -72,8 +72,8 @@
72
72
  "musicAutoColor": "Musik Auto-Farbe",
73
73
  "musicMode": "Musik-Modus",
74
74
  "musicSensitivity": "Musik-Empfindlichkeit",
75
- "networkInterfaceLabel": "Netzwerk-Interface",
76
- "networkInterfaceTooltip": "Netzwerk-Interface für LAN-Discovery und -Steuerung. Standard (0.0.0.0 = alle Interfaces) beibehalten, außer dieser Host hat mehrere Netzwerk-Interfaces.",
75
+ "bindLabel": "Netzwerk-Interface",
76
+ "bindTooltip": "Netzwerk-Interface für LAN-Discovery und -Steuerung. Standard (0.0.0.0 = alle Interfaces) beibehalten, außer dieser Host hat mehrere Netzwerk-Interfaces.",
77
77
  "online": "Online",
78
78
  "power": "Ein/Aus",
79
79
  "refreshCloud": "Cloud-Daten aktualisieren",
@@ -114,14 +114,12 @@
114
114
  "infoCloudConnected": "Cloud-API verbunden",
115
115
  "infoOpenapiMqttConnected": "Govee OpenAPI MQTT verbunden",
116
116
  "devicesFolder": "Geräte",
117
- "localSnapshotsFolder": "Vom Benutzer gespeicherte lokale Snapshots",
118
117
  "infoManualSyncDevices": "Geräte manuell synchronisieren",
119
118
  "infoManualSyncDevicesDesc": "Auf true setzen, um die Geräteliste jetzt mit dem Govee-Konto abzugleichen: neu hinzugefügte Geräte kommen dazu, aus dem Konto gelöschte werden entfernt. Kein Neustart nötig. Szenen/Snapshots bestehender Geräte bleiben unberührt — dafür den Refresh-Button am Gerät nutzen.",
120
119
  "infoOpenapiMqttConnectedDesc": "Push-Kanal für Sensor- und Appliance-Ereignisse. Unabhängig vom AWS-IoT-MQTT, das für Status-Push der regulären Govee-Lampen genutzt wird.",
121
120
  "infoConnectionDesc": "Wahr, solange der Adapter arbeitet — mindestens ein Gerät antwortet, oder, bevor ein Gerät bekannt ist, läuft der LAN-Empfänger. Ob ein bestimmtes Gerät erreichbar ist, sagt dessen eigenes info.online.",
122
121
  "infoCloudConnectedDesc": "Wahr, solange die Govee-Cloud-API antwortet. Sie braucht den API-Schlüssel und liefert Geräteliste, Szenen, Segmente und Cloud-Befehle.",
123
122
  "infoMqttConnectedDesc": "Wahr, solange die Echtzeit-Kontoverbindung steht. Sie braucht E-Mail und Passwort und schickt Statusänderungen von sich aus, statt dass der Adapter sie abfragt.",
124
- "diagnosticsFolder": "Diagnoseberichte",
125
123
  "diagnosticsLastExport": "Letzter Diagnose-Export",
126
124
  "diagnosticsLastExportDesc": "Wann zuletzt ein Diagnosebericht für dieses Gerät erzeugt wurde.",
127
125
  "segmentChannel": "Segment %s",
@@ -173,5 +171,7 @@
173
171
  "descBaseLightToggle": "Ob der Sockel der Leuchte leuchtet; der aufrechte Teil hat einen eigenen Schalter.",
174
172
  "descWarmMistToggle": "Ob der Luftbefeuchter das Wasser vor dem Vernebeln erwärmt — warmer statt kühler Nebel.",
175
173
  "descPresetScene": "Eine Auswahlliste der fertigen Szenen dieses Modells; welche es gibt, gibt Govee vor und unterscheidet sich je Modell.",
176
- "descMembersUnreachable": "Welche Mitglieder der Gruppe gerade nicht erreichbar sind, benannt wie im Objektbaum — leer, solange alle antworten."
174
+ "descMembersUnreachable": "Welche Mitglieder der Gruppe gerade nicht erreichbar sind, benannt wie im Objektbaum — leer, solange alle antworten.",
175
+ "portLabel": "LAN-Empfangsport",
176
+ "portTooltip": "Vom Govee-LAN-Protokoll vorgegeben: Antworten der Lampen kommen auf UDP 4002 an. Eine zweite Instanz auf diesem Host kann ihn nicht teilen — die Admin warnt, wenn ein anderer Adapter den Port nutzt."
177
177
  }
@@ -72,8 +72,8 @@
72
72
  "musicAutoColor": "Music Auto Color",
73
73
  "musicMode": "Music Mode",
74
74
  "musicSensitivity": "Music Sensitivity",
75
- "networkInterfaceLabel": "Network Interface",
76
- "networkInterfaceTooltip": "Select the network interface for LAN discovery and control. Keep the default (0.0.0.0 = all interfaces) unless this host has multiple network interfaces.",
75
+ "bindLabel": "Network Interface",
76
+ "bindTooltip": "Select the network interface for LAN discovery and control. Keep the default (0.0.0.0 = all interfaces) unless this host has multiple network interfaces.",
77
77
  "online": "Online",
78
78
  "power": "Power",
79
79
  "refreshCloud": "Refresh Cloud Data",
@@ -114,14 +114,12 @@
114
114
  "infoCloudConnected": "Cloud API connected",
115
115
  "infoOpenapiMqttConnected": "Govee OpenAPI MQTT connected",
116
116
  "devicesFolder": "Devices",
117
- "localSnapshotsFolder": "User-saved local snapshots",
118
117
  "infoManualSyncDevices": "Manually sync devices",
119
118
  "infoManualSyncDevicesDesc": "Write true to sync the device list with your Govee account now: adds newly added devices and removes ones you deleted from the account. No restart needed. Scenes/snapshots of existing devices are not touched — use the per-device refresh button for that.",
120
119
  "infoOpenapiMqttConnectedDesc": "Push channel for sensor and appliance events. Independent of the AWS-IoT MQTT used for status push of regular Govee lights.",
121
120
  "infoConnectionDesc": "True while the adapter is working — at least one device answers, or, before any device is known, the LAN listener is running. Whether one particular device is reachable is what its own info.online says.",
122
121
  "infoCloudConnectedDesc": "True while the Govee Cloud API answers. It needs the API key and supplies the device list, scenes, segments and cloud commands.",
123
122
  "infoMqttConnectedDesc": "True while the real-time account connection is up. It needs email and password and pushes status changes by itself instead of the adapter polling for them.",
124
- "diagnosticsFolder": "Diagnostics reports",
125
123
  "diagnosticsLastExport": "Last diagnostics export",
126
124
  "diagnosticsLastExportDesc": "When the most recent diagnostics report was taken for this device.",
127
125
  "segmentChannel": "Segment %s",
@@ -173,5 +171,7 @@
173
171
  "descBaseLightToggle": "Whether the lamp's base is lit; the upright part has a switch of its own.",
174
172
  "descWarmMistToggle": "Whether the humidifier heats the water before misting — warm mist instead of cool.",
175
173
  "descPresetScene": "A dropdown over the ready-made scenes this model offers; which ones exist comes from Govee and differs per model.",
176
- "descMembersUnreachable": "Which of the group's members are currently unreachable, as they are named in the object tree — empty while all of them answer."
174
+ "descMembersUnreachable": "Which of the group's members are currently unreachable, as they are named in the object tree — empty while all of them answer.",
175
+ "portLabel": "LAN listen port",
176
+ "portTooltip": "Fixed by the Govee LAN protocol: replies from your lights arrive on UDP 4002. A second instance on this host cannot share it — the admin warns when another adapter uses the port."
177
177
  }
@@ -72,8 +72,8 @@
72
72
  "musicAutoColor": "Color automático de música",
73
73
  "musicMode": "Modo música",
74
74
  "musicSensitivity": "Sensibilidad musical",
75
- "networkInterfaceLabel": "Interfaz de red",
76
- "networkInterfaceTooltip": "Selecciona la interfaz de red para el descubrimiento y control LAN. Mantén el valor predeterminado (0.0.0.0 = todas) salvo que este host tenga varias interfaces.",
75
+ "bindLabel": "Interfaz de red",
76
+ "bindTooltip": "Selecciona la interfaz de red para el descubrimiento y control LAN. Mantén el valor predeterminado (0.0.0.0 = todas) salvo que este host tenga varias interfaces.",
77
77
  "online": "Conectado",
78
78
  "power": "Encendido",
79
79
  "refreshCloud": "Actualizar datos Cloud",
@@ -114,14 +114,12 @@
114
114
  "infoCloudConnected": "Cloud API conectado",
115
115
  "infoOpenapiMqttConnected": "Govee OpenAPI MQTT conectado",
116
116
  "devicesFolder": "Dispositivos",
117
- "localSnapshotsFolder": "Instantáneas locales guardadas por el usuario",
118
117
  "infoManualSyncDevices": "Sincronizar dispositivos manualmente",
119
118
  "infoManualSyncDevicesDesc": "Establecer en true para sincronizar ahora la lista de dispositivos con la cuenta Govee: se añaden los nuevos y se eliminan los borrados de la cuenta. Sin reinicio. Las escenas/instantáneas de los dispositivos existentes no se tocan: usa el botón de actualización por dispositivo.",
120
119
  "infoOpenapiMqttConnectedDesc": "Canal push para eventos de sensores y electrodomésticos. Independiente del MQTT AWS-IoT usado para el estado de las lámparas Govee.",
121
120
  "infoConnectionDesc": "Verdadero mientras el adaptador funciona: al menos un dispositivo responde o, antes de conocer ningún dispositivo, el receptor LAN está activo. Si un dispositivo concreto es accesible lo indica su propio info.online.",
122
121
  "infoCloudConnectedDesc": "Verdadero mientras la API en la nube de Govee responde. Necesita la clave API y proporciona la lista de dispositivos, escenas, segmentos y comandos en la nube.",
123
122
  "infoMqttConnectedDesc": "Verdadero mientras la conexión de cuenta en tiempo real está activa. Necesita correo electrónico y contraseña y envía los cambios de estado por sí misma, en lugar de que el adaptador los consulte.",
124
- "diagnosticsFolder": "Informes de diagnóstico",
125
123
  "diagnosticsLastExport": "Última exportación de diagnóstico",
126
124
  "diagnosticsLastExportDesc": "Cuándo se generó el último informe de diagnóstico de este dispositivo.",
127
125
  "segmentChannel": "Segmento %s",
@@ -173,5 +171,7 @@
173
171
  "descBaseLightToggle": "Si la base de la lámpara está encendida; la parte vertical tiene su propio interruptor.",
174
172
  "descWarmMistToggle": "Si el humidificador calienta el agua antes de nebulizarla: vapor cálido en lugar de frío.",
175
173
  "descPresetScene": "Una lista desplegable con las escenas predefinidas de este modelo; cuáles existen lo define Govee y varía según el modelo.",
176
- "descMembersUnreachable": "Qué miembros del grupo están ahora inaccesibles, con los nombres del árbol de objetos: vacío mientras todos respondan."
174
+ "descMembersUnreachable": "Qué miembros del grupo están ahora inaccesibles, con los nombres del árbol de objetos: vacío mientras todos respondan.",
175
+ "portLabel": "Puerto de escucha LAN",
176
+ "portTooltip": "Fijado por el protocolo LAN de Govee: las respuestas de las lámparas llegan por UDP 4002. Una segunda instancia en este host no puede compartirlo — el admin avisa si otro adaptador usa el puerto."
177
177
  }
@@ -72,8 +72,8 @@
72
72
  "musicAutoColor": "Couleur auto musique",
73
73
  "musicMode": "Mode musique",
74
74
  "musicSensitivity": "Sensibilité musicale",
75
- "networkInterfaceLabel": "Interface réseau",
76
- "networkInterfaceTooltip": "Sélectionnez l'interface réseau pour la découverte et le contrôle LAN. Conservez la valeur par défaut (0.0.0.0 = toutes) sauf si cet hôte possède plusieurs interfaces.",
75
+ "bindLabel": "Interface réseau",
76
+ "bindTooltip": "Sélectionnez l'interface réseau pour la découverte et le contrôle LAN. Conservez la valeur par défaut (0.0.0.0 = toutes) sauf si cet hôte possède plusieurs interfaces.",
77
77
  "online": "En ligne",
78
78
  "power": "Marche/Arrêt",
79
79
  "refreshCloud": "Actualiser données Cloud",
@@ -114,14 +114,12 @@
114
114
  "infoCloudConnected": "API Cloud connectée",
115
115
  "infoOpenapiMqttConnected": "Govee OpenAPI MQTT connecté",
116
116
  "devicesFolder": "Appareils",
117
- "localSnapshotsFolder": "Snapshots locaux enregistrés par l'utilisateur",
118
117
  "infoManualSyncDevices": "Synchroniser les appareils manuellement",
119
118
  "infoManualSyncDevicesDesc": "Mettre à true pour synchroniser la liste des appareils avec le compte Govee : les nouveaux appareils sont ajoutés, ceux supprimés du compte sont retirés. Aucun redémarrage requis. Les scènes/instantanés des appareils existants ne sont pas modifiés — utiliser le bouton d'actualisation par appareil.",
120
119
  "infoOpenapiMqttConnectedDesc": "Canal push pour les événements des capteurs et appareils. Indépendant du MQTT AWS-IoT utilisé pour l'état des lampes Govee.",
121
120
  "infoConnectionDesc": "Vrai tant que l'adaptateur fonctionne : au moins un appareil répond ou, avant qu'un appareil ne soit connu, le récepteur LAN est actif. Pour savoir si un appareil précis est joignable, consultez son propre info.online.",
122
121
  "infoCloudConnectedDesc": "Vrai tant que l'API cloud de Govee répond. Elle nécessite la clé API et fournit la liste des appareils, les scènes, les segments et les commandes cloud.",
123
122
  "infoMqttConnectedDesc": "Vrai tant que la connexion au compte en temps réel est établie. Elle nécessite l'e-mail et le mot de passe et transmet les changements d'état d'elle-même, sans interrogation par l'adaptateur.",
124
- "diagnosticsFolder": "Rapports de diagnostic",
125
123
  "diagnosticsLastExport": "Dernier export de diagnostic",
126
124
  "diagnosticsLastExportDesc": "Quand le dernier rapport de diagnostic a été généré pour cet appareil.",
127
125
  "segmentChannel": "Segment %s",
@@ -173,5 +171,7 @@
173
171
  "descBaseLightToggle": "Si le socle du lampadaire est allumé ; la partie verticale a son propre interrupteur.",
174
172
  "descWarmMistToggle": "Si l'humidificateur chauffe l'eau avant de la vaporiser — brume chaude au lieu de froide.",
175
173
  "descPresetScene": "Une liste déroulante des scènes prêtes à l'emploi de ce modèle ; lesquelles existent dépend de Govee et varie selon le modèle.",
176
- "descMembersUnreachable": "Quels membres du groupe sont actuellement injoignables, nommés comme dans l'arborescence — vide tant que tous répondent."
174
+ "descMembersUnreachable": "Quels membres du groupe sont actuellement injoignables, nommés comme dans l'arborescence — vide tant que tous répondent.",
175
+ "portLabel": "Port d'écoute LAN",
176
+ "portTooltip": "Imposé par le protocole LAN Govee : les réponses des lampes arrivent sur UDP 4002. Une seconde instance sur cet hôte ne peut pas le partager — l'admin avertit si un autre adaptateur utilise le port."
177
177
  }
@@ -72,8 +72,8 @@
72
72
  "musicAutoColor": "Colore automatico musica",
73
73
  "musicMode": "Modalità musica",
74
74
  "musicSensitivity": "Sensibilità musica",
75
- "networkInterfaceLabel": "Interfaccia di rete",
76
- "networkInterfaceTooltip": "Seleziona l'interfaccia di rete per il rilevamento e il controllo LAN. Mantieni il valore predefinito (0.0.0.0 = tutte) a meno che questo host non abbia più interfacce.",
75
+ "bindLabel": "Interfaccia di rete",
76
+ "bindTooltip": "Seleziona l'interfaccia di rete per il rilevamento e il controllo LAN. Mantieni il valore predefinito (0.0.0.0 = tutte) a meno che questo host non abbia più interfacce.",
77
77
  "online": "Online",
78
78
  "power": "Accensione",
79
79
  "refreshCloud": "Aggiorna dati Cloud",
@@ -114,14 +114,12 @@
114
114
  "infoCloudConnected": "Cloud API connesso",
115
115
  "infoOpenapiMqttConnected": "Govee OpenAPI MQTT connesso",
116
116
  "devicesFolder": "Dispositivi",
117
- "localSnapshotsFolder": "Snapshot locali salvati dall'utente",
118
117
  "infoManualSyncDevices": "Sincronizza dispositivi manualmente",
119
118
  "infoManualSyncDevicesDesc": "Impostare su true per sincronizzare subito l'elenco dispositivi con l'account Govee: i nuovi dispositivi vengono aggiunti, quelli eliminati dall'account rimossi. Nessun riavvio necessario. Scene/istantanee dei dispositivi esistenti restano intatte — usare il pulsante di aggiornamento per dispositivo.",
120
119
  "infoOpenapiMqttConnectedDesc": "Canale push per eventi di sensori ed elettrodomestici. Indipendente dall'MQTT AWS-IoT usato per lo stato delle lampade Govee.",
121
120
  "infoConnectionDesc": "Vero finché l'adattatore funziona: almeno un dispositivo risponde oppure, prima che sia noto un dispositivo, il ricevitore LAN è attivo. Se un determinato dispositivo sia raggiungibile lo dice il suo info.online.",
122
121
  "infoCloudConnectedDesc": "Vero finché l'API cloud di Govee risponde. Richiede la chiave API e fornisce l'elenco dei dispositivi, le scene, i segmenti e i comandi cloud.",
123
122
  "infoMqttConnectedDesc": "Vero finché la connessione all'account in tempo reale è attiva. Richiede e-mail e password e invia le variazioni di stato da sé, invece di farle interrogare dall'adattatore.",
124
- "diagnosticsFolder": "Rapporti di diagnostica",
125
123
  "diagnosticsLastExport": "Ultima esportazione diagnostica",
126
124
  "diagnosticsLastExportDesc": "Quando è stato generato l'ultimo rapporto diagnostico per questo dispositivo.",
127
125
  "segmentChannel": "Segmento %s",
@@ -173,5 +171,7 @@
173
171
  "descBaseLightToggle": "Se la base della lampada è accesa; la parte verticale ha un interruttore proprio.",
174
172
  "descWarmMistToggle": "Se l'umidificatore riscalda l'acqua prima di nebulizzarla — vapore caldo anziché freddo.",
175
173
  "descPresetScene": "Un elenco a discesa delle scene predefinite di questo modello; quali esistano lo stabilisce Govee e varia per modello.",
176
- "descMembersUnreachable": "Quali membri del gruppo sono attualmente irraggiungibili, con i nomi dell'albero degli oggetti — vuoto finché rispondono tutti."
174
+ "descMembersUnreachable": "Quali membri del gruppo sono attualmente irraggiungibili, con i nomi dell'albero degli oggetti — vuoto finché rispondono tutti.",
175
+ "portLabel": "Porta di ascolto LAN",
176
+ "portTooltip": "Fissata dal protocollo LAN Govee: le risposte delle lampade arrivano su UDP 4002. Una seconda istanza su questo host non può condividerla — l'admin avvisa se un altro adattatore usa la porta."
177
177
  }
@@ -72,8 +72,8 @@
72
72
  "musicAutoColor": "Muziek auto-kleur",
73
73
  "musicMode": "Muziekmodus",
74
74
  "musicSensitivity": "Muziekgevoeligheid",
75
- "networkInterfaceLabel": "Netwerkinterface",
76
- "networkInterfaceTooltip": "Selecteer de netwerkinterface voor LAN-detectie en -besturing. Behoud de standaard (0.0.0.0 = alle interfaces), tenzij deze host meerdere netwerkinterfaces heeft.",
75
+ "bindLabel": "Netwerkinterface",
76
+ "bindTooltip": "Selecteer de netwerkinterface voor LAN-detectie en -besturing. Behoud de standaard (0.0.0.0 = alle interfaces), tenzij deze host meerdere netwerkinterfaces heeft.",
77
77
  "online": "Online",
78
78
  "power": "Aan/Uit",
79
79
  "refreshCloud": "Cloudgegevens vernieuwen",
@@ -114,14 +114,12 @@
114
114
  "infoCloudConnected": "Cloud-API verbonden",
115
115
  "infoOpenapiMqttConnected": "Govee OpenAPI MQTT verbonden",
116
116
  "devicesFolder": "Apparaten",
117
- "localSnapshotsFolder": "Door gebruiker opgeslagen lokale snapshots",
118
117
  "infoManualSyncDevices": "Apparaten handmatig synchroniseren",
119
118
  "infoManualSyncDevicesDesc": "Zet op true om de apparatenlijst nu met het Govee-account te synchroniseren: nieuwe apparaten worden toegevoegd, uit het account verwijderde worden verwijderd. Geen herstart nodig. Scènes/snapshots van bestaande apparaten blijven onaangeroerd — gebruik daarvoor de verversknop per apparaat.",
120
119
  "infoOpenapiMqttConnectedDesc": "Pushkanaal voor sensor- en apparaatgebeurtenissen. Onafhankelijk van de AWS-IoT-MQTT voor de status van gewone Govee-lampen.",
121
120
  "infoConnectionDesc": "Waar zolang de adapter werkt: minstens één apparaat antwoordt, of, voordat er een apparaat bekend is, draait de LAN-ontvanger. Of een bepaald apparaat bereikbaar is, zegt zijn eigen info.online.",
122
121
  "infoCloudConnectedDesc": "Waar zolang de Govee-cloud-API antwoordt. Deze heeft de API-sleutel nodig en levert de apparaatlijst, scènes, segmenten en cloudopdrachten.",
123
122
  "infoMqttConnectedDesc": "Waar zolang de realtime accountverbinding actief is. Deze heeft e-mail en wachtwoord nodig en stuurt statuswijzigingen uit zichzelf, in plaats van dat de adapter ernaar vraagt.",
124
- "diagnosticsFolder": "Diagnoserapporten",
125
123
  "diagnosticsLastExport": "Laatste diagnose-export",
126
124
  "diagnosticsLastExportDesc": "Wanneer het laatste diagnoserapport voor dit apparaat is gemaakt.",
127
125
  "segmentChannel": "Segment %s",
@@ -173,5 +171,7 @@
173
171
  "descBaseLightToggle": "Of de voet van de lamp brandt; het staande deel heeft een eigen schakelaar.",
174
172
  "descWarmMistToggle": "Of de luchtbevochtiger het water verwarmt voor het vernevelen — warme in plaats van koele nevel.",
175
173
  "descPresetScene": "Een keuzelijst met de kant-en-klare scènes van dit model; welke er zijn bepaalt Govee en verschilt per model.",
176
- "descMembersUnreachable": "Welke leden van de groep momenteel onbereikbaar zijn, zoals ze in de objectboom heten — leeg zolang ze allemaal antwoorden."
174
+ "descMembersUnreachable": "Welke leden van de groep momenteel onbereikbaar zijn, zoals ze in de objectboom heten — leeg zolang ze allemaal antwoorden.",
175
+ "portLabel": "LAN-luisterpoort",
176
+ "portTooltip": "Vastgelegd door het Govee-LAN-protocol: antwoorden van de lampen komen binnen op UDP 4002. Een tweede instantie op deze host kan hem niet delen — de admin waarschuwt als een andere adapter de poort gebruikt."
177
177
  }
@@ -72,8 +72,8 @@
72
72
  "musicAutoColor": "Auto-kolor muzyki",
73
73
  "musicMode": "Tryb muzyki",
74
74
  "musicSensitivity": "Czułość muzyki",
75
- "networkInterfaceLabel": "Interfejs sieciowy",
76
- "networkInterfaceTooltip": "Wybierz interfejs sieciowy do wykrywania i sterowania LAN. Pozostaw domyślny (0.0.0.0 = wszystkie), chyba że ten host ma wiele interfejsów.",
75
+ "bindLabel": "Interfejs sieciowy",
76
+ "bindTooltip": "Wybierz interfejs sieciowy do wykrywania i sterowania LAN. Pozostaw domyślny (0.0.0.0 = wszystkie), chyba że ten host ma wiele interfejsów.",
77
77
  "online": "Online",
78
78
  "power": "Zasilanie",
79
79
  "refreshCloud": "Odśwież dane Cloud",
@@ -114,14 +114,12 @@
114
114
  "infoCloudConnected": "Cloud API połączony",
115
115
  "infoOpenapiMqttConnected": "Govee OpenAPI MQTT połączony",
116
116
  "devicesFolder": "Urządzenia",
117
- "localSnapshotsFolder": "Lokalne migawki zapisane przez użytkownika",
118
117
  "infoManualSyncDevices": "Ręcznie synchronizuj urządzenia",
119
118
  "infoManualSyncDevicesDesc": "Ustaw na true, aby teraz zsynchronizować listę urządzeń z kontem Govee: nowe urządzenia zostaną dodane, usunięte z konta — usunięte. Bez restartu. Sceny/migawki istniejących urządzeń pozostają nietknięte — użyj przycisku odświeżania przy urządzeniu.",
120
119
  "infoOpenapiMqttConnectedDesc": "Kanał push dla zdarzeń czujników i urządzeń. Niezależny od MQTT AWS-IoT używanego do statusu zwykłych lamp Govee.",
121
120
  "infoConnectionDesc": "Prawda, dopóki adapter działa: odpowiada co najmniej jedno urządzenie lub, zanim poznane zostanie jakiekolwiek urządzenie, działa odbiornik LAN. O tym, czy konkretne urządzenie jest osiągalne, mówi jego własne info.online.",
122
121
  "infoCloudConnectedDesc": "Prawda, dopóki chmurowe API Govee odpowiada. Wymaga klucza API i dostarcza listę urządzeń, sceny, segmenty oraz polecenia chmurowe.",
123
122
  "infoMqttConnectedDesc": "Prawda, dopóki działa połączenie z kontem w czasie rzeczywistym. Wymaga adresu e-mail i hasła oraz samo wysyła zmiany stanu, zamiast odpytywania przez adapter.",
124
- "diagnosticsFolder": "Raporty diagnostyczne",
125
123
  "diagnosticsLastExport": "Ostatni eksport diagnostyki",
126
124
  "diagnosticsLastExportDesc": "Kiedy powstał ostatni raport diagnostyczny dla tego urządzenia.",
127
125
  "segmentChannel": "Segment %s",
@@ -173,5 +171,7 @@
173
171
  "descBaseLightToggle": "Czy podstawa lampy świeci; pionowa część ma własny przełącznik.",
174
172
  "descWarmMistToggle": "Czy nawilżacz podgrzewa wodę przed rozpyleniem — ciepła mgiełka zamiast chłodnej.",
175
173
  "descPresetScene": "Lista rozwijana z gotowymi scenami tego modelu; które istnieją, określa Govee i różnią się zależnie od modelu.",
176
- "descMembersUnreachable": "Którzy członkowie grupy są obecnie nieosiągalni, nazwani jak w drzewie obiektów — puste, dopóki wszyscy odpowiadają."
174
+ "descMembersUnreachable": "Którzy członkowie grupy są obecnie nieosiągalni, nazwani jak w drzewie obiektów — puste, dopóki wszyscy odpowiadają.",
175
+ "portLabel": "Port nasłuchu LAN",
176
+ "portTooltip": "Ustalony przez protokół LAN Govee: odpowiedzi lamp przychodzą na UDP 4002. Druga instancja na tym hoście nie może go współdzielić — admin ostrzega, gdy inny adapter używa portu."
177
177
  }