iobroker.tint 0.3.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 (41) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +201 -0
  3. package/admin/build/assets/__virtual_mf___mfe_internal__tintComponents__loadShare__react__loadShare__.js_commonjs-proxy-Cl6Kn7gP.js +9 -0
  4. package/admin/build/assets/_virtual_mf-localSharedImportMap___mfe_internal__tintComponents-B1A16Tgp.js +1 -0
  5. package/admin/build/assets/_virtual_mf___mfe_internal__tintComponents__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-C8Vyx7Bj.js +8 -0
  6. package/admin/build/assets/_virtual_mf___mfe_internal__tintComponents__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-ByxO1Xun.js +1 -0
  7. package/admin/build/assets/_virtual_mf___mfe_internal__tintComponents__loadShare___mf_0_mui_mf_1_material__loadShare__.js-Dg1UrPxy.js +248 -0
  8. package/admin/build/assets/_virtual_mf___mfe_internal__tintComponents__loadShare__react__loadShare__.js-CAwea2Mm.js +1 -0
  9. package/admin/build/assets/_virtual_mf___mfe_internal__tintComponents__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-B7t36uFG.js +9 -0
  10. package/admin/build/assets/_virtual_mf___mfe_internal__tintComponents__loadShare__react_mf_2_dom__loadShare__.js-rV2HHyiS.js +24 -0
  11. package/admin/build/assets/bootstrap-DdKMNh18.js +1 -0
  12. package/admin/build/assets/hostInit-C5jswnkw.js +1 -0
  13. package/admin/build/assets/index-C-tjmgJM.js +1 -0
  14. package/admin/build/assets/preload-helper-BlTxHScW.js +1 -0
  15. package/admin/build/assets/virtualExposes-Bu4cv-kd.js +1 -0
  16. package/admin/build/customComponents.js +7 -0
  17. package/admin/build/customComponents.ssr.js +48 -0
  18. package/admin/i18n/de.json +35 -0
  19. package/admin/i18n/en.json +35 -0
  20. package/admin/i18n/es.json +35 -0
  21. package/admin/i18n/fr.json +35 -0
  22. package/admin/i18n/it.json +35 -0
  23. package/admin/i18n/nl.json +35 -0
  24. package/admin/i18n/pl.json +35 -0
  25. package/admin/i18n/pt.json +35 -0
  26. package/admin/i18n/ru.json +35 -0
  27. package/admin/i18n/uk.json +35 -0
  28. package/admin/i18n/zh-cn.json +35 -0
  29. package/admin/jsonConfig.json +329 -0
  30. package/admin/tint.png +0 -0
  31. package/io-package.json +227 -0
  32. package/lib/adapter-config.d.ts +20 -0
  33. package/lib/admin-projections.js +61 -0
  34. package/lib/color-utils.js +230 -0
  35. package/lib/deconz-api.js +379 -0
  36. package/lib/deconz-ws.js +151 -0
  37. package/lib/device-category.js +42 -0
  38. package/lib/objects.js +1002 -0
  39. package/lib/remote-handler.js +218 -0
  40. package/main.js +1924 -0
  41. package/package.json +84 -0
@@ -0,0 +1 @@
1
+ import{_ as e,a as o}from"./_virtual_mf___mfe_internal__tintComponents__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-B7t36uFG.js";import{k as C,j as T,i as z}from"./_virtual_mf___mfe_internal__tintComponents__loadShare__react__loadShare__.js-CAwea2Mm.js";import{C as A,B as l,T as p,a as G,b as E,P as H,c as k,d as R,e as P,f as r,g as I,h as ee,D as le,i as de,j as ge,k as ue,F as pe,l as me,m as he,n as oe}from"./_virtual_mf___mfe_internal__tintComponents__loadShare___mf_0_mui_mf_1_material__loadShare__.js-Dg1UrPxy.js";import"./__virtual_mf___mfe_internal__tintComponents__loadShare__react__loadShare__.js_commonjs-proxy-Cl6Kn7gP.js";import"./_virtual_mf___mfe_internal__tintComponents__loadShare__react_mf_2_dom__loadShare__.js-rV2HHyiS.js";import"./_virtual_mf___mfe_internal__tintComponents__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-C8Vyx7Bj.js";import"./_virtual_mf___mfe_internal__tintComponents__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-ByxO1Xun.js";function ae(a){return(a?.type||"").toLowerCase().includes("plug")}function $e(a){return(a?.type||"").toLowerCase().includes("window covering")}function fe(a){return!!(a?.type&&a.type.includes("Switch")&&a.manufacturername==="MLI")}function ie(a){return a?.type==="ZHAThermostat"}function be(a,n=i=>i){const i=a?.state||{};switch(a?.type){case"ZHATemperature":return i.temperature!==void 0?`${(i.temperature/100).toFixed(1)} °C`:"–";case"ZHAHumidity":return i.humidity!==void 0?`${(i.humidity/100).toFixed(1)} %`:"–";case"ZHAPressure":return i.pressure!==void 0?`${i.pressure} hPa`:"–";case"ZHAOpenClose":return i.open!==void 0?n(i.open?"stateOpen":"stateClosed"):"–";case"ZHAPresence":return i.presence!==void 0?n(i.presence?"statePresence":"stateNoPresence"):"–";case"ZHALightLevel":{let s=i.lux;return s===void 0&&i.lightlevel!==void 0&&(s=Math.round(Math.pow(10,(i.lightlevel-1)/1e4))),s!==void 0?`${s} lx`:"–"}case"ZHAPower":return i.power!==void 0?`${i.power} W`:"–";case"ZHAConsumption":return i.consumption!==void 0?`${(i.consumption/1e3).toFixed(2)} kWh`:"–";default:return Object.keys(i).length>0?JSON.stringify(i):"–"}}const Ne={ZHATemperature:"Temperature",ZHAHumidity:"Humidity",ZHAPressure:"Pressure",ZHAOpenClose:"Open/Close",ZHAPresence:"Motion",ZHALightLevel:"Light level",ZHAPower:"Power",ZHAConsumption:"Consumption",Daylight:"Daylight"};function Ce(a){return Ne[a?.type]||a?.type||"–"}const D=a=>({display:"flex",alignItems:"center",gap:1,padding:"8px 16px",marginBottom:2,borderRadius:1,border:"1px solid",borderColor:"divider",background:a.palette.mode==="dark"?"rgba(255,255,255,0.04)":"#f5f5f5"}),ve={width:10,height:10,borderRadius:"50%",flexShrink:0,transition:"background 0.3s"},Se={backgroundColor:"#4caf50"},ye={backgroundColor:"#f44336"},Ae={backgroundColor:"#bdbdbd"},M={flex:1},v={display:"flex",alignItems:"flex-start",gap:1,padding:"12px 16px",borderRadius:1,marginBottom:2,fontSize:"0.875rem",lineHeight:1.5},B={background:"#fdecea",border:"1px solid #ef9a9a",color:"#b71c1c"},V={background:"#fff8e1",border:"1px solid #ffe082",color:"#7b5000"},W={background:"#e3f2fd",border:"1px solid #90caf9",color:"#0d47a1"},K=a=>({background:a.palette.mode==="dark"?"rgba(255,255,255,0.06)":"#fafafa"}),Z=a=>({"&:hover":{background:a.palette.action.hover}}),F={color:"#2e7d32",fontWeight:"bold"},_={color:"#c62828",fontWeight:"bold"},j={display:"flex",flexDirection:"column",alignItems:"center",padding:4,gap:1,color:"text.secondary"};function q({ok:a,loading:n}){return n?e(A,{size:10}):e(l,{component:"span",sx:[ve,a?Se:a===null?Ae:ye]})}function Oe({sendToAdapter:a,t:n,alive:i}){const[s,$]=C(null),[c,f]=C(!1),[d,h]=C(""),g=T(async()=>{f(!0),h("");const t=await a("getLights",{});f(!1),t&&t.error?h(t.error):t&&t.lights&&$(t.lights)},[a]);if(z(()=>{i!==!1&&g()},[g,i]),i===!1)return o(l,{sx:[v,V],children:[e("span",{children:"⚠️"}),e("span",{children:e("strong",{children:n("msgAdapterOffline")})})]});const u=s?Object.entries(s).filter(([,t])=>!ae(t)):[];return o(l,{sx:{padding:"0 0 16px 0"},children:[o(l,{sx:D,children:[e(q,{ok:d?!1:s!==null?!0:null,loading:c}),e(p,{variant:"body2",color:"textSecondary",children:c&&!s?n("msgLoading"):d?n("msgNotConnected"):s!==null?`${u.length} ${n("lightsCount")}`:"–"}),e(l,{sx:M}),e(G,{variant:"outlined",size:"small",onClick:g,disabled:c,children:c?e(A,{size:14}):n("btnRefresh")})]}),d&&o(l,{sx:[v,B],children:[e("span",{children:"✖"}),o("div",{children:[o("strong",{children:[n("msgError"),":"]})," ",d]})]}),c&&!s&&o(l,{sx:j,children:[e(A,{size:36}),e(p,{variant:"body2",children:n("msgLoading")})]}),!c&&!d&&s!==null&&u.length===0&&o(l,{sx:[v,W],children:[e("span",{children:"ℹ"}),e("span",{children:n("msgNoLights")})]}),u.length>0&&e(E,{component:H,variant:"outlined",children:o(k,{size:"small",children:[e(R,{sx:K,children:o(P,{children:[e(r,{children:e("strong",{children:n("colName")})}),e(r,{children:e("strong",{children:n("colModel")})}),e(r,{children:e("strong",{children:n("colManufacturer")})}),e(r,{align:"center",children:e("strong",{children:n("colReachable")})}),e(r,{align:"center",children:e("strong",{children:n("colOnOff")})}),e(r,{align:"right",children:e("strong",{children:n("colBrightness")})})]})}),e(I,{children:u.map(([t,N])=>{const m=N.state||{},b=m.bri!=null?Math.round(m.bri/2.54):null;return o(P,{sx:Z,children:[o(r,{children:[e(p,{variant:"body2",children:e("strong",{children:N.name})}),o(p,{variant:"caption",color:"textSecondary",children:["ID ",t]})]}),e(r,{children:e(p,{variant:"body2",children:N.modelid||"–"})}),e(r,{children:e(p,{variant:"body2",children:N.manufacturername||"–"})}),e(r,{align:"center",children:e(l,{component:"span",sx:m.reachable?F:_,children:m.reachable?"✔":"✗"})}),e(r,{align:"center",children:e(ee,{label:m.on?n("stateOn"):n("stateOff"),size:"small",sx:{background:m.on?"#fff3e0":"#f5f5f5",color:m.on?"#e65100":"#757575",fontWeight:600,fontSize:"0.7rem",height:20}})}),e(r,{align:"right",children:m.reachable&&b!==null?o(l,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:"6px"},children:[e(l,{sx:{width:48,height:5,background:"#e0e0e0",borderRadius:"3px",overflow:"hidden"},children:e(l,{sx:{width:`${b}%`,height:"100%",background:"#ff9800",borderRadius:"3px"}})}),o(p,{variant:"caption",children:[b," %"]})]}):e(p,{variant:"body2",color:"textSecondary",children:"–"})})]},t)})})]})})]})}const we="deCONZ Connection",Pe="deCONZ IP address",Te="REST port",Le="WebSocket port",Ge="API key",xe="Behavior",ze="Polling interval (seconds)",Ee="Transition time (×100 ms)",He="Tint Remote",ke="Auto-apply color wheel to lights",Re="Remote watchdog (minutes)",Ie="Lights",De="Groups",Me="Name",Be="Model",Ve="Manufacturer",We="Reachable",Ke="On/Off",Ze="Brightness",je="Lights",qe="All on",Ye="Any on",Fe="Scenes",_e="Actions",Ue="Position",Je="Temperature",Qe="Setpoint",Xe="Valve",en="Value",nn="Type",tn="Battery",on="Last event",sn="Group",cn="Scene",rn="New group",an="Refresh",ln="Edit",dn="Delete",gn="Save",un="Cancel",pn="Activate",mn="Create new group",hn="Edit group",$n="Group name",fn="Select lights",bn="On",Nn="Off",Cn="Yes",vn="No",Sn="Open",yn="Closed",An="Motion",On="No motion",wn="Loading data…",Pn="No lights found",Tn="No groups found",Ln="No plugs found",Gn="No scenes found",xn="No covers found",zn="No switches found",En="No sensors found",Hn="No thermostats found",kn="Adapter not connected. Please check the instance and deCONZ connection.",Rn="Error",In='Really delete group "%s"?',Dn="Saving…",Mn="Deleting…",Bn="The adapter instance is not running. Please start it first in the ioBroker instances view.",Vn="No response from adapter (timeout). Is the instance running?",Wn="light(s) found",Kn="group(s) found",Zn="plug(s) found",jn="scene(s) found",qn="cover(s) found",Yn="switch(es) found",Fn="sensor(s) found",_n="thermostat(s) found",Un="API Key",Jn="Click the button below first, then open Phoscon in your browser (http://IP:Port/) and go to ☰ → Gateway → Authenticate app. The adapter detects the pairing window automatically (polls every 3 s for up to 60 s) and fills in the API key.",Qn="Wait for deCONZ pairing…",Xn={"tint adapter settings":"Adapter settings for tint",connectionHeader:we,ip:Pe,port:Te,wsPort:Le,apiKey:Ge,behaviorHeader:xe,pollingInterval:ze,transitionTime:Ee,remoteHeader:He,autoApplyColorWheel:ke,watchdogMinutes:Re,tabLights:Ie,tabGroups:De,colName:Me,colModel:Be,colManufacturer:Ve,colReachable:We,colOnOff:Ke,colBrightness:Ze,colLightCount:je,colAllOn:qe,colAnyOn:Ye,colScenes:Fe,colActions:_e,colPosition:Ue,colTemperature:Je,colSetpoint:Qe,colValve:Xe,colValue:en,colType:nn,colBattery:tn,colLastEvent:on,colGroup:sn,colScene:cn,btnNewGroup:rn,btnRefresh:an,btnEdit:ln,btnDelete:dn,btnSave:gn,btnCancel:un,btnActivate:pn,dlgNewGroup:mn,dlgEditGroup:hn,dlgGroupName:$n,dlgSelectLights:fn,stateOn:bn,stateOff:Nn,stateYes:Cn,stateNo:vn,stateOpen:Sn,stateClosed:yn,statePresence:An,stateNoPresence:On,msgLoading:wn,msgNoLights:Pn,msgNoGroups:Tn,msgNoPlugs:Ln,msgNoScenes:Gn,msgNoCovers:xn,msgNoSwitches:zn,msgNoSensors:En,msgNoThermostats:Hn,msgNotConnected:kn,msgError:Rn,msgConfirmDelete:In,msgSaving:Dn,msgDeleting:Mn,msgAdapterOffline:Bn,msgTimeout:Vn,lightsCount:Wn,groupsCount:Kn,plugsCount:Zn,scenesCount:jn,coversCount:qn,switchesCount:Yn,sensorsCount:Fn,thermostatsCount:_n,pairingHeader:Un,pairingHint:Jn,btnRequestApiKey:Qn},et="deCONZ-Verbindung",nt="deCONZ IP-Adresse",tt="REST-Port",ot="WebSocket-Port",st="API-Schlüssel",ct="Verhalten",rt="Abfrageintervall (Sekunden)",at="Übergangszeit (×100 ms)",it="Tint-Fernbedienung",lt="Farbrad automatisch auf Leuchten anwenden",dt="Fernbedienung Watchdog (Minuten)",gt="Leuchten",ut="Gruppen",pt="Name",mt="Modell",ht="Hersteller",$t="Erreichbar",ft="An/Aus",bt="Helligkeit",Nt="Lampen",Ct="Alle an",vt="Mind. eine an",St="Szenen",yt="Aktionen",At="Position",Ot="Temperatur",wt="Sollwert",Pt="Ventil",Tt="Wert",Lt="Typ",Gt="Batterie",xt="Letztes Ereignis",zt="Gruppe",Et="Szene",Ht="Neue Gruppe",kt="Aktualisieren",Rt="Bearbeiten",It="Löschen",Dt="Speichern",Mt="Abbrechen",Bt="Aktivieren",Vt="Neue Gruppe anlegen",Wt="Gruppe bearbeiten",Kt="Gruppenname",Zt="Lampen auswählen",jt="An",qt="Aus",Yt="Ja",Ft="Nein",_t="Offen",Ut="Geschlossen",Jt="Bewegung",Qt="Keine Bewegung",Xt="Lade Daten …",eo="Keine Lampen gefunden",no="Keine Gruppen gefunden",to="Keine Steckdosen gefunden",oo="Keine Szenen gefunden",so="Keine Rollos gefunden",co="Keine Schalter gefunden",ro="Keine Sensoren gefunden",ao="Keine Thermostate gefunden",io="Adapter nicht verbunden. Bitte Instanz und deCONZ-Verbindung prüfen.",lo="Fehler",go='Gruppe "%s" wirklich löschen?',uo="Speichern …",po="Löschen …",mo="Die Adapterinstanz ist nicht gestartet. Bitte starten Sie sie zuerst in der ioBroker-Instanzübersicht.",ho="Keine Antwort vom Adapter (Zeitüberschreitung). Läuft die Instanz?",$o="Leuchte(n) gefunden",fo="Gruppe(n) gefunden",bo="Steckdose(n) gefunden",No="Szene(n) gefunden",Co="Rollo(s) gefunden",vo="Schalter gefunden",So="Sensor(en) gefunden",yo="Thermostat(e) gefunden",Ao="API-Schlüssel",Oo="Klicken Sie zuerst auf den Button unten, und öffnen Sie dann Phoscon im Browser (http://IP:Port/) und gehen Sie zu ☰ → Gateway → App verbinden. Der Adapter erkennt das Pairing-Fenster automatisch (alle 3 s, bis zu 60 s) und trägt den API-Schlüssel selbständig ein.",wo="Auf deCONZ-Pairing warten…",Po={"tint adapter settings":"Adaptereinstellungen für tint",connectionHeader:et,ip:nt,port:tt,wsPort:ot,apiKey:st,behaviorHeader:ct,pollingInterval:rt,transitionTime:at,remoteHeader:it,autoApplyColorWheel:lt,watchdogMinutes:dt,tabLights:gt,tabGroups:ut,colName:pt,colModel:mt,colManufacturer:ht,colReachable:$t,colOnOff:ft,colBrightness:bt,colLightCount:Nt,colAllOn:Ct,colAnyOn:vt,colScenes:St,colActions:yt,colPosition:At,colTemperature:Ot,colSetpoint:wt,colValve:Pt,colValue:Tt,colType:Lt,colBattery:Gt,colLastEvent:xt,colGroup:zt,colScene:Et,btnNewGroup:Ht,btnRefresh:kt,btnEdit:Rt,btnDelete:It,btnSave:Dt,btnCancel:Mt,btnActivate:Bt,dlgNewGroup:Vt,dlgEditGroup:Wt,dlgGroupName:Kt,dlgSelectLights:Zt,stateOn:jt,stateOff:qt,stateYes:Yt,stateNo:Ft,stateOpen:_t,stateClosed:Ut,statePresence:Jt,stateNoPresence:Qt,msgLoading:Xt,msgNoLights:eo,msgNoGroups:no,msgNoPlugs:to,msgNoScenes:oo,msgNoCovers:so,msgNoSwitches:co,msgNoSensors:ro,msgNoThermostats:ao,msgNotConnected:io,msgError:lo,msgConfirmDelete:go,msgSaving:uo,msgDeleting:po,msgAdapterOffline:mo,msgTimeout:ho,lightsCount:$o,groupsCount:fo,plugsCount:bo,scenesCount:No,coversCount:Co,switchesCount:vo,sensorsCount:So,thermostatsCount:yo,pairingHeader:Ao,pairingHint:Oo,btnRequestApiKey:wo},To="Подключение deCONZ",Lo="IP-адрес deCONZ",Go="REST-порт",xo="WebSocket-порт",zo="API-ключ",Eo="Поведение",Ho="Интервал опроса (секунды)",ko="Время перехода (×100 мс)",Ro="Пульт Tint",Io="Автоматически применять цветовое колесо",Do="Сторожевой таймер пульта (минуты)",Mo="Светильники",Bo="Группы",Vo="Название",Wo="Модель",Ko="Производитель",Zo="Доступна",jo="Вкл/Выкл",qo="Яркость",Yo="Лампы",Fo="Все вкл.",_o="Хотя бы одна",Uo="Сцены",Jo="Действия",Qo="Положение",Xo="Температура",es="Заданное значение",ns="Клапан",ts="Значение",os="Тип",ss="Батарея",cs="Последнее событие",rs="Группа",as="Сцена",is="Новая группа",ls="Обновить",ds="Изменить",gs="Удалить",us="Сохранить",ps="Отмена",ms="Активировать",hs="Создать группу",$s="Изменить группу",fs="Название группы",bs="Выбрать лампы",Ns="Вкл",Cs="Выкл",vs="Да",Ss="Нет",ys="Открыто",As="Закрыто",Os="Движение",ws="Нет движения",Ps="Загрузка…",Ts="Лампы не найдены",Ls="Группы не найдены",Gs="Розетки не найдены",xs="Сцены не найдены",zs="Жалюзи не найдены",Es="Выключатели не найдены",Hs="Датчики не найдены",ks="Термостаты не найдены",Rs="Адаптер не подключён.",Is="Ошибка",Ds='Удалить группу "%s"?',Ms="Сохранение…",Bs="Удаление…",Vs="Экземпляр адаптера не запущен. Запустите его в разделе экземпляров ioBroker.",Ws="Нет ответа от адаптера (тайм-аут). Запущен ли экземпляр?",Ks="светильник(ов) найдено",Zs="групп(а) найдено",js="розетка(и) найдено",qs="сцена(ы) найдено",Ys="жалюзи найдено",Fs="выключатель(и) найдено",_s="датчик(и) найдено",Us="термостат(ы) найдено",Js="API-ключ",Qs="Сначала нажмите кнопку ниже, затем откройте Phoscon в браузере и перейдите в ☰ → Шлюз → Аутентификация приложения. Адаптер сам обнаружит окно сопряжения (каждые 3 с, до 60 с) и заполнит ключ.",Xs="Ожидать сопряжения deCONZ…",ec={"tint adapter settings":"Настройки адаптера tint",connectionHeader:To,ip:Lo,port:Go,wsPort:xo,apiKey:zo,behaviorHeader:Eo,pollingInterval:Ho,transitionTime:ko,remoteHeader:Ro,autoApplyColorWheel:Io,watchdogMinutes:Do,tabLights:Mo,tabGroups:Bo,colName:Vo,colModel:Wo,colManufacturer:Ko,colReachable:Zo,colOnOff:jo,colBrightness:qo,colLightCount:Yo,colAllOn:Fo,colAnyOn:_o,colScenes:Uo,colActions:Jo,colPosition:Qo,colTemperature:Xo,colSetpoint:es,colValve:ns,colValue:ts,colType:os,colBattery:ss,colLastEvent:cs,colGroup:rs,colScene:as,btnNewGroup:is,btnRefresh:ls,btnEdit:ds,btnDelete:gs,btnSave:us,btnCancel:ps,btnActivate:ms,dlgNewGroup:hs,dlgEditGroup:$s,dlgGroupName:fs,dlgSelectLights:bs,stateOn:Ns,stateOff:Cs,stateYes:vs,stateNo:Ss,stateOpen:ys,stateClosed:As,statePresence:Os,stateNoPresence:ws,msgLoading:Ps,msgNoLights:Ts,msgNoGroups:Ls,msgNoPlugs:Gs,msgNoScenes:xs,msgNoCovers:zs,msgNoSwitches:Es,msgNoSensors:Hs,msgNoThermostats:ks,msgNotConnected:Rs,msgError:Is,msgConfirmDelete:Ds,msgSaving:Ms,msgDeleting:Bs,msgAdapterOffline:Vs,msgTimeout:Ws,lightsCount:Ks,groupsCount:Zs,plugsCount:js,scenesCount:qs,coversCount:Ys,switchesCount:Fs,sensorsCount:_s,thermostatsCount:Us,pairingHeader:Js,pairingHint:Qs,btnRequestApiKey:Xs},nc="Ligação deCONZ",tc="Endereço IP do deCONZ",oc="Porta REST",sc="Porta WebSocket",cc="Chave API",rc="Comportamento",ac="Intervalo de sondagem (segundos)",ic="Tempo de transição (×100 ms)",lc="Controlo remoto Tint",dc="Aplicar roda de cores automaticamente",gc="Watchdog do controlo remoto (minutos)",uc="Luzes",pc="Grupos",mc="Nome",hc="Modelo",$c="Fabricante",fc="Alcançável",bc="Liga/Desliga",Nc="Brilho",Cc="Luzes",vc="Todas ligadas",Sc="Alguma ligada",yc="Cenas",Ac="Ações",Oc="Posição",wc="Temperatura",Pc="Ponto de ajuste",Tc="Válvula",Lc="Valor",Gc="Tipo",xc="Bateria",zc="Último evento",Ec="Grupo",Hc="Cena",kc="Novo grupo",Rc="Atualizar",Ic="Editar",Dc="Eliminar",Mc="Guardar",Bc="Cancelar",Vc="Ativar",Wc="Criar novo grupo",Kc="Editar grupo",Zc="Nome do grupo",jc="Selecionar luzes",qc="Ligado",Yc="Desligado",Fc="Sim",_c="Não",Uc="Aberto",Jc="Fechado",Qc="Movimento",Xc="Sem movimento",er="A carregar…",nr="Nenhuma luz encontrada",tr="Nenhum grupo encontrado",or="Nenhuma tomada encontrada",sr="Nenhuma cena encontrada",cr="Nenhum estore encontrado",rr="Nenhum interruptor encontrado",ar="Nenhum sensor encontrado",ir="Nenhum termostato encontrado",lr="Adaptador não ligado.",dr="Erro",gr='Eliminar grupo "%s"?',ur="A guardar…",pr="A eliminar…",mr="A instância do adaptador não está em execução. Por favor, inicie-a primeiro na vista de instâncias do ioBroker.",hr="Sem resposta do adaptador (tempo esgotado). A instância está em execução?",$r="luz(es) encontrada(s)",fr="grupo(s) encontrado(s)",br="tomada(s) encontrada(s)",Nr="cena(s) encontrada(s)",Cr="estore(s) encontrado(s)",vr="interruptor(es) encontrado(s)",Sr="sensor(es) encontrado(s)",yr="termostato(s) encontrado(s)",Ar="Chave API",Or="Clique primeiro no botão abaixo, depois abra o Phoscon no browser e vá a ☰ → Gateway → Autenticar app. O adaptador deteta a janela de emparelhamento automaticamente (a cada 3 s, até 60 s) e preenche a chave.",wr="Aguardar emparelhamento deCONZ…",Pr={"tint adapter settings":"Configurações do adaptador tint",connectionHeader:nc,ip:tc,port:oc,wsPort:sc,apiKey:cc,behaviorHeader:rc,pollingInterval:ac,transitionTime:ic,remoteHeader:lc,autoApplyColorWheel:dc,watchdogMinutes:gc,tabLights:uc,tabGroups:pc,colName:mc,colModel:hc,colManufacturer:$c,colReachable:fc,colOnOff:bc,colBrightness:Nc,colLightCount:Cc,colAllOn:vc,colAnyOn:Sc,colScenes:yc,colActions:Ac,colPosition:Oc,colTemperature:wc,colSetpoint:Pc,colValve:Tc,colValue:Lc,colType:Gc,colBattery:xc,colLastEvent:zc,colGroup:Ec,colScene:Hc,btnNewGroup:kc,btnRefresh:Rc,btnEdit:Ic,btnDelete:Dc,btnSave:Mc,btnCancel:Bc,btnActivate:Vc,dlgNewGroup:Wc,dlgEditGroup:Kc,dlgGroupName:Zc,dlgSelectLights:jc,stateOn:qc,stateOff:Yc,stateYes:Fc,stateNo:_c,stateOpen:Uc,stateClosed:Jc,statePresence:Qc,stateNoPresence:Xc,msgLoading:er,msgNoLights:nr,msgNoGroups:tr,msgNoPlugs:or,msgNoScenes:sr,msgNoCovers:cr,msgNoSwitches:rr,msgNoSensors:ar,msgNoThermostats:ir,msgNotConnected:lr,msgError:dr,msgConfirmDelete:gr,msgSaving:ur,msgDeleting:pr,msgAdapterOffline:mr,msgTimeout:hr,lightsCount:$r,groupsCount:fr,plugsCount:br,scenesCount:Nr,coversCount:Cr,switchesCount:vr,sensorsCount:Sr,thermostatsCount:yr,pairingHeader:Ar,pairingHint:Or,btnRequestApiKey:wr},Tr="deCONZ-verbinding",Lr="deCONZ IP-adres",Gr="REST-poort",xr="WebSocket-poort",zr="API-sleutel",Er="Gedrag",Hr="Polling-interval (seconden)",kr="Overgangstijd (×100 ms)",Rr="Tint afstandsbediening",Ir="Kleurenwiel automatisch toepassen",Dr="Watchdog afstandsbediening (minuten)",Mr="Lampen",Br="Groepen",Vr="Naam",Wr="Model",Kr="Fabrikant",Zr="Bereikbaar",jr="Aan/Uit",qr="Helderheid",Yr="Lampen",Fr="Alle aan",_r="Minstens één aan",Ur="Scènes",Jr="Acties",Qr="Positie",Xr="Temperatuur",ea="Instelpunt",na="Klep",ta="Waarde",oa="Type",sa="Batterij",ca="Laatste gebeurtenis",ra="Groep",aa="Scène",ia="Nieuwe groep",la="Vernieuwen",da="Bewerken",ga="Verwijderen",ua="Opslaan",pa="Annuleren",ma="Activeren",ha="Nieuwe groep aanmaken",$a="Groep bewerken",fa="Groepsnaam",ba="Lampen selecteren",Na="Aan",Ca="Uit",va="Ja",Sa="Nee",ya="Open",Aa="Gesloten",Oa="Beweging",wa="Geen beweging",Pa="Gegevens laden…",Ta="Geen lampen gevonden",La="Geen groepen gevonden",Ga="Geen stekkers gevonden",xa="Geen scènes gevonden",za="Geen rolluiken gevonden",Ea="Geen schakelaars gevonden",Ha="Geen sensoren gevonden",ka="Geen thermostaten gevonden",Ra="Adapter niet verbonden.",Ia="Fout",Da='Groep "%s" verwijderen?',Ma="Opslaan…",Ba="Verwijderen…",Va="De adapterinstantie is niet gestart. Start deze eerst in de ioBroker-instanties weergave.",Wa="Geen reactie van de adapter (time-out). Draait de instantie?",Ka="lamp(en) gevonden",Za="groep(en) gevonden",ja="stekker(s) gevonden",qa="scène(s) gevonden",Ya="rolluik(en) gevonden",Fa="schakelaar(s) gevonden",_a="sensor(en) gevonden",Ua="thermostaat/thermostaten gevonden",Ja="API-sleutel",Qa="Klik eerst op de knop hieronder en open dan Phoscon in uw browser via ☰ → Gateway → App koppelen. De adapter detecteert het koppelvenster automatisch (elke 3 s, tot 60 s) en vult de sleutel in.",Xa="Wachten op deCONZ-koppeling…",ei={"tint adapter settings":"Adapterinstellingen voor tint",connectionHeader:Tr,ip:Lr,port:Gr,wsPort:xr,apiKey:zr,behaviorHeader:Er,pollingInterval:Hr,transitionTime:kr,remoteHeader:Rr,autoApplyColorWheel:Ir,watchdogMinutes:Dr,tabLights:Mr,tabGroups:Br,colName:Vr,colModel:Wr,colManufacturer:Kr,colReachable:Zr,colOnOff:jr,colBrightness:qr,colLightCount:Yr,colAllOn:Fr,colAnyOn:_r,colScenes:Ur,colActions:Jr,colPosition:Qr,colTemperature:Xr,colSetpoint:ea,colValve:na,colValue:ta,colType:oa,colBattery:sa,colLastEvent:ca,colGroup:ra,colScene:aa,btnNewGroup:ia,btnRefresh:la,btnEdit:da,btnDelete:ga,btnSave:ua,btnCancel:pa,btnActivate:ma,dlgNewGroup:ha,dlgEditGroup:$a,dlgGroupName:fa,dlgSelectLights:ba,stateOn:Na,stateOff:Ca,stateYes:va,stateNo:Sa,stateOpen:ya,stateClosed:Aa,statePresence:Oa,stateNoPresence:wa,msgLoading:Pa,msgNoLights:Ta,msgNoGroups:La,msgNoPlugs:Ga,msgNoScenes:xa,msgNoCovers:za,msgNoSwitches:Ea,msgNoSensors:Ha,msgNoThermostats:ka,msgNotConnected:Ra,msgError:Ia,msgConfirmDelete:Da,msgSaving:Ma,msgDeleting:Ba,msgAdapterOffline:Va,msgTimeout:Wa,lightsCount:Ka,groupsCount:Za,plugsCount:ja,scenesCount:qa,coversCount:Ya,switchesCount:Fa,sensorsCount:_a,thermostatsCount:Ua,pairingHeader:Ja,pairingHint:Qa,btnRequestApiKey:Xa},ni="Connexion deCONZ",ti="Adresse IP deCONZ",oi="Port REST",si="Port WebSocket",ci="Clé API",ri="Comportement",ai="Intervalle d'interrogation (secondes)",ii="Temps de transition (×100 ms)",li="Télécommande Tint",di="Appliquer la roue chromatique automatiquement",gi="Chien de garde télécommande (minutes)",ui="Lampes",pi="Groupes",mi="Nom",hi="Modèle",$i="Fabricant",fi="Accessible",bi="Allumé/Éteint",Ni="Luminosité",Ci="Lampes",vi="Toutes allumées",Si="Au moins une",yi="Scènes",Ai="Actions",Oi="Position",wi="Température",Pi="Consigne",Ti="Vanne",Li="Valeur",Gi="Type",xi="Batterie",zi="Dernier événement",Ei="Groupe",Hi="Scène",ki="Nouveau groupe",Ri="Actualiser",Ii="Modifier",Di="Supprimer",Mi="Enregistrer",Bi="Annuler",Vi="Activer",Wi="Créer un groupe",Ki="Modifier le groupe",Zi="Nom du groupe",ji="Sélectionner les lampes",qi="Allumé",Yi="Éteint",Fi="Oui",_i="Non",Ui="Ouvert",Ji="Fermé",Qi="Mouvement",Xi="Pas de mouvement",el="Chargement…",nl="Aucune lampe trouvée",tl="Aucun groupe trouvé",ol="Aucune prise trouvée",sl="Aucune scène trouvée",cl="Aucun volet trouvé",rl="Aucun interrupteur trouvé",al="Aucun capteur trouvé",il="Aucun thermostat trouvé",ll="Adaptateur non connecté.",dl="Erreur",gl='Supprimer le groupe "%s" ?',ul="Enregistrement…",pl="Suppression…",ml="L'instance de l'adaptateur n'est pas démarrée. Veuillez d'abord la démarrer dans la vue des instances ioBroker.",hl="Pas de réponse de l'adaptateur (délai dépassé). L'instance est-elle en cours d'exécution ?",$l="lampe(s) trouvée(s)",fl="groupe(s) trouvé(s)",bl="prise(s) trouvée(s)",Nl="scène(s) trouvée(s)",Cl="volet(s) trouvé(s)",vl="interrupteur(s) trouvé(s)",Sl="capteur(s) trouvé(s)",yl="thermostat(s) trouvé(s)",Al="Clé API",Ol="Cliquez d'abord sur le bouton ci-dessous, puis ouvrez Phoscon dans votre navigateur et allez dans ☰ → Passerelle → Authentifier l'application. L'adaptateur détecte automatiquement la fenêtre de couplage (toutes les 3 s, jusqu'à 60 s) et remplit la clé.",wl="Attendre le couplage deCONZ…",Pl={"tint adapter settings":"Paramètres de l'adaptateur tint",connectionHeader:ni,ip:ti,port:oi,wsPort:si,apiKey:ci,behaviorHeader:ri,pollingInterval:ai,transitionTime:ii,remoteHeader:li,autoApplyColorWheel:di,watchdogMinutes:gi,tabLights:ui,tabGroups:pi,colName:mi,colModel:hi,colManufacturer:$i,colReachable:fi,colOnOff:bi,colBrightness:Ni,colLightCount:Ci,colAllOn:vi,colAnyOn:Si,colScenes:yi,colActions:Ai,colPosition:Oi,colTemperature:wi,colSetpoint:Pi,colValve:Ti,colValue:Li,colType:Gi,colBattery:xi,colLastEvent:zi,colGroup:Ei,colScene:Hi,btnNewGroup:ki,btnRefresh:Ri,btnEdit:Ii,btnDelete:Di,btnSave:Mi,btnCancel:Bi,btnActivate:Vi,dlgNewGroup:Wi,dlgEditGroup:Ki,dlgGroupName:Zi,dlgSelectLights:ji,stateOn:qi,stateOff:Yi,stateYes:Fi,stateNo:_i,stateOpen:Ui,stateClosed:Ji,statePresence:Qi,stateNoPresence:Xi,msgLoading:el,msgNoLights:nl,msgNoGroups:tl,msgNoPlugs:ol,msgNoScenes:sl,msgNoCovers:cl,msgNoSwitches:rl,msgNoSensors:al,msgNoThermostats:il,msgNotConnected:ll,msgError:dl,msgConfirmDelete:gl,msgSaving:ul,msgDeleting:pl,msgAdapterOffline:ml,msgTimeout:hl,lightsCount:$l,groupsCount:fl,plugsCount:bl,scenesCount:Nl,coversCount:Cl,switchesCount:vl,sensorsCount:Sl,thermostatsCount:yl,pairingHeader:Al,pairingHint:Ol,btnRequestApiKey:wl},Tl="Connessione deCONZ",Ll="Indirizzo IP deCONZ",Gl="Porta REST",xl="Porta WebSocket",zl="Chiave API",El="Comportamento",Hl="Intervallo di polling (secondi)",kl="Tempo di transizione (×100 ms)",Rl="Telecomando Tint",Il="Applicare la ruota dei colori automaticamente",Dl="Watchdog telecomando (minuti)",Ml="Luci",Bl="Gruppi",Vl="Nome",Wl="Modello",Kl="Produttore",Zl="Raggiungibile",jl="Acceso/Spento",ql="Luminosità",Yl="Luci",Fl="Tutte accese",_l="Almeno una",Ul="Scene",Jl="Azioni",Ql="Posizione",Xl="Temperatura",ed="Valore impostato",nd="Valvola",td="Valore",od="Tipo",sd="Batteria",cd="Ultimo evento",rd="Gruppo",ad="Scena",id="Nuovo gruppo",ld="Aggiorna",dd="Modifica",gd="Elimina",ud="Salva",pd="Annulla",md="Attiva",hd="Crea nuovo gruppo",$d="Modifica gruppo",fd="Nome gruppo",bd="Seleziona luci",Nd="Acceso",Cd="Spento",vd="Sì",Sd="No",yd="Aperto",Ad="Chiuso",Od="Movimento",wd="Nessun movimento",Pd="Caricamento…",Td="Nessuna luce trovata",Ld="Nessun gruppo trovato",Gd="Nessuna presa trovata",xd="Nessuna scena trovata",zd="Nessuna tenda trovata",Ed="Nessun interruttore trovato",Hd="Nessun sensore trovato",kd="Nessun termostato trovato",Rd="Adattatore non connesso.",Id="Errore",Dd='Eliminare il gruppo "%s"?',Md="Salvataggio…",Bd="Eliminazione…",Vd="L'istanza dell'adattatore non è in esecuzione. Avviarla prima nella vista delle istanze di ioBroker.",Wd="Nessuna risposta dall'adattatore (timeout). L'istanza è in esecuzione?",Kd="luce/luci trovata/e",Zd="gruppo/i trovato/i",jd="presa/e trovata/e",qd="scena/e trovata/e",Yd="tenda/e trovata/e",Fd="interruttore/i trovato/i",_d="sensore/i trovato/i",Ud="termostato/i trovato/i",Jd="Chiave API",Qd="Fai prima clic sul pulsante in basso, poi apri Phoscon nel browser e vai su ☰ → Gateway → Autentica app. L'adattatore rileva automaticamente la finestra di accoppiamento (ogni 3 s, fino a 60 s) e compila la chiave.",Xd="Attendi accoppiamento deCONZ…",eg={"tint adapter settings":"Impostazioni adattatore tint",connectionHeader:Tl,ip:Ll,port:Gl,wsPort:xl,apiKey:zl,behaviorHeader:El,pollingInterval:Hl,transitionTime:kl,remoteHeader:Rl,autoApplyColorWheel:Il,watchdogMinutes:Dl,tabLights:Ml,tabGroups:Bl,colName:Vl,colModel:Wl,colManufacturer:Kl,colReachable:Zl,colOnOff:jl,colBrightness:ql,colLightCount:Yl,colAllOn:Fl,colAnyOn:_l,colScenes:Ul,colActions:Jl,colPosition:Ql,colTemperature:Xl,colSetpoint:ed,colValve:nd,colValue:td,colType:od,colBattery:sd,colLastEvent:cd,colGroup:rd,colScene:ad,btnNewGroup:id,btnRefresh:ld,btnEdit:dd,btnDelete:gd,btnSave:ud,btnCancel:pd,btnActivate:md,dlgNewGroup:hd,dlgEditGroup:$d,dlgGroupName:fd,dlgSelectLights:bd,stateOn:Nd,stateOff:Cd,stateYes:vd,stateNo:Sd,stateOpen:yd,stateClosed:Ad,statePresence:Od,stateNoPresence:wd,msgLoading:Pd,msgNoLights:Td,msgNoGroups:Ld,msgNoPlugs:Gd,msgNoScenes:xd,msgNoCovers:zd,msgNoSwitches:Ed,msgNoSensors:Hd,msgNoThermostats:kd,msgNotConnected:Rd,msgError:Id,msgConfirmDelete:Dd,msgSaving:Md,msgDeleting:Bd,msgAdapterOffline:Vd,msgTimeout:Wd,lightsCount:Kd,groupsCount:Zd,plugsCount:jd,scenesCount:qd,coversCount:Yd,switchesCount:Fd,sensorsCount:_d,thermostatsCount:Ud,pairingHeader:Jd,pairingHint:Qd,btnRequestApiKey:Xd},ng="Conexión deCONZ",tg="Dirección IP de deCONZ",og="Puerto REST",sg="Puerto WebSocket",cg="Clave API",rg="Comportamiento",ag="Intervalo de sondeo (segundos)",ig="Tiempo de transición (×100 ms)",lg="Mando a distancia Tint",dg="Aplicar rueda de colores automáticamente",gg="Watchdog del mando (minutos)",ug="Luces",pg="Grupos",mg="Nombre",hg="Modelo",$g="Fabricante",fg="Alcanzable",bg="Encendido/Apagado",Ng="Brillo",Cg="Luces",vg="Todas encendidas",Sg="Al menos una",yg="Escenas",Ag="Acciones",Og="Posición",wg="Temperatura",Pg="Valor de consigna",Tg="Válvula",Lg="Valor",Gg="Tipo",xg="Batería",zg="Último evento",Eg="Grupo",Hg="Escena",kg="Nuevo grupo",Rg="Actualizar",Ig="Editar",Dg="Eliminar",Mg="Guardar",Bg="Cancelar",Vg="Activar",Wg="Crear nuevo grupo",Kg="Editar grupo",Zg="Nombre del grupo",jg="Seleccionar luces",qg="Encendido",Yg="Apagado",Fg="Sí",_g="No",Ug="Abierto",Jg="Cerrado",Qg="Movimiento",Xg="Sin movimiento",eu="Cargando…",nu="No se encontraron luces",tu="No se encontraron grupos",ou="No se encontraron enchufes",su="No se encontraron escenas",cu="No se encontraron persianas",ru="No se encontraron interruptores",au="No se encontraron sensores",iu="No se encontraron termostatos",lu="Adaptador no conectado.",du="Error",gu='¿Eliminar el grupo "%s"?',uu="Guardando…",pu="Eliminando…",mu="La instancia del adaptador no está en ejecución. Por favor, iníciela primero en la vista de instancias de ioBroker.",hu="Sin respuesta del adaptador (tiempo de espera agotado). ¿Está en ejecución la instancia?",$u="luz/luces encontrada(s)",fu="grupo(s) encontrado(s)",bu="enchufe(s) encontrado(s)",Nu="escena(s) encontrada(s)",Cu="persiana(s) encontrada(s)",vu="interruptor(es) encontrado(s)",Su="sensor(es) encontrado(s)",yu="termostato(s) encontrado(s)",Au="Clave API",Ou="Haga clic primero en el botón de abajo y luego abra Phoscon en su navegador y vaya a ☰ → Gateway → Autenticar app. El adaptador detecta automáticamente la ventana de emparejamiento (cada 3 s, hasta 60 s) y rellena la clave.",wu="Esperar emparejamiento deCONZ…",Pu={"tint adapter settings":"Configuración del adaptador tint",connectionHeader:ng,ip:tg,port:og,wsPort:sg,apiKey:cg,behaviorHeader:rg,pollingInterval:ag,transitionTime:ig,remoteHeader:lg,autoApplyColorWheel:dg,watchdogMinutes:gg,tabLights:ug,tabGroups:pg,colName:mg,colModel:hg,colManufacturer:$g,colReachable:fg,colOnOff:bg,colBrightness:Ng,colLightCount:Cg,colAllOn:vg,colAnyOn:Sg,colScenes:yg,colActions:Ag,colPosition:Og,colTemperature:wg,colSetpoint:Pg,colValve:Tg,colValue:Lg,colType:Gg,colBattery:xg,colLastEvent:zg,colGroup:Eg,colScene:Hg,btnNewGroup:kg,btnRefresh:Rg,btnEdit:Ig,btnDelete:Dg,btnSave:Mg,btnCancel:Bg,btnActivate:Vg,dlgNewGroup:Wg,dlgEditGroup:Kg,dlgGroupName:Zg,dlgSelectLights:jg,stateOn:qg,stateOff:Yg,stateYes:Fg,stateNo:_g,stateOpen:Ug,stateClosed:Jg,statePresence:Qg,stateNoPresence:Xg,msgLoading:eu,msgNoLights:nu,msgNoGroups:tu,msgNoPlugs:ou,msgNoScenes:su,msgNoCovers:cu,msgNoSwitches:ru,msgNoSensors:au,msgNoThermostats:iu,msgNotConnected:lu,msgError:du,msgConfirmDelete:gu,msgSaving:uu,msgDeleting:pu,msgAdapterOffline:mu,msgTimeout:hu,lightsCount:$u,groupsCount:fu,plugsCount:bu,scenesCount:Nu,coversCount:Cu,switchesCount:vu,sensorsCount:Su,thermostatsCount:yu,pairingHeader:Au,pairingHint:Ou,btnRequestApiKey:wu},Tu="Połączenie deCONZ",Lu="Adres IP deCONZ",Gu="Port REST",xu="Port WebSocket",zu="Klucz API",Eu="Zachowanie",Hu="Interwał odpytywania (sekundy)",ku="Czas przejścia (×100 ms)",Ru="Pilot Tint",Iu="Automatyczne stosowanie koła kolorów",Du="Watchdog pilota (minuty)",Mu="Lampy",Bu="Grupy",Vu="Nazwa",Wu="Model",Ku="Producent",Zu="Dostępna",ju="Wł/Wył",qu="Jasność",Yu="Lampy",Fu="Wszystkie wł.",_u="Przynajmniej jedna",Uu="Sceny",Ju="Akcje",Qu="Pozycja",Xu="Temperatura",ep="Wartość zadana",np="Zawór",tp="Wartość",op="Typ",sp="Bateria",cp="Ostatnie zdarzenie",rp="Grupa",ap="Scenariusz",ip="Nowa grupa",lp="Odśwież",dp="Edytuj",gp="Usuń",up="Zapisz",pp="Anuluj",mp="Aktywuj",hp="Utwórz nową grupę",$p="Edytuj grupę",fp="Nazwa grupy",bp="Wybierz lampy",Np="Wł",Cp="Wył",vp="Tak",Sp="Nie",yp="Otwarte",Ap="Zamknięte",Op="Ruch",wp="Brak ruchu",Pp="Ładowanie…",Tp="Nie znaleziono lamp",Lp="Nie znaleziono grup",Gp="Nie znaleziono gniazdek",xp="Nie znaleziono scenariuszy",zp="Nie znaleziono rolet",Ep="Nie znaleziono przełączników",Hp="Nie znaleziono czujników",kp="Nie znaleziono termostatów",Rp="Adapter nie jest połączony.",Ip="Błąd",Dp='Usunąć grupę "%s"?',Mp="Zapisywanie…",Bp="Usuwanie…",Vp="Instancja adaptera nie jest uruchomiona. Uruchom ją najpierw w widoku instancji ioBroker.",Wp="Brak odpowiedzi od adaptera (przekroczenie czasu). Czy instancja jest uruchomiona?",Kp="lampa/lampy znaleziono",Zp="grupa/grupy znaleziono",jp="gniazdko/a znaleziono",qp="scenariusz/e znaleziono",Yp="roleta/y znaleziono",Fp="przełącznik(i) znaleziono",_p="czujnik(i) znaleziono",Up="termostat(y) znaleziono",Jp="Klucz API",Qp="Najpierw kliknij przycisk poniżej, a następnie otwórz Phoscon w przeglądarce i przejdź do ☰ → Bramka → Uwierzytelnij aplikację. Adapter automatycznie wykryje okno parowania (co 3 s, do 60 s) i wpisze klucz.",Xp="Czekaj na parowanie deCONZ…",em={"tint adapter settings":"Ustawienia adaptera tint",connectionHeader:Tu,ip:Lu,port:Gu,wsPort:xu,apiKey:zu,behaviorHeader:Eu,pollingInterval:Hu,transitionTime:ku,remoteHeader:Ru,autoApplyColorWheel:Iu,watchdogMinutes:Du,tabLights:Mu,tabGroups:Bu,colName:Vu,colModel:Wu,colManufacturer:Ku,colReachable:Zu,colOnOff:ju,colBrightness:qu,colLightCount:Yu,colAllOn:Fu,colAnyOn:_u,colScenes:Uu,colActions:Ju,colPosition:Qu,colTemperature:Xu,colSetpoint:ep,colValve:np,colValue:tp,colType:op,colBattery:sp,colLastEvent:cp,colGroup:rp,colScene:ap,btnNewGroup:ip,btnRefresh:lp,btnEdit:dp,btnDelete:gp,btnSave:up,btnCancel:pp,btnActivate:mp,dlgNewGroup:hp,dlgEditGroup:$p,dlgGroupName:fp,dlgSelectLights:bp,stateOn:Np,stateOff:Cp,stateYes:vp,stateNo:Sp,stateOpen:yp,stateClosed:Ap,statePresence:Op,stateNoPresence:wp,msgLoading:Pp,msgNoLights:Tp,msgNoGroups:Lp,msgNoPlugs:Gp,msgNoScenes:xp,msgNoCovers:zp,msgNoSwitches:Ep,msgNoSensors:Hp,msgNoThermostats:kp,msgNotConnected:Rp,msgError:Ip,msgConfirmDelete:Dp,msgSaving:Mp,msgDeleting:Bp,msgAdapterOffline:Vp,msgTimeout:Wp,lightsCount:Kp,groupsCount:Zp,plugsCount:jp,scenesCount:qp,coversCount:Yp,switchesCount:Fp,sensorsCount:_p,thermostatsCount:Up,pairingHeader:Jp,pairingHint:Qp,btnRequestApiKey:Xp},nm="Підключення deCONZ",tm="IP-адреса deCONZ",om="REST-порт",sm="WebSocket-порт",cm="API-ключ",rm="Поведінка",am="Інтервал опитування (секунди)",im="Час переходу (×100 мс)",lm="Пульт Tint",dm="Автоматично застосовувати колесо кольорів",gm="Сторожовий таймер пульта (хвилини)",um="Світильники",pm="Групи",mm="Назва",hm="Модель",$m="Виробник",fm="Доступна",bm="Увімк/Вимк",Nm="Яскравість",Cm="Лампи",vm="Всі увімк.",Sm="Хоча б одна",ym="Сцени",Am="Дії",Om="Положення",wm="Температура",Pm="Задане значення",Tm="Клапан",Lm="Значення",Gm="Тип",xm="Батарея",zm="Остання подія",Em="Група",Hm="Сцена",km="Нова група",Rm="Оновити",Im="Редагувати",Dm="Видалити",Mm="Зберегти",Bm="Скасувати",Vm="Активувати",Wm="Створити групу",Km="Редагувати групу",Zm="Назва групи",jm="Вибрати лампи",qm="Увімк",Ym="Вимк",Fm="Так",_m="Ні",Um="Відкрито",Jm="Закрито",Qm="Рух",Xm="Немає руху",eh="Завантаження…",nh="Лампи не знайдено",th="Групи не знайдено",oh="Розетки не знайдено",sh="Сцени не знайдено",ch="Жалюзі не знайдено",rh="Вимикачі не знайдено",ah="Датчики не знайдено",ih="Термостати не знайдено",lh="Адаптер не підключено.",dh="Помилка",gh='Видалити групу "%s"?',uh="Збереження…",ph="Видалення…",mh="Екземпляр адаптера не запущено. Будь ласка, спочатку запустіть його в переліку екземплярів ioBroker.",hh="Немає відповіді від адаптера (тайм-аут). Чи запущено екземпляр?",$h="світильник(ів) знайдено",fh="групу(п) знайдено",bh="розетку(и) знайдено",Nh="сцену(и) знайдено",Ch="жалюзі знайдено",vh="вимикач(і) знайдено",Sh="датчик(и) знайдено",yh="термостат(и) знайдено",Ah="API-ключ",Oh="Спочатку натисніть кнопку нижче, потім відкрийте Phoscon у браузері та перейдіть до ☰ → Шлюз → Автентифікація додатка. Адаптер автоматично виявить вікно сполучення (кожні 3 с, до 60 с) і заповнить ключ.",wh="Очікувати сполучення deCONZ…",Ph={"tint adapter settings":"Налаштування адаптера tint",connectionHeader:nm,ip:tm,port:om,wsPort:sm,apiKey:cm,behaviorHeader:rm,pollingInterval:am,transitionTime:im,remoteHeader:lm,autoApplyColorWheel:dm,watchdogMinutes:gm,tabLights:um,tabGroups:pm,colName:mm,colModel:hm,colManufacturer:$m,colReachable:fm,colOnOff:bm,colBrightness:Nm,colLightCount:Cm,colAllOn:vm,colAnyOn:Sm,colScenes:ym,colActions:Am,colPosition:Om,colTemperature:wm,colSetpoint:Pm,colValve:Tm,colValue:Lm,colType:Gm,colBattery:xm,colLastEvent:zm,colGroup:Em,colScene:Hm,btnNewGroup:km,btnRefresh:Rm,btnEdit:Im,btnDelete:Dm,btnSave:Mm,btnCancel:Bm,btnActivate:Vm,dlgNewGroup:Wm,dlgEditGroup:Km,dlgGroupName:Zm,dlgSelectLights:jm,stateOn:qm,stateOff:Ym,stateYes:Fm,stateNo:_m,stateOpen:Um,stateClosed:Jm,statePresence:Qm,stateNoPresence:Xm,msgLoading:eh,msgNoLights:nh,msgNoGroups:th,msgNoPlugs:oh,msgNoScenes:sh,msgNoCovers:ch,msgNoSwitches:rh,msgNoSensors:ah,msgNoThermostats:ih,msgNotConnected:lh,msgError:dh,msgConfirmDelete:gh,msgSaving:uh,msgDeleting:ph,msgAdapterOffline:mh,msgTimeout:hh,lightsCount:$h,groupsCount:fh,plugsCount:bh,scenesCount:Nh,coversCount:Ch,switchesCount:vh,sensorsCount:Sh,thermostatsCount:yh,pairingHeader:Ah,pairingHint:Oh,btnRequestApiKey:wh},Th="deCONZ 连接",Lh="deCONZ IP 地址",Gh="REST 端口",xh="WebSocket 端口",zh="API 密钥",Eh="行为",Hh="轮询间隔(秒)",kh="过渡时间(×100 毫秒)",Rh="Tint 遥控器",Ih="自动应用色轮到灯具",Dh="遥控器看门狗(分钟)",Mh="灯具",Bh="群组",Vh="名称",Wh="型号",Kh="制造商",Zh="可达",jh="开/关",qh="亮度",Yh="灯具数",Fh="全部开启",_h="至少一个开",Uh="场景",Jh="操作",Qh="位置",Xh="温度",e$="设定值",n$="阀门",t$="数值",o$="类型",s$="电池",c$="最后事件",r$="群组",a$="场景",i$="新建群组",l$="刷新",d$="编辑",g$="删除",u$="保存",p$="取消",m$="激活",h$="创建新群组",$$="编辑群组",f$="群组名称",b$="选择灯具",N$="开",C$="关",v$="是",S$="否",y$="打开",A$="关闭",O$="有动作",w$="无动作",P$="加载中…",T$="未找到灯具",L$="未找到群组",G$="未找到插座",x$="未找到场景",z$="未找到卷帘",E$="未找到开关",H$="未找到传感器",k$="未找到恒温器",R$="适配器未连接。",I$="错误",D$='确定删除群组"%s"?',M$="保存中…",B$="删除中…",V$="适配器实例未运行。请先在ioBroker实例视图中启动它。",W$="适配器无响应(超时)。实例是否正在运行?",K$="个灯具已找到",Z$="个群组已找到",j$="个插座已找到",q$="个场景已找到",Y$="个卷帘已找到",F$="个开关已找到",_$="个传感器已找到",U$="个恒温器已找到",J$="API密钥",Q$="首先点击下方按钮,然后在浏览器中打开Phoscon,进入☰→网关→验证应用。适配器会自动检测配对窗口(每3秒检测一次,最多60秒)并填入密钥。",X$="等待deCONZ配对…",ef={"tint adapter settings":"tint 适配器设置",connectionHeader:Th,ip:Lh,port:Gh,wsPort:xh,apiKey:zh,behaviorHeader:Eh,pollingInterval:Hh,transitionTime:kh,remoteHeader:Rh,autoApplyColorWheel:Ih,watchdogMinutes:Dh,tabLights:Mh,tabGroups:Bh,colName:Vh,colModel:Wh,colManufacturer:Kh,colReachable:Zh,colOnOff:jh,colBrightness:qh,colLightCount:Yh,colAllOn:Fh,colAnyOn:_h,colScenes:Uh,colActions:Jh,colPosition:Qh,colTemperature:Xh,colSetpoint:e$,colValve:n$,colValue:t$,colType:o$,colBattery:s$,colLastEvent:c$,colGroup:r$,colScene:a$,btnNewGroup:i$,btnRefresh:l$,btnEdit:d$,btnDelete:g$,btnSave:u$,btnCancel:p$,btnActivate:m$,dlgNewGroup:h$,dlgEditGroup:$$,dlgGroupName:f$,dlgSelectLights:b$,stateOn:N$,stateOff:C$,stateYes:v$,stateNo:S$,stateOpen:y$,stateClosed:A$,statePresence:O$,stateNoPresence:w$,msgLoading:P$,msgNoLights:T$,msgNoGroups:L$,msgNoPlugs:G$,msgNoScenes:x$,msgNoCovers:z$,msgNoSwitches:E$,msgNoSensors:H$,msgNoThermostats:k$,msgNotConnected:R$,msgError:I$,msgConfirmDelete:D$,msgSaving:M$,msgDeleting:B$,msgAdapterOffline:V$,msgTimeout:W$,lightsCount:K$,groupsCount:Z$,plugsCount:j$,scenesCount:q$,coversCount:Y$,switchesCount:F$,sensorsCount:_$,thermostatsCount:U$,pairingHeader:J$,pairingHint:Q$,btnRequestApiKey:X$},X={en:Xn,de:Po,ru:ec,pt:Pr,nl:ei,fr:Pl,it:eg,es:Pu,pl:em,uk:Ph,"zh-cn":ef};function Y(a){const n=X[a]||X.en;return i=>n[i]||X.en[i]||i}function nf({socket:a,instance:n,systemConfig:i,alive:s}){const $=i?.language,c=Y($||"en"),f=T((d,h)=>new Promise(g=>{const u=setTimeout(()=>g({error:c("msgTimeout")}),1e4);a.sendTo(`tint.${n}`,d,h||{}).then(t=>{clearTimeout(u),g(t)}).catch(t=>{clearTimeout(u),g({error:t?.message||String(t)})})}),[a,n,$]);return e(Oe,{sendToAdapter:f,t:c,alive:s})}const tf={maxHeight:320,overflowY:"auto",border:"1px solid",borderColor:"divider",borderRadius:1,padding:"0 8px"},of={color:"text.secondary",fontSize:"0.75rem"};function sf({open:a,group:n,allLights:i,onSave:s,onClose:$,t:c}){const[f,d]=C(""),[h,g]=C({}),[u,t]=C(!1),[N,m]=C(!1);z(()=>{if(!a)return;d(n?n.name:"");const S={};n&&Array.isArray(n.lights)&&n.lights.forEach(w=>{S[w]=!0}),g(S),t(!1),m(!1)},[a,n]);const b=S=>{g(w=>({...w,[S]:!w[S]}))},L=async()=>{if(!f.trim()){m(!0);return}t(!0);const S=Object.entries(h).filter(([,w])=>w).map(([w])=>w);await s(f.trim(),S),t(!1)},x=i?Object.entries(i):[];return o(le,{open:a,onClose:(S,w)=>{w==="backdropClick"&&u||$()},maxWidth:"xs",fullWidth:!0,children:[e(de,{children:c(!!n?"dlgEditGroup":"dlgNewGroup")}),o(ge,{children:[e(ue,{sx:{marginBottom:2},label:c("dlgGroupName"),value:f,onChange:S=>{d(S.target.value),m(!1)},error:N,helperText:N?c("msgError"):"",fullWidth:!0,autoFocus:!0,disabled:u,variant:"outlined",size:"small"}),e(p,{variant:"subtitle2",gutterBottom:!0,children:c("dlgSelectLights")}),e(l,{sx:tf,children:x.length===0?e(p,{variant:"body2",sx:{padding:"8px"},children:c("msgNoLights")}):x.map(([S,w])=>e(pe,{control:e(me,{checked:!!h[S],onChange:()=>b(S),size:"small",disabled:u,color:"primary"}),label:o("span",{children:[e("span",{style:{fontSize:"0.875rem"},children:w.name}),w.modelid&&o(l,{component:"span",sx:of,children:[" (",w.modelid,")"]})]})},S))})]}),o(he,{children:[e(G,{onClick:$,disabled:u,children:c("btnCancel")}),e(G,{onClick:L,color:"primary",variant:"contained",disabled:u,startIcon:u?e(A,{size:16}):void 0,children:c(u?"msgSaving":"btnSave")})]})]})}const se={color:"#e65100",fontWeight:"bold"},ce={color:"#9e9e9e"},cf={margin:"2px",height:20,fontSize:"0.7rem"},re={minWidth:0,padding:"3px 10px",fontSize:"0.75rem",marginLeft:"4px"};function rf({sendToAdapter:a,t:n,alive:i}){const[s,$]=C(null),[c,f]=C({}),[d,h]=C(!1),[g,u]=C(""),[t,N]=C(!1),[m,b]=C(null),L=T(async()=>{h(!0),u("");const[O,y]=await Promise.all([a("getGroups",{}),a("getLights",{})]);if(h(!1),O&&O.error){u(O.error);return}O&&O.groups&&$(O.groups),y&&y.lights&&f(y.lights)},[a]);if(z(()=>{i!==!1&&L()},[L,i]),i===!1)return o(l,{sx:[v,V],children:[e("span",{children:"⚠️"}),e("span",{children:e("strong",{children:n("msgAdapterOffline")})})]});const x=()=>{b(null),N(!0)},U=(O,y)=>{b({id:O,name:y.name,lights:y.lights||[]}),N(!0)},S=async(O,y)=>{m?await a("updateGroup",{id:m.id,name:O,lights:y}):await a("createGroup",{name:O,lights:y}),N(!1),await L()},w=async(O,y)=>{window.confirm(n("msgConfirmDelete").replace("%s",y))&&(await a("deleteGroup",{id:O}),await L())},J=s?Object.entries(s):[];return o(l,{sx:{padding:"0 0 16px 0"},children:[o(l,{sx:D,children:[e(q,{ok:g?!1:s!==null?!0:null,loading:d}),e(p,{variant:"body2",color:"textSecondary",children:d&&!s?n("msgLoading"):g?n("msgNotConnected"):s!==null?`${J.length} ${n("groupsCount")}`:"–"}),e(l,{sx:M}),e(G,{variant:"contained",color:"primary",size:"small",onClick:x,disabled:d||!!g,children:n("btnNewGroup")}),e(G,{variant:"outlined",size:"small",onClick:L,disabled:d,children:d?e(A,{size:14}):n("btnRefresh")})]}),g&&o(l,{sx:[v,B],children:[e("span",{children:"✖"}),o("div",{children:[o("strong",{children:[n("msgError"),":"]})," ",g]})]}),d&&!s&&o(l,{sx:j,children:[e(A,{size:36}),e(p,{variant:"body2",children:n("msgLoading")})]}),!d&&!g&&s!==null&&J.length===0&&o(l,{sx:[v,W],children:[e("span",{children:"ℹ"}),o("span",{children:[n("msgNoGroups")," ",e(G,{size:"small",color:"primary",onClick:x,sx:{verticalAlign:"baseline",padding:"0 4px",minHeight:"unset"},children:n("btnNewGroup")})]})]}),J.length>0&&e(E,{component:H,variant:"outlined",children:o(k,{size:"small",children:[e(R,{sx:K,children:o(P,{children:[e(r,{children:e("strong",{children:n("colName")})}),e(r,{align:"center",children:e("strong",{children:n("colLightCount")})}),e(r,{align:"center",children:e("strong",{children:n("colAllOn")})}),e(r,{align:"center",children:e("strong",{children:n("colAnyOn")})}),e(r,{children:e("strong",{children:n("colScenes")})}),e(r,{align:"right",children:e("strong",{children:n("colActions")})})]})}),e(I,{children:J.map(([O,y])=>{const Q=y.state||{},ne=Array.isArray(y.scenes)?y.scenes:[];return o(P,{sx:Z,children:[o(r,{children:[e(p,{variant:"body2",children:e("strong",{children:y.name})}),o(p,{variant:"caption",color:"textSecondary",children:["ID ",O]})]}),e(r,{align:"center",children:e(p,{variant:"body2",children:(y.lights||[]).length})}),e(r,{align:"center",children:e(l,{component:"span",sx:Q.all_on?se:ce,children:Q.all_on?n("stateYes"):n("stateNo")})}),e(r,{align:"center",children:e(l,{component:"span",sx:Q.any_on?se:ce,children:Q.any_on?n("stateYes"):n("stateNo")})}),e(r,{children:ne.length===0?e(p,{variant:"caption",color:"textSecondary",children:"–"}):ne.map(te=>e(ee,{label:te.name,size:"small",sx:cf},te.id))}),o(r,{align:"right",children:[e(oe,{title:n("btnEdit"),children:e(G,{sx:re,size:"small",variant:"outlined",onClick:()=>U(O,y),children:n("btnEdit")})}),e(oe,{title:n("btnDelete"),children:e(G,{sx:re,size:"small",variant:"outlined",color:"secondary",onClick:()=>w(O,y.name),children:n("btnDelete")})})]})]},O)})})]})}),e(sf,{open:t,group:m,allLights:c,onSave:S,onClose:()=>N(!1),t:n})]})}function af({socket:a,instance:n,systemConfig:i,alive:s}){const $=i?.language,c=Y($||"en"),f=T((d,h)=>new Promise(g=>{const u=setTimeout(()=>g({error:c("msgTimeout")}),1e4);a.sendTo(`tint.${n}`,d,h||{}).then(t=>{clearTimeout(u),g(t)}).catch(t=>{clearTimeout(u),g({error:t?.message||String(t)})})}),[a,n,$]);return e(rf,{sendToAdapter:f,t:c,alive:s})}function lf({sendToAdapter:a,t:n,alive:i}){const[s,$]=C(null),[c,f]=C(!1),[d,h]=C(""),g=T(async()=>{f(!0),h("");const t=await a("getLights",{});f(!1),t&&t.error?h(t.error):t&&t.lights&&$(t.lights)},[a]);if(z(()=>{i!==!1&&g()},[g,i]),i===!1)return o(l,{sx:[v,V],children:[e("span",{children:"⚠️"}),e("span",{children:e("strong",{children:n("msgAdapterOffline")})})]});const u=s?Object.entries(s).filter(([,t])=>ae(t)):[];return o(l,{sx:{padding:"0 0 16px 0"},children:[o(l,{sx:D,children:[e(q,{ok:d?!1:s!==null?!0:null,loading:c}),e(p,{variant:"body2",color:"textSecondary",children:c&&!s?n("msgLoading"):d?n("msgNotConnected"):s!==null?`${u.length} ${n("plugsCount")}`:"–"}),e(l,{sx:M}),e(G,{variant:"outlined",size:"small",onClick:g,disabled:c,children:c?e(A,{size:14}):n("btnRefresh")})]}),d&&o(l,{sx:[v,B],children:[e("span",{children:"✖"}),o("div",{children:[o("strong",{children:[n("msgError"),":"]})," ",d]})]}),c&&!s&&o(l,{sx:j,children:[e(A,{size:36}),e(p,{variant:"body2",children:n("msgLoading")})]}),!c&&!d&&s!==null&&u.length===0&&o(l,{sx:[v,W],children:[e("span",{children:"ℹ"}),e("span",{children:n("msgNoPlugs")})]}),u.length>0&&e(E,{component:H,variant:"outlined",children:o(k,{size:"small",children:[e(R,{sx:K,children:o(P,{children:[e(r,{children:e("strong",{children:n("colName")})}),e(r,{children:e("strong",{children:n("colModel")})}),e(r,{children:e("strong",{children:n("colManufacturer")})}),e(r,{align:"center",children:e("strong",{children:n("colReachable")})}),e(r,{align:"center",children:e("strong",{children:n("colOnOff")})})]})}),e(I,{children:u.map(([t,N])=>{const m=N.state||{};return o(P,{sx:Z,children:[o(r,{children:[e(p,{variant:"body2",children:e("strong",{children:N.name})}),o(p,{variant:"caption",color:"textSecondary",children:["ID ",t]})]}),e(r,{children:e(p,{variant:"body2",children:N.modelid||"–"})}),e(r,{children:e(p,{variant:"body2",children:N.manufacturername||"–"})}),e(r,{align:"center",children:e(l,{component:"span",sx:m.reachable?F:_,children:m.reachable?"✔":"✗"})}),e(r,{align:"center",children:e(ee,{label:m.on?n("stateOn"):n("stateOff"),size:"small",sx:{background:m.on?"#fff3e0":"#f5f5f5",color:m.on?"#e65100":"#757575",fontWeight:600,fontSize:"0.7rem",height:20}})})]},t)})})]})})]})}function df({socket:a,instance:n,systemConfig:i,alive:s}){const $=i?.language,c=Y($||"en"),f=T((d,h)=>new Promise(g=>{const u=setTimeout(()=>g({error:c("msgTimeout")}),1e4);a.sendTo(`tint.${n}`,d,h||{}).then(t=>{clearTimeout(u),g(t)}).catch(t=>{clearTimeout(u),g({error:t?.message||String(t)})})}),[a,n,$]);return e(lf,{sendToAdapter:f,t:c,alive:s})}function gf({sendToAdapter:a,t:n,alive:i}){const[s,$]=C(null),[c,f]=C(!1),[d,h]=C(""),[g,u]=C(null),t=T(async()=>{f(!0),h("");const b=await a("getGroups",{});if(f(!1),b&&b.error){h(b.error);return}if(b&&b.groups){const L=[];for(const[x,U]of Object.entries(b.groups))for(const S of U.scenes||[])L.push({groupId:x,groupName:U.name,sceneId:S.id,sceneName:S.name});$(L)}},[a]);z(()=>{i!==!1&&t()},[t,i]);const N=async b=>{const L=`${b.groupId}/${b.sceneId}`;u(L),h("");const x=await a("activateScene",{groupId:b.groupId,sceneId:b.sceneId,sceneName:b.sceneName});u(null),x&&x.error&&h(x.error)};if(i===!1)return o(l,{sx:[v,V],children:[e("span",{children:"⚠️"}),e("span",{children:e("strong",{children:n("msgAdapterOffline")})})]});const m=s||[];return o(l,{sx:{padding:"0 0 16px 0"},children:[o(l,{sx:D,children:[e(q,{ok:d?!1:s!==null?!0:null,loading:c}),e(p,{variant:"body2",color:"textSecondary",children:c&&!s?n("msgLoading"):d?n("msgNotConnected"):s!==null?`${m.length} ${n("scenesCount")}`:"–"}),e(l,{sx:M}),e(G,{variant:"outlined",size:"small",onClick:t,disabled:c,children:c?e(A,{size:14}):n("btnRefresh")})]}),d&&o(l,{sx:[v,B],children:[e("span",{children:"✖"}),o("div",{children:[o("strong",{children:[n("msgError"),":"]})," ",d]})]}),c&&!s&&o(l,{sx:j,children:[e(A,{size:36}),e(p,{variant:"body2",children:n("msgLoading")})]}),!c&&!d&&s!==null&&m.length===0&&o(l,{sx:[v,W],children:[e("span",{children:"ℹ"}),e("span",{children:n("msgNoScenes")})]}),m.length>0&&e(E,{component:H,variant:"outlined",children:o(k,{size:"small",children:[e(R,{sx:K,children:o(P,{children:[e(r,{children:e("strong",{children:n("colGroup")})}),e(r,{children:e("strong",{children:n("colScene")})}),e(r,{align:"right",children:e("strong",{children:n("colActions")})})]})}),e(I,{children:m.map(b=>{const L=`${b.groupId}/${b.sceneId}`,x=g===L;return o(P,{sx:Z,children:[e(r,{children:e(p,{variant:"body2",children:b.groupName})}),e(r,{children:e(p,{variant:"body2",children:e("strong",{children:b.sceneName})})}),e(r,{align:"right",children:e(G,{size:"small",variant:"outlined",onClick:()=>N(b),disabled:g!==null,startIcon:x?e(A,{size:14}):void 0,children:n("btnActivate")})})]},L)})})]})})]})}function uf({socket:a,instance:n,systemConfig:i,alive:s}){const $=i?.language,c=Y($||"en"),f=T((d,h)=>new Promise(g=>{const u=setTimeout(()=>g({error:c("msgTimeout")}),1e4);a.sendTo(`tint.${n}`,d,h||{}).then(t=>{clearTimeout(u),g(t)}).catch(t=>{clearTimeout(u),g({error:t?.message||String(t)})})}),[a,n,$]);return e(gf,{sendToAdapter:f,t:c,alive:s})}function pf({sendToAdapter:a,t:n,alive:i}){const[s,$]=C(null),[c,f]=C(!1),[d,h]=C(""),g=T(async()=>{f(!0),h("");const t=await a("getLights",{});f(!1),t&&t.error?h(t.error):t&&t.lights&&$(t.lights)},[a]);if(z(()=>{i!==!1&&g()},[g,i]),i===!1)return o(l,{sx:[v,V],children:[e("span",{children:"⚠️"}),e("span",{children:e("strong",{children:n("msgAdapterOffline")})})]});const u=s?Object.entries(s).filter(([,t])=>$e(t)):[];return o(l,{sx:{padding:"0 0 16px 0"},children:[o(l,{sx:D,children:[e(q,{ok:d?!1:s!==null?!0:null,loading:c}),e(p,{variant:"body2",color:"textSecondary",children:c&&!s?n("msgLoading"):d?n("msgNotConnected"):s!==null?`${u.length} ${n("coversCount")}`:"–"}),e(l,{sx:M}),e(G,{variant:"outlined",size:"small",onClick:g,disabled:c,children:c?e(A,{size:14}):n("btnRefresh")})]}),d&&o(l,{sx:[v,B],children:[e("span",{children:"✖"}),o("div",{children:[o("strong",{children:[n("msgError"),":"]})," ",d]})]}),c&&!s&&o(l,{sx:j,children:[e(A,{size:36}),e(p,{variant:"body2",children:n("msgLoading")})]}),!c&&!d&&s!==null&&u.length===0&&o(l,{sx:[v,W],children:[e("span",{children:"ℹ"}),e("span",{children:n("msgNoCovers")})]}),u.length>0&&e(E,{component:H,variant:"outlined",children:o(k,{size:"small",children:[e(R,{sx:K,children:o(P,{children:[e(r,{children:e("strong",{children:n("colName")})}),e(r,{children:e("strong",{children:n("colModel")})}),e(r,{children:e("strong",{children:n("colManufacturer")})}),e(r,{align:"center",children:e("strong",{children:n("colReachable")})}),e(r,{align:"right",children:e("strong",{children:n("colPosition")})})]})}),e(I,{children:u.map(([t,N])=>{const m=N.state||{},b=m.lift!==void 0?100-m.lift:m.open?100:0;return o(P,{sx:Z,children:[o(r,{children:[e(p,{variant:"body2",children:e("strong",{children:N.name})}),o(p,{variant:"caption",color:"textSecondary",children:["ID ",t]})]}),e(r,{children:e(p,{variant:"body2",children:N.modelid||"–"})}),e(r,{children:e(p,{variant:"body2",children:N.manufacturername||"–"})}),e(r,{align:"center",children:e(l,{component:"span",sx:m.reachable?F:_,children:m.reachable?"✔":"✗"})}),e(r,{align:"right",children:o(l,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:"6px"},children:[e(l,{sx:{width:48,height:5,background:"#e0e0e0",borderRadius:"3px",overflow:"hidden"},children:e(l,{sx:{width:`${b}%`,height:"100%",background:"#1976d2",borderRadius:"3px"}})}),o(p,{variant:"caption",children:[b," %"]})]})})]},t)})})]})})]})}function mf({socket:a,instance:n,systemConfig:i,alive:s}){const $=i?.language,c=Y($||"en"),f=T((d,h)=>new Promise(g=>{const u=setTimeout(()=>g({error:c("msgTimeout")}),1e4);a.sendTo(`tint.${n}`,d,h||{}).then(t=>{clearTimeout(u),g(t)}).catch(t=>{clearTimeout(u),g({error:t?.message||String(t)})})}),[a,n,$]);return e(pf,{sendToAdapter:f,t:c,alive:s})}function hf({sendToAdapter:a,t:n,alive:i}){const[s,$]=C(null),[c,f]=C(!1),[d,h]=C(""),g=T(async()=>{f(!0),h("");const t=await a("getSensors",{});f(!1),t&&t.error?h(t.error):t&&t.sensors&&$(t.sensors)},[a]);if(z(()=>{i!==!1&&g()},[g,i]),i===!1)return o(l,{sx:[v,V],children:[e("span",{children:"⚠️"}),e("span",{children:e("strong",{children:n("msgAdapterOffline")})})]});const u=s?Object.entries(s).filter(([,t])=>t.type&&t.type.includes("Switch")&&!fe(t)):[];return o(l,{sx:{padding:"0 0 16px 0"},children:[o(l,{sx:D,children:[e(q,{ok:d?!1:s!==null?!0:null,loading:c}),e(p,{variant:"body2",color:"textSecondary",children:c&&!s?n("msgLoading"):d?n("msgNotConnected"):s!==null?`${u.length} ${n("switchesCount")}`:"–"}),e(l,{sx:M}),e(G,{variant:"outlined",size:"small",onClick:g,disabled:c,children:c?e(A,{size:14}):n("btnRefresh")})]}),d&&o(l,{sx:[v,B],children:[e("span",{children:"✖"}),o("div",{children:[o("strong",{children:[n("msgError"),":"]})," ",d]})]}),c&&!s&&o(l,{sx:j,children:[e(A,{size:36}),e(p,{variant:"body2",children:n("msgLoading")})]}),!c&&!d&&s!==null&&u.length===0&&o(l,{sx:[v,W],children:[e("span",{children:"ℹ"}),e("span",{children:n("msgNoSwitches")})]}),u.length>0&&e(E,{component:H,variant:"outlined",children:o(k,{size:"small",children:[e(R,{sx:K,children:o(P,{children:[e(r,{children:e("strong",{children:n("colName")})}),e(r,{children:e("strong",{children:n("colModel")})}),e(r,{children:e("strong",{children:n("colManufacturer")})}),e(r,{align:"center",children:e("strong",{children:n("colReachable")})}),e(r,{align:"center",children:e("strong",{children:n("colBattery")})}),e(r,{align:"right",children:e("strong",{children:n("colLastEvent")})})]})}),e(I,{children:u.map(([t,N])=>{const m=N.config||{},b=N.state||{};return o(P,{sx:Z,children:[o(r,{children:[e(p,{variant:"body2",children:e("strong",{children:N.name})}),o(p,{variant:"caption",color:"textSecondary",children:["ID ",t]})]}),e(r,{children:e(p,{variant:"body2",children:N.modelid||"–"})}),e(r,{children:e(p,{variant:"body2",children:N.manufacturername||"–"})}),e(r,{align:"center",children:e(l,{component:"span",sx:m.reachable?F:_,children:m.reachable?"✔":"✗"})}),e(r,{align:"center",children:e(p,{variant:"body2",children:m.battery!==void 0?`${m.battery} %`:"–"})}),e(r,{align:"right",children:e(p,{variant:"body2",children:b.buttonevent!==void 0?b.buttonevent:"–"})})]},t)})})]})})]})}function $f({socket:a,instance:n,systemConfig:i,alive:s}){const $=i?.language,c=Y($||"en"),f=T((d,h)=>new Promise(g=>{const u=setTimeout(()=>g({error:c("msgTimeout")}),1e4);a.sendTo(`tint.${n}`,d,h||{}).then(t=>{clearTimeout(u),g(t)}).catch(t=>{clearTimeout(u),g({error:t?.message||String(t)})})}),[a,n,$]);return e(hf,{sendToAdapter:f,t:c,alive:s})}function ff({sendToAdapter:a,t:n,alive:i}){const[s,$]=C(null),[c,f]=C(!1),[d,h]=C(""),g=T(async()=>{f(!0),h("");const t=await a("getSensors",{});f(!1),t&&t.error?h(t.error):t&&t.sensors&&$(t.sensors)},[a]);if(z(()=>{i!==!1&&g()},[g,i]),i===!1)return o(l,{sx:[v,V],children:[e("span",{children:"⚠️"}),e("span",{children:e("strong",{children:n("msgAdapterOffline")})})]});const u=s?Object.entries(s).filter(([,t])=>!(t.type&&t.type.includes("Switch"))&&!ie(t)):[];return o(l,{sx:{padding:"0 0 16px 0"},children:[o(l,{sx:D,children:[e(q,{ok:d?!1:s!==null?!0:null,loading:c}),e(p,{variant:"body2",color:"textSecondary",children:c&&!s?n("msgLoading"):d?n("msgNotConnected"):s!==null?`${u.length} ${n("sensorsCount")}`:"–"}),e(l,{sx:M}),e(G,{variant:"outlined",size:"small",onClick:g,disabled:c,children:c?e(A,{size:14}):n("btnRefresh")})]}),d&&o(l,{sx:[v,B],children:[e("span",{children:"✖"}),o("div",{children:[o("strong",{children:[n("msgError"),":"]})," ",d]})]}),c&&!s&&o(l,{sx:j,children:[e(A,{size:36}),e(p,{variant:"body2",children:n("msgLoading")})]}),!c&&!d&&s!==null&&u.length===0&&o(l,{sx:[v,W],children:[e("span",{children:"ℹ"}),e("span",{children:n("msgNoSensors")})]}),u.length>0&&e(E,{component:H,variant:"outlined",children:o(k,{size:"small",children:[e(R,{sx:K,children:o(P,{children:[e(r,{children:e("strong",{children:n("colName")})}),e(r,{children:e("strong",{children:n("colType")})}),e(r,{children:e("strong",{children:n("colValue")})}),e(r,{align:"center",children:e("strong",{children:n("colReachable")})}),e(r,{align:"center",children:e("strong",{children:n("colBattery")})})]})}),e(I,{children:u.map(([t,N])=>{const m=N.config||{};return o(P,{sx:Z,children:[o(r,{children:[e(p,{variant:"body2",children:e("strong",{children:N.name})}),o(p,{variant:"caption",color:"textSecondary",children:["ID ",t]})]}),e(r,{children:e(p,{variant:"body2",children:Ce(N)})}),e(r,{children:e(p,{variant:"body2",children:be(N,n)})}),e(r,{align:"center",children:e(l,{component:"span",sx:m.reachable?F:_,children:m.reachable?"✔":"✗"})}),e(r,{align:"center",children:e(p,{variant:"body2",children:m.battery!==void 0?`${m.battery} %`:"–"})})]},t)})})]})})]})}function bf({socket:a,instance:n,systemConfig:i,alive:s}){const $=i?.language,c=Y($||"en"),f=T((d,h)=>new Promise(g=>{const u=setTimeout(()=>g({error:c("msgTimeout")}),1e4);a.sendTo(`tint.${n}`,d,h||{}).then(t=>{clearTimeout(u),g(t)}).catch(t=>{clearTimeout(u),g({error:t?.message||String(t)})})}),[a,n,$]);return e(ff,{sendToAdapter:f,t:c,alive:s})}function Nf({sendToAdapter:a,t:n,alive:i}){const[s,$]=C(null),[c,f]=C(!1),[d,h]=C(""),g=T(async()=>{f(!0),h("");const t=await a("getSensors",{});f(!1),t&&t.error?h(t.error):t&&t.sensors&&$(t.sensors)},[a]);if(z(()=>{i!==!1&&g()},[g,i]),i===!1)return o(l,{sx:[v,V],children:[e("span",{children:"⚠️"}),e("span",{children:e("strong",{children:n("msgAdapterOffline")})})]});const u=s?Object.entries(s).filter(([,t])=>ie(t)):[];return o(l,{sx:{padding:"0 0 16px 0"},children:[o(l,{sx:D,children:[e(q,{ok:d?!1:s!==null?!0:null,loading:c}),e(p,{variant:"body2",color:"textSecondary",children:c&&!s?n("msgLoading"):d?n("msgNotConnected"):s!==null?`${u.length} ${n("thermostatsCount")}`:"–"}),e(l,{sx:M}),e(G,{variant:"outlined",size:"small",onClick:g,disabled:c,children:c?e(A,{size:14}):n("btnRefresh")})]}),d&&o(l,{sx:[v,B],children:[e("span",{children:"✖"}),o("div",{children:[o("strong",{children:[n("msgError"),":"]})," ",d]})]}),c&&!s&&o(l,{sx:j,children:[e(A,{size:36}),e(p,{variant:"body2",children:n("msgLoading")})]}),!c&&!d&&s!==null&&u.length===0&&o(l,{sx:[v,W],children:[e("span",{children:"ℹ"}),e("span",{children:n("msgNoThermostats")})]}),u.length>0&&e(E,{component:H,variant:"outlined",children:o(k,{size:"small",children:[e(R,{sx:K,children:o(P,{children:[e(r,{children:e("strong",{children:n("colName")})}),e(r,{align:"center",children:e("strong",{children:n("colReachable")})}),e(r,{align:"center",children:e("strong",{children:n("colBattery")})}),e(r,{align:"right",children:e("strong",{children:n("colTemperature")})}),e(r,{align:"right",children:e("strong",{children:n("colSetpoint")})}),e(r,{align:"right",children:e("strong",{children:n("colValve")})})]})}),e(I,{children:u.map(([t,N])=>{const m=N.state||{},b=N.config||{};return o(P,{sx:Z,children:[o(r,{children:[e(p,{variant:"body2",children:e("strong",{children:N.name})}),o(p,{variant:"caption",color:"textSecondary",children:["ID ",t]})]}),e(r,{align:"center",children:e(l,{component:"span",sx:b.reachable?F:_,children:b.reachable?"✔":"✗"})}),e(r,{align:"center",children:e(p,{variant:"body2",children:b.battery!==void 0?`${b.battery} %`:"–"})}),e(r,{align:"right",children:e(p,{variant:"body2",children:m.temperature!==void 0?`${(m.temperature/100).toFixed(1)} °C`:"–"})}),e(r,{align:"right",children:e(p,{variant:"body2",children:b.heatsetpoint!==void 0?`${(b.heatsetpoint/100).toFixed(1)} °C`:"–"})}),e(r,{align:"right",children:e(p,{variant:"body2",children:m.valve!==void 0?`${m.valve} %`:"–"})})]},t)})})]})})]})}function Cf({socket:a,instance:n,systemConfig:i,alive:s}){const $=i?.language,c=Y($||"en"),f=T((d,h)=>new Promise(g=>{const u=setTimeout(()=>g({error:c("msgTimeout")}),1e4);a.sendTo(`tint.${n}`,d,h||{}).then(t=>{clearTimeout(u),g(t)}).catch(t=>{clearTimeout(u),g({error:t?.message||String(t)})})}),[a,n,$]);return e(Nf,{sendToAdapter:f,t:c,alive:s})}const Tf={LightsPanel:nf,GroupsPanel:af,PlugsPanel:df,ScenesPanel:uf,CoversPanel:mf,SwitchesPanel:$f,SensorsPanel:bf,ThermostatsPanel:Cf};export{Tf as default};
@@ -0,0 +1 @@
1
+ const p="modulepreload",v=function(l){return new URL("..\u002F"+l,import.meta.url).href},d={},y=function(f,c,E){let i=Promise.resolve();if(c&&c.length>0){let r=function(e){return Promise.all(e.map(o=>Promise.resolve(o).then(s=>({status:"fulfilled",value:s}),s=>({status:"rejected",reason:s}))))};document.getElementsByTagName("link");const t=document.querySelector("meta[property=csp-nonce]"),u=t?.nonce||t?.getAttribute("nonce");i=r(c.map(e=>{if(e=v(e),e in d)return;d[e]=!0;const o=e.endsWith(".css"),s=o?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${e}"]${s}`))return;const n=document.createElement("link");if(n.rel=o?"stylesheet":p,o||(n.as="script"),n.crossOrigin="",n.href=e,u&&n.setAttribute("nonce",u),document.head.appendChild(n),o)return new Promise((m,h)=>{n.addEventListener("load",m),n.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${e}`)))})}))}function a(r){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=r,window.dispatchEvent(t),!t.defaultPrevented)throw r}return i.then(r=>{for(const t of r||[])t.status==="rejected"&&a(t.reason);return f().catch(a)})};export{y as _};
@@ -0,0 +1 @@
1
+ import{_ as u}from"./preload-helper-BlTxHScW.js";const l={},o=new Set;let r=Promise.resolve();async function c(t){const e=r.then(t,t);return r=e.then(()=>{},()=>{}),e}async function m(t){if(typeof document>"u")return;const e=l[t]||[];await Promise.all(e.map(i=>{const n=new URL(i,import.meta.url).href;return o.has(n)||(o.add(n),document.querySelector(`link[rel="stylesheet"][data-mf-href="${n}"]`))?Promise.resolve():new Promise((a,d)=>{const s=document.createElement("link");s.rel="stylesheet",s.href=n,s.setAttribute("data-mf-href",n),s.onload=()=>a(),s.onerror=()=>d(new Error(`[Module Federation] Failed to load CSS asset: ${n}`)),document.head.appendChild(s)})}))}const _={"./Components":async()=>{await m("./Components");const t=await c(()=>u(()=>import("./index-C-tjmgJM.js"),[])),e={};return Object.assign(e,t),Object.defineProperty(e,"__esModule",{value:!0,enumerable:!1}),e}};export{_ as default};
@@ -0,0 +1,7 @@
1
+ import{_ as D}from"./assets/preload-helper-BlTxHScW.js";const Vt=".json",Bt="FEDERATION_DEBUG",Wt=":";let $e=(function(e){return e[e.UNKNOWN=1]="UNKNOWN",e[e.CALCULATED=2]="CALCULATED",e[e.NO_USE=0]="NO_USE",e})({});var ge={};const et=!0;function zt(){return et}function Kt(){try{if(zt()&&window.localStorage)return!!localStorage.getItem(Bt)}catch{return!1}return!1}function Te(){return typeof process<"u"&&ge&&ge.FEDERATION_DEBUG?!!ge.FEDERATION_DEBUG:typeof FEDERATION_DEBUG<"u"&&FEDERATION_DEBUG?!0:Kt()}const qt="[ Federation Runtime ]",tt=function(...e){return e.length?e.reduce((t,r)=>r?t?`${t}${Wt}${r}`:r:t,""):""},ve=(e,t)=>{if("getPublicPath"in e){let r;return e.getPublicPath.startsWith("function")?r=new Function("return "+e.getPublicPath)()():r=new Function(e.getPublicPath)(),`${r}${t}`}else return"publicPath"in e?`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},rt=e=>{console.warn(`${qt}: ${e}`)};function ot(e){try{return JSON.stringify(e,null,2)}catch{return""}}const be=(e,t)=>{if(!e)return t;const n=(o=>{if(o===".")return"";if(o.startsWith("./"))return o.replace("./","");if(o.startsWith("/")){const s=o.slice(1);return s.endsWith("/")?s.slice(0,-1):s}return o})(e);return n?n.endsWith("/")?`${n}${t}`:`${n}/${t}`:t};function Jt(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function Xt(e,t={}){const{remotes:r={},overrides:n={},version:o}=t;let s;const i=()=>"publicPath"in e.metaData?(e.metaData.publicPath==="auto"||e.metaData.publicPath==="")&&o?Jt(o):e.metaData.publicPath:e.metaData.getPublicPath,l=Object.keys(n);let a={};Object.keys(r).length||(a=e.remotes?.reduce((E,w)=>{let $;const S=w.federationContainerName;return l.includes(S)?$=n[S]:"version"in w?$=w.version:$=w.entry,E[S]={matchedVersion:$},E},{})||{}),Object.keys(r).forEach(E=>a[E]={matchedVersion:l.includes(E)?n[E]:r[E]});const{remoteEntry:{path:c,name:f,type:u},types:h={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:d},globalName:m,ssrRemoteEntry:p}=e.metaData,{exposes:_}=e;let y={version:o||"",buildVersion:d,globalName:m,remoteEntry:be(c,f),remoteEntryType:u,remoteTypes:be(h.path,h.name),remoteTypesZip:h.zip||"",remoteTypesAPI:h.api||"",remotesInfo:a,shared:e?.shared.map(E=>({assets:E.assets,sharedName:E.name,version:E.version,usedExports:E.referenceExports||[]})),modules:_?.map(E=>({moduleName:E.name,modulePath:E.path,assets:E.assets}))};if("publicPath"in e.metaData?(s={...y,publicPath:i()},typeof e.metaData.ssrPublicPath=="string"&&(s.ssrPublicPath=e.metaData.ssrPublicPath)):s={...y,getPublicPath:i()},p){const E=be(p.path,p.name);s.ssrRemoteEntry=E,s.ssrRemoteEntryType=p.type||"commonjs-module"}return s}function nt(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(Vt))}const Yt="[ Module Federation ]",J=console,Zt=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function Qt(){try{const e=new Error().stack;if(!e)return;const[,...t]=e.split(`
2
+ `),r=t.filter(n=>!Zt.some(o=>n.includes(o)));return r.length?`Stack trace:
3
+ ${r.slice(0,5).join(`
4
+ `)}`:void 0}catch{return}}var st=class{constructor(e,t=J){this.prefix=e,this.delegate=t??J}setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??J}emit(e,t){const r=this.delegate,n=Te()?Qt():void 0,o=n?[...t,n]:t,s=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(const i of s){const l=r[i];if(typeof l=="function"){l.call(r,this.prefix,...o);return}}for(const i of s){const l=J[i];if(typeof l=="function"){l.call(J,this.prefix,...o);return}}}log(...e){this.emit("log",e)}warn(...e){this.emit("warn",e)}error(...e){this.emit("error",e)}success(...e){this.emit("info",e)}info(...e){this.emit("info",e)}ready(...e){this.emit("info",e)}debug(...e){Te()&&this.emit("debug",e)}};function er(e){return new st(e)}function tr(e){const t=new st(e);return Object.defineProperty(t,"__mf_infrastructure_logger__",{value:!0,enumerable:!1,configurable:!1}),t}tr(Yt);async function it(e,t){try{return await e()}catch(r){rt(r);return}}function Oe(e,t){const r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function at(e){let t=null,r=!0,n=2e4,o;const s=document.getElementsByTagName("script");for(let c=0;c<s.length;c++){const f=s[c],u=f.getAttribute("src");if(u&&Oe(u,e.url)){t=f,r=!1;break}}if(!t){const c=e.attrs;t=document.createElement("script"),t.type=c?.type==="module"?"module":"text/javascript";let f;e.createScriptHook&&(f=e.createScriptHook(e.url,e.attrs),f instanceof HTMLScriptElement?t=f:typeof f=="object"&&("script"in f&&f.script&&(t=f.script),"timeout"in f&&f.timeout&&(n=f.timeout))),t.src||(t.src=e.url),c&&!f&&Object.keys(c).forEach(u=>{t&&(u==="async"||u==="defer"?t[u]=c[u]:t.getAttribute(u)||t.setAttribute(u,c[u]))})}let i=null;const l=typeof window<"u"?c=>{if(c.filename&&Oe(c.filename,e.url)){const f=new Error(`ScriptExecutionError: Script "${e.url}" loaded but threw a runtime error during execution: ${c.message} (${c.filename}:${c.lineno}:${c.colno})`);f.name="ScriptExecutionError",i=f}}:null;l&&window.addEventListener("error",l);const a=async(c,f)=>{clearTimeout(o),l&&window.removeEventListener("error",l);const u=()=>{if(f?.type==="error"){const h=new Error(f?.isTimeout?`ScriptNetworkError: Script "${e.url}" timed out.`:`ScriptNetworkError: Failed to load script "${e.url}" - the script URL is unreachable or the server returned an error (network failure, 404, CORS, etc.)`);h.name="ScriptNetworkError",e?.onErrorCallback&&e?.onErrorCallback(h)}else i?e?.onErrorCallback&&e?.onErrorCallback(i):e?.cb&&e?.cb()};if(t&&(t.onerror=null,t.onload=null,it(()=>{const{needDeleteScript:h=!0}=e;h&&t?.parentNode&&t.parentNode.removeChild(t)}),c&&typeof c=="function")){const h=c(f);if(h instanceof Promise){const d=await h;return u(),d}return u(),h}u()};return t.onerror=a.bind(null,t.onerror),t.onload=a.bind(null,t.onload),o=setTimeout(()=>{a(null,{type:"error",isTimeout:!0})},n),{script:t,needAttach:r}}function rr(e){let t=null,r=!0,n=2e4,o;const s=document.getElementsByTagName("link");for(let l=0;l<s.length;l++){const a=s[l],c=a.getAttribute("href"),f=a.getAttribute("rel");if(c&&Oe(c,e.url)&&f===e.attrs.rel){t=a,r=!1;break}}if(!t){t=document.createElement("link"),t.setAttribute("href",e.url);let l,a=!0;const c=e.attrs;e.createLinkHook&&(l=e.createLinkHook(e.url,c),l instanceof HTMLLinkElement?(t=l,a=!1):typeof l=="object"&&("link"in l&&l.link&&(t=l.link,a=!1),"timeout"in l&&l.timeout&&(n=l.timeout))),c&&a&&Object.keys(c).forEach(f=>{t&&!t.getAttribute(f)&&t.setAttribute(f,c[f])})}if(!r)return Promise.resolve().then(()=>{e?.cb&&e?.cb()}),{link:t,needAttach:r};const i=(l,a)=>{o&&clearTimeout(o);const c=()=>{if(a?.type==="error"){const f=new Error(a?.isTimeout?`LinkNetworkError: Link "${e.url}" timed out.`:`LinkNetworkError: Failed to load link "${e.url}" - the URL is unreachable or the server returned an error.`);f.name="LinkNetworkError",e?.onErrorCallback&&e?.onErrorCallback(f)}else e?.cb&&e?.cb()};if(t&&(t.onerror=null,t.onload=null,it(()=>{const{needDeleteLink:f=!0}=e;f&&t?.parentNode&&t.parentNode.removeChild(t)}),l)){const f=l(a);return c(),f}c()};return t.onerror=i.bind(null,t.onerror),t.onload=i.bind(null,t.onload),o=setTimeout(()=>{i(null,{type:"error",isTimeout:!0})},n),{link:t,needAttach:r}}function or(e,t){const{attrs:r={},createScriptHook:n}=t;return new Promise((o,s)=>{const{script:i,needAttach:l}=at({url:e,cb:o,onErrorCallback:s,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});l&&document.head.appendChild(i)})}const nr=e=>`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${e.split("-")[0].toLowerCase()}#${e.toLowerCase()}`,ct=(e,t,r,n)=>{const o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(nr(e)),n&&o.push(`Original Error Message:
5
+ ${n}`),o.join(`
6
+ `)};function sr(e,t,r,n,o,s){return n(ct(e,t,r,o))}const C="[ Federation Runtime ]",ke=er(C);function L(e,t,r,n,o){e||b(t)}function b(e,t,r,n,o){if(t!==void 0)return sr(e,t,r??{},i=>{throw new Error(`${C}: ${i}`)},n);const s=e;throw s instanceof Error?(s.message.startsWith(C)||(s.message=`${C}: ${s.message}`),s):new Error(`${C}: ${s}`)}function Q(e){e instanceof Error&&(e.message.startsWith(C)||(e.message=`${C}: ${e.message}`)),ke.warn(e)}function ir(e,t){return e.findIndex(r=>r===t)===-1&&e.push(t),e}function pe(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function Me(e){return typeof e.entry<"u"}function lt(e){return!e.entry.includes(".json")}function Le(e){return e&&typeof e=="object"}const ar=Object.prototype.toString;function cr(e){return ar.call(e)==="[object Object]"}function ft(e){return Array.isArray(e)?e:[e]}function ut(e){const t={url:"",type:"global",globalName:""};return"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t}const lr=(e,t)=>{let r;return e.endsWith("/")?r=e.slice(0,-1):r=e,t.startsWith(".")&&(t=t.slice(1)),r=r+t,r},I=typeof globalThis=="object"?globalThis:window,A=(()=>{try{return document.defaultView}catch{return I}})(),ee=A;function le(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function fe(e,t){return Object.hasOwnProperty.call(e,t)}fe(I,"__GLOBAL_LOADING_REMOTE_ENTRY__")||le(I,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});const V=I.__GLOBAL_LOADING_REMOTE_ENTRY__;function ht(e){fe(e,"__VMOK__")&&!fe(e,"__FEDERATION__")&&le(e,"__FEDERATION__",e.__VMOK__),fe(e,"__FEDERATION__")||(le(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),le(e,"__VMOK__",e.__FEDERATION__)),e.__FEDERATION__.__GLOBAL_PLUGIN__??=[],e.__FEDERATION__.__INSTANCES__??=[],e.__FEDERATION__.moduleInfo??={},e.__FEDERATION__.__SHARE__??={},e.__FEDERATION__.__MANIFEST_LOADING__??={},e.__FEDERATION__.__PRELOADED_MAP__??=new Map}ht(I);ht(A);function fr(e){I.__FEDERATION__.__INSTANCES__.push(e)}function ur(){return I.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function hr(e,t=Te()){t&&(I.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,I.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="2.5.1")}function K(e,t){if(typeof t=="string"){if(e[t])return{value:e[t],key:t};{const r=Object.keys(e);for(const n of r){const[o,s]=n.split(":"),i=`${o}:${t}`,l=e[i];if(l)return{value:l,key:i}}return{value:void 0,key:t}}}else b(`getInfoWithoutType: "key" must be a string, got ${typeof t} (${JSON.stringify(t)}).`)}const Ue=()=>A.__FEDERATION__.moduleInfo,dr=(e,t)=>{const r=K(t,pe(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){const{version:n,...o}=e,s=pe(o),i=K(A.__FEDERATION__.moduleInfo,s).value;if(i?.version===n)return i}},ue=e=>dr(e,A.__FEDERATION__.moduleInfo),Ve=(e,t)=>{const r=pe(e);return A.__FEDERATION__.moduleInfo[r]=t,A.__FEDERATION__.moduleInfo},mr=e=>(A.__FEDERATION__.moduleInfo={...A.__FEDERATION__.moduleInfo,...e},()=>{const t=Object.keys(e);for(const r of t)delete A.__FEDERATION__.moduleInfo[r]}),dt=(e,t)=>{const r=t||`__FEDERATION_${e}:custom__`;return{remoteEntryKey:r,entryExports:I[r]}},pr=()=>A.__FEDERATION__.__GLOBAL_PLUGIN__,yr=e=>I.__FEDERATION__.__PRELOADED_MAP__.get(e),_r=e=>I.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),Be="[0-9A-Za-z-]+",Fe=`(?:\\+(${Be}(?:\\.${Be})*))`,Z="0|[1-9]\\d*",he="[0-9]+",mt="\\d*[a-zA-Z-][a-zA-Z0-9-]*",We=`(?:${he}|${mt})`,Er=`(?:-?(${We}(?:\\.${We})*))`,ze=`(?:${Z}|${mt})`,pt=`(?:-(${ze}(?:\\.${ze})*))`,Se=`${Z}|x|X|\\*`,q=`[v=\\s]*(${Se})(?:\\.(${Se})(?:\\.(${Se})(?:${pt})?${Fe}?)?)?`,gr=`^\\s*(${q})\\s+-\\s+(${q})\\s*$`,br=`[v=\\s]*${`(${he})\\.(${he})\\.(${he})`}${Er}?${Fe}?`,xe="((?:<|>)?=?)",Sr=`(\\s*)${xe}\\s*(${br}|${q})`,yt="(?:~>?)",Rr=`(\\s*)${yt}\\s+`,_t="(?:\\^)",Ir=`(\\s*)${_t}\\s+`,wr="(<|>)?=?\\s*\\*",$r=`^${_t}${q}$`,Tr=`v?${`(${Z})\\.(${Z})\\.(${Z})`}${pt}?${Fe}?`,vr=`^${yt}${q}$`,Or=`^${xe}\\s*${q}$`,kr=`^${xe}\\s*(${Tr})$|^$`,Nr="^\\s*>=\\s*0.0.0\\s*$";function M(e){return new RegExp(e)}function T(e){return!e||e.toLowerCase()==="x"||e==="*"}function Et(...e){return t=>e.reduce((r,n)=>n(r),t)}function Ke(e){return e.match(M(kr))}function qe(e,t,r,n){const o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function Ar(e){return e.replace(M(gr),(t,r,n,o,s,i,l,a,c,f,u,h)=>(T(n)?r="":T(o)?r=`>=${n}.0.0`:T(s)?r=`>=${n}.${o}.0`:r=`>=${r}`,T(c)?a="":T(f)?a=`<${Number(c)+1}.0.0-0`:T(u)?a=`<${c}.${Number(f)+1}.0-0`:h?a=`<=${c}.${f}.${u}-${h}`:a=`<=${a}`,`${r} ${a}`.trim()))}function Pr(e){return e.replace(M(Sr),"$1$2$3")}function Mr(e){return e.replace(M(Rr),"$1~")}function Lr(e){return e.replace(M(Ir),"$1^")}function Fr(e){return e.trim().split(/\s+/).map(t=>t.replace(M($r),(r,n,o,s,i)=>T(n)?"":T(o)?`>=${n}.0.0 <${Number(n)+1}.0.0-0`:T(s)?n==="0"?`>=${n}.${o}.0 <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.0 <${Number(n)+1}.0.0-0`:i?n==="0"?o==="0"?`>=${n}.${o}.${s}-${i} <${n}.${o}.${Number(s)+1}-0`:`>=${n}.${o}.${s}-${i} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s}-${i} <${Number(n)+1}.0.0-0`:n==="0"?o==="0"?`>=${n}.${o}.${s} <${n}.${o}.${Number(s)+1}-0`:`>=${n}.${o}.${s} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s} <${Number(n)+1}.0.0-0`)).join(" ")}function xr(e){return e.trim().split(/\s+/).map(t=>t.replace(M(vr),(r,n,o,s,i)=>T(n)?"":T(o)?`>=${n}.0.0 <${Number(n)+1}.0.0-0`:T(s)?`>=${n}.${o}.0 <${n}.${Number(o)+1}.0-0`:i?`>=${n}.${o}.${s}-${i} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s} <${n}.${Number(o)+1}.0-0`)).join(" ")}function Dr(e){return e.split(/\s+/).map(t=>t.trim().replace(M(Or),(r,n,o,s,i,l)=>{const a=T(o),c=a||T(s),f=c||T(i);return n==="="&&f&&(n=""),l="",a?n===">"||n==="<"?"<0.0.0-0":"*":n&&f?(c&&(s=0),i=0,n===">"?(n=">=",c?(o=Number(o)+1,s=0,i=0):(s=Number(s)+1,i=0)):n==="<="&&(n="<",c?o=Number(o)+1:s=Number(s)+1),n==="<"&&(l="-0"),`${n+o}.${s}.${i}${l}`):c?`>=${o}.0.0${l} <${Number(o)+1}.0.0-0`:f?`>=${o}.${s}.0${l} <${o}.${Number(s)+1}.0-0`:r})).join(" ")}function Cr(e){return e.trim().replace(M(wr),"")}function Hr(e){return e.trim().replace(M(Nr),"")}function de(e,t){return e=Number(e)||e,t=Number(t)||t,e>t?1:e===t?0:-1}function Gr(e,t){const{preRelease:r}=e,{preRelease:n}=t;if(r===void 0&&n)return 1;if(r&&n===void 0)return-1;if(r===void 0&&n===void 0)return 0;for(let o=0,s=r.length;o<=s;o++){const i=r[o],l=n[o];if(i!==l)return i===void 0&&l===void 0?0:i?l?de(i,l):-1:1}return 0}function ne(e,t){return de(e.major,t.major)||de(e.minor,t.minor)||de(e.patch,t.patch)||Gr(e,t)}function Re(e,t){return e.version===t.version}function jr(e,t){switch(e.operator){case"":case"=":return Re(e,t);case">":return ne(e,t)<0;case">=":return Re(e,t)||ne(e,t)<0;case"<":return ne(e,t)>0;case"<=":return Re(e,t)||ne(e,t)>0;case void 0:return!0;default:return!1}}function Ur(e){return Et(Fr,xr,Dr,Cr)(e)}function Vr(e){return Et(Ar,Pr,Mr,Lr)(e.trim()).split(/\s+/).join(" ")}function Y(e,t){if(!e)return!1;const r=Ke(e);if(!r)return!1;const[,n,,o,s,i,l]=r,a={operator:n,version:qe(o,s,i,l),major:o,minor:s,patch:i,preRelease:l?.split(".")},c=t.split("||");for(const f of c){const u=f.trim();if(!u||u==="*"||u==="x")return!0;try{const h=Vr(u);if(!h.trim())return!0;const d=h.split(" ").map(_=>Ur(_)).join(" ");if(!d.trim())return!0;const m=d.split(/\s+/).map(_=>Hr(_)).filter(Boolean);if(m.length===0)continue;let p=!0;for(const _ of m){const y=Ke(_);if(!y){p=!1;break}const[,E,,w,$,S,g]=y;if(!jr({operator:E,version:qe(w,$,S,g),major:w,minor:$,patch:S,preRelease:g?.split(".")},a)){p=!1;break}}if(p)return!0}catch(h){console.error(`[semver] Error processing range part "${u}":`,h);continue}}return!1}const oe="default",gt="global";function Br(e,t,r,n){let o;return"get"in e?o=e.get:"lib"in e?o=()=>Promise.resolve(e.lib):o=()=>Promise.resolve(()=>{b(`Cannot get shared "${r}" from "${t}": neither "get" nor "lib" is provided in the share config.`)}),e.shareConfig?.eager&&e.treeShaking?.mode&&b(`Invalid shared config for "${r}" from "${t}": cannot use both "eager: true" and "treeShaking.mode" simultaneously. Choose one strategy.`),{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:o,loaded:e?.loaded||"lib"in e?!0:void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??$e.UNKNOWN,useIn:[]}:void 0}}function bt(e,t){const r=t.shared||{},n=t.name,o=Object.keys(r).reduce((i,l)=>{const a=ft(r[l]);return i[l]=i[l]||[],a.forEach(c=>{i[l].push(Br(c,n,l,t.shareStrategy))}),i},{}),s={...e.shared};return Object.keys(o).forEach(i=>{s[i]?o[i].forEach(l=>{s[i].find(a=>a.version===l.version)||s[i].push(l)}):s[i]=o[i]}),{allShareInfos:s,newShareInfos:o}}function te(e,t){if(!e)return!1;const{status:r,mode:n}=e;return r===$e.NO_USE?!1:r===$e.CALCULATED?!0:n==="runtime-infer"?t?zr(e,t):!0:!1}function H(e,t){const r=n=>{if(!Number.isNaN(Number(n))){const o=n.split(".");let s=n;for(let i=0;i<3-o.length;i++)s+=".0";return s}return n};return!!Y(r(e),`<=${r(t)}`)}const re=(e,t)=>{const r=t||function(n,o){return H(n,o)};return Object.keys(e).reduce((n,o)=>!n||r(n,o)||n==="0"?o:n,0)},ye=e=>!!e.loaded||typeof e.lib=="function",Wr=e=>!!e.loading,zr=(e,t)=>{if(!e||!t)return!1;const{usedExports:r}=e;return r?!!t.every(n=>r.includes(n)):!1};function Kr(e,t,r,n){const o=e[t][r];let s="",i=te(n);const l=function(a,c){return i?o[a].treeShaking?o[c].treeShaking?!ye(o[a].treeShaking)&&H(a,c):!1:!0:!ye(o[a])&&H(a,c)};if(i){if(s=re(e[t][r],l),s)return{version:s,useTreesShaking:i};i=!1}return{version:re(e[t][r],l),useTreesShaking:i}}const j=e=>ye(e)||Wr(e);function qr(e,t,r,n){const o=e[t][r];let s="",i=te(n);const l=function(a,c){if(i){if(!o[a].treeShaking)return!0;if(!o[c].treeShaking)return!1;if(j(o[c].treeShaking))return j(o[a].treeShaking)?!!H(a,c):!0;if(j(o[a].treeShaking))return!1}return j(o[c])?j(o[a])?!!H(a,c):!0:j(o[a])?!1:H(a,c)};if(i){if(s=re(e[t][r],l),s)return{version:s,useTreesShaking:i};i=!1}return{version:re(e[t][r],l),useTreesShaking:i}}function Jr(e){return e==="loaded-first"?qr:Kr}function me(e,t,r,n){if(!e)return;const{shareConfig:o,scope:s=oe,strategy:i,treeShaking:l}=r,a=Array.isArray(s)?s:[s];for(const c of a)if(o&&e[c]&&e[c][t]){const{requiredVersion:f}=o,{version:u,useTreesShaking:h}=Jr(i)(e,c,t,l),d=()=>{const p=e[c][t][u];if(o.singleton){if(typeof f=="string"&&!Y(u,f)){const _=`Version ${u} from ${u&&p.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${f})`;o.strictVersion?b(_):Q(_)}return{shared:p,useTreesShaking:h}}else{if(f===!1||f==="*")return{shared:p,useTreesShaking:h};if(Y(u,f))return{shared:p,useTreesShaking:h};const _=te(l);if(_){for(const[y,E]of Object.entries(e[c][t]))if(te(E.treeShaking,l?.usedExports)&&Y(y,f))return{shared:E,useTreesShaking:_}}for(const[y,E]of Object.entries(e[c][t]))if(Y(y,f))return{shared:E,useTreesShaking:!1}}},m={shareScopeMap:e,scope:c,pkgName:t,version:u,GlobalFederation:ee.__FEDERATION__,shareInfo:r,resolver:d};return(n.emit(m)||m).resolver()}}function St(){return ee.__FEDERATION__.__SHARE__}function Je(e){const{pkgName:t,extraOptions:r,shareInfos:n}=e,o=a=>{if(!a)return;const c={};return a.forEach(u=>{c[u.version]=u}),c[re(c,function(u,h){return!ye(c[u])&&H(u,h)})]},s=r?.resolver??o,i=a=>a!==null&&typeof a=="object"&&!Array.isArray(a),l=(...a)=>{const c={};for(const f of a)if(f)for(const[u,h]of Object.entries(f)){const d=c[u];i(d)&&i(h)?c[u]=l(d,h):h!==void 0&&(c[u]=h)}return c};return l(s(n[t]),r?.customShareInfo)}const U=(e,t)=>{e.useIn||(e.useIn=[]),ir(e.useIn,t)};function se(e,t){return t&&e.treeShaking?e.treeShaking:e}function De(e,t){return!t||t==="."?e:`${e}/${t.replace(/^\.\//,"")}`}function Xe(e,t){for(const r of e){const n=t.startsWith(r.name);let o=t.replace(r.name,"");if(n){if(o.startsWith("/")){const l=r.name;return o=`.${o}`,{pkgNameOrAlias:l,expose:o,remote:r}}else if(o==="")return{pkgNameOrAlias:r.name,expose:".",remote:r}}const s=r.alias&&t.startsWith(r.alias);let i=r.alias&&t.replace(r.alias,"");if(r.alias&&s){if(i&&i.startsWith("/")){const l=r.alias;return i=`.${i}`,{pkgNameOrAlias:l,expose:i,remote:r}}else if(i==="")return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function Xr(e,t){for(const r of e)if(t===r.name||r.alias&&t===r.alias)return r}const Rt="RUNTIME-001",It="RUNTIME-002",wt="RUNTIME-003",$t="RUNTIME-004",Tt="RUNTIME-005",Ne="RUNTIME-006",vt="RUNTIME-007",Ce="RUNTIME-008",Yr="RUNTIME-009",Ot="RUNTIME-010",kt="RUNTIME-011",Zr="RUNTIME-012",Nt="RUNTIME-013",At="RUNTIME-014",Pt="RUNTIME-015",N={[Rt]:"Failed to get remoteEntry exports.",[It]:'The remote entry interface does not contain "init"',[wt]:"Failed to get manifest.",[$t]:"Failed to locate remote.",[Tt]:"Invalid loadShareSync function call from bundler runtime",[Ne]:"Invalid loadShareSync function call from runtime",[vt]:"Failed to get remote snapshot.",[Ce]:"Failed to load script resources.",[Yr]:"Please call createInstance first.",[Ot]:'The name option cannot be changed after initialization. If you want to create a new instance with a different name, please use "createInstance" api.',[kt]:"The remoteEntry URL is missing from the remote snapshot.",[Zr]:'The getter for the shared module is not a function. This may be caused by setting "shared.import: false" without the host providing the corresponding lib.',[Nt]:"The manifest is not a valid Module Federation manifest.",[At]:"The remote does not expose the requested module.",[Pt]:"Remote container initialization failed."};({...N});const Mt=".then(callbacks[0]).catch(callbacks[1])";async function Qr({entry:e,remoteEntryExports:t}){return new Promise((r,n)=>{try{t?r(t):typeof FEDERATION_ALLOW_NEW_FUNCTION<"u"?new Function("callbacks",`import("${e}")${Mt}`)([r,n]):import(e).then(r).catch(n)}catch(o){b(`Failed to load ESM entry from "${e}". ${o instanceof Error?o.message:String(o)}`)}})}async function eo({entry:e,remoteEntryExports:t}){return new Promise((r,n)=>{try{t?r(t):typeof __system_context__>"u"?System.import(e).then(r).catch(n):new Function("callbacks",`System.import("${e}")${Mt}`)([r,n])}catch(o){b(`Failed to load SystemJS entry from "${e}". ${o instanceof Error?o.message:String(o)}`)}})}function to(e,t,r){const{remoteEntryKey:n,entryExports:o}=dt(e,t);return o||b(Rt,N,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n}),o}async function ro({name:e,globalName:t,entry:r,remoteInfo:n,loaderHook:o,getEntryUrl:s,resourceContext:i}){const{entryExports:l}=dt(e,t);if(l)return l;const a=s?s(r):r;return or(a,{attrs:{},createScriptHook:(c,f)=>{const u=o.lifecycle.createScript.emit({url:c,attrs:f,remoteInfo:n,resourceContext:i?{...i,url:c}:void 0});if(u&&(u instanceof HTMLScriptElement||"script"in u||"timeout"in u))return u}}).then(()=>to(e,t,r),c=>{const f=c instanceof Error?c.message:String(c);b(Ce,N,{remoteName:e,resourceUrl:a},f)})}async function oo({remoteInfo:e,remoteEntryExports:t,loaderHook:r,getEntryUrl:n,resourceContext:o}){const{entry:s,entryGlobalName:i,name:l,type:a}=e;switch(a){case"esm":case"module":return Qr({entry:s,remoteEntryExports:t});case"system":return eo({entry:s,remoteEntryExports:t});default:return ro({entry:s,globalName:i,name:l,remoteInfo:e,loaderHook:r,getEntryUrl:n,resourceContext:o})}}function Ae(e){const{entry:t,name:r}=e;return tt(r,t)}async function He(e){const{origin:t,remoteEntryExports:r,remoteInfo:n,getEntryUrl:o,resourceContext:s,_inErrorHandling:i=!1}=e,l=Ae(n);if(r)return r;if(!V[l]){const a=t.remoteHandler.hooks.lifecycle.loadEntry,c=t.loaderHook;V[l]=a.emit({origin:t,loaderHook:c,remoteInfo:n,remoteEntryExports:r}).then(f=>f||oo({remoteInfo:n,remoteEntryExports:r,loaderHook:c,getEntryUrl:o,resourceContext:s})).then(async f=>(await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,remoteEntryExports:f}),f)).catch(async f=>{const u=Ae(n),h=f instanceof Error&&f.message.includes("ScriptExecutionError");if(f instanceof Error&&f.message.includes(Ce)&&!h&&!i){const d=p=>He({...p,_inErrorHandling:!0}),m=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:d,origin:t,remoteInfo:n,remoteEntryExports:r,globalLoading:V,uniqueKey:u});if(m)return await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,remoteEntryExports:m,recovered:!0}),m}throw await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,error:f}),f})}return V[l]}function B(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||gt,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||oe}}function no(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}function so(e,t){const r=pr(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(o=>{e?.find(s=>s.name!==o.name)&&e.push(o)}),e&&e.length>0&&e.forEach(o=>{n.forEach(s=>{s.applyPlugin(o,t)})}),e}function io(e){return{name:e.name,alias:e.alias,entry:"entry"in e?e.entry:void 0,version:"version"in e?e.version:void 0,type:e.type,entryGlobalName:e.entryGlobalName,shareScope:e.shareScope}}function F(e){const t={};for(const[r,n]of Object.entries(e.shared)){const o=n[0];o&&(t[r]={version:o.version,singleton:o.shareConfig?.singleton,requiredVersion:o.shareConfig?.requiredVersion===!1?!1:o.shareConfig?.requiredVersion,eager:o.eager,strictVersion:o.shareConfig?.strictVersion})}return{project:{name:e.name,mfRole:e.remotes?.length>0?"host":"unknown"},mfConfig:{name:e.name,remotes:e.remotes?.map(io)??[],shared:t}}}function Lt(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,...e}}function ao(e,t){return t.map(r=>{const n=Xr(e,r.nameOrAlias);return L(n,`Unable to preload ${r.nameOrAlias} as it is not included in ${!n&&ot({remoteInfo:n,remotes:e})}`),{remote:n,preloadConfig:Lt(r)}})}function co(e){return e?e.map(t=>t==="."?t:t.startsWith("./")?t.replace("./",""):t):[]}function Ge(e){return e instanceof Error?e.message.includes("timed out")||e.name.includes("Timeout"):!1}function G(e,t,r,n){return{url:t,status:r,resourceType:e.resourceType,initiator:e.initiator,id:e.id,error:n}}async function lo(e,t,r,n){const o=e.moduleCache.get(r.name),s=r.entry;if(o?.remoteEntryExports)return G(n,s,"cached");try{if(!await He({origin:e,remoteInfo:r,remoteEntryExports:o?.remoteEntryExports,resourceContext:{...n,url:s}}))throw new Error(`Failed to load remoteEntry "${s}".`);return G(n,s,"success")}catch(i){return G(n,s,Ge(i)?"timeout":"error",i)}}function Ie({host:e,remoteInfo:t,url:r,attrs:n,context:o,needDeleteLink:s}){return new Promise(i=>{const{link:l,needAttach:a}=rr({url:r,cb:()=>{i(G(o,r,a?"success":"cached"))},onErrorCallback:c=>{i(G(o,r,Ge(c)?"timeout":"error",c))},attrs:n,createLinkHook:(c,f)=>{const u=e.loaderHook.lifecycle.createLink.emit({url:c,attrs:f,remoteInfo:t,resourceContext:{...o,url:c}});return u instanceof HTMLLinkElement,u},needDeleteLink:s});a&&document.head.appendChild(l)})}function fo({host:e,remoteInfo:t,url:r,attrs:n,context:o}){return new Promise(s=>{const{script:i,needAttach:l}=at({url:r,cb:()=>{s(G(o,r,l?"success":"cached"))},onErrorCallback:a=>{s(G(o,r,Ge(a)?"timeout":"error",a))},attrs:n,createScriptHook:(a,c)=>{const f=e.loaderHook.lifecycle.createScript.emit({url:a,attrs:c,remoteInfo:t,resourceContext:{...o,url:a}});return f instanceof HTMLScriptElement,f},needDeleteScript:!0});l&&document.head.appendChild(i)})}function X(e,t){return{...e,resourceType:t}}function Ft(e,t,r,n=!0,o={initiator:"preloadRemote",id:e.name}){const{cssAssets:s,jsAssetsWithoutEntry:i,entryAssets:l}=r,a=[];if(t.options.inBrowser){if(l.forEach(c=>{const{moduleInfo:f}=c;a.push(lo(t,e,f,X(o,"remoteEntry")))}),n){const c={rel:"preload",as:"style"};s.forEach(f=>{a.push(Ie({host:t,remoteInfo:e,url:f,attrs:c,context:X(o,"css")}))})}else{const c={rel:"stylesheet",type:"text/css"};s.forEach(f=>{a.push(Ie({host:t,remoteInfo:e,url:f,attrs:c,needDeleteLink:!1,context:X(o,"css")}))})}if(n){const c={rel:"preload",as:"script"};i.forEach(f=>{a.push(Ie({host:t,remoteInfo:e,url:f,attrs:c,context:X(o,"js")}))})}else{const c={fetchpriority:"high",type:e?.type==="module"?"module":"text/javascript"};i.forEach(f=>{a.push(fo({host:t,remoteInfo:e,url:f,attrs:c,context:X(o,"js")}))})}}return Promise.all(a)}function uo(e){if(!e||!("modules"in e)||!Array.isArray(e.modules))return;const t=e.modules.map(r=>r.moduleName).filter(Boolean);return t.length?t.join(","):void 0}function ho(e,t,r){const n=t,o=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];o.length||o.push("default"),o.forEach(i=>{n[i]||(n[i]={})});const s={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?o:e.shareScope||"default"};return Object.defineProperty(s,"shareScopeMap",{value:n,enumerable:!1}),{remoteEntryInitOptions:s,shareScope:n[o[0]],initScope:r??[]}}var xt=class{constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}async getEntry(e){if(this.remoteEntryExports)return this.remoteEntryExports;const t=await He({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports,resourceContext:{initiator:"loadRemote",id:De(this.remoteInfo.name,e),resourceType:"remoteEntry"}});return L(t,`remoteEntryExports is undefined
7
+ ${ot(this.remoteInfo)}`),this.remoteEntryExports=t,this.remoteEntryExports}async init(e,t,r,n){const o=await this.getEntry(n);if(this.inited)return await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:o,cached:!0,origin:this.host}),o;if(this.initPromise){try{await this.initPromise,await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:o,cached:!0,origin:this.host})}catch(s){throw await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:o,error:s,cached:!0,origin:this.host}),s}return o}this.initing=!0,this.initPromise=(async()=>{await this.host.loaderHook.lifecycle.beforeInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,origin:this.host});const{remoteEntryInitOptions:s,shareScope:i,initScope:l}=ho(this.remoteInfo,this.host.shareScopeMap,r),a=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:i,remoteEntryInitOptions:s,initScope:l,remoteInfo:this.remoteInfo,origin:this.host});typeof o?.init>"u"&&b(It,N,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName},void 0,F(this.host.options));try{await o.init(a.shareScope,a.initScope,a.remoteEntryInitOptions)}catch(c){b(Pt,N,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName,shareScope:this.remoteInfo.shareScope},`${c}`,F(this.host.options))}await this.host.hooks.lifecycle.initContainer.emit({...a,id:e,remoteSnapshot:t,remoteEntryExports:o}),this.inited=!0})();try{await this.initPromise,await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:o,origin:this.host})}catch(s){throw await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:o,error:s,origin:this.host}),s}finally{this.initing=!1,this.initPromise=void 0}return o}async get(e,t,r,n){const{loadFactory:o=!0}=r||{loadFactory:!0},s=await this.init(e,n,void 0,t);this.lib=s,await this.host.loaderHook.lifecycle.beforeGetExpose.emit({id:e,expose:t,moduleInfo:this.remoteInfo,remoteEntryExports:s,origin:this.host});let i;try{const c=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:s,expose:t,moduleInfo:this.remoteInfo});i=typeof c=="function"?c:void 0,i||(i=await s.get(t)),i||b(At,N,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,expose:t,requestId:e,availableExposes:uo(n)},void 0,F(this.host.options)),await this.host.loaderHook.lifecycle.afterGetExpose.emit({id:e,expose:t,moduleInfo:this.remoteInfo,remoteEntryExports:s,moduleFactory:i,origin:this.host})}catch(c){throw await this.host.loaderHook.lifecycle.afterGetExpose.emit({id:e,expose:t,moduleInfo:this.remoteInfo,remoteEntryExports:s,error:c,origin:this.host}),c}const l=lr(this.remoteInfo.name,t),a=this.wraperFactory(i,l);if(!o)return a;await this.host.loaderHook.lifecycle.beforeExecuteFactory.emit({id:e,expose:t,moduleInfo:this.remoteInfo,loadFactory:o,origin:this.host});try{const c=await a();return await this.host.loaderHook.lifecycle.afterExecuteFactory.emit({id:e,expose:t,moduleInfo:this.remoteInfo,loadFactory:o,exposeModule:c,origin:this.host}),c}catch(c){throw await this.host.loaderHook.lifecycle.afterExecuteFactory.emit({id:e,expose:t,moduleInfo:this.remoteInfo,loadFactory:o,error:c,origin:this.host}),c}}wraperFactory(e,t){function r(n,o){n&&typeof n=="object"&&Object.isExtensible(n)&&!Object.getOwnPropertyDescriptor(n,Symbol.for("mf_module_id"))&&Object.defineProperty(n,Symbol.for("mf_module_id"),{value:o,enumerable:!1})}return()=>{const n=e();return n instanceof Promise?n.then(o=>(r(o,t),o)):(r(n,t),n)}}},k=class{constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}on(e){typeof e=="function"&&this.listeners.add(e)}once(e){const t=this;this.on(function r(...n){return t.remove(r),e.apply(null,n)})}emit(...e){let t;return this.listeners.size>0&&this.listeners.forEach(r=>{const n=r(...e);n!==void 0&&(t=n)}),t}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}},R=class extends k{emit(...e){let t;const r=Array.from(this.listeners);if(r.length>0){let n=0;const o=s=>s===!1?!1:n<r.length?Promise.resolve(r[n++].apply(null,e)).then(i=>i===void 0||e.length===1&&i===e[0]?o(s):o(i)):s;t=o()}return Promise.resolve(t)}};function Dt(e,t){if(!Le(t))return!1;if(e!==t){for(const r in e)if(!(r in t))return!1}return!0}var W=class extends k{constructor(e){super(),this.onerror=b,this.type=e}emit(e){Le(e)||b(`The data for the "${this.type}" hook should be an object.`);for(const t of this.listeners)try{const r=t(e);if(r===void 0)continue;if(Dt(e,r))e=r;else{this.onerror(`A plugin returned an unacceptable value for the "${this.type}" type.`);break}}catch(r){Q(r),this.onerror(r)}return e}},x=class extends k{constructor(e){super(),this.onerror=b,this.type=e}emit(e){Le(e)||b(`The response data for the "${this.type}" hook must be an object.`);const t=Array.from(this.listeners);if(t.length>0){let r=0;const n=s=>(Q(s),this.onerror(s),e),o=s=>{if(s!==void 0&&Dt(e,s))e=s;else if(s!==void 0)return this.onerror(`A plugin returned an incorrect value for the "${this.type}" type.`),e;if(r<t.length)try{return Promise.resolve(t[r++](e)).then(o,n)}catch(i){return n(i)}return e};return Promise.resolve(o(e))}return Promise.resolve(e)}},z=class{constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}applyPlugin(e,t){L(cr(e),"Plugin configuration is invalid.");const r=e.name;L(r,"A name must be provided by the plugin."),this.registerPlugins[r]||(this.registerPlugins[r]=e,e.apply?.(t),Object.keys(this.lifecycle).forEach(n=>{const o=e[n];o&&this.lifecycle[n].on(o)}))}removePlugin(e){L(e,"A name is required.");const t=this.registerPlugins[e];L(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(r=>{r!=="name"&&this.lifecycle[r].remove(t[r])})}};function Ct(e,t){const r=ut(t);r.url||b(kt,N,{remoteName:e.name});let n=ve(t,r.url);e.type=r.type,e.entryGlobalName=r.globalName,e.entry=n,e.version=t.version,e.buildVersion=t.buildVersion}function mo(){return{name:"snapshot-plugin",async afterResolve(e){const{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:s,id:i}=e;if(!Me(t)||!lt(t)){const{remoteSnapshot:l,globalSnapshot:a}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:De(t.name,n)});Ct(s,l);const c={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},f=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:c,remoteInfo:s,remote:t,remoteSnapshot:l,globalSnapshot:a});return f&&Ft(s,o,f,!1,{initiator:"loadRemote",id:i}).catch(()=>{}),{...e,remoteSnapshot:l}}return e}}}function po(e){const t=e.split(":");return t.length===1?{name:t[0],version:void 0}:t.length===2?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function Ht(e,t,r,n,o={},s){const{value:i}=K(e,pe(t)),l=s||i;if(l&&!nt(l)&&(r(l,t,n),l.remotesInfo)){const a=Object.keys(l.remotesInfo);for(const c of a){if(o[c])continue;o[c]=!0;const f=po(c),u=l.remotesInfo[c];Ht(e,{name:f.name,version:u.matchedVersion},r,!1,o,void 0)}}}const we=(e,t)=>document.querySelector(`${e}[${e==="link"?"href":"src"}="${t}"]`);function yo(e,t,r,n,o){const s=[],i=[],l=[],a=new Set,c=new Set,{options:f}=e,{preloadConfig:u}=t,{depsRemote:h}=u;if(Ht(n,r,(m,p,_)=>{let y;if(_)y=u;else if(Array.isArray(h)){const g=h.find(v=>v.nameOrAlias===p.name||v.nameOrAlias===p.alias);if(!g)return;y=Lt(g)}else if(h===!0)y=u;else return;const E=ve(m,ut(m).url);E&&l.push({name:p.name,moduleInfo:{name:p.name,entry:E,type:"remoteEntryType"in m?m.remoteEntryType:"global",entryGlobalName:"globalName"in m?m.globalName:p.name,shareScope:"",version:"version"in m?m.version:void 0},url:E});let w="modules"in m?m.modules:[];const $=co(y.exposes);$.length&&"modules"in m&&(w=m?.modules?.reduce((g,v)=>($?.indexOf(v.moduleName)!==-1&&g.push(v),g),[]));function S(g){const v=g.map(P=>ve(m,P));return y.filter?v.filter(y.filter):v}if(w){const g=w.length;for(let v=0;v<g;v++){const P=w[v],Ee=`${p.name}/${P.moduleName}`;e.remoteHandler.hooks.lifecycle.handlePreloadModule.emit({id:P.moduleName==="."?p.name:Ee,name:p.name,remoteSnapshot:m,preloadConfig:y,remote:p,origin:e}),!yr(Ee)&&(y.resourceCategory==="all"?(s.push(...S(P.assets.css.async)),s.push(...S(P.assets.css.sync)),i.push(...S(P.assets.js.async)),i.push(...S(P.assets.js.sync))):y.resourceCategory==="sync"&&(s.push(...S(P.assets.css.sync)),i.push(...S(P.assets.js.sync))),_r(Ee))}}},!0,{},o),o.shared&&o.shared.length>0){const m=(p,_)=>{const{shared:y}=me(e.shareScopeMap,_.sharedName,p,e.sharedHandler.hooks.lifecycle.resolveShare)||{};y&&typeof y.lib=="function"&&(_.assets.js.sync.forEach(E=>{a.add(E)}),_.assets.css.sync.forEach(E=>{c.add(E)}))};o.shared.forEach(p=>{const _=f.shared?.[p.sharedName];if(!_)return;const y=p.version?_.find(E=>E.version===p.version):_;y&&ft(y).forEach(E=>{m(E,p)})})}const d=i.filter(m=>!a.has(m)&&!we("script",m));return{cssAssets:s.filter(m=>!c.has(m)&&!we("link",m)),jsAssetsWithoutEntry:d,entryAssets:l.filter(m=>!we("script",m.url))}}const _o=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){const{origin:t,preloadOptions:r,remoteInfo:n,remote:o,globalSnapshot:s,remoteSnapshot:i}=e;return Me(o)&&lt(o)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:o.name,url:o.entry,moduleInfo:{name:n.name,entry:o.entry,type:n.type||"global",entryGlobalName:"",shareScope:""}}]}:(Ct(n,i),yo(t,r,n,s,i))}}};function Gt(e,t){const r=ue({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&K(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:Ue(),remoteSnapshot:ue({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:Ue(),remoteSnapshot:ue({name:e.name,version:"version"in e?e.version:void 0})}}var Eo=class{constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new z({beforeLoadRemoteSnapshot:new R("beforeLoadRemoteSnapshot"),loadSnapshot:new x("loadGlobalSnapshot"),loadRemoteSnapshot:new x("loadRemoteSnapshot"),afterLoadSnapshot:new x("afterLoadSnapshot")}),this.manifestLoading=ee.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}async loadRemoteSnapshotInfo({moduleInfo:e,id:t,initiator:r="loadRemote"}){const{options:n}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:n,moduleInfo:e,origin:this.HostInstance});let o=ue({name:this.HostInstance.options.name,version:this.HostInstance.options.version});o||(o={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},mr({[this.HostInstance.options.name]:o})),o&&"remotesInfo"in o&&!K(o.remotesInfo,e.name).value&&("version"in e||"entry"in e)&&(o.remotesInfo={...o?.remotesInfo,[e.name]:{matchedVersion:"version"in e?e.version:e.entry}});const{hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:l}=this.getGlobalRemoteInfo(e),{remoteSnapshot:a,globalSnapshot:c}=await this.hooks.lifecycle.loadSnapshot.emit({options:n,moduleInfo:e,hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:l});let f,u;if(a)if(nt(a)){const h=a.remoteEntry,d=await this.loadManifestSnapshot(h,e,{},{initiator:r,id:t||e.name}),m=Ve({...e,entry:h},d);f=d,u=m}else{const{remoteSnapshot:h}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:e,remoteSnapshot:a,from:"global"});f=h,u=c}else if(Me(e)){const h=await this.loadManifestSnapshot(e.entry,e,{},{initiator:r,id:t||e.name}),d=Ve(e,h);f=h,u=d}else b(vt,N,{remoteName:e.name,remoteVersion:e.version,hostName:this.HostInstance.options.name,globalSnapshot:JSON.stringify(c)},void 0,F(this.HostInstance.options));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:t,host:this.HostInstance,options:n,moduleInfo:e,remoteSnapshot:f}),{remoteSnapshot:f,globalSnapshot:u}}getGlobalRemoteInfo(e){return Gt(e,this.HostInstance)}async getManifestJson(e,t,r,n){return(async()=>{const s=B(t);let i=this.manifestCache.get(e);if(i)return i;try{let a=await this.loaderHook.lifecycle.fetch.emit(e,{},s,n?{...n,url:e,resourceType:"manifest"}:void 0);(!a||!(a instanceof Response))&&(a=await fetch(e,{})),i=await a.json()}catch(a){i=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:a,from:"runtime",lifecycle:"afterResolve",remote:s,origin:this.HostInstance}),i||(delete this.manifestLoading[e],b(wt,N,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${a}`,F(this.HostInstance.options)))}const l=[!i.metaData&&"metaData",!i.exposes&&"exposes",!i.shared&&"shared"].filter(Boolean);return l.length>0&&await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:new Error(`"${e}" is not a valid federation manifest for remote "${t.name}". Missing required fields: ${l.join(", ")}.`),from:"runtime",lifecycle:"afterResolve",remote:s,origin:this.HostInstance}),l.length>0&&b(Nt,N,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name,missingFields:l.join(",")},void 0,F(this.HostInstance.options)),this.manifestCache.set(e,i),i})()}async loadManifestSnapshot(e,t,r,n){const o=async()=>{const s=await this.getManifestJson(e,t,r,n),i=Xt(s,{version:e}),{remoteSnapshot:l}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:s,remoteSnapshot:i,manifestUrl:e,from:"manifest"});return l};return this.manifestLoading[e]||(this.manifestLoading[e]=o().then(s=>s)),this.manifestLoading[e]}},go=class{constructor(e){this.hooks=new z({beforeRegisterShare:new W("beforeRegisterShare"),afterResolve:new x("afterResolve"),beforeLoadShare:new x("beforeLoadShare"),loadShare:new R,afterLoadShare:new k("afterLoadShare"),errorLoadShare:new k("errorLoadShare"),resolveShare:new W("resolveShare"),initContainerShareScopeMap:new W("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}emitAfterLoadShare({lifecycle:e,pkgName:t,shareInfo:r,selectedShared:n}){try{this.hooks.lifecycle.afterLoadShare.emit({pkgName:t,shareInfo:r,selectedShared:n,shared:this.host.options.shared,shareScopeMap:this.shareScopeMap,lifecycle:e,origin:this.host})}catch(o){Q(o)}}emitErrorLoadShare({lifecycle:e,pkgName:t,shareInfo:r,error:n,recovered:o}){try{this.hooks.lifecycle.errorLoadShare.emit({pkgName:t,shareInfo:r,shared:this.host.options.shared,shareScopeMap:this.shareScopeMap,lifecycle:e,origin:this.host,error:n,recovered:o})}catch(s){Q(s)}}registerShared(e,t){const{newShareInfos:r,allShareInfos:n}=bt(e,t);return Object.keys(r).forEach(o=>{r[o].forEach(s=>{s.scope.forEach(i=>{this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:o,shared:s}),this.shareScopeMap[i]?.[o]||this.setShared({pkgName:o,lib:s.lib,get:s.get,loaded:s.loaded||!!s.lib,shared:s,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){const{host:r}=this,n=Je({pkgName:e,extraOptions:t,shareInfos:r.options.shared});let o=n;try{n?.scope&&await Promise.all(n.scope.map(async a=>{await Promise.all(this.initializeSharing(a,{strategy:n.strategy}))})),o=(await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r})).shareInfo,L(o,`Cannot find shared "${e}" in host "${r.options.name}". Ensure the shared config for "${e}" is declared in the federation plugin options and the host has been initialized before loading shares.`);const s=o,{shared:i,useTreesShaking:l}=me(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(i){const a=se(i,l);if(a.lib)return U(a,r.options.name),this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:s,selectedShared:i}),a.lib;if(a.loading&&!a.loaded){const c=await a.loading;return a.loaded=!0,a.lib||(a.lib=c),U(a,r.options.name),this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:s,selectedShared:i}),c}else{const f=(async()=>{const h=await a.get();return U(a,r.options.name),a.loaded=!0,a.lib=h,h})();this.setShared({pkgName:e,loaded:!1,shared:i,from:r.options.name,lib:null,loading:f,treeShaking:l?a:void 0});const u=await f;return this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:s,selectedShared:i}),u}}else{if(t?.customShareInfo)return this.emitErrorLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:s,recovered:!0}),!1;const a=te(s.treeShaking),c=se(s,a),u=(async()=>{const d=await c.get();c.lib=d,c.loaded=!0,U(c,r.options.name);const{shared:m,useTreesShaking:p}=me(this.shareScopeMap,e,s,this.hooks.lifecycle.resolveShare)||{};if(m){const _=se(m,p);_.lib=d,_.loaded=!0,m.from=s.from}return d})();this.setShared({pkgName:e,loaded:!1,shared:s,from:r.options.name,lib:null,loading:u,treeShaking:a?c:void 0});const h=await u;return this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:s,selectedShared:s}),h}}catch(s){throw this.emitErrorLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:o,error:s}),s}}initializeSharing(e=oe,t){const{host:r}=this,n=t?.from,o=t?.strategy;let s=t?.initScope;const i=[];if(n!=="build"){const{initTokens:h}=this;s||(s=[]);let d=h[e];if(d||(d=h[e]={from:this.host.name}),s.indexOf(d)>=0)return i;s.push(d)}const l=this.shareScopeMap,a=r.options.name;l[e]||(l[e]={});const c=l[e],f=(h,d)=>{const{version:m,eager:p}=d;c[h]=c[h]||{};const _=c[h],y=_[m]&&se(_[m]),E=!!(y&&("eager"in y&&y.eager||"shareConfig"in y&&y.shareConfig?.eager));(!y||y.strategy!=="loaded-first"&&!y.loaded&&(!p!=!E?p:a>_[m].from))&&(_[m]=d)},u=async h=>{const{module:d}=await r.remoteHandler.getRemoteModuleAndOptions({id:h});let m;try{m=await d.getEntry()}catch(p){if(m=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:h,error:p,from:"runtime",lifecycle:"beforeLoadShare",remote:d.remoteInfo,origin:r}),!m)return}finally{m?.init&&!d.initing&&(d.remoteEntryExports=m,await d.init(void 0,void 0,s))}};return Object.keys(r.options.shared).forEach(h=>{r.options.shared[h].forEach(d=>{d.scope.includes(e)&&f(h,d)})}),(r.options.shareStrategy==="version-first"||o==="version-first")&&r.options.remotes.forEach(h=>{h.shareScope===e&&i.push(u(h.name))}),i}loadShareSync(e,t){const{host:r}=this,n=Je({pkgName:e,extraOptions:t,shareInfos:r.options.shared});try{n?.scope&&n.scope.forEach(s=>{this.initializeSharing(s,{strategy:n.strategy})});const{shared:o}=me(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(o){if(typeof o.lib=="function")return U(o,r.options.name),o.loaded||(o.loaded=!0,o.from===r.options.name&&(n.loaded=!0)),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:n,selectedShared:o}),o.lib;if(typeof o.get=="function"){const s=o.get();if(!(s instanceof Promise))return U(o,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:s,shared:o}),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:n,selectedShared:o}),s}}if(n.lib)return n.loaded||(n.loaded=!0),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:n,selectedShared:n}),n.lib;if(n.get){const s=n.get();return s instanceof Promise&&b(t?.from==="build"?Tt:Ne,N,{hostName:r.options.name,sharedPkgName:e},void 0,F(r.options)),n.lib=s,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:n,selectedShared:n}),n.lib}b(Ne,N,{hostName:r.options.name,sharedPkgName:e},void 0,F(r.options))}catch(o){throw this.emitErrorLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:n,error:o}),o}}initShareScopeMap(e,t,r={}){const{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared({pkgName:e,shared:t,from:r,lib:n,loading:o,loaded:s,get:i,treeShaking:l}){const{version:a,scope:c="default",...f}=t,u=Array.isArray(c)?c:[c],h=d=>{const m=(_,y,E)=>{E&&!_[y]&&(_[y]=E)},p=l?d.treeShaking:d;m(p,"loaded",s),m(p,"loading",o),m(p,"get",i)};u.forEach(d=>{this.shareScopeMap[d]||(this.shareScopeMap[d]={}),this.shareScopeMap[d][e]||(this.shareScopeMap[d][e]={}),this.shareScopeMap[d][e][a]||(this.shareScopeMap[d][e][a]={version:a,scope:[d],...f,lib:n});const m=this.shareScopeMap[d][e][a];h(m),r&&m.from!==r&&(m.from=r)})}_setGlobalShareScopeMap(e){const t=St(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}},bo=class{constructor(e){this.hooks=new z({beforeRegisterRemote:new W("beforeRegisterRemote"),registerRemote:new W("registerRemote"),beforeRequest:new x("beforeRequest"),afterMatchRemote:new R("afterMatchRemote"),onLoad:new R("onLoad"),afterLoadRemote:new R("afterLoadRemote"),handlePreloadModule:new k("handlePreloadModule"),errorLoadRemote:new R("errorLoadRemote"),beforePreloadRemote:new R("beforePreloadRemote"),generatePreloadAssets:new R("generatePreloadAssets"),afterPreloadRemote:new R("afterPreloadRemote"),loadEntry:new R}),this.host=e,this.idToRemoteMap={}}formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((r,n)=>(this.registerRemote(n,r,{force:!1}),r),e.remotes)}setIdToRemoteMap(e,t){const{remote:r,expose:n}=t,{name:o,alias:s}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},s&&e.startsWith(o)){const i=e.replace(o,s);this.idToRemoteMap[i]={name:r.name,expose:n};return}if(s&&e.startsWith(s)){const i=e.replace(s,o);this.idToRemoteMap[i]={name:r.name,expose:n}}}async loadRemote(e,t){const{host:r}=this,n=Xe(r.options.remotes,e);let o=e,s=n?.expose,i=n?B(n.remote):void 0,l;try{const{loadFactory:a=!0}=t||{loadFactory:!0},{module:c,moduleOptions:f,remoteMatchInfo:u}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:h,remote:d,expose:m,id:p,remoteSnapshot:_}=u;o=p,s=m,i=B(d);const y=await c.get(p,m,t,_),E=await this.hooks.lifecycle.onLoad.emit({id:p,pkgNameOrAlias:h,expose:m,exposeModule:a?y:void 0,exposeModuleFactory:a?void 0:y,remote:d,options:f,moduleInstance:c,origin:r});return this.setIdToRemoteMap(e,u),l={id:o,expose:s,remote:i,options:t,origin:r},typeof E=="function"?E:y}catch(a){const{from:c="runtime"}=t||{from:"runtime"};let f;try{f=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:a,from:c,lifecycle:"onLoad",expose:s,remote:i,origin:r})}catch(u){throw l={id:o,expose:s,remote:i,options:t,error:u,origin:r},u}if(!f)throw l={id:o,expose:s,remote:i,options:t,error:a,origin:r},a;return l={id:o,expose:s,remote:i,options:t,error:a,origin:r,recovered:!0},f}finally{l&&await this.hooks.lifecycle.afterLoadRemote.emit(l)}}async preloadRemote(e){const{host:t}=this,r=[];await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});const n=ao(t.options.remotes,e),o=l=>{const{preloadConfig:a,remote:c}=l,f=a.exposes||[];return f.length?f.map(u=>({ops:{...l,preloadConfig:{...a,exposes:[u]}},id:De(c.name,u)})):[{ops:l,id:`${c.name}/*`}]};let s;await Promise.all(n.flatMap(o).map(async l=>{const{ops:a,id:c}=l,{remote:f,preloadConfig:u}=a,h=B(f);try{const{globalSnapshot:d,remoteSnapshot:m}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:f,id:c,initiator:"preloadRemote"}),p=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:a,remote:f,remoteInfo:h,globalSnapshot:d,remoteSnapshot:m});if(!p)return;const _=await Ft(h,t,p,!0,{initiator:"preloadRemote",id:c});r.push({remote:f,remoteInfo:h,preloadConfig:u,id:c,results:_})}catch(d){r.push({remote:f,remoteInfo:h,preloadConfig:u,id:c,results:[{url:h.entry,status:"error",resourceType:/\.json(?:$|[?#])/i.test(h.entry)?"manifest":"remoteEntry",initiator:"preloadRemote",id:c,error:d}]})}}));const i=r.flatMap(l=>l.results.filter(a=>a.status==="error"||a.status==="timeout"));if(i.length>0&&(s=new Error(`preloadRemote failed to load ${i.length} resource(s).`),Object.assign(s,{results:r,failedResults:i})),await this.hooks.lifecycle.afterPreloadRemote.emit({preloadOps:e,options:t.options,origin:t,results:r,error:s}),s)throw s}registerRemotes(e,t){const{host:r}=this;e.forEach(n=>{this.registerRemote(n,r.options.remotes,{force:t?.force})})}async getRemoteModuleAndOptions(e){const{host:t}=this,{id:r}=e;let n;try{n=await this.hooks.lifecycle.beforeRequest.emit({id:r,options:t.options,origin:t})}catch(d){if(n=await this.hooks.lifecycle.errorLoadRemote.emit({id:r,options:t.options,origin:t,from:"runtime",error:d,lifecycle:"beforeRequest"}),!n)throw d}const{id:o}=n,s=Xe(t.options.remotes,o);if(!s)try{b($t,N,{hostName:t.options.name,requestId:o},void 0,F(t.options))}catch(d){throw await this.hooks.lifecycle.afterMatchRemote.emit({id:o,options:t.options,error:d,origin:t}),d}const{remote:i}=s,l=B(i);await this.hooks.lifecycle.afterMatchRemote.emit({id:o,...s,options:t.options,remoteInfo:l,origin:t});const a=await t.sharedHandler.hooks.lifecycle.afterResolve.emit({id:o,...s,options:t.options,origin:t,remoteInfo:l}),{remote:c,expose:f}=a;L(c&&f,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${o}.`);let u=t.moduleCache.get(c.name);const h={host:t,remoteInfo:l};return u||(u=new xt(h),t.moduleCache.set(c.name,u)),{module:u,moduleOptions:h,remoteMatchInfo:a}}registerRemote(e,t,r){const{host:n}=this,o=()=>{if(e.alias){const i=t.find(l=>e.alias&&(l.name.startsWith(e.alias)||l.alias?.startsWith(e.alias)));L(!i,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${i&&i.name} name or alias`)}"entry"in e&&typeof window<"u"&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=oe),e.type||(e.type=gt)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:n});const s=t.find(i=>i.name===e.name);if(!s)o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n});else{const i=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];r?.force&&(this.removeRemote(s),o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n}),rt(i.join(" ")))}}removeRemote(e){try{const{host:t}=this,{name:r}=e,n=t.options.remotes.findIndex(s=>s.name===r);n!==-1&&t.options.remotes.splice(n,1);const o=t.moduleCache.get(e.name);if(o){const s=o.remoteInfo,i=s.entryGlobalName;I[i]&&(Object.getOwnPropertyDescriptor(I,i)?.configurable?delete I[i]:I[i]=void 0);const l=Ae(o.remoteInfo);V[l]&&delete V[l],t.snapshotHandler.manifestCache.delete(s.entry);let a=s.buildVersion?tt(s.name,s.buildVersion):s.name;const c=I.__FEDERATION__.__INSTANCES__.findIndex(u=>s.buildVersion?u.options.id===a:u.name===a);if(c!==-1){const u=I.__FEDERATION__.__INSTANCES__[c];a=u.options.id||a;const h=St();let d=!0;const m=[];Object.keys(h).forEach(p=>{const _=h[p];_&&Object.keys(_).forEach(y=>{const E=_[y];E&&Object.keys(E).forEach(w=>{const $=E[w];$&&Object.keys($).forEach(S=>{const g=$[S];g&&typeof g=="object"&&g.from===s.name&&(g.loaded||g.loading?(g.useIn=g.useIn.filter(v=>v!==s.name),g.useIn.length?d=!1:m.push([p,y,w,S])):m.push([p,y,w,S]))})})})}),d&&(u.shareScopeMap={},delete h[a]),m.forEach(([p,_,y,E])=>{delete h[p]?.[_]?.[y]?.[E]}),I.__FEDERATION__.__INSTANCES__.splice(c,1)}const{hostGlobalSnapshot:f}=Gt(e,t);if(f){const u=f&&"remotesInfo"in f&&f.remotesInfo&&K(f.remotesInfo,e.name).key;u&&(delete f.remotesInfo[u],ee.__FEDERATION__.__MANIFEST_LOADING__[u]&&delete ee.__FEDERATION__.__MANIFEST_LOADING__[u])}t.moduleCache.delete(e.name)}}catch(t){ke.error(`removeRemote failed: ${t instanceof Error?t.message:String(t)}`)}}};const So=typeof FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN=="boolean"?!FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN:!0;var jt=class{constructor(e){this.hooks=new z({beforeInit:new W("beforeInit"),init:new k,beforeInitContainer:new x("beforeInitContainer"),initContainer:new x("initContainer")}),this.version="2.5.1",this.moduleCache=new Map,this.loaderHook=new z({getModuleInfo:new k,createScript:new k,createLink:new k,fetch:new R,loadEntryError:new R,afterLoadEntry:new R("afterLoadEntry"),beforeInitRemote:new R("beforeInitRemote"),afterInitRemote:new R("afterInitRemote"),beforeGetExpose:new R("beforeGetExpose"),afterGetExpose:new R("afterGetExpose"),beforeExecuteFactory:new R("beforeExecuteFactory"),afterExecuteFactory:new R("afterExecuteFactory"),getModuleFactory:new R}),this.bridgeHook=new z({beforeBridgeRender:new k,afterBridgeRender:new k,beforeBridgeDestroy:new k,afterBridgeDestroy:new k});const t=So?[mo(),_o()]:[],r={id:no(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:et};this.name=e.name,this.options=r,this.snapshotHandler=new Eo(this),this.sharedHandler=new go(this),this.remoteHandler=new bo(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}initOptions(e){e.name&&e.name!==this.options.name&&b(ct(Ot,N)),this.registerPlugins(e.plugins);const t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(e=oe,t){return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){const n=B({name:e,entry:t}),o=new xt({host:this,remoteInfo:n});return o.remoteEntryExports=r,this.moduleCache.set(e,o),o}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t,r={}){this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){const{allShareInfos:r}=bt(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),s=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:i}=this.sharedHandler.registerShared(o,n),l=[...o.plugins];n.plugins&&n.plugins.forEach(c=>{l.includes(c)||l.push(c)});const a={...e,...t,plugins:l,remotes:s,shared:i,id:n.id||e.id};return this.hooks.lifecycle.init.emit({origin:this,options:a}),a}registerPlugins(e){const t=so(e,this);this.options.plugins=this.options.plugins.reduce((r,n)=>(n&&r&&!r.find(o=>o.name===n.name)&&r.push(n),r),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}};function Ro(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}function Io(e,t){const r=Ro();return I.__FEDERATION__.__INSTANCES__.find(n=>!!(r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&t&&n.options.version===t))}function wo(e){const t=new(ur()||jt)({id:`${e.name}@${e.version||Date.now()}`,...e});return fr(t),t}let ie=null;function $o(e){const t=Io(e.name,e.version),r={...e,id:e.id||""};return t?(t.initOptions(r),ie||(ie=t),t):(ie=wo(r),ie)}hr(jt);typeof __VUE_HMR_RUNTIME__>"u"&&(globalThis.__VUE_HMR_RUNTIME__={createRecord(){},rerender(){},reload(){}});const Ut="__mf_init__virtual:mf:__mfe_internal__tintComponents__mf_v__runtimeInit__mf_v__.js__";let Pe=globalThis[Ut];if(!Pe){let e,t;const r=new Promise((n,o)=>{e=n,t=o});Pe=globalThis[Ut]={initPromise:r,initResolve:e,initReject:t}}const To=Pe.initResolve,_e="__mf_module_cache__";globalThis[_e]||={share:{},remote:{}};globalThis[_e].share||={};globalThis[_e].remote||={};const O=globalThis[_e],Ye={},Ze="default",Qe="tintComponents";let ae,ce;async function je(e){for(let t=0;;t++)try{return await e()}catch(r){throw r}}async function vo(){return ae||(ae=je(()=>D(()=>import("./assets/_virtual_mf-localSharedImportMap___mfe_internal__tintComponents-B1A16Tgp.js"),[])).catch(e=>{throw ae=void 0,e})),ae}async function Oo(){return ce||(ce=je(()=>D(()=>import("./assets/virtualExposes-Bu4cv-kd.js"),[])).then(e=>e.default??e).catch(e=>{throw ce=void 0,e})),ce}async function No(e={},t=[]){const{usedShared:r,usedRemotes:n}=await vo();try{const a=globalThis.__FEDERATION__?.__SHARE__;if(a){const c=f=>{let u=f;for(let h=0;h<5;h++){const d=u?.default;if(!d||typeof d!="object"||Object.keys(d).length===0)break;const m=Object.keys(u).filter(p=>p!=="default").map(p=>u[p]);if(m.length>0&&m.some(p=>p!==void 0))break;u=d}return u};for(const[,f]of Object.entries(a)){const u=f?.default;if(u)for(const[h,d]of Object.entries(u))for(const[m,p]of Object.entries(d)){if(!p.lib)continue;const _=p.shareConfig?.singleton?h:`${h}@${m}`;if(O.share[_]!==void 0)continue;const y=typeof p.lib=="function"?p.lib():p.lib,E=await Promise.resolve(y);O.share[_]=c(E)}}}}catch(a){console.error("[Module Federation] Failed to bridge external shared modules",a)}if(O.share.react===void 0){const a=await D(()=>import("./assets/_virtual_mf___mfe_internal__tintComponents__loadShare__react__loadShare__.js-CAwea2Mm.js").then(h=>h.R),[]),f=(h=>{let d=h;for(let m=0;m<5;m++){const p=d?.default;if(!p||typeof p!="object"||Object.keys(p).length===0)break;const _=Object.keys(d).filter(y=>y!=="default").map(y=>d[y]);if(_.length>0&&_.some(y=>y!==void 0))break;d=p}return d})(a),u=f===a?{...a}:f;Object.defineProperty(u,"__esModule",{value:!0,enumerable:!1}),O.share.react=u}if(O.share["react-dom"]===void 0){const a=await D(()=>import("./assets/_virtual_mf___mfe_internal__tintComponents__loadShare__react_mf_2_dom__loadShare__.js-rV2HHyiS.js").then(h=>h._),[]),f=(h=>{let d=h;for(let m=0;m<5;m++){const p=d?.default;if(!p||typeof p!="object"||Object.keys(p).length===0)break;const _=Object.keys(d).filter(y=>y!=="default").map(y=>d[y]);if(_.length>0&&_.some(y=>y!==void 0))break;d=p}return d})(a),u=f===a?{...a}:f;Object.defineProperty(u,"__esModule",{value:!0,enumerable:!1}),O.share["react-dom"]=u}if(O.share["@emotion/react"]===void 0){const a=await D(()=>import("./assets/_virtual_mf___mfe_internal__tintComponents__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-C8Vyx7Bj.js").then(h=>h._),[]),f=(h=>{let d=h;for(let m=0;m<5;m++){const p=d?.default;if(!p||typeof p!="object"||Object.keys(p).length===0)break;const _=Object.keys(d).filter(y=>y!=="default").map(y=>d[y]);if(_.length>0&&_.some(y=>y!==void 0))break;d=p}return d})(a),u=f===a?{...a}:f;Object.defineProperty(u,"__esModule",{value:!0,enumerable:!1}),O.share["@emotion/react"]=u}if(O.share["@emotion/styled"]===void 0){const a=await D(()=>import("./assets/_virtual_mf___mfe_internal__tintComponents__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-ByxO1Xun.js").then(h=>h._),[]),f=(h=>{let d=h;for(let m=0;m<5;m++){const p=d?.default;if(!p||typeof p!="object"||Object.keys(p).length===0)break;const _=Object.keys(d).filter(y=>y!=="default").map(y=>d[y]);if(_.length>0&&_.some(y=>y!==void 0))break;d=p}return d})(a),u=f===a?{...a}:f;Object.defineProperty(u,"__esModule",{value:!0,enumerable:!1}),O.share["@emotion/styled"]=u}if(O.share["@mui/material"]===void 0){const a=await D(()=>import("./assets/_virtual_mf___mfe_internal__tintComponents__loadShare___mf_0_mui_mf_1_material__loadShare__.js-Dg1UrPxy.js").then(h=>h._),[]),f=(h=>{let d=h;for(let m=0;m<5;m++){const p=d?.default;if(!p||typeof p!="object"||Object.keys(p).length===0)break;const _=Object.keys(d).filter(y=>y!=="default").map(y=>d[y]);if(_.length>0&&_.some(y=>y!==void 0))break;d=p}return d})(a),u=f===a?{...a}:f;Object.defineProperty(u,"__esModule",{value:!0,enumerable:!1}),O.share["@mui/material"]=u}const o=[],s=typeof globalThis.window>"u"?await Promise.all([]):[],i=$o({name:Qe,remotes:n,shared:r,plugins:[...o,...s],shareStrategy:"version-first"});var l=Ye[Ze];if(l||(l=Ye[Ze]={from:Qe}),!(t.indexOf(l)>=0)){t.push(l),i.initShareScopeMap("default",e),To(i);try{await je(async()=>{await Promise.all(await i.initializeSharing("default",{strategy:"version-first",from:"build",initScope:t}))})}catch(a){console.error("[Module Federation]",a)}for(const[a,c]of Object.entries(r)){const f=c.shareConfig?.singleton||!c.version?a:`${a}@${c.version}`;if(c.shareConfig?.import!==!1||O.share[f]!==void 0)continue;const u=y=>{let E=y;for(let w=0;w<5;w++){const $=E?.default;if(!$||typeof $!="object"||Object.keys($).length===0)break;const S=Object.keys(E).filter(g=>g!=="default").map(g=>E[g]);if(S.length>0&&S.some(g=>g!==void 0))break;E=$}return E},h=e?.[a],d=h&&h[Object.keys(h)[0]];if(!d)continue;const m=d.lib||(d.loading?await d.loading:await d.get?.()),p=typeof m=="function"?m():m,_=await Promise.resolve(p);O.share[f]=u(_)}return i}}async function Ao(e){const t=await Oo();if(!(e in t))throw new Error(`[Module Federation] Module ${e} does not exist in container.`);return t[e]().then(r=>()=>r)}export{Ao as get,No as init};
@@ -0,0 +1,48 @@
1
+
2
+ import { init as runtimeInit } from "@module-federation/runtime";
3
+
4
+ let exposesMapPromise;
5
+
6
+ async function getExposesMap() {
7
+ exposesMapPromise ??= import("virtual:mf-exposes-ssr:__mfe_internal__tintComponents__customComponents_js").then((mod) => mod.default ?? mod);
8
+ return exposesMapPromise;
9
+ }
10
+
11
+ /**
12
+ * Called by the MF runtime on the host to register this remote's share scope.
13
+ * On the server the host has already initialised the runtime, so we just need
14
+ * to set up a minimal runtime instance for the remote container.
15
+ */
16
+ async function init(shared = {}, initScope = []) {
17
+ const initRes = runtimeInit({
18
+ name: "tintComponents",
19
+ remotes: [],
20
+ shared: {},
21
+ });
22
+ const initToken = { from: "tintComponents" };
23
+ if (initScope.indexOf(initToken) >= 0) return;
24
+ initScope.push(initToken);
25
+ initRes.initShareScopeMap("default", shared);
26
+ try {
27
+ await Promise.all(
28
+ await initRes.initializeSharing("default", {
29
+ strategy: "version-first",
30
+ from: 'build',
31
+ initScope,
32
+ })
33
+ );
34
+ } catch (e) {
35
+ console.error('[Module Federation SSR]', e);
36
+ }
37
+ return initRes;
38
+ }
39
+
40
+ async function getExposes(moduleName) {
41
+ const exposesMap = await getExposesMap();
42
+ if (!(moduleName in exposesMap))
43
+ throw new Error(`[Module Federation] Module ${moduleName} does not exist in container.`);
44
+ return exposesMap[moduleName]().then((res) => () => res);
45
+ }
46
+
47
+ export { init, getExposes as get };
48
+
@@ -0,0 +1,35 @@
1
+ {
2
+ "tint adapter settings": "Adaptereinstellungen für tint",
3
+ "connectionHeader": "deCONZ-Verbindung",
4
+ "ip": "deCONZ IP-Adresse",
5
+ "port": "REST-Port",
6
+ "wsPort": "WebSocket-Port",
7
+ "apiKey": "API-Schlüssel",
8
+ "behaviorHeader": "Verhalten",
9
+ "pollingInterval": "Abfrageintervall (Sekunden)",
10
+ "transitionTime": "Übergangszeit (×100 ms)",
11
+ "remoteHeader": "Tint-Fernbedienung",
12
+ "autoApplyColorWheel": "Farbrad automatisch auf Leuchten anwenden",
13
+ "watchdogMinutes": "Fernbedienung Watchdog (Minuten)",
14
+ "tabLights": "Leuchten",
15
+ "tabGroups": "Gruppen",
16
+ "descLightsTab": "Alle mit Ihrem deCONZ-Gateway gekoppelten Leuchten und deren aktueller Status.",
17
+ "descGroupsTab": "Leuchtgruppen verwalten: Neue Gruppen anlegen, Zugehörigkeit bearbeiten oder Gruppen löschen. Änderungen werden direkt an Ihr deCONZ-Gateway übertragen.",
18
+ "tabPlugs": "Steckdosen",
19
+ "tabScenes": "Szenen",
20
+ "descPlugsTab": "Alle mit Ihrem deCONZ-Gateway gekoppelten Zwischenstecker und Schalter sowie deren aktueller Status.",
21
+ "descScenesTab": "Alle Szenen Ihrer Gruppen. Klicken Sie auf \"Aktivieren\", um eine Szene direkt aufzurufen.",
22
+ "tabCovers": "Rollos",
23
+ "tabSwitches": "Schalter",
24
+ "tabSensors": "Sensoren",
25
+ "tabThermostats": "Thermostate",
26
+ "descCoversTab": "Alle mit Ihrem deCONZ-Gateway gekoppelten Rollladenmotoren und deren aktuelle Position.",
27
+ "descSwitchesTab": "Alle generischen (Nicht-Tint) Zigbee-Wandschalter und deren Status.",
28
+ "descSensorsTab": "Alle weiteren Sensoren (Temperatur, Feuchtigkeit, Bewegung, Tür/Fenster, Verbrauch etc.) und deren aktuelle Werte.",
29
+ "descThermostatsTab": "Alle Heizkörperthermostate mit aktueller Temperatur, Sollwert und Ventilstellung.",
30
+ "pairingHeader": "API-Schlüssel",
31
+ "pairingHint": "Klicken Sie zuerst auf den Button unten, und öffnen Sie dann Phoscon im Browser (http://IP:Port/) und gehen Sie zu ☰ → Gateway → App verbinden. Der Adapter erkennt das Pairing-Fenster automatisch (alle 3 s, bis zu 60 s) und trägt den API-Schlüssel selbständig ein.",
32
+ "btnRequestApiKey": "Auf deCONZ-Pairing warten…",
33
+ "btnScanApiKey": "deCONZ Pairing",
34
+ "confirmPairQuestion": "Öffne in Phoscon: ☰ → Gateway → App authentifizieren — danach OK klicken. Der Adapter holt den API-Schlüssel automatisch."
35
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "tint adapter settings": "Adapter settings for tint",
3
+ "connectionHeader": "deCONZ Connection",
4
+ "ip": "deCONZ IP address",
5
+ "port": "REST port",
6
+ "wsPort": "WebSocket port",
7
+ "apiKey": "API key",
8
+ "behaviorHeader": "Behavior",
9
+ "pollingInterval": "Polling interval (seconds)",
10
+ "transitionTime": "Transition time (×100 ms)",
11
+ "remoteHeader": "Tint Remote",
12
+ "autoApplyColorWheel": "Auto-apply color wheel to lights",
13
+ "watchdogMinutes": "Remote watchdog (minutes)",
14
+ "tabLights": "Lights",
15
+ "tabGroups": "Groups",
16
+ "descLightsTab": "All lights paired with your deCONZ gateway and their current status.",
17
+ "descGroupsTab": "Manage light groups: create, edit membership, or delete groups. Changes are applied directly to your deCONZ gateway.",
18
+ "tabPlugs": "Plugs",
19
+ "tabScenes": "Scenes",
20
+ "descPlugsTab": "All smart plugs and switches paired with your deCONZ gateway and their current status.",
21
+ "descScenesTab": "All scenes across your groups. Click \"Activate\" to recall a scene directly.",
22
+ "tabCovers": "Covers",
23
+ "tabSwitches": "Switches",
24
+ "tabSensors": "Sensors",
25
+ "tabThermostats": "Thermostats",
26
+ "descCoversTab": "All window covering motors paired with your deCONZ gateway and their current position.",
27
+ "descSwitchesTab": "All generic (non-Tint) Zigbee wall switches and their status.",
28
+ "descSensorsTab": "All other sensors (temperature, humidity, motion, open/close, consumption, etc.) and their current readings.",
29
+ "descThermostatsTab": "All radiator thermostats with current temperature, setpoint, and valve position.",
30
+ "pairingHeader": "API Key",
31
+ "pairingHint": "Click the button below first, then open Phoscon in your browser (http://IP:Port/) and go to ☰ → Gateway → Authenticate app. The adapter detects the pairing window automatically (polls every 3 s for up to 60 s) and fills in the API key.",
32
+ "btnRequestApiKey": "Wait for deCONZ pairing…",
33
+ "btnScanApiKey": "deCONZ Pairing",
34
+ "confirmPairQuestion": "Open Phoscon: ☰ → Gateway → Authenticate app — then click OK. The adapter will fetch the API key automatically."
35
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "tint adapter settings": "Configuración del adaptador tint",
3
+ "connectionHeader": "Conexión deCONZ",
4
+ "ip": "Dirección IP de deCONZ",
5
+ "port": "Puerto REST",
6
+ "wsPort": "Puerto WebSocket",
7
+ "apiKey": "Clave API",
8
+ "behaviorHeader": "Comportamiento",
9
+ "pollingInterval": "Intervalo de sondeo (segundos)",
10
+ "transitionTime": "Tiempo de transición (×100 ms)",
11
+ "remoteHeader": "Mando a distancia Tint",
12
+ "autoApplyColorWheel": "Aplicar rueda de colores automáticamente",
13
+ "watchdogMinutes": "Watchdog del mando (minutos)",
14
+ "tabLights": "Luces",
15
+ "tabGroups": "Grupos",
16
+ "descLightsTab": "Todas las luces emparejadas con su gateway deCONZ y su estado actual.",
17
+ "descGroupsTab": "Gestione grupos de luces: cree nuevos grupos, edite su composición o elimínelos. Los cambios se aplican directamente a su gateway deCONZ.",
18
+ "tabPlugs": "Enchufes",
19
+ "tabScenes": "Escenas",
20
+ "descPlugsTab": "Todos los enchufes inteligentes e interruptores emparejados con su gateway deCONZ y su estado actual.",
21
+ "descScenesTab": "Todas las escenas de sus grupos. Haga clic en \"Activar\" para recuperar una escena directamente.",
22
+ "tabCovers": "Persianas",
23
+ "tabSwitches": "Interruptores",
24
+ "tabSensors": "Sensores",
25
+ "tabThermostats": "Termostatos",
26
+ "descCoversTab": "Todos los motores de persianas emparejados con su gateway deCONZ y su posición actual.",
27
+ "descSwitchesTab": "Todos los interruptores Zigbee genéricos (no Tint) y su estado.",
28
+ "descSensorsTab": "Todos los demás sensores (temperatura, humedad, movimiento, apertura/cierre, consumo, etc.) y sus valores actuales.",
29
+ "descThermostatsTab": "Todos los termostatos de radiador con temperatura actual, valor de consigna y posición de la válvula.",
30
+ "pairingHeader": "Clave API",
31
+ "pairingHint": "Haga clic primero en el botón de abajo y luego abra Phoscon en su navegador y vaya a ☰ → Gateway → Autenticar app. El adaptador detecta automáticamente la ventana de emparejamiento (cada 3 s, hasta 60 s) y rellena la clave.",
32
+ "btnRequestApiKey": "Esperar emparejamiento deCONZ…",
33
+ "btnScanApiKey": "deCONZ Pairing",
34
+ "confirmPairQuestion": "Abre Phoscon: ☰ → Gateway → Autenticar app — luego haz clic en OK. El adaptador obtendrá la clave API automáticamente."
35
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "tint adapter settings": "Paramètres de l'adaptateur tint",
3
+ "connectionHeader": "Connexion deCONZ",
4
+ "ip": "Adresse IP deCONZ",
5
+ "port": "Port REST",
6
+ "wsPort": "Port WebSocket",
7
+ "apiKey": "Clé API",
8
+ "behaviorHeader": "Comportement",
9
+ "pollingInterval": "Intervalle d'interrogation (secondes)",
10
+ "transitionTime": "Temps de transition (×100 ms)",
11
+ "remoteHeader": "Télécommande Tint",
12
+ "autoApplyColorWheel": "Appliquer la roue chromatique automatiquement",
13
+ "watchdogMinutes": "Chien de garde télécommande (minutes)",
14
+ "tabLights": "Lampes",
15
+ "tabGroups": "Groupes",
16
+ "descLightsTab": "Toutes les lampes associées à votre passerelle deCONZ et leur statut actuel.",
17
+ "descGroupsTab": "Gérez les groupes de lampes : créez, modifiez la composition ou supprimez des groupes. Les modifications sont appliquées directement à votre passerelle deCONZ.",
18
+ "tabPlugs": "Prises",
19
+ "tabScenes": "Scènes",
20
+ "descPlugsTab": "Toutes les prises intelligentes et interrupteurs associés à votre passerelle deCONZ et leur état actuel.",
21
+ "descScenesTab": "Toutes les scènes de vos groupes. Cliquez sur \"Activer\" pour rappeler directement une scène.",
22
+ "tabCovers": "Volets",
23
+ "tabSwitches": "Interrupteurs",
24
+ "tabSensors": "Capteurs",
25
+ "tabThermostats": "Thermostats",
26
+ "descCoversTab": "Tous les moteurs de volets associés à votre passerelle deCONZ et leur position actuelle.",
27
+ "descSwitchesTab": "Tous les interrupteurs Zigbee génériques (non Tint) et leur état.",
28
+ "descSensorsTab": "Tous les autres capteurs (température, humidité, mouvement, ouverture/fermeture, consommation, etc.) et leurs valeurs actuelles.",
29
+ "descThermostatsTab": "Tous les thermostats de radiateur avec température actuelle, consigne et position de la vanne.",
30
+ "pairingHeader": "Clé API",
31
+ "pairingHint": "Cliquez d'abord sur le bouton ci-dessous, puis ouvrez Phoscon dans votre navigateur et allez dans ☰ → Passerelle → Authentifier l'application. L'adaptateur détecte automatiquement la fenêtre de couplage (toutes les 3 s, jusqu'à 60 s) et remplit la clé.",
32
+ "btnRequestApiKey": "Attendre le couplage deCONZ…",
33
+ "btnScanApiKey": "deCONZ Pairing",
34
+ "confirmPairQuestion": "Ouvrez Phoscon : ☰ → Passerelle → Authentifier l'app — puis cliquez sur OK. L'adaptateur récupère la clé API automatiquement."
35
+ }