fix(dialogs): finish discard, switch and room polish (#603)

Issue: #603
User-Visible: yes
This commit is contained in:
Claude
2026-09-21 08:53:05 +03:00
parent b63373fb9c
commit 0a3e0674cc
70 changed files with 1078 additions and 893 deletions
@@ -1,312 +1,312 @@
{
"schema": 1,
"fingerprint": "33e3bf530b13e01b6cc86d437770676c16441418afa14b0324be617fc2d3bb22",
"fingerprint": "44c8db0207714f5476f58cdacdfaae63754967422e492b7fadf3551ecaee4380",
"entry": "houseplan-card.js",
"panelEntry": "houseplan-panel.js",
"initialViewFiles": [
"houseplan-assets/houseplan-card-B1GLwcbS.js",
"houseplan-assets/houseplan-card-BQWwo3i7.js",
"houseplan-card.js"
],
"initialViewGzipBytes": 290054,
"initialViewGzipBytes": 290034,
"initialPanelFiles": [
"houseplan-assets/houseplan-card-B1GLwcbS.js",
"houseplan-assets/houseplan-card-BQWwo3i7.js",
"houseplan-panel.js"
],
"initialPanelGzipBytes": 291577,
"initialPanelGzipBytes": 291556,
"initialPanelOnlyFiles": [
"houseplan-panel.js"
],
"initialPanelOnlyGzipBytes": 2326,
"initialPanelOnlyGzipBytes": 2325,
"lazyFiles": [
"houseplan-assets/backdrop-pick-CpXppwyK.js",
"houseplan-assets/de-sm5Z-8rd.js",
"houseplan-assets/editor-BgYvVh33.js",
"houseplan-assets/form-kit.styles-B2L2lNpH.js",
"houseplan-assets/fr-dxMqTPY0.js",
"houseplan-assets/furniture-plan-art.generated-B89AgatN.js",
"houseplan-assets/houseplan-editor-runtime-DCSkoKEw.js",
"houseplan-assets/houseplan-onboarding-runtime-D690jAGU.js",
"houseplan-assets/hp-zigbee-topology-overlay-B-TXG5n3.js",
"houseplan-assets/iso-scene-render-DkVCyTYN.js",
"houseplan-assets/live-interaction-runtime-B_hYV9lk.js",
"houseplan-assets/pdf-export-nKn0s0df.js",
"houseplan-assets/summary-panel-runtime-loaded-BCDazNiL.js",
"houseplan-assets/zigbee-topology-0vQ1r_Y7.js",
"houseplan-assets/zigbee-topology-runtime-DtATTFz4.js"
"houseplan-assets/backdrop-pick-D57BQQbo.js",
"houseplan-assets/de-DroVNRnr.js",
"houseplan-assets/editor-BIdm6L_k.js",
"houseplan-assets/form-kit.styles-BqBbEnaz.js",
"houseplan-assets/fr-DZBnbf3Y.js",
"houseplan-assets/furniture-plan-art.generated-CiyoNIND.js",
"houseplan-assets/houseplan-editor-runtime-BXjfKYAx.js",
"houseplan-assets/houseplan-onboarding-runtime-CNBlGqTW.js",
"houseplan-assets/hp-zigbee-topology-overlay-fe_knnXY.js",
"houseplan-assets/iso-scene-render-sNAJFXBj.js",
"houseplan-assets/live-interaction-runtime-DPmKLJbP.js",
"houseplan-assets/pdf-export-DO9ua2us.js",
"houseplan-assets/summary-panel-runtime-loaded-D3ySFavc.js",
"houseplan-assets/zigbee-topology-DThgDHY1.js",
"houseplan-assets/zigbee-topology-runtime-C1Eof5a4.js"
],
"lazyGzipBytes": 459485,
"lazyGzipBytes": 459440,
"lazyEditorFiles": [
"houseplan-assets/backdrop-pick-CpXppwyK.js",
"houseplan-assets/editor-BgYvVh33.js",
"houseplan-assets/form-kit.styles-B2L2lNpH.js",
"houseplan-assets/furniture-plan-art.generated-B89AgatN.js",
"houseplan-assets/houseplan-editor-runtime-DCSkoKEw.js",
"houseplan-assets/zigbee-topology-0vQ1r_Y7.js"
"houseplan-assets/backdrop-pick-D57BQQbo.js",
"houseplan-assets/editor-BIdm6L_k.js",
"houseplan-assets/form-kit.styles-BqBbEnaz.js",
"houseplan-assets/furniture-plan-art.generated-CiyoNIND.js",
"houseplan-assets/houseplan-editor-runtime-BXjfKYAx.js",
"houseplan-assets/zigbee-topology-DThgDHY1.js"
],
"lazyEditorGzipBytes": 242944,
"lazyEditorGzipBytes": 242926,
"lazyOnboardingFiles": [
"houseplan-assets/backdrop-pick-CpXppwyK.js",
"houseplan-assets/form-kit.styles-B2L2lNpH.js",
"houseplan-assets/houseplan-onboarding-runtime-D690jAGU.js"
"houseplan-assets/backdrop-pick-D57BQQbo.js",
"houseplan-assets/form-kit.styles-BqBbEnaz.js",
"houseplan-assets/houseplan-onboarding-runtime-CNBlGqTW.js"
],
"lazyOnboardingGzipBytes": 33537,
"lazyOnboardingGzipBytes": 33523,
"lazyLocaleFiles": [
"houseplan-assets/de-sm5Z-8rd.js",
"houseplan-assets/fr-dxMqTPY0.js"
"houseplan-assets/de-DroVNRnr.js",
"houseplan-assets/fr-DZBnbf3Y.js"
],
"lazyLocaleGzipBytes": 55362,
"lazyLocaleGzipBytes": 55338,
"lazyIsometricFiles": [
"houseplan-assets/iso-scene-render-DkVCyTYN.js"
"houseplan-assets/iso-scene-render-sNAJFXBj.js"
],
"lazyIsometricGzipBytes": 17645,
"lazyIsometricGzipBytes": 17643,
"lazyFurnitureArtFiles": [
"houseplan-assets/furniture-plan-art.generated-B89AgatN.js"
"houseplan-assets/furniture-plan-art.generated-CiyoNIND.js"
],
"lazyFurnitureArtGzipBytes": 16940,
"lazyFurnitureArtGzipBytes": 16942,
"lazyPdfFiles": [
"houseplan-assets/furniture-plan-art.generated-B89AgatN.js",
"houseplan-assets/pdf-export-nKn0s0df.js"
"houseplan-assets/furniture-plan-art.generated-CiyoNIND.js",
"houseplan-assets/pdf-export-DO9ua2us.js"
],
"lazyPdfGzipBytes": 126813,
"lazyPdfGzipBytes": 126817,
"files": [
{
"path": "houseplan-assets/backdrop-pick-CpXppwyK.js",
"sha256": "67675aeff01392b17248a53f178d499b80c945104be10d378c6aafd64bbb82f6",
"rawBytes": 74107,
"gzipBytes": 23927,
"path": "houseplan-assets/backdrop-pick-D57BQQbo.js",
"sha256": "5f205acaf3c1d40b1474941ead08b8ee14bed824f25f5280bdb8372a246248fb",
"rawBytes": 74012,
"gzipBytes": 23911,
"isEntry": false,
"imports": [
"houseplan-assets/form-kit.styles-B2L2lNpH.js",
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/form-kit.styles-BqBbEnaz.js",
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/de-sm5Z-8rd.js",
"sha256": "ad4e3cda058c2cc386c244ffc6076fd073e53767bc4a3965a19c61560c361d47",
"rawBytes": 92482,
"gzipBytes": 27923,
"path": "houseplan-assets/de-DroVNRnr.js",
"sha256": "3b8cc88353c8a979aae9134bb7e3d81dc70f150282f9e0890e5f410fa05d153a",
"rawBytes": 92450,
"gzipBytes": 27914,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/editor-BgYvVh33.js",
"sha256": "1a014d969ffadc8085f4bc14946abfae1c433c9f323501f09ca5be06ca532408",
"path": "houseplan-assets/editor-BIdm6L_k.js",
"sha256": "fba604ea0b9bab6c0086745685458ff4ea68a8ce093e04b9e967209e2d8f4074",
"rawBytes": 3833,
"gzipBytes": 1584,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/form-kit.styles-B2L2lNpH.js",
"sha256": "28e1314635c882da6b7a44019bce117be2d57c1a6e352055c49cda944e498df8",
"rawBytes": 23946,
"gzipBytes": 4779,
"path": "houseplan-assets/form-kit.styles-BqBbEnaz.js",
"sha256": "6924ed0f82612cb4ec823c1b8fe3c536fd84435ab124fc12ca630da92a7c5913",
"rawBytes": 23975,
"gzipBytes": 4782,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/fr-dxMqTPY0.js",
"sha256": "b1b5d659b08875adc3f01bb5272fe980ed671e7db026c46a32b535fad3116eff",
"rawBytes": 94786,
"gzipBytes": 27439,
"path": "houseplan-assets/fr-DZBnbf3Y.js",
"sha256": "fdabb08cd1c4418015e9c57cea01efcc8b5e7cc931482780df6652032ddcffd0",
"rawBytes": 94754,
"gzipBytes": 27424,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/furniture-plan-art.generated-B89AgatN.js",
"sha256": "ebf88f8b0d6c7694ccb9a081dc86aa28e7947cdbdf1795cfce750387cededcb1",
"path": "houseplan-assets/furniture-plan-art.generated-CiyoNIND.js",
"sha256": "f01d0f0fa6b2b483bc5a2f823d66a60bacf934bd4efe833e37cd3eea45658d2b",
"rawBytes": 52033,
"gzipBytes": 16940,
"gzipBytes": 16942,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-card-B1GLwcbS.js",
"sha256": "4bd4cdfff74b16ded150209536b66c5b4f638a4bfa5185420e58b3bd15e54618",
"rawBytes": 1028686,
"gzipBytes": 289251,
"path": "houseplan-assets/houseplan-card-BQWwo3i7.js",
"sha256": "85f6b579f5f2a130fd0c4ec3384a20757812b4a260c552497ef00bb73f608273",
"rawBytes": 1028618,
"gzipBytes": 289231,
"isEntry": false,
"imports": [],
"dynamicImports": [
"houseplan-assets/de-sm5Z-8rd.js",
"houseplan-assets/editor-BgYvVh33.js",
"houseplan-assets/fr-dxMqTPY0.js",
"houseplan-assets/furniture-plan-art.generated-B89AgatN.js",
"houseplan-assets/houseplan-editor-runtime-DCSkoKEw.js",
"houseplan-assets/houseplan-onboarding-runtime-D690jAGU.js",
"houseplan-assets/hp-zigbee-topology-overlay-B-TXG5n3.js",
"houseplan-assets/iso-scene-render-DkVCyTYN.js",
"houseplan-assets/live-interaction-runtime-B_hYV9lk.js",
"houseplan-assets/pdf-export-nKn0s0df.js",
"houseplan-assets/summary-panel-runtime-loaded-BCDazNiL.js"
"houseplan-assets/de-DroVNRnr.js",
"houseplan-assets/editor-BIdm6L_k.js",
"houseplan-assets/fr-DZBnbf3Y.js",
"houseplan-assets/furniture-plan-art.generated-CiyoNIND.js",
"houseplan-assets/houseplan-editor-runtime-BXjfKYAx.js",
"houseplan-assets/houseplan-onboarding-runtime-CNBlGqTW.js",
"houseplan-assets/hp-zigbee-topology-overlay-fe_knnXY.js",
"houseplan-assets/iso-scene-render-sNAJFXBj.js",
"houseplan-assets/live-interaction-runtime-DPmKLJbP.js",
"houseplan-assets/pdf-export-DO9ua2us.js",
"houseplan-assets/summary-panel-runtime-loaded-D3ySFavc.js"
]
},
{
"path": "houseplan-assets/houseplan-editor-runtime-DCSkoKEw.js",
"sha256": "916cdceb6bfdf46e47396a9864c4f0f820d6c399924ddb7c68e2b69bafc5288e",
"rawBytes": 676964,
"gzipBytes": 188283,
"path": "houseplan-assets/houseplan-editor-runtime-BXjfKYAx.js",
"sha256": "081108b15ff93a4246a1ff40435f4cea649080f7d94be5be9d3dc47913895e7d",
"rawBytes": 676935,
"gzipBytes": 188281,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-CpXppwyK.js",
"houseplan-assets/form-kit.styles-B2L2lNpH.js",
"houseplan-assets/furniture-plan-art.generated-B89AgatN.js",
"houseplan-assets/houseplan-card-B1GLwcbS.js",
"houseplan-assets/zigbee-topology-0vQ1r_Y7.js"
"houseplan-assets/backdrop-pick-D57BQQbo.js",
"houseplan-assets/form-kit.styles-BqBbEnaz.js",
"houseplan-assets/furniture-plan-art.generated-CiyoNIND.js",
"houseplan-assets/houseplan-card-BQWwo3i7.js",
"houseplan-assets/zigbee-topology-DThgDHY1.js"
],
"dynamicImports": [
"houseplan-assets/zigbee-topology-runtime-DtATTFz4.js"
"houseplan-assets/zigbee-topology-runtime-C1Eof5a4.js"
]
},
{
"path": "houseplan-assets/houseplan-onboarding-runtime-D690jAGU.js",
"sha256": "ed60ef51d16e4cf0541b80f7dc25b121e02e3e1f592cbc8c619f5617c5826825",
"path": "houseplan-assets/houseplan-onboarding-runtime-CNBlGqTW.js",
"sha256": "89286db27f83989c0fef921ec9fcaf38e86c93c7ff06a086dfbd71816631dfbb",
"rawBytes": 15667,
"gzipBytes": 4831,
"gzipBytes": 4830,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-CpXppwyK.js",
"houseplan-assets/form-kit.styles-B2L2lNpH.js",
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/backdrop-pick-D57BQQbo.js",
"houseplan-assets/form-kit.styles-BqBbEnaz.js",
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/hp-zigbee-topology-overlay-B-TXG5n3.js",
"sha256": "4636191825ee01f241193320777b763c6d75e33c6f10def8541c9ecb42565b10",
"path": "houseplan-assets/hp-zigbee-topology-overlay-fe_knnXY.js",
"sha256": "d36a074da1ea2861ab43f490e440fc42ad8263ff28551df3197340caa6aea516",
"rawBytes": 10759,
"gzipBytes": 3687,
"gzipBytes": 3686,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-B1GLwcbS.js",
"houseplan-assets/zigbee-topology-0vQ1r_Y7.js",
"houseplan-assets/zigbee-topology-runtime-DtATTFz4.js"
"houseplan-assets/houseplan-card-BQWwo3i7.js",
"houseplan-assets/zigbee-topology-DThgDHY1.js",
"houseplan-assets/zigbee-topology-runtime-C1Eof5a4.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/iso-scene-render-DkVCyTYN.js",
"sha256": "dc66a19293c50674600f2c46c91318f05d8774ad8a5f46444d5485db1c3ad193",
"path": "houseplan-assets/iso-scene-render-sNAJFXBj.js",
"sha256": "73d71aa7f08ace62e62f160628209e028c61a7e9ab258e9ed29bda2eab669356",
"rawBytes": 51983,
"gzipBytes": 17645,
"gzipBytes": 17643,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/live-interaction-runtime-B_hYV9lk.js",
"sha256": "2f1e70306e3c0a3e23ec15b2405a00fa41427ba1f67a211d738415045b18f4e9",
"path": "houseplan-assets/live-interaction-runtime-DPmKLJbP.js",
"sha256": "2b6755348ab3fbb65ce18db8e72a2f6cf74260dbc4f4095059bc4d97bf7e0b5b",
"rawBytes": 8216,
"gzipBytes": 3208,
"gzipBytes": 3206,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/pdf-export-nKn0s0df.js",
"sha256": "ada8b5086ecd47421759f537bac667b802a5139b41a2ed7c7c038bb3028cbca8",
"path": "houseplan-assets/pdf-export-DO9ua2us.js",
"sha256": "7db0a04b18179a21b09c0bc3881db3b15362f448e4f03df251f148b67e0d22d3",
"rawBytes": 236247,
"gzipBytes": 109873,
"gzipBytes": 109875,
"isEntry": false,
"imports": [
"houseplan-assets/furniture-plan-art.generated-B89AgatN.js",
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/furniture-plan-art.generated-CiyoNIND.js",
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/summary-panel-editor-D1odrS_o.js",
"sha256": "ee14829f98102930010a6621084c05b2ec0afb48821482ed0ebfa55acf2fa0a3",
"path": "houseplan-assets/summary-panel-editor-DbbtTVqV.js",
"sha256": "590f8a026830f5aef7046dce335e6eb8292941a0ba843838b698abaec1f69b49",
"rawBytes": 14862,
"gzipBytes": 3425,
"gzipBytes": 3424,
"isEntry": false,
"imports": [
"houseplan-assets/form-kit.styles-B2L2lNpH.js",
"houseplan-assets/houseplan-card-B1GLwcbS.js",
"houseplan-assets/summary-panel-runtime-loaded-BCDazNiL.js"
"houseplan-assets/form-kit.styles-BqBbEnaz.js",
"houseplan-assets/houseplan-card-BQWwo3i7.js",
"houseplan-assets/summary-panel-runtime-loaded-D3ySFavc.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/summary-panel-metrics-DwyQTL-j.js",
"sha256": "ba90d4f411baf7d42b304ac315e01debba6de73406bf28b09aa9947600c873f2",
"path": "houseplan-assets/summary-panel-metrics-Df7v39JC.js",
"sha256": "f3eddb46ff293d321ba93ed400c4f0daa00a093444c45a88f557285a9444f719",
"rawBytes": 2611,
"gzipBytes": 1308,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/summary-panel-runtime-loaded-BCDazNiL.js",
"sha256": "9a533c593e0066d885f4da20fe3eb71ac313175b92bf477bf508ef302e7aeb2e",
"path": "houseplan-assets/summary-panel-runtime-loaded-D3ySFavc.js",
"sha256": "8bfa9cfa1a2a094d89fc2c2b9e6aa8897a4e880d6dfe76fde572ea20d3490ae7",
"rawBytes": 72733,
"gzipBytes": 20171,
"gzipBytes": 20172,
"isEntry": false,
"imports": [
"houseplan-assets/form-kit.styles-B2L2lNpH.js",
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/form-kit.styles-BqBbEnaz.js",
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": [
"houseplan-assets/summary-panel-editor-D1odrS_o.js",
"houseplan-assets/summary-panel-metrics-DwyQTL-j.js"
"houseplan-assets/summary-panel-editor-DbbtTVqV.js",
"houseplan-assets/summary-panel-metrics-Df7v39JC.js"
]
},
{
"path": "houseplan-assets/zigbee-topology-0vQ1r_Y7.js",
"sha256": "d8df746c194e2dde456111393e9ed64c60ec86faa0fb6c8dcec944df6f28391b",
"path": "houseplan-assets/zigbee-topology-DThgDHY1.js",
"sha256": "b7eb54fd329bb9ace1aa97a5ac63803d7eb051817fa3650814c131e0c59fd4fb",
"rawBytes": 18962,
"gzipBytes": 7431,
"gzipBytes": 7426,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/zigbee-topology-runtime-DtATTFz4.js",
"sha256": "4490e2457bd5dd7000a6d560de6c81d2653b27f91b0c06e76b88c1a89fc0dd67",
"path": "houseplan-assets/zigbee-topology-runtime-C1Eof5a4.js",
"sha256": "0e2a8eb84a561f49c78d4159752e6959f2aea37d6e2e8e780094e07b5b621cc1",
"rawBytes": 3942,
"gzipBytes": 1764,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-B1GLwcbS.js",
"houseplan-assets/zigbee-topology-0vQ1r_Y7.js"
"houseplan-assets/houseplan-card-BQWwo3i7.js",
"houseplan-assets/zigbee-topology-DThgDHY1.js"
],
"dynamicImports": []
},
{
"path": "houseplan-card.js",
"sha256": "6cdcddc605a91dfc6f048ea39a886f08333e3e27d05364a08bb3618c1a51093c",
"sha256": "8dbb5019715b378b1c2d73d977e9f9fcec05179b950775a91825447b7428cb9b",
"rawBytes": 1205,
"gzipBytes": 803,
"isEntry": true,
"imports": [
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
},
{
"path": "houseplan-panel.js",
"sha256": "1371acd27bd41cbba80641473c7efa070ed54dfd3f656fcaf153d37cc2b1757c",
"sha256": "de982c576fc0c4c68e637e3e575c669166277fdbc497d137b1045684f3a0fe5e",
"rawBytes": 6165,
"gzipBytes": 2326,
"gzipBytes": 2325,
"isEntry": true,
"imports": [
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="33e3bf530b13e01b6cc86d437770676c16441418afa14b0324be617fc2d3bb22";import{az as e,l as o,aC as t,e7 as s,A as a,e8 as i,e9 as l,ea as n,E as r,c}from"./houseplan-card-B1GLwcbS.js";class h extends e{constructor(){super(...arguments),this._spaces=null,this._spacesLoading=!1,this._spacesAuthoritative=!1}setConfig(e){this._config=e}async _loadSpaces(){if(!this._spaces&&!this._spacesLoading&&this.hass){this._spacesLoading=!0;try{const e=await this.hass.callWS({type:"houseplan/config/get"});this._spaces=(e?.config?.spaces||[]).map(e=>({value:e.id,label:e.title||e.id})),this._spacesAuthoritative=!0}catch{this._spaces=[],this._spacesAuthoritative=!1}finally{this._spacesLoading=!1}}}get _lang(){return o(this.hass,this._config?.language)}get _floorToken(){const e=this._config?.floor;return"number"==typeof e?`__houseplan_yaml_floor_index__:${String(e)}`:null}get _formData(){const e={...this._config},o=this._floorToken;return o?e.floor=o:Object.prototype.hasOwnProperty.call(e,"floor")||(e.floor=""),e}get _schema(){const e=this._spaces||[],o=this._lang,a=[{value:"",label:t(o,"editor.floor_none")}],i=this._floorToken;i&&a.push({value:i,label:t(o,"editor.floor_index",{index:String(this._config?.floor)})});const l="string"==typeof this._config?.floor?this._config.floor:"";l&&!e.some(e=>e.value===l)&&a.push({value:l,label:l}),a.push(...e);const n="string"==typeof this._config?.default_floor?this._config.default_floor:"",r=[...e];return n&&!e.some(e=>e.value===n)&&r.unshift({value:n,label:n}),[{name:"title",selector:{text:{}}},{name:"floor",selector:{select:{mode:"dropdown",options:a}}},e.length?{name:"default_floor",selector:{select:{mode:"dropdown",options:r}}}:{name:"default_floor",selector:{text:{}}},{name:"language",selector:{select:{mode:"dropdown",options:s(t(o,"editor.lang_auto"),this._config?.language)}}},{name:"icon_size",selector:{number:{min:1,max:6,step:.1,mode:"box"}}},{name:"show_temperature",selector:{boolean:{}}},{name:"live_states",selector:{boolean:{}}},{name:"show_signal",selector:{boolean:{}}},{name:"kiosk",selector:{boolean:{}}},{name:"cycle",selector:{number:{min:0,max:3600,step:5,mode:"box"}}}]}render(){if(!this.hass||!this._config)return a;const e=i(this,l,o(this.hass,this._config.language));if("cold"===e)return n();if("warm"===e)return r;this._loadSpaces();const s=this._lang,h={title:t(s,"editor.title"),floor:t(s,"editor.floor"),default_floor:t(s,"editor.default_floor"),language:t(s,"editor.language"),icon_size:t(s,"editor.icon_size"),show_temperature:t(s,"editor.show_temperature"),live_states:t(s,"editor.live_states"),show_signal:t(s,"editor.show_signal"),kiosk:t(s,"editor.kiosk"),cycle:t(s,"editor.cycle")},f=this._schema,_=function(e,o,t){if(!t||null===o)return null;const s="string"==typeof e?.default_floor?e.default_floor:"";return!s||o.some(e=>e.value===s)?null:s}(this._config,this._spaces,this._spacesAuthoritative),d=e=>c`<ha-form
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="44c8db0207714f5476f58cdacdfaae63754967422e492b7fadf3551ecaee4380";import{az as e,l as o,aC as t,e7 as s,A as a,e8 as i,e9 as l,ea as n,E as r,c}from"./houseplan-card-BQWwo3i7.js";class h extends e{constructor(){super(...arguments),this._spaces=null,this._spacesLoading=!1,this._spacesAuthoritative=!1}setConfig(e){this._config=e}async _loadSpaces(){if(!this._spaces&&!this._spacesLoading&&this.hass){this._spacesLoading=!0;try{const e=await this.hass.callWS({type:"houseplan/config/get"});this._spaces=(e?.config?.spaces||[]).map(e=>({value:e.id,label:e.title||e.id})),this._spacesAuthoritative=!0}catch{this._spaces=[],this._spacesAuthoritative=!1}finally{this._spacesLoading=!1}}}get _lang(){return o(this.hass,this._config?.language)}get _floorToken(){const e=this._config?.floor;return"number"==typeof e?`__houseplan_yaml_floor_index__:${String(e)}`:null}get _formData(){const e={...this._config},o=this._floorToken;return o?e.floor=o:Object.prototype.hasOwnProperty.call(e,"floor")||(e.floor=""),e}get _schema(){const e=this._spaces||[],o=this._lang,a=[{value:"",label:t(o,"editor.floor_none")}],i=this._floorToken;i&&a.push({value:i,label:t(o,"editor.floor_index",{index:String(this._config?.floor)})});const l="string"==typeof this._config?.floor?this._config.floor:"";l&&!e.some(e=>e.value===l)&&a.push({value:l,label:l}),a.push(...e);const n="string"==typeof this._config?.default_floor?this._config.default_floor:"",r=[...e];return n&&!e.some(e=>e.value===n)&&r.unshift({value:n,label:n}),[{name:"title",selector:{text:{}}},{name:"floor",selector:{select:{mode:"dropdown",options:a}}},e.length?{name:"default_floor",selector:{select:{mode:"dropdown",options:r}}}:{name:"default_floor",selector:{text:{}}},{name:"language",selector:{select:{mode:"dropdown",options:s(t(o,"editor.lang_auto"),this._config?.language)}}},{name:"icon_size",selector:{number:{min:1,max:6,step:.1,mode:"box"}}},{name:"show_temperature",selector:{boolean:{}}},{name:"live_states",selector:{boolean:{}}},{name:"show_signal",selector:{boolean:{}}},{name:"kiosk",selector:{boolean:{}}},{name:"cycle",selector:{number:{min:0,max:3600,step:5,mode:"box"}}}]}render(){if(!this.hass||!this._config)return a;const e=i(this,l,o(this.hass,this._config.language));if("cold"===e)return n();if("warm"===e)return r;this._loadSpaces();const s=this._lang,h={title:t(s,"editor.title"),floor:t(s,"editor.floor"),default_floor:t(s,"editor.default_floor"),language:t(s,"editor.language"),icon_size:t(s,"editor.icon_size"),show_temperature:t(s,"editor.show_temperature"),live_states:t(s,"editor.live_states"),show_signal:t(s,"editor.show_signal"),kiosk:t(s,"editor.kiosk"),cycle:t(s,"editor.cycle")},f=this._schema,_=function(e,o,t){if(!t||null===o)return null;const s="string"==typeof e?.default_floor?e.default_floor:"";return!s||o.some(e=>e.value===s)?null:s}(this._config,this._spaces,this._spacesAuthoritative),d=e=>c`<ha-form
.hass=${this.hass}
.data=${this._formData}
.schema=${e}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="33e3bf530b13e01b6cc86d437770676c16441418afa14b0324be617fc2d3bb22";import{c as a,A as e}from"./houseplan-card-B1GLwcbS.js";import{s,n as t,a as l,m as r,b as o,c as i,d as u}from"./summary-panel-runtime-loaded-BCDazNiL.js";import"./form-kit.styles-B2L2lNpH.js";const m=m=>{const{host:c,dialog:d,problems:n,t:b}=m,y=n.find(a=>"error"===a.kind),$=d.localShow!==d.baseLocalShow||!d.localOnly&&!s(t(d.draft),d.base),p=$&&!d.busy&&!y,v=a=>n.find(e=>e.path===a),h=a=>a?b(`summary.problem.${a.code}`):"",k=()=>m.close(),g=a`<label class="summary-switch" for="summary-local-show">
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="44c8db0207714f5476f58cdacdfaae63754967422e492b7fadf3551ecaee4380";import{c as a,A as e}from"./houseplan-card-BQWwo3i7.js";import{s,n as t,a as l,m as r,b as o,c as i,d as u}from"./summary-panel-runtime-loaded-D3ySFavc.js";import"./form-kit.styles-BqBbEnaz.js";const m=m=>{const{host:c,dialog:d,problems:n,t:b}=m,y=n.find(a=>"error"===a.kind),$=d.localShow!==d.baseLocalShow||!d.localOnly&&!s(t(d.draft),d.base),p=$&&!d.busy&&!y,v=a=>n.find(e=>e.path===a),h=a=>a?b(`summary.problem.${a.code}`):"",k=()=>m.close(),g=a`<label class="summary-switch" for="summary-local-show">
<span class="summary-switch-caption"><strong>${b("summary.show_local")}</strong>
<small id="summary-local-show-hint">${b("summary.show_local_hint")}</small></span>
<input id="summary-local-show" data-summary-local-show type="checkbox"
@@ -0,0 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="44c8db0207714f5476f58cdacdfaae63754967422e492b7fadf3551ecaee4380";import{ed as e,J as t,aX as n,H as i,aa as o,a8 as r,bO as a,bN as s,aW as c,aV as l,aY as d,ee as u,ef as f,bQ as m,eg as g}from"./houseplan-card-BQWwo3i7.js";function v(e){if(!e.registry.authoritative)return null;const t=new Set,n=d(e.markers);for(const i of Object.values(e.registry.devices||{}))i?.id&&"service"!==i.entry_type&&!n.devices.has(i.id)&&i.area_id&&e.areaToSpace[i.area_id]&&t.add(i.id);for(const i of e.markers||[]){if(i.removed||"virtual"===i.binding)continue;const o=String(i.binding||"").indexOf(":");if(o<1)continue;const r=i.binding.slice(0,o),a=i.binding.slice(o+1),s="device"===r?e.registry.devices?.[a]:null,c="entity"===r?e.registry.entities?.[a]:null,l="device"===r?a:c?.device_id,d="device"===r?s?.area_id:c?.area_id||l&&e.registry.devices?.[l]?.area_id,u="string"==typeof i.room_id&&i.room_id.length>0&&null===i.area?"":i.area||d||"",f=u&&e.areaToSpace[u]||i.space||e.firstSpaceId;l&&e.registry.devices?.[l]&&e.spaceIds.has(f)&&(!n.devices.has(l)||"entity"===r&&n.liveEntities.has(a))&&t.add(l)}return t}function y(e,t){return e?.length?t?.length?g(e,t):e:t}function _(e,t){const n=c(e.rooms,t.walls,t.openCuts,[],i,t.cellCm,o,r);return{roomGeom:"ok"===n.status||"degraded-extra"===n.status?n.roomGeom:void 0,multiWallNodes:l(e.rooms,t.walls,t.openCuts,i,t.cellCm,o,r)}}function*h(c,l,d=_){try{let u=0;for(const f of l){const l=c.spaces.find(e=>String(e?.id)===f.id);if(!l)continue;const m=e(l,f),g=d(f,m);let v=null;for(const e of f.rooms){if(!e.id)continue;const s=t(e);if(!s)continue;const c=n(f.rooms,e.id,m.walls,m.openCuts,i,m.cellCm,o,r,g.roomGeom,g.multiWallNodes)||s;v=y(v,a(c,m.physicalBodies)),yield}const _=m.cellCm/o;u+=s(v)*_*_/1e4}return u}catch{return null}}function p(e,t,n=_){const i=h(e,t,n);let o=i.next();for(;!o.done;)o=i.next();return o.value}function b(e,t,n,i){if("system"!==e.type)return null;if("device_count"===e.key)return null===t.deviceCount?null:String(t.deviceCount);if("total_area"===e.key)return null===t.areaM2?null:m(t.areaM2,"mi"===n?.config?.unit_system?.length);try{return new Intl.DateTimeFormat(i||void 0,{dateStyle:"short",timeStyle:"short",timeZone:n?.config?.time_zone||void 0}).format(t.now)}catch{return t.now.toLocaleString()}}function S(e,t){const n=e?.states?.[t];if(!n)return null;const i=u(e,t);return i?f(i,String(n.attributes?.unit_of_measurement||"")):null}export{h as cleanFloorAreaSteps,v as representedHaDeviceIds,_ as spaceWallGeometry,S as summaryEntityValue,b as summarySystemValue,p as totalCleanFloorAreaM2};
@@ -1 +0,0 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="33e3bf530b13e01b6cc86d437770676c16441418afa14b0324be617fc2d3bb22";import{ed as e,J as t,aX as n,H as i,aa as o,a8 as r,bO as s,bN as a,aW as c,aV as l,aY as u,ee as d,ef as f,bQ as m,eg as g}from"./houseplan-card-B1GLwcbS.js";function v(e){if(!e.registry.authoritative)return null;const t=new Set,n=u(e.markers);for(const i of Object.values(e.registry.devices||{}))i?.id&&"service"!==i.entry_type&&!n.devices.has(i.id)&&i.area_id&&e.areaToSpace[i.area_id]&&t.add(i.id);for(const i of e.markers||[]){if(i.removed||"virtual"===i.binding)continue;const o=String(i.binding||"").indexOf(":");if(o<1)continue;const r=i.binding.slice(0,o),s=i.binding.slice(o+1),a="device"===r?e.registry.devices?.[s]:null,c="entity"===r?e.registry.entities?.[s]:null,l="device"===r?s:c?.device_id,u="device"===r?a?.area_id:c?.area_id||l&&e.registry.devices?.[l]?.area_id,d="string"==typeof i.room_id&&i.room_id.length>0&&null===i.area?"":i.area||u||"",f=d&&e.areaToSpace[d]||i.space||e.firstSpaceId;l&&e.registry.devices?.[l]&&e.spaceIds.has(f)&&(!n.devices.has(l)||"entity"===r&&n.liveEntities.has(s))&&t.add(l)}return t}function y(e,t){return e?.length?t?.length?g(e,t):e:t}function _(e,t){const n=c(e.rooms,t.walls,t.openCuts,[],i,t.cellCm,o,r);return{roomGeom:"ok"===n.status||"degraded-extra"===n.status?n.roomGeom:void 0,multiWallNodes:l(e.rooms,t.walls,t.openCuts,i,t.cellCm,o,r)}}function*b(c,l,u=_){try{let d=0;for(const f of l){const l=c.spaces.find(e=>String(e?.id)===f.id);if(!l)continue;const m=e(l,f),g=u(f,m);let v=null;for(const e of f.rooms){if(!e.id)continue;const a=t(e);if(!a)continue;const c=n(f.rooms,e.id,m.walls,m.openCuts,i,m.cellCm,o,r,g.roomGeom,g.multiWallNodes)||a;v=y(v,s(c,m.physicalBodies)),yield}const _=m.cellCm/o;d+=a(v)*_*_/1e4}return d}catch{return null}}function h(e,t,n=_){const i=b(e,t,n);let o=i.next();for(;!o.done;)o=i.next();return o.value}function p(e,t,n,i){if("system"!==e.type)return null;if("device_count"===e.key)return null===t.deviceCount?null:String(t.deviceCount);if("total_area"===e.key)return null===t.areaM2?null:m(t.areaM2,"mi"===n?.config?.unit_system?.length);try{return new Intl.DateTimeFormat(i||void 0,{dateStyle:"short",timeStyle:"short",timeZone:n?.config?.time_zone||void 0}).format(t.now)}catch{return t.now.toLocaleString()}}function S(e,t){const n=e?.states?.[t];if(!n)return null;const i=d(e,t);return i?f(i,String(n.attributes?.unit_of_measurement||"")):null}export{b as cleanFloorAreaSteps,v as representedHaDeviceIds,_ as spaceWallGeometry,S as summaryEntityValue,p as summarySystemValue,h as totalCleanFloorAreaM2};
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="33e3bf530b13e01b6cc86d437770676c16441418afa14b0324be617fc2d3bb22";import{n as t,b as n}from"./zigbee-topology-0vQ1r_Y7.js";import{aI as e}from"./houseplan-card-B1GLwcbS.js";const o=new WeakMap;function i(t){const n=function(t){const n=t?.connection||t;return!n||"object"!=typeof n&&"function"!=typeof n?null:n}(t);if(!n)return null;let e=o.get(n);return e||(e={revision:0,topologies:[],states:{},listeners:new Set,inflight:new Map},o.set(n,e)),e}function r(t,n,e){t.states={...t.states,[n]:e},function(t){t.revision++;for(const n of t.listeners)n()}(t)}function s(t){const n=t?.code;if("permission"===n||"unsupported"===n||"timeout"===n||"invalid_topic"===n||"invalid_payload"===n)return n;const e=String(t?.message||"").toLowerCase();return e.includes("unauthor")||e.includes("permission")?"permission":e.includes("unknown_command")||e.includes("not found")?"unsupported":"provider"}function a(t){return Object.assign(new Error(t),{code:t})}function c(t,n,e){const o=t.inflight.get(n);if(o)return o;r(t,n,{phase:"loading"});const i=e().then(n=>{if(!n.nodes.length&&n.warnings.some(t=>"invalid_payload"===t.code))throw a("invalid_payload");!function(t,n){t.topologies=[...t.topologies.filter(t=>!(t.provider===n.provider&&t.instanceId===n.instanceId)),n],r(t,"zha"===n.provider?"zha":`z2m:${n.instanceId}`,{phase:"ready",obtainedAt:n.obtainedAt,partial:n.warnings.length>0})}(t,n)}).catch(e=>{r(t,n,{phase:"error",error:s(e)})}).finally(()=>t.inflight.delete(n));return t.inflight.set(n,i),i}function l(t){const n=i(t);return n?{revision:n.revision,topologies:n.topologies,states:n.states}:{revision:0,topologies:[],states:{}}}function u(t,n){const e=i(t);return e?(e.listeners.add(n),()=>e.listeners.delete(n)):()=>{}}function p(t){if(!0!==t?.user?.is_admin)throw a("permission")}function f(n){const e=i(n);return e?c(e,"zha",async()=>{if(p(n),"function"!=typeof n?.callWS)throw a("unsupported");return t(await n.callWS({type:"zha/devices"}))}):Promise.resolve()}function d(t){return null!==t&&"object"==typeof t?t:null}function h(t){const n=d(t),e=n?.payload??t;if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}}async function m(t,n){let e;try{return await Promise.race([t,new Promise((t,o)=>{e=globalThis.setTimeout(()=>o(a("timeout")),Math.max(1,n))})])}finally{void 0!==e&&globalThis.clearTimeout(e)}}function g(t,o,r=15e4){const s=i(t);if(!s)return Promise.resolve();const l=e(o);return c(s,`z2m:${l||String(o)}`,async()=>{if(p(t),!l)throw a("invalid_topic");const e=t.connection,o=e?.subscribeMessage;if("function"!=typeof o||"function"!=typeof t?.callService)throw a("unsupported");const i=function(){const t=globalThis.crypto;return"function"==typeof t?.randomUUID?`houseplan-${t.randomUUID()}`:`houseplan-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}(),s=Date.now()+Math.max(1,r);let c=!1,u=null,f=null,g=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{f=t,g=n}),b=[];try{const r=await o.call(e,t=>{!0===d(t)?.retain&&h(t)&&u?.()},{type:"mqtt/subscribe",topic:`${l}/bridge/info`});"function"==typeof r&&b.push(r);const p=await o.call(e,t=>{if(!0===d(t)?.retain)return;const n=h(t);null!==n?n&&function(t){const n=d(t),e=n?.transaction??d(n?.data)?.transaction;return"string"==typeof e||"number"==typeof e?String(e):null}(n)===i&&f?.(n):c&&g?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof p&&b.push(p),await m(y,Math.min(4e3,Math.max(1,s-Date.now()))),c=!0,await t.callService("mqtt","publish",{topic:`${l}/bridge/request/networkmap`,payload:JSON.stringify({type:"raw",routes:!1,transaction:i}),qos:0,retain:!1});const v=await m(w,s-Date.now()),_=d(v)?.status;if(_&&"ok"!==_)throw a("provider");return n(v,l)}finally{for(const t of b)try{t()}catch{}}})}export{f as readZhaTopology,g as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot};
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="44c8db0207714f5476f58cdacdfaae63754967422e492b7fadf3551ecaee4380";import{n as t,b as n}from"./zigbee-topology-DThgDHY1.js";import{aI as e}from"./houseplan-card-BQWwo3i7.js";const o=new WeakMap;function i(t){const n=function(t){const n=t?.connection||t;return!n||"object"!=typeof n&&"function"!=typeof n?null:n}(t);if(!n)return null;let e=o.get(n);return e||(e={revision:0,topologies:[],states:{},listeners:new Set,inflight:new Map},o.set(n,e)),e}function r(t,n,e){t.states={...t.states,[n]:e},function(t){t.revision++;for(const n of t.listeners)n()}(t)}function s(t){const n=t?.code;if("permission"===n||"unsupported"===n||"timeout"===n||"invalid_topic"===n||"invalid_payload"===n)return n;const e=String(t?.message||"").toLowerCase();return e.includes("unauthor")||e.includes("permission")?"permission":e.includes("unknown_command")||e.includes("not found")?"unsupported":"provider"}function a(t){return Object.assign(new Error(t),{code:t})}function c(t,n,e){const o=t.inflight.get(n);if(o)return o;r(t,n,{phase:"loading"});const i=e().then(n=>{if(!n.nodes.length&&n.warnings.some(t=>"invalid_payload"===t.code))throw a("invalid_payload");!function(t,n){t.topologies=[...t.topologies.filter(t=>!(t.provider===n.provider&&t.instanceId===n.instanceId)),n],r(t,"zha"===n.provider?"zha":`z2m:${n.instanceId}`,{phase:"ready",obtainedAt:n.obtainedAt,partial:n.warnings.length>0})}(t,n)}).catch(e=>{r(t,n,{phase:"error",error:s(e)})}).finally(()=>t.inflight.delete(n));return t.inflight.set(n,i),i}function l(t){const n=i(t);return n?{revision:n.revision,topologies:n.topologies,states:n.states}:{revision:0,topologies:[],states:{}}}function u(t,n){const e=i(t);return e?(e.listeners.add(n),()=>e.listeners.delete(n)):()=>{}}function f(t){if(!0!==t?.user?.is_admin)throw a("permission")}function p(n){const e=i(n);return e?c(e,"zha",async()=>{if(f(n),"function"!=typeof n?.callWS)throw a("unsupported");return t(await n.callWS({type:"zha/devices"}))}):Promise.resolve()}function d(t){return null!==t&&"object"==typeof t?t:null}function h(t){const n=d(t),e=n?.payload??t;if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}}async function m(t,n){let e;try{return await Promise.race([t,new Promise((t,o)=>{e=globalThis.setTimeout(()=>o(a("timeout")),Math.max(1,n))})])}finally{void 0!==e&&globalThis.clearTimeout(e)}}function g(t,o,r=15e4){const s=i(t);if(!s)return Promise.resolve();const l=e(o);return c(s,`z2m:${l||String(o)}`,async()=>{if(f(t),!l)throw a("invalid_topic");const e=t.connection,o=e?.subscribeMessage;if("function"!=typeof o||"function"!=typeof t?.callService)throw a("unsupported");const i=function(){const t=globalThis.crypto;return"function"==typeof t?.randomUUID?`houseplan-${t.randomUUID()}`:`houseplan-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}(),s=Date.now()+Math.max(1,r);let c=!1,u=null,p=null,g=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{p=t,g=n}),b=[];try{const r=await o.call(e,t=>{!0===d(t)?.retain&&h(t)&&u?.()},{type:"mqtt/subscribe",topic:`${l}/bridge/info`});"function"==typeof r&&b.push(r);const f=await o.call(e,t=>{if(!0===d(t)?.retain)return;const n=h(t);null!==n?n&&function(t){const n=d(t),e=n?.transaction??d(n?.data)?.transaction;return"string"==typeof e||"number"==typeof e?String(e):null}(n)===i&&p?.(n):c&&g?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof f&&b.push(f),await m(y,Math.min(4e3,Math.max(1,s-Date.now()))),c=!0,await t.callService("mqtt","publish",{topic:`${l}/bridge/request/networkmap`,payload:JSON.stringify({type:"raw",routes:!1,transaction:i}),qos:0,retain:!1});const v=await m(w,s-Date.now()),_=d(v)?.status;if(_&&"ok"!==_)throw a("provider");return n(v,l)}finally{for(const t of b)try{t()}catch{}}})}export{p as readZhaTopology,g as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot};
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="33e3bf530b13e01b6cc86d437770676c16441418afa14b0324be617fc2d3bb22";try{await import("./houseplan-assets/houseplan-card-B1GLwcbS.js")}catch(e){if(!customElements.get("houseplan-card")){const l=String(navigator.language||"en").toLowerCase();const m=l.startsWith("ru")?"House Plan обновился — перезагрузите страницу (Ctrl+F5).":l.startsWith("de")?"House Plan wurde aktualisiert — bitte laden Sie die Seite neu (Strg+F5).":l.startsWith("fr")?"House Plan a été mis à jour — veuillez recharger la page (Ctrl+F5).":"House Plan was updated — please reload the page (Ctrl+F5).";customElements.define("houseplan-card",class extends HTMLElement{setConfig(){}getCardSize(){return 1}connectedCallback(){this.style.cssText="display:block;box-sizing:border-box;padding:16px;border:1px solid var(--divider-color,#e0e0e0);border-radius:var(--ha-card-border-radius,12px);background:var(--card-background-color,#fff);color:var(--primary-text-color,#212121);font:14px/1.4 var(--paper-font-body1_-_font-family,sans-serif)";this.textContent=m}})}console.error("[houseplan] stale houseplan-card.js: the implementation chunk is unavailable",e)}
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="44c8db0207714f5476f58cdacdfaae63754967422e492b7fadf3551ecaee4380";try{await import("./houseplan-assets/houseplan-card-BQWwo3i7.js")}catch(e){if(!customElements.get("houseplan-card")){const l=String(navigator.language||"en").toLowerCase();const m=l.startsWith("ru")?"House Plan обновился — перезагрузите страницу (Ctrl+F5).":l.startsWith("de")?"House Plan wurde aktualisiert — bitte laden Sie die Seite neu (Strg+F5).":l.startsWith("fr")?"House Plan a été mis à jour — veuillez recharger la page (Ctrl+F5).":"House Plan was updated — please reload the page (Ctrl+F5).";customElements.define("houseplan-card",class extends HTMLElement{setConfig(){}getCardSize(){return 1}connectedCallback(){this.style.cssText="display:block;box-sizing:border-box;padding:16px;border:1px solid var(--divider-color,#e0e0e0);border-radius:var(--ha-card-border-radius,12px);background:var(--card-background-color,#fff);color:var(--primary-text-color,#212121);font:14px/1.4 var(--paper-font-body1_-_font-family,sans-serif)";this.textContent=m}})}console.error("[houseplan] stale houseplan-card.js: the implementation chunk is unavailable",e)}
File diff suppressed because one or more lines are too long
+23
View File
@@ -1737,6 +1737,29 @@ export async function prepareGoldenScenario(page, scenario) {
if (body && body.scrollWidth > body.clientWidth + 1) {
throw new Error(`golden device lifecycle catalog overflows horizontally: ${scenario.id}`);
}
} else if (scenario.dialog === 'room-discard') {
const room = card._curSpaceCfg?.rooms?.[0];
if (!room) throw new Error(`golden room is missing: ${scenario.id}`);
card._setMode('plan');
await card.updateComplete;
await settleMode(card);
card._openRoomEdit(room);
await card.updateComplete;
const input = card.renderRoot.querySelector('hp-dialog.roomdialog #room-name');
if (!input) throw new Error(`golden room editor is missing: ${scenario.id}`);
input.value = `${input.value} changed`;
input.dispatchEvent(new Event('input', { bubbles: true }));
await card.updateComplete;
card.renderRoot.querySelector('hp-dialog.roomdialog')
.dispatchEvent(new CustomEvent('hp-close', { bubbles: true, composed: true }));
await card.updateComplete;
await frame();
const confirm = card.renderRoot.querySelector('hp-confirm hp-dialog');
const labels = [...(confirm?.querySelectorAll('.danger-confirm-footer button') || [])]
.map((button) => button.textContent.trim());
if (JSON.stringify(labels) !== JSON.stringify(['Продолжить', 'Отменить'])) {
throw new Error(`golden discard labels are incomplete: ${scenario.id}`);
}
} else if (scenario.dialog === 'room-temperature') {
const space = card._curSpaceCfg;
const room = space?.rooms?.[0];
+3
View File
@@ -1035,6 +1035,9 @@ export const GOLDEN_SCENARIOS = Object.freeze([
{ id: 'room-temperature-dialog-mobile-ru', fixture: 'visual', space: 'golden-lighting',
dialog: 'room-temperature', roomTemperature: { min: 18, max: null },
language: 'ru', theme: 'dark', viewport: { width: 390, height: 820 }, ...page },
{ id: 'room-discard-dialog-mobile-ru', fixture: 'visual', space: 'golden-lighting',
dialog: 'room-discard', language: 'ru', theme: 'light',
viewport: { width: 320, height: 820 }, ...page },
{ id: 'german-view-mobile-light', fixture: 'visual', space: 'golden-geometry',
mode: 'view', language: 'de', theme: 'light',
viewport: { width: 390, height: 900 }, ...page },
+138
View File
@@ -0,0 +1,138 @@
// #603: measure the actual dialog controls, not just the existence of CSS rules.
// In #602 a 44px hit box passed while its painted switch track was 2px off.
import { launch, checkAll, finish } from './serve.mjs';
const expected = {
ru: ['Продолжить', 'Отменить'],
en: ['Continue', 'Discard'],
de: ['Fortfahren', 'Verwerfen'],
fr: ['Continuer', 'Abandonner'],
};
const results = {};
for (const dpr of [1, 2]) {
const { page, browser } = await launch({ width: 560, height: 820 }, dpr);
for (const theme of ['light', 'dark']) {
await page.emulateMedia({ colorScheme: theme });
for (const width of [320, 360, 560, 640]) {
await page.setViewportSize({ width, height: 820 });
for (const language of ['ru', 'en', 'de', 'fr']) {
const key = `${language}_${theme}_dpr${dpr}_w${width}`;
const result = await page.evaluate(async ({ language }) => {
const c = window.__card;
const root = () => c.shadowRoot || c.renderRoot;
const settle = async () => {
c.requestUpdate(); await c.updateComplete;
await new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve)));
};
c._config = { ...(c._config || {}), language };
c._setMode('plan');
await settle();
c._roomDialogCancel();
await settle();
c._openRoomEdit(c._curSpaceCfg.rooms[0]);
await settle();
const dialog = root().querySelector('hp-dialog[data-kind="room"]');
const basics = dialog.querySelector('[data-card="basics"]');
const roomFields = !!basics && !basics.querySelector('.hpf-head')
&& !!basics.querySelector('#room-name') && !!basics.querySelector('#room-area')
&& !!basics.querySelector('#room-area')?.closest('.hpf-field')?.querySelector('hp-help')
&& [...dialog.querySelectorAll('.hpf-head h3')].length === 3;
const toggle = dialog.querySelector('#room-fill-inherit');
const measure = () => {
const track = getComputedStyle(toggle, '::before');
const knob = getComputedStyle(toggle, '::after');
const content = Number.parseFloat(track.width);
const height = Number.parseFloat(track.height);
const left = Number.parseFloat(track.left);
const top = Number.parseFloat(track.top);
const borderX = Number.parseFloat(track.borderLeftWidth);
const borderY = Number.parseFloat(track.borderTopWidth);
const outerW = content + (track.boxSizing === 'border-box' ? 0 : 2 * borderX);
const outerH = height + (track.boxSizing === 'border-box' ? 0 : 2 * borderY);
const knobW = Number.parseFloat(knob.width);
const knobH = Number.parseFloat(knob.height);
const knobLeft = Number.parseFloat(knob.left);
const knobTop = (toggle.getBoundingClientRect().height - knobH) / 2;
return {
topGap: knobTop - top - borderY,
bottomGap: top + outerH - borderY - knobTop - knobH,
leftGap: knobLeft - left - borderX,
rightGap: left + outerW - borderX - knobLeft - knobW,
target: toggle.getBoundingClientRect(),
};
};
toggle.checked = false; toggle.dispatchEvent(new Event('change', { bubbles: true }));
await settle();
await new Promise((resolve) => setTimeout(resolve, 220));
const off = measure();
toggle.checked = true; toggle.dispatchEvent(new Event('change', { bubbles: true }));
await settle();
await new Promise((resolve) => setTimeout(resolve, 220));
const on = measure();
const switchAligned = Math.abs(off.topGap - off.bottomGap) <= 1
&& Math.abs(on.topGap - on.bottomGap) <= 1
&& Math.abs(off.leftGap - on.rightGap) <= 1
&& off.target.width >= 44 && off.target.height >= 44;
// Negative probe: revert just the old track box model. The same
// geometry oracle must turn red instead of merely reading a CSS token.
const mutant = document.createElement('style');
mutant.textContent = '.hpf-toggle > input::before { box-sizing: content-box !important; }';
root().append(mutant);
const oldTrack = measure();
mutant.remove();
const rejectsOldTrack = Math.abs(oldTrack.topGap - oldTrack.bottomGap) > 1
&& Math.abs(off.leftGap - oldTrack.rightGap) > 1;
const name = dialog.querySelector('#room-name');
name.value = `${name.value} x`;
name.dispatchEvent(new Event('input', { bubbles: true }));
await settle();
dialog.dispatchEvent(new CustomEvent('hp-close', { bubbles: true, composed: true }));
await settle();
const confirm = root().querySelector('hp-confirm hp-dialog');
const buttons = [...(confirm?.querySelectorAll('.danger-confirm-footer button') || [])];
const footer = confirm?.querySelector('.danger-confirm-footer');
const surface = confirm?.shadowRoot?.querySelector('.surface');
const footerBounds = footer?.getBoundingClientRect();
const footerStyle = footer && getComputedStyle(footer);
const minX = footerBounds.left + Number.parseFloat(footerStyle.paddingLeft);
const maxX = footerBounds.right - Number.parseFloat(footerStyle.paddingRight);
const contained = buttons.length === 2 && buttons.every((button) => {
const b = button.getBoundingClientRect();
const textNode = [...button.childNodes].find((node) => node.nodeType === Node.TEXT_NODE && node.textContent.trim());
const text = document.createRange();
text.selectNodeContents(textNode);
const label = text.getBoundingClientRect();
return b.left >= minX - 1 && b.right <= maxX + 1
&& label.left >= b.left - 1 && label.right <= b.right + 1
&& label.top >= b.top - 1 && label.bottom <= b.bottom + 1;
});
const oneRow = buttons.length === 2
&& Math.abs(buttons[0].getBoundingClientRect().top - buttons[1].getBoundingClientRect().top) <= 1;
const fits = contained && oneRow && surface.scrollWidth <= surface.clientWidth + 1
&& footer.scrollWidth <= footer.clientWidth + 1 && surface.getBoundingClientRect().left >= -1
&& surface.getBoundingClientRect().right <= innerWidth + 1;
const labels = buttons.map((button) => button.textContent.trim());
const safeFocus = (root().activeElement === buttons[0] || document.activeElement === buttons[0])
&& buttons[0].hasAttribute('autofocus');
buttons[0].click();
await settle();
const kept = !!root().querySelector('hp-dialog[data-kind="room"]')
&& !root().querySelector('hp-confirm hp-dialog');
c._roomDialogCancel();
await settle();
return { roomFields, switchAligned, rejectsOldTrack, fits, labels, safeFocus, kept,
gaps: { off: [off.topGap, off.bottomGap, off.leftGap], on: [on.topGap, on.bottomGap, on.rightGap] } };
}, { language });
results[key] = result.roomFields && result.switchAligned && result.rejectsOldTrack && result.fits
&& JSON.stringify(result.labels) === JSON.stringify(expected[language])
&& result.safeFocus && result.kept;
if (!results[key]) console.log(key, result);
}
}
}
checkAll(results);
await finish(browser, results);
}
+1 -1
View File
@@ -73,7 +73,7 @@ const res = await page.evaluate(async () => {
const groupTitles = () => [...sr().querySelectorAll('hp-dialog .hpf-card .hpf-head h3')]
.map((h) => h.textContent.trim());
out.createHasGroups = JSON.stringify(groupTitles()) === JSON.stringify([
c._t('room.group_basics'), c._t('room.group_fill'),
c._t('room.group_fill'),
c._t('room.group_sources'), c._t('room.sizes_section'),
]);
// #600 (Q4): «Как у пространства» — строка-тумблер, а не радио в списке.
+8
View File
@@ -34,6 +34,10 @@ const out = await page.evaluate(async () => {
// --- AC1: четыре карточки по §6.1, старой разметки нет --------------------
o.fourCardsInOrder = JSON.stringify(qa('.hpf-card').map((card) => card.dataset.card))
=== JSON.stringify(['basics', 'fill', 'sources', 'sizes']);
o.basicsHasNoHeadingButKeepsFields = !q('.hpf-card[data-card="basics"] .hpf-head')
&& !!q('.hpf-card[data-card="basics"] #room-name')
&& !!q('.hpf-card[data-card="basics"] #room-area')
&& !!q('#room-area')?.closest('.hpf-field')?.querySelector('hp-help');
o.noLegacyMarkup = qa('.srcrow, .namein, .areasel, .dropbtn, .droppanel, .candlist, .roomtemprange, .hpf-scale, .opv, fieldset').length === 0;
o.badgeShowsSpaceTitle = dlg().badge === c._spaceModel().title && !!dlg().shadowRoot.querySelector('.badge');
o.previewKept = !!q('.hpf-card[data-card="sizes"] .hpf-tint.hpf-preview .cardpreview'); // Q2
@@ -147,6 +151,10 @@ const out = await page.evaluate(async () => {
await upd(); await new Promise((r) => setTimeout(r, 60));
const confirm = () => sr().querySelector('hp-confirm hp-dialog');
o.discardAsksFirst = !!confirm() && !!dlg();
o.discardLabelsAreShort = ['Продолжить', 'Continue', 'Fortfahren', 'Continuer']
.includes(confirm()?.querySelector('[data-hp="dialog-cancel"]')?.textContent.trim())
&& ['Отменить', 'Discard', 'Verwerfen', 'Abandonner']
.includes(confirm()?.querySelector('[data-hp="dialog-confirm"]')?.textContent.trim());
confirm()?.querySelector('[data-hp="dialog-cancel"]')?.click(); await upd(); await new Promise((r) => setTimeout(r, 60));
o.keepEditingKeepsDialog = !!dlg() && !confirm() && c._roomDialog === true && c._nameSel === 'Room 600';
dlg().dispatchEvent(new CustomEvent('hp-close', { bubbles: true, composed: true }));
+146 -146
View File
@@ -1,312 +1,312 @@
{
"schema": 1,
"fingerprint": "33e3bf530b13e01b6cc86d437770676c16441418afa14b0324be617fc2d3bb22",
"fingerprint": "44c8db0207714f5476f58cdacdfaae63754967422e492b7fadf3551ecaee4380",
"entry": "houseplan-card.js",
"panelEntry": "houseplan-panel.js",
"initialViewFiles": [
"houseplan-assets/houseplan-card-B1GLwcbS.js",
"houseplan-assets/houseplan-card-BQWwo3i7.js",
"houseplan-card.js"
],
"initialViewGzipBytes": 290054,
"initialViewGzipBytes": 290034,
"initialPanelFiles": [
"houseplan-assets/houseplan-card-B1GLwcbS.js",
"houseplan-assets/houseplan-card-BQWwo3i7.js",
"houseplan-panel.js"
],
"initialPanelGzipBytes": 291577,
"initialPanelGzipBytes": 291556,
"initialPanelOnlyFiles": [
"houseplan-panel.js"
],
"initialPanelOnlyGzipBytes": 2326,
"initialPanelOnlyGzipBytes": 2325,
"lazyFiles": [
"houseplan-assets/backdrop-pick-CpXppwyK.js",
"houseplan-assets/de-sm5Z-8rd.js",
"houseplan-assets/editor-BgYvVh33.js",
"houseplan-assets/form-kit.styles-B2L2lNpH.js",
"houseplan-assets/fr-dxMqTPY0.js",
"houseplan-assets/furniture-plan-art.generated-B89AgatN.js",
"houseplan-assets/houseplan-editor-runtime-DCSkoKEw.js",
"houseplan-assets/houseplan-onboarding-runtime-D690jAGU.js",
"houseplan-assets/hp-zigbee-topology-overlay-B-TXG5n3.js",
"houseplan-assets/iso-scene-render-DkVCyTYN.js",
"houseplan-assets/live-interaction-runtime-B_hYV9lk.js",
"houseplan-assets/pdf-export-nKn0s0df.js",
"houseplan-assets/summary-panel-runtime-loaded-BCDazNiL.js",
"houseplan-assets/zigbee-topology-0vQ1r_Y7.js",
"houseplan-assets/zigbee-topology-runtime-DtATTFz4.js"
"houseplan-assets/backdrop-pick-D57BQQbo.js",
"houseplan-assets/de-DroVNRnr.js",
"houseplan-assets/editor-BIdm6L_k.js",
"houseplan-assets/form-kit.styles-BqBbEnaz.js",
"houseplan-assets/fr-DZBnbf3Y.js",
"houseplan-assets/furniture-plan-art.generated-CiyoNIND.js",
"houseplan-assets/houseplan-editor-runtime-BXjfKYAx.js",
"houseplan-assets/houseplan-onboarding-runtime-CNBlGqTW.js",
"houseplan-assets/hp-zigbee-topology-overlay-fe_knnXY.js",
"houseplan-assets/iso-scene-render-sNAJFXBj.js",
"houseplan-assets/live-interaction-runtime-DPmKLJbP.js",
"houseplan-assets/pdf-export-DO9ua2us.js",
"houseplan-assets/summary-panel-runtime-loaded-D3ySFavc.js",
"houseplan-assets/zigbee-topology-DThgDHY1.js",
"houseplan-assets/zigbee-topology-runtime-C1Eof5a4.js"
],
"lazyGzipBytes": 459485,
"lazyGzipBytes": 459440,
"lazyEditorFiles": [
"houseplan-assets/backdrop-pick-CpXppwyK.js",
"houseplan-assets/editor-BgYvVh33.js",
"houseplan-assets/form-kit.styles-B2L2lNpH.js",
"houseplan-assets/furniture-plan-art.generated-B89AgatN.js",
"houseplan-assets/houseplan-editor-runtime-DCSkoKEw.js",
"houseplan-assets/zigbee-topology-0vQ1r_Y7.js"
"houseplan-assets/backdrop-pick-D57BQQbo.js",
"houseplan-assets/editor-BIdm6L_k.js",
"houseplan-assets/form-kit.styles-BqBbEnaz.js",
"houseplan-assets/furniture-plan-art.generated-CiyoNIND.js",
"houseplan-assets/houseplan-editor-runtime-BXjfKYAx.js",
"houseplan-assets/zigbee-topology-DThgDHY1.js"
],
"lazyEditorGzipBytes": 242944,
"lazyEditorGzipBytes": 242926,
"lazyOnboardingFiles": [
"houseplan-assets/backdrop-pick-CpXppwyK.js",
"houseplan-assets/form-kit.styles-B2L2lNpH.js",
"houseplan-assets/houseplan-onboarding-runtime-D690jAGU.js"
"houseplan-assets/backdrop-pick-D57BQQbo.js",
"houseplan-assets/form-kit.styles-BqBbEnaz.js",
"houseplan-assets/houseplan-onboarding-runtime-CNBlGqTW.js"
],
"lazyOnboardingGzipBytes": 33537,
"lazyOnboardingGzipBytes": 33523,
"lazyLocaleFiles": [
"houseplan-assets/de-sm5Z-8rd.js",
"houseplan-assets/fr-dxMqTPY0.js"
"houseplan-assets/de-DroVNRnr.js",
"houseplan-assets/fr-DZBnbf3Y.js"
],
"lazyLocaleGzipBytes": 55362,
"lazyLocaleGzipBytes": 55338,
"lazyIsometricFiles": [
"houseplan-assets/iso-scene-render-DkVCyTYN.js"
"houseplan-assets/iso-scene-render-sNAJFXBj.js"
],
"lazyIsometricGzipBytes": 17645,
"lazyIsometricGzipBytes": 17643,
"lazyFurnitureArtFiles": [
"houseplan-assets/furniture-plan-art.generated-B89AgatN.js"
"houseplan-assets/furniture-plan-art.generated-CiyoNIND.js"
],
"lazyFurnitureArtGzipBytes": 16940,
"lazyFurnitureArtGzipBytes": 16942,
"lazyPdfFiles": [
"houseplan-assets/furniture-plan-art.generated-B89AgatN.js",
"houseplan-assets/pdf-export-nKn0s0df.js"
"houseplan-assets/furniture-plan-art.generated-CiyoNIND.js",
"houseplan-assets/pdf-export-DO9ua2us.js"
],
"lazyPdfGzipBytes": 126813,
"lazyPdfGzipBytes": 126817,
"files": [
{
"path": "houseplan-assets/backdrop-pick-CpXppwyK.js",
"sha256": "67675aeff01392b17248a53f178d499b80c945104be10d378c6aafd64bbb82f6",
"rawBytes": 74107,
"gzipBytes": 23927,
"path": "houseplan-assets/backdrop-pick-D57BQQbo.js",
"sha256": "5f205acaf3c1d40b1474941ead08b8ee14bed824f25f5280bdb8372a246248fb",
"rawBytes": 74012,
"gzipBytes": 23911,
"isEntry": false,
"imports": [
"houseplan-assets/form-kit.styles-B2L2lNpH.js",
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/form-kit.styles-BqBbEnaz.js",
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/de-sm5Z-8rd.js",
"sha256": "ad4e3cda058c2cc386c244ffc6076fd073e53767bc4a3965a19c61560c361d47",
"rawBytes": 92482,
"gzipBytes": 27923,
"path": "houseplan-assets/de-DroVNRnr.js",
"sha256": "3b8cc88353c8a979aae9134bb7e3d81dc70f150282f9e0890e5f410fa05d153a",
"rawBytes": 92450,
"gzipBytes": 27914,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/editor-BgYvVh33.js",
"sha256": "1a014d969ffadc8085f4bc14946abfae1c433c9f323501f09ca5be06ca532408",
"path": "houseplan-assets/editor-BIdm6L_k.js",
"sha256": "fba604ea0b9bab6c0086745685458ff4ea68a8ce093e04b9e967209e2d8f4074",
"rawBytes": 3833,
"gzipBytes": 1584,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/form-kit.styles-B2L2lNpH.js",
"sha256": "28e1314635c882da6b7a44019bce117be2d57c1a6e352055c49cda944e498df8",
"rawBytes": 23946,
"gzipBytes": 4779,
"path": "houseplan-assets/form-kit.styles-BqBbEnaz.js",
"sha256": "6924ed0f82612cb4ec823c1b8fe3c536fd84435ab124fc12ca630da92a7c5913",
"rawBytes": 23975,
"gzipBytes": 4782,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/fr-dxMqTPY0.js",
"sha256": "b1b5d659b08875adc3f01bb5272fe980ed671e7db026c46a32b535fad3116eff",
"rawBytes": 94786,
"gzipBytes": 27439,
"path": "houseplan-assets/fr-DZBnbf3Y.js",
"sha256": "fdabb08cd1c4418015e9c57cea01efcc8b5e7cc931482780df6652032ddcffd0",
"rawBytes": 94754,
"gzipBytes": 27424,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/furniture-plan-art.generated-B89AgatN.js",
"sha256": "ebf88f8b0d6c7694ccb9a081dc86aa28e7947cdbdf1795cfce750387cededcb1",
"path": "houseplan-assets/furniture-plan-art.generated-CiyoNIND.js",
"sha256": "f01d0f0fa6b2b483bc5a2f823d66a60bacf934bd4efe833e37cd3eea45658d2b",
"rawBytes": 52033,
"gzipBytes": 16940,
"gzipBytes": 16942,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-card-B1GLwcbS.js",
"sha256": "4bd4cdfff74b16ded150209536b66c5b4f638a4bfa5185420e58b3bd15e54618",
"rawBytes": 1028686,
"gzipBytes": 289251,
"path": "houseplan-assets/houseplan-card-BQWwo3i7.js",
"sha256": "85f6b579f5f2a130fd0c4ec3384a20757812b4a260c552497ef00bb73f608273",
"rawBytes": 1028618,
"gzipBytes": 289231,
"isEntry": false,
"imports": [],
"dynamicImports": [
"houseplan-assets/de-sm5Z-8rd.js",
"houseplan-assets/editor-BgYvVh33.js",
"houseplan-assets/fr-dxMqTPY0.js",
"houseplan-assets/furniture-plan-art.generated-B89AgatN.js",
"houseplan-assets/houseplan-editor-runtime-DCSkoKEw.js",
"houseplan-assets/houseplan-onboarding-runtime-D690jAGU.js",
"houseplan-assets/hp-zigbee-topology-overlay-B-TXG5n3.js",
"houseplan-assets/iso-scene-render-DkVCyTYN.js",
"houseplan-assets/live-interaction-runtime-B_hYV9lk.js",
"houseplan-assets/pdf-export-nKn0s0df.js",
"houseplan-assets/summary-panel-runtime-loaded-BCDazNiL.js"
"houseplan-assets/de-DroVNRnr.js",
"houseplan-assets/editor-BIdm6L_k.js",
"houseplan-assets/fr-DZBnbf3Y.js",
"houseplan-assets/furniture-plan-art.generated-CiyoNIND.js",
"houseplan-assets/houseplan-editor-runtime-BXjfKYAx.js",
"houseplan-assets/houseplan-onboarding-runtime-CNBlGqTW.js",
"houseplan-assets/hp-zigbee-topology-overlay-fe_knnXY.js",
"houseplan-assets/iso-scene-render-sNAJFXBj.js",
"houseplan-assets/live-interaction-runtime-DPmKLJbP.js",
"houseplan-assets/pdf-export-DO9ua2us.js",
"houseplan-assets/summary-panel-runtime-loaded-D3ySFavc.js"
]
},
{
"path": "houseplan-assets/houseplan-editor-runtime-DCSkoKEw.js",
"sha256": "916cdceb6bfdf46e47396a9864c4f0f820d6c399924ddb7c68e2b69bafc5288e",
"rawBytes": 676964,
"gzipBytes": 188283,
"path": "houseplan-assets/houseplan-editor-runtime-BXjfKYAx.js",
"sha256": "081108b15ff93a4246a1ff40435f4cea649080f7d94be5be9d3dc47913895e7d",
"rawBytes": 676935,
"gzipBytes": 188281,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-CpXppwyK.js",
"houseplan-assets/form-kit.styles-B2L2lNpH.js",
"houseplan-assets/furniture-plan-art.generated-B89AgatN.js",
"houseplan-assets/houseplan-card-B1GLwcbS.js",
"houseplan-assets/zigbee-topology-0vQ1r_Y7.js"
"houseplan-assets/backdrop-pick-D57BQQbo.js",
"houseplan-assets/form-kit.styles-BqBbEnaz.js",
"houseplan-assets/furniture-plan-art.generated-CiyoNIND.js",
"houseplan-assets/houseplan-card-BQWwo3i7.js",
"houseplan-assets/zigbee-topology-DThgDHY1.js"
],
"dynamicImports": [
"houseplan-assets/zigbee-topology-runtime-DtATTFz4.js"
"houseplan-assets/zigbee-topology-runtime-C1Eof5a4.js"
]
},
{
"path": "houseplan-assets/houseplan-onboarding-runtime-D690jAGU.js",
"sha256": "ed60ef51d16e4cf0541b80f7dc25b121e02e3e1f592cbc8c619f5617c5826825",
"path": "houseplan-assets/houseplan-onboarding-runtime-CNBlGqTW.js",
"sha256": "89286db27f83989c0fef921ec9fcaf38e86c93c7ff06a086dfbd71816631dfbb",
"rawBytes": 15667,
"gzipBytes": 4831,
"gzipBytes": 4830,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-CpXppwyK.js",
"houseplan-assets/form-kit.styles-B2L2lNpH.js",
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/backdrop-pick-D57BQQbo.js",
"houseplan-assets/form-kit.styles-BqBbEnaz.js",
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/hp-zigbee-topology-overlay-B-TXG5n3.js",
"sha256": "4636191825ee01f241193320777b763c6d75e33c6f10def8541c9ecb42565b10",
"path": "houseplan-assets/hp-zigbee-topology-overlay-fe_knnXY.js",
"sha256": "d36a074da1ea2861ab43f490e440fc42ad8263ff28551df3197340caa6aea516",
"rawBytes": 10759,
"gzipBytes": 3687,
"gzipBytes": 3686,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-B1GLwcbS.js",
"houseplan-assets/zigbee-topology-0vQ1r_Y7.js",
"houseplan-assets/zigbee-topology-runtime-DtATTFz4.js"
"houseplan-assets/houseplan-card-BQWwo3i7.js",
"houseplan-assets/zigbee-topology-DThgDHY1.js",
"houseplan-assets/zigbee-topology-runtime-C1Eof5a4.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/iso-scene-render-DkVCyTYN.js",
"sha256": "dc66a19293c50674600f2c46c91318f05d8774ad8a5f46444d5485db1c3ad193",
"path": "houseplan-assets/iso-scene-render-sNAJFXBj.js",
"sha256": "73d71aa7f08ace62e62f160628209e028c61a7e9ab258e9ed29bda2eab669356",
"rawBytes": 51983,
"gzipBytes": 17645,
"gzipBytes": 17643,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/live-interaction-runtime-B_hYV9lk.js",
"sha256": "2f1e70306e3c0a3e23ec15b2405a00fa41427ba1f67a211d738415045b18f4e9",
"path": "houseplan-assets/live-interaction-runtime-DPmKLJbP.js",
"sha256": "2b6755348ab3fbb65ce18db8e72a2f6cf74260dbc4f4095059bc4d97bf7e0b5b",
"rawBytes": 8216,
"gzipBytes": 3208,
"gzipBytes": 3206,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/pdf-export-nKn0s0df.js",
"sha256": "ada8b5086ecd47421759f537bac667b802a5139b41a2ed7c7c038bb3028cbca8",
"path": "houseplan-assets/pdf-export-DO9ua2us.js",
"sha256": "7db0a04b18179a21b09c0bc3881db3b15362f448e4f03df251f148b67e0d22d3",
"rawBytes": 236247,
"gzipBytes": 109873,
"gzipBytes": 109875,
"isEntry": false,
"imports": [
"houseplan-assets/furniture-plan-art.generated-B89AgatN.js",
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/furniture-plan-art.generated-CiyoNIND.js",
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/summary-panel-editor-D1odrS_o.js",
"sha256": "ee14829f98102930010a6621084c05b2ec0afb48821482ed0ebfa55acf2fa0a3",
"path": "houseplan-assets/summary-panel-editor-DbbtTVqV.js",
"sha256": "590f8a026830f5aef7046dce335e6eb8292941a0ba843838b698abaec1f69b49",
"rawBytes": 14862,
"gzipBytes": 3425,
"gzipBytes": 3424,
"isEntry": false,
"imports": [
"houseplan-assets/form-kit.styles-B2L2lNpH.js",
"houseplan-assets/houseplan-card-B1GLwcbS.js",
"houseplan-assets/summary-panel-runtime-loaded-BCDazNiL.js"
"houseplan-assets/form-kit.styles-BqBbEnaz.js",
"houseplan-assets/houseplan-card-BQWwo3i7.js",
"houseplan-assets/summary-panel-runtime-loaded-D3ySFavc.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/summary-panel-metrics-DwyQTL-j.js",
"sha256": "ba90d4f411baf7d42b304ac315e01debba6de73406bf28b09aa9947600c873f2",
"path": "houseplan-assets/summary-panel-metrics-Df7v39JC.js",
"sha256": "f3eddb46ff293d321ba93ed400c4f0daa00a093444c45a88f557285a9444f719",
"rawBytes": 2611,
"gzipBytes": 1308,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/summary-panel-runtime-loaded-BCDazNiL.js",
"sha256": "9a533c593e0066d885f4da20fe3eb71ac313175b92bf477bf508ef302e7aeb2e",
"path": "houseplan-assets/summary-panel-runtime-loaded-D3ySFavc.js",
"sha256": "8bfa9cfa1a2a094d89fc2c2b9e6aa8897a4e880d6dfe76fde572ea20d3490ae7",
"rawBytes": 72733,
"gzipBytes": 20171,
"gzipBytes": 20172,
"isEntry": false,
"imports": [
"houseplan-assets/form-kit.styles-B2L2lNpH.js",
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/form-kit.styles-BqBbEnaz.js",
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": [
"houseplan-assets/summary-panel-editor-D1odrS_o.js",
"houseplan-assets/summary-panel-metrics-DwyQTL-j.js"
"houseplan-assets/summary-panel-editor-DbbtTVqV.js",
"houseplan-assets/summary-panel-metrics-Df7v39JC.js"
]
},
{
"path": "houseplan-assets/zigbee-topology-0vQ1r_Y7.js",
"sha256": "d8df746c194e2dde456111393e9ed64c60ec86faa0fb6c8dcec944df6f28391b",
"path": "houseplan-assets/zigbee-topology-DThgDHY1.js",
"sha256": "b7eb54fd329bb9ace1aa97a5ac63803d7eb051817fa3650814c131e0c59fd4fb",
"rawBytes": 18962,
"gzipBytes": 7431,
"gzipBytes": 7426,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/zigbee-topology-runtime-DtATTFz4.js",
"sha256": "4490e2457bd5dd7000a6d560de6c81d2653b27f91b0c06e76b88c1a89fc0dd67",
"path": "houseplan-assets/zigbee-topology-runtime-C1Eof5a4.js",
"sha256": "0e2a8eb84a561f49c78d4159752e6959f2aea37d6e2e8e780094e07b5b621cc1",
"rawBytes": 3942,
"gzipBytes": 1764,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-B1GLwcbS.js",
"houseplan-assets/zigbee-topology-0vQ1r_Y7.js"
"houseplan-assets/houseplan-card-BQWwo3i7.js",
"houseplan-assets/zigbee-topology-DThgDHY1.js"
],
"dynamicImports": []
},
{
"path": "houseplan-card.js",
"sha256": "6cdcddc605a91dfc6f048ea39a886f08333e3e27d05364a08bb3618c1a51093c",
"sha256": "8dbb5019715b378b1c2d73d977e9f9fcec05179b950775a91825447b7428cb9b",
"rawBytes": 1205,
"gzipBytes": 803,
"isEntry": true,
"imports": [
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
},
{
"path": "houseplan-panel.js",
"sha256": "1371acd27bd41cbba80641473c7efa070ed54dfd3f656fcaf153d37cc2b1757c",
"sha256": "de982c576fc0c4c68e637e3e575c669166277fdbc497d137b1045684f3a0fe5e",
"rawBytes": 6165,
"gzipBytes": 2326,
"gzipBytes": 2325,
"isEntry": true,
"imports": [
"houseplan-assets/houseplan-card-B1GLwcbS.js"
"houseplan-assets/houseplan-card-BQWwo3i7.js"
],
"dynamicImports": []
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="33e3bf530b13e01b6cc86d437770676c16441418afa14b0324be617fc2d3bb22";import{az as e,l as o,aC as t,e7 as s,A as a,e8 as i,e9 as l,ea as n,E as r,c}from"./houseplan-card-B1GLwcbS.js";class h extends e{constructor(){super(...arguments),this._spaces=null,this._spacesLoading=!1,this._spacesAuthoritative=!1}setConfig(e){this._config=e}async _loadSpaces(){if(!this._spaces&&!this._spacesLoading&&this.hass){this._spacesLoading=!0;try{const e=await this.hass.callWS({type:"houseplan/config/get"});this._spaces=(e?.config?.spaces||[]).map(e=>({value:e.id,label:e.title||e.id})),this._spacesAuthoritative=!0}catch{this._spaces=[],this._spacesAuthoritative=!1}finally{this._spacesLoading=!1}}}get _lang(){return o(this.hass,this._config?.language)}get _floorToken(){const e=this._config?.floor;return"number"==typeof e?`__houseplan_yaml_floor_index__:${String(e)}`:null}get _formData(){const e={...this._config},o=this._floorToken;return o?e.floor=o:Object.prototype.hasOwnProperty.call(e,"floor")||(e.floor=""),e}get _schema(){const e=this._spaces||[],o=this._lang,a=[{value:"",label:t(o,"editor.floor_none")}],i=this._floorToken;i&&a.push({value:i,label:t(o,"editor.floor_index",{index:String(this._config?.floor)})});const l="string"==typeof this._config?.floor?this._config.floor:"";l&&!e.some(e=>e.value===l)&&a.push({value:l,label:l}),a.push(...e);const n="string"==typeof this._config?.default_floor?this._config.default_floor:"",r=[...e];return n&&!e.some(e=>e.value===n)&&r.unshift({value:n,label:n}),[{name:"title",selector:{text:{}}},{name:"floor",selector:{select:{mode:"dropdown",options:a}}},e.length?{name:"default_floor",selector:{select:{mode:"dropdown",options:r}}}:{name:"default_floor",selector:{text:{}}},{name:"language",selector:{select:{mode:"dropdown",options:s(t(o,"editor.lang_auto"),this._config?.language)}}},{name:"icon_size",selector:{number:{min:1,max:6,step:.1,mode:"box"}}},{name:"show_temperature",selector:{boolean:{}}},{name:"live_states",selector:{boolean:{}}},{name:"show_signal",selector:{boolean:{}}},{name:"kiosk",selector:{boolean:{}}},{name:"cycle",selector:{number:{min:0,max:3600,step:5,mode:"box"}}}]}render(){if(!this.hass||!this._config)return a;const e=i(this,l,o(this.hass,this._config.language));if("cold"===e)return n();if("warm"===e)return r;this._loadSpaces();const s=this._lang,h={title:t(s,"editor.title"),floor:t(s,"editor.floor"),default_floor:t(s,"editor.default_floor"),language:t(s,"editor.language"),icon_size:t(s,"editor.icon_size"),show_temperature:t(s,"editor.show_temperature"),live_states:t(s,"editor.live_states"),show_signal:t(s,"editor.show_signal"),kiosk:t(s,"editor.kiosk"),cycle:t(s,"editor.cycle")},f=this._schema,_=function(e,o,t){if(!t||null===o)return null;const s="string"==typeof e?.default_floor?e.default_floor:"";return!s||o.some(e=>e.value===s)?null:s}(this._config,this._spaces,this._spacesAuthoritative),d=e=>c`<ha-form
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="44c8db0207714f5476f58cdacdfaae63754967422e492b7fadf3551ecaee4380";import{az as e,l as o,aC as t,e7 as s,A as a,e8 as i,e9 as l,ea as n,E as r,c}from"./houseplan-card-BQWwo3i7.js";class h extends e{constructor(){super(...arguments),this._spaces=null,this._spacesLoading=!1,this._spacesAuthoritative=!1}setConfig(e){this._config=e}async _loadSpaces(){if(!this._spaces&&!this._spacesLoading&&this.hass){this._spacesLoading=!0;try{const e=await this.hass.callWS({type:"houseplan/config/get"});this._spaces=(e?.config?.spaces||[]).map(e=>({value:e.id,label:e.title||e.id})),this._spacesAuthoritative=!0}catch{this._spaces=[],this._spacesAuthoritative=!1}finally{this._spacesLoading=!1}}}get _lang(){return o(this.hass,this._config?.language)}get _floorToken(){const e=this._config?.floor;return"number"==typeof e?`__houseplan_yaml_floor_index__:${String(e)}`:null}get _formData(){const e={...this._config},o=this._floorToken;return o?e.floor=o:Object.prototype.hasOwnProperty.call(e,"floor")||(e.floor=""),e}get _schema(){const e=this._spaces||[],o=this._lang,a=[{value:"",label:t(o,"editor.floor_none")}],i=this._floorToken;i&&a.push({value:i,label:t(o,"editor.floor_index",{index:String(this._config?.floor)})});const l="string"==typeof this._config?.floor?this._config.floor:"";l&&!e.some(e=>e.value===l)&&a.push({value:l,label:l}),a.push(...e);const n="string"==typeof this._config?.default_floor?this._config.default_floor:"",r=[...e];return n&&!e.some(e=>e.value===n)&&r.unshift({value:n,label:n}),[{name:"title",selector:{text:{}}},{name:"floor",selector:{select:{mode:"dropdown",options:a}}},e.length?{name:"default_floor",selector:{select:{mode:"dropdown",options:r}}}:{name:"default_floor",selector:{text:{}}},{name:"language",selector:{select:{mode:"dropdown",options:s(t(o,"editor.lang_auto"),this._config?.language)}}},{name:"icon_size",selector:{number:{min:1,max:6,step:.1,mode:"box"}}},{name:"show_temperature",selector:{boolean:{}}},{name:"live_states",selector:{boolean:{}}},{name:"show_signal",selector:{boolean:{}}},{name:"kiosk",selector:{boolean:{}}},{name:"cycle",selector:{number:{min:0,max:3600,step:5,mode:"box"}}}]}render(){if(!this.hass||!this._config)return a;const e=i(this,l,o(this.hass,this._config.language));if("cold"===e)return n();if("warm"===e)return r;this._loadSpaces();const s=this._lang,h={title:t(s,"editor.title"),floor:t(s,"editor.floor"),default_floor:t(s,"editor.default_floor"),language:t(s,"editor.language"),icon_size:t(s,"editor.icon_size"),show_temperature:t(s,"editor.show_temperature"),live_states:t(s,"editor.live_states"),show_signal:t(s,"editor.show_signal"),kiosk:t(s,"editor.kiosk"),cycle:t(s,"editor.cycle")},f=this._schema,_=function(e,o,t){if(!t||null===o)return null;const s="string"==typeof e?.default_floor?e.default_floor:"";return!s||o.some(e=>e.value===s)?null:s}(this._config,this._spaces,this._spacesAuthoritative),d=e=>c`<ha-form
.hass=${this.hass}
.data=${this._formData}
.schema=${e}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="33e3bf530b13e01b6cc86d437770676c16441418afa14b0324be617fc2d3bb22";import{c as a,A as e}from"./houseplan-card-B1GLwcbS.js";import{s,n as t,a as l,m as r,b as o,c as i,d as u}from"./summary-panel-runtime-loaded-BCDazNiL.js";import"./form-kit.styles-B2L2lNpH.js";const m=m=>{const{host:c,dialog:d,problems:n,t:b}=m,y=n.find(a=>"error"===a.kind),$=d.localShow!==d.baseLocalShow||!d.localOnly&&!s(t(d.draft),d.base),p=$&&!d.busy&&!y,v=a=>n.find(e=>e.path===a),h=a=>a?b(`summary.problem.${a.code}`):"",k=()=>m.close(),g=a`<label class="summary-switch" for="summary-local-show">
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="44c8db0207714f5476f58cdacdfaae63754967422e492b7fadf3551ecaee4380";import{c as a,A as e}from"./houseplan-card-BQWwo3i7.js";import{s,n as t,a as l,m as r,b as o,c as i,d as u}from"./summary-panel-runtime-loaded-D3ySFavc.js";import"./form-kit.styles-BqBbEnaz.js";const m=m=>{const{host:c,dialog:d,problems:n,t:b}=m,y=n.find(a=>"error"===a.kind),$=d.localShow!==d.baseLocalShow||!d.localOnly&&!s(t(d.draft),d.base),p=$&&!d.busy&&!y,v=a=>n.find(e=>e.path===a),h=a=>a?b(`summary.problem.${a.code}`):"",k=()=>m.close(),g=a`<label class="summary-switch" for="summary-local-show">
<span class="summary-switch-caption"><strong>${b("summary.show_local")}</strong>
<small id="summary-local-show-hint">${b("summary.show_local_hint")}</small></span>
<input id="summary-local-show" data-summary-local-show type="checkbox"
@@ -0,0 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="44c8db0207714f5476f58cdacdfaae63754967422e492b7fadf3551ecaee4380";import{ed as e,J as t,aX as n,H as i,aa as o,a8 as r,bO as a,bN as s,aW as c,aV as l,aY as d,ee as u,ef as f,bQ as m,eg as g}from"./houseplan-card-BQWwo3i7.js";function v(e){if(!e.registry.authoritative)return null;const t=new Set,n=d(e.markers);for(const i of Object.values(e.registry.devices||{}))i?.id&&"service"!==i.entry_type&&!n.devices.has(i.id)&&i.area_id&&e.areaToSpace[i.area_id]&&t.add(i.id);for(const i of e.markers||[]){if(i.removed||"virtual"===i.binding)continue;const o=String(i.binding||"").indexOf(":");if(o<1)continue;const r=i.binding.slice(0,o),a=i.binding.slice(o+1),s="device"===r?e.registry.devices?.[a]:null,c="entity"===r?e.registry.entities?.[a]:null,l="device"===r?a:c?.device_id,d="device"===r?s?.area_id:c?.area_id||l&&e.registry.devices?.[l]?.area_id,u="string"==typeof i.room_id&&i.room_id.length>0&&null===i.area?"":i.area||d||"",f=u&&e.areaToSpace[u]||i.space||e.firstSpaceId;l&&e.registry.devices?.[l]&&e.spaceIds.has(f)&&(!n.devices.has(l)||"entity"===r&&n.liveEntities.has(a))&&t.add(l)}return t}function y(e,t){return e?.length?t?.length?g(e,t):e:t}function _(e,t){const n=c(e.rooms,t.walls,t.openCuts,[],i,t.cellCm,o,r);return{roomGeom:"ok"===n.status||"degraded-extra"===n.status?n.roomGeom:void 0,multiWallNodes:l(e.rooms,t.walls,t.openCuts,i,t.cellCm,o,r)}}function*h(c,l,d=_){try{let u=0;for(const f of l){const l=c.spaces.find(e=>String(e?.id)===f.id);if(!l)continue;const m=e(l,f),g=d(f,m);let v=null;for(const e of f.rooms){if(!e.id)continue;const s=t(e);if(!s)continue;const c=n(f.rooms,e.id,m.walls,m.openCuts,i,m.cellCm,o,r,g.roomGeom,g.multiWallNodes)||s;v=y(v,a(c,m.physicalBodies)),yield}const _=m.cellCm/o;u+=s(v)*_*_/1e4}return u}catch{return null}}function p(e,t,n=_){const i=h(e,t,n);let o=i.next();for(;!o.done;)o=i.next();return o.value}function b(e,t,n,i){if("system"!==e.type)return null;if("device_count"===e.key)return null===t.deviceCount?null:String(t.deviceCount);if("total_area"===e.key)return null===t.areaM2?null:m(t.areaM2,"mi"===n?.config?.unit_system?.length);try{return new Intl.DateTimeFormat(i||void 0,{dateStyle:"short",timeStyle:"short",timeZone:n?.config?.time_zone||void 0}).format(t.now)}catch{return t.now.toLocaleString()}}function S(e,t){const n=e?.states?.[t];if(!n)return null;const i=u(e,t);return i?f(i,String(n.attributes?.unit_of_measurement||"")):null}export{h as cleanFloorAreaSteps,v as representedHaDeviceIds,_ as spaceWallGeometry,S as summaryEntityValue,b as summarySystemValue,p as totalCleanFloorAreaM2};
@@ -1 +0,0 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="33e3bf530b13e01b6cc86d437770676c16441418afa14b0324be617fc2d3bb22";import{ed as e,J as t,aX as n,H as i,aa as o,a8 as r,bO as s,bN as a,aW as c,aV as l,aY as u,ee as d,ef as f,bQ as m,eg as g}from"./houseplan-card-B1GLwcbS.js";function v(e){if(!e.registry.authoritative)return null;const t=new Set,n=u(e.markers);for(const i of Object.values(e.registry.devices||{}))i?.id&&"service"!==i.entry_type&&!n.devices.has(i.id)&&i.area_id&&e.areaToSpace[i.area_id]&&t.add(i.id);for(const i of e.markers||[]){if(i.removed||"virtual"===i.binding)continue;const o=String(i.binding||"").indexOf(":");if(o<1)continue;const r=i.binding.slice(0,o),s=i.binding.slice(o+1),a="device"===r?e.registry.devices?.[s]:null,c="entity"===r?e.registry.entities?.[s]:null,l="device"===r?s:c?.device_id,u="device"===r?a?.area_id:c?.area_id||l&&e.registry.devices?.[l]?.area_id,d="string"==typeof i.room_id&&i.room_id.length>0&&null===i.area?"":i.area||u||"",f=d&&e.areaToSpace[d]||i.space||e.firstSpaceId;l&&e.registry.devices?.[l]&&e.spaceIds.has(f)&&(!n.devices.has(l)||"entity"===r&&n.liveEntities.has(s))&&t.add(l)}return t}function y(e,t){return e?.length?t?.length?g(e,t):e:t}function _(e,t){const n=c(e.rooms,t.walls,t.openCuts,[],i,t.cellCm,o,r);return{roomGeom:"ok"===n.status||"degraded-extra"===n.status?n.roomGeom:void 0,multiWallNodes:l(e.rooms,t.walls,t.openCuts,i,t.cellCm,o,r)}}function*b(c,l,u=_){try{let d=0;for(const f of l){const l=c.spaces.find(e=>String(e?.id)===f.id);if(!l)continue;const m=e(l,f),g=u(f,m);let v=null;for(const e of f.rooms){if(!e.id)continue;const a=t(e);if(!a)continue;const c=n(f.rooms,e.id,m.walls,m.openCuts,i,m.cellCm,o,r,g.roomGeom,g.multiWallNodes)||a;v=y(v,s(c,m.physicalBodies)),yield}const _=m.cellCm/o;d+=a(v)*_*_/1e4}return d}catch{return null}}function h(e,t,n=_){const i=b(e,t,n);let o=i.next();for(;!o.done;)o=i.next();return o.value}function p(e,t,n,i){if("system"!==e.type)return null;if("device_count"===e.key)return null===t.deviceCount?null:String(t.deviceCount);if("total_area"===e.key)return null===t.areaM2?null:m(t.areaM2,"mi"===n?.config?.unit_system?.length);try{return new Intl.DateTimeFormat(i||void 0,{dateStyle:"short",timeStyle:"short",timeZone:n?.config?.time_zone||void 0}).format(t.now)}catch{return t.now.toLocaleString()}}function S(e,t){const n=e?.states?.[t];if(!n)return null;const i=d(e,t);return i?f(i,String(n.attributes?.unit_of_measurement||"")):null}export{b as cleanFloorAreaSteps,v as representedHaDeviceIds,_ as spaceWallGeometry,S as summaryEntityValue,p as summarySystemValue,h as totalCleanFloorAreaM2};
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="33e3bf530b13e01b6cc86d437770676c16441418afa14b0324be617fc2d3bb22";import{n as t,b as n}from"./zigbee-topology-0vQ1r_Y7.js";import{aI as e}from"./houseplan-card-B1GLwcbS.js";const o=new WeakMap;function i(t){const n=function(t){const n=t?.connection||t;return!n||"object"!=typeof n&&"function"!=typeof n?null:n}(t);if(!n)return null;let e=o.get(n);return e||(e={revision:0,topologies:[],states:{},listeners:new Set,inflight:new Map},o.set(n,e)),e}function r(t,n,e){t.states={...t.states,[n]:e},function(t){t.revision++;for(const n of t.listeners)n()}(t)}function s(t){const n=t?.code;if("permission"===n||"unsupported"===n||"timeout"===n||"invalid_topic"===n||"invalid_payload"===n)return n;const e=String(t?.message||"").toLowerCase();return e.includes("unauthor")||e.includes("permission")?"permission":e.includes("unknown_command")||e.includes("not found")?"unsupported":"provider"}function a(t){return Object.assign(new Error(t),{code:t})}function c(t,n,e){const o=t.inflight.get(n);if(o)return o;r(t,n,{phase:"loading"});const i=e().then(n=>{if(!n.nodes.length&&n.warnings.some(t=>"invalid_payload"===t.code))throw a("invalid_payload");!function(t,n){t.topologies=[...t.topologies.filter(t=>!(t.provider===n.provider&&t.instanceId===n.instanceId)),n],r(t,"zha"===n.provider?"zha":`z2m:${n.instanceId}`,{phase:"ready",obtainedAt:n.obtainedAt,partial:n.warnings.length>0})}(t,n)}).catch(e=>{r(t,n,{phase:"error",error:s(e)})}).finally(()=>t.inflight.delete(n));return t.inflight.set(n,i),i}function l(t){const n=i(t);return n?{revision:n.revision,topologies:n.topologies,states:n.states}:{revision:0,topologies:[],states:{}}}function u(t,n){const e=i(t);return e?(e.listeners.add(n),()=>e.listeners.delete(n)):()=>{}}function p(t){if(!0!==t?.user?.is_admin)throw a("permission")}function f(n){const e=i(n);return e?c(e,"zha",async()=>{if(p(n),"function"!=typeof n?.callWS)throw a("unsupported");return t(await n.callWS({type:"zha/devices"}))}):Promise.resolve()}function d(t){return null!==t&&"object"==typeof t?t:null}function h(t){const n=d(t),e=n?.payload??t;if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}}async function m(t,n){let e;try{return await Promise.race([t,new Promise((t,o)=>{e=globalThis.setTimeout(()=>o(a("timeout")),Math.max(1,n))})])}finally{void 0!==e&&globalThis.clearTimeout(e)}}function g(t,o,r=15e4){const s=i(t);if(!s)return Promise.resolve();const l=e(o);return c(s,`z2m:${l||String(o)}`,async()=>{if(p(t),!l)throw a("invalid_topic");const e=t.connection,o=e?.subscribeMessage;if("function"!=typeof o||"function"!=typeof t?.callService)throw a("unsupported");const i=function(){const t=globalThis.crypto;return"function"==typeof t?.randomUUID?`houseplan-${t.randomUUID()}`:`houseplan-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}(),s=Date.now()+Math.max(1,r);let c=!1,u=null,f=null,g=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{f=t,g=n}),b=[];try{const r=await o.call(e,t=>{!0===d(t)?.retain&&h(t)&&u?.()},{type:"mqtt/subscribe",topic:`${l}/bridge/info`});"function"==typeof r&&b.push(r);const p=await o.call(e,t=>{if(!0===d(t)?.retain)return;const n=h(t);null!==n?n&&function(t){const n=d(t),e=n?.transaction??d(n?.data)?.transaction;return"string"==typeof e||"number"==typeof e?String(e):null}(n)===i&&f?.(n):c&&g?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof p&&b.push(p),await m(y,Math.min(4e3,Math.max(1,s-Date.now()))),c=!0,await t.callService("mqtt","publish",{topic:`${l}/bridge/request/networkmap`,payload:JSON.stringify({type:"raw",routes:!1,transaction:i}),qos:0,retain:!1});const v=await m(w,s-Date.now()),_=d(v)?.status;if(_&&"ok"!==_)throw a("provider");return n(v,l)}finally{for(const t of b)try{t()}catch{}}})}export{f as readZhaTopology,g as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot};
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="44c8db0207714f5476f58cdacdfaae63754967422e492b7fadf3551ecaee4380";import{n as t,b as n}from"./zigbee-topology-DThgDHY1.js";import{aI as e}from"./houseplan-card-BQWwo3i7.js";const o=new WeakMap;function i(t){const n=function(t){const n=t?.connection||t;return!n||"object"!=typeof n&&"function"!=typeof n?null:n}(t);if(!n)return null;let e=o.get(n);return e||(e={revision:0,topologies:[],states:{},listeners:new Set,inflight:new Map},o.set(n,e)),e}function r(t,n,e){t.states={...t.states,[n]:e},function(t){t.revision++;for(const n of t.listeners)n()}(t)}function s(t){const n=t?.code;if("permission"===n||"unsupported"===n||"timeout"===n||"invalid_topic"===n||"invalid_payload"===n)return n;const e=String(t?.message||"").toLowerCase();return e.includes("unauthor")||e.includes("permission")?"permission":e.includes("unknown_command")||e.includes("not found")?"unsupported":"provider"}function a(t){return Object.assign(new Error(t),{code:t})}function c(t,n,e){const o=t.inflight.get(n);if(o)return o;r(t,n,{phase:"loading"});const i=e().then(n=>{if(!n.nodes.length&&n.warnings.some(t=>"invalid_payload"===t.code))throw a("invalid_payload");!function(t,n){t.topologies=[...t.topologies.filter(t=>!(t.provider===n.provider&&t.instanceId===n.instanceId)),n],r(t,"zha"===n.provider?"zha":`z2m:${n.instanceId}`,{phase:"ready",obtainedAt:n.obtainedAt,partial:n.warnings.length>0})}(t,n)}).catch(e=>{r(t,n,{phase:"error",error:s(e)})}).finally(()=>t.inflight.delete(n));return t.inflight.set(n,i),i}function l(t){const n=i(t);return n?{revision:n.revision,topologies:n.topologies,states:n.states}:{revision:0,topologies:[],states:{}}}function u(t,n){const e=i(t);return e?(e.listeners.add(n),()=>e.listeners.delete(n)):()=>{}}function f(t){if(!0!==t?.user?.is_admin)throw a("permission")}function p(n){const e=i(n);return e?c(e,"zha",async()=>{if(f(n),"function"!=typeof n?.callWS)throw a("unsupported");return t(await n.callWS({type:"zha/devices"}))}):Promise.resolve()}function d(t){return null!==t&&"object"==typeof t?t:null}function h(t){const n=d(t),e=n?.payload??t;if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}}async function m(t,n){let e;try{return await Promise.race([t,new Promise((t,o)=>{e=globalThis.setTimeout(()=>o(a("timeout")),Math.max(1,n))})])}finally{void 0!==e&&globalThis.clearTimeout(e)}}function g(t,o,r=15e4){const s=i(t);if(!s)return Promise.resolve();const l=e(o);return c(s,`z2m:${l||String(o)}`,async()=>{if(f(t),!l)throw a("invalid_topic");const e=t.connection,o=e?.subscribeMessage;if("function"!=typeof o||"function"!=typeof t?.callService)throw a("unsupported");const i=function(){const t=globalThis.crypto;return"function"==typeof t?.randomUUID?`houseplan-${t.randomUUID()}`:`houseplan-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}(),s=Date.now()+Math.max(1,r);let c=!1,u=null,p=null,g=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{p=t,g=n}),b=[];try{const r=await o.call(e,t=>{!0===d(t)?.retain&&h(t)&&u?.()},{type:"mqtt/subscribe",topic:`${l}/bridge/info`});"function"==typeof r&&b.push(r);const f=await o.call(e,t=>{if(!0===d(t)?.retain)return;const n=h(t);null!==n?n&&function(t){const n=d(t),e=n?.transaction??d(n?.data)?.transaction;return"string"==typeof e||"number"==typeof e?String(e):null}(n)===i&&p?.(n):c&&g?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof f&&b.push(f),await m(y,Math.min(4e3,Math.max(1,s-Date.now()))),c=!0,await t.callService("mqtt","publish",{topic:`${l}/bridge/request/networkmap`,payload:JSON.stringify({type:"raw",routes:!1,transaction:i}),qos:0,retain:!1});const v=await m(w,s-Date.now()),_=d(v)?.status;if(_&&"ok"!==_)throw a("provider");return n(v,l)}finally{for(const t of b)try{t()}catch{}}})}export{p as readZhaTopology,g as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot};
+1 -1
View File
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="33e3bf530b13e01b6cc86d437770676c16441418afa14b0324be617fc2d3bb22";try{await import("./houseplan-assets/houseplan-card-B1GLwcbS.js")}catch(e){if(!customElements.get("houseplan-card")){const l=String(navigator.language||"en").toLowerCase();const m=l.startsWith("ru")?"House Plan обновился — перезагрузите страницу (Ctrl+F5).":l.startsWith("de")?"House Plan wurde aktualisiert — bitte laden Sie die Seite neu (Strg+F5).":l.startsWith("fr")?"House Plan a été mis à jour — veuillez recharger la page (Ctrl+F5).":"House Plan was updated — please reload the page (Ctrl+F5).";customElements.define("houseplan-card",class extends HTMLElement{setConfig(){}getCardSize(){return 1}connectedCallback(){this.style.cssText="display:block;box-sizing:border-box;padding:16px;border:1px solid var(--divider-color,#e0e0e0);border-radius:var(--ha-card-border-radius,12px);background:var(--card-background-color,#fff);color:var(--primary-text-color,#212121);font:14px/1.4 var(--paper-font-body1_-_font-family,sans-serif)";this.textContent=m}})}console.error("[houseplan] stale houseplan-card.js: the implementation chunk is unavailable",e)}
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="44c8db0207714f5476f58cdacdfaae63754967422e492b7fadf3551ecaee4380";try{await import("./houseplan-assets/houseplan-card-BQWwo3i7.js")}catch(e){if(!customElements.get("houseplan-card")){const l=String(navigator.language||"en").toLowerCase();const m=l.startsWith("ru")?"House Plan обновился — перезагрузите страницу (Ctrl+F5).":l.startsWith("de")?"House Plan wurde aktualisiert — bitte laden Sie die Seite neu (Strg+F5).":l.startsWith("fr")?"House Plan a été mis à jour — veuillez recharger la page (Ctrl+F5).":"House Plan was updated — please reload the page (Ctrl+F5).";customElements.define("houseplan-card",class extends HTMLElement{setConfig(){}getCardSize(){return 1}connectedCallback(){this.style.cssText="display:block;box-sizing:border-box;padding:16px;border:1px solid var(--divider-color,#e0e0e0);border-radius:var(--ha-card-border-radius,12px);background:var(--card-background-color,#fff);color:var(--primary-text-color,#212121);font:14px/1.4 var(--paper-font-body1_-_font-family,sans-serif)";this.textContent=m}})}console.error("[houseplan] stale houseplan-card.js: the implementation chunk is unavailable",e)}
+1 -1
View File
File diff suppressed because one or more lines are too long
+4
View File
@@ -2,6 +2,10 @@
## Unreleased
- Fixed settings-dialog polish: the discard prompt's buttons no longer clip,
switch knobs sit evenly inside their tracks, and Room settings omit the
redundant heading ([#603](https://github.com/Matysh/houseplan-card/issues/603)).
## v1.77.0-beta.4 — 2026-09-21
- Polished the redesigned settings dialogs: switches, layer rows, opacity and
+4
View File
@@ -8,6 +8,10 @@
## Не выпущено
- Исправлена полировка диалогов: в подтверждении отмены правок кнопки больше
не обрезаются, шарик переключателя ровно стоит в дорожке, а настройки комнаты
не повторяют очевидный заголовок ([#603](https://github.com/Matysh/houseplan-card/issues/603)).
## v1.77.0-beta.4 — 2026-09-21
- Отполированы обновлённые диалоги настроек: тумблеры, строки слоёв,
+4 -4
View File
@@ -520,10 +520,10 @@ smallest to largest. Save creates that room and consumes exactly coincident
chain walls, Keep as walls rejects only that candidate, and Cancel leaves all
accepted walls in place with no partial rooms.
The room dialog is grouped into four cards: **Basics** (display name and Home
Assistant area side by side), **Fill**, **Sensor sources** (temperature and
humidity) and **Font sizes**. Each card explains itself behind the `?` next to
its heading.
The room dialog is grouped into four cards: the first has no heading (display
name and Home Assistant area side by side), followed by **Fill**, **Sensor
sources** (temperature and humidity) and **Font sizes**. The area help is next
to its field; the other cards keep their `?` beside their heading.
**Fill** starts with an **As the space** switch row: while it is on, the room
follows the space's fill mode and the caption says which one. Turn it off and a
+4 -4
View File
@@ -598,10 +598,10 @@ desktop: для точного рисования, Resize, модификато
«Сохранить», либо выберите **Оставить стенами**. Cancel/Esc отменяет всю
очередь без частично созданных комнат и оставляет нарисованные стены.
Диалог комнаты собран в четыре карточки: **Основное** (название и зона Home
Assistant в одну строку), **Заливка**, **Источники** (датчики температуры и
влажности) и **Размеры шрифтов**. Пояснение к каждой карточке открывается
кнопкой «?» рядом с её заголовком.
Диалог комнаты собран в четыре карточки: первая без заголовка (название и зона
Home Assistant в одну строку), затем **Заливка**, **Источники** (датчики
температуры и влажности) и **Размеры шрифтов**. Пояснение к зоне открывается
кнопкой «?» у поля; у остальных карточек — рядом с заголовком.
В **Заливке** стоит строка с тумблером **Как у пространства**: пока он включён,
комната следует режиму пространства, и подпись говорит, какому именно. Выключите
+7
View File
@@ -27,6 +27,13 @@
/** @type {SmokeLink[]} */
export const SMOKE_LINKS = [
{
symbols: ['formKitCss', 'renderRoomSettingsDialog'],
smokes: ['smoke_dialog_polish_603.mjs'],
because: '#603: the bundled form-kit track/knob box model, localized discard confirmation '
+ 'and headingless room card are measured in a browser; source imports cannot prove '
+ 'the rendered geometry or that both actions fit the real modal footer',
},
{
symbols: ['displayIsNeutral', 'displayWantsValue'],
smokes: ['smoke_static_icon.mjs', 'smoke_device_preview_parity.mjs'],
-1
View File
@@ -151,7 +151,6 @@ export function renderRoomSettingsDialog(this: HouseplanEditorRuntime): Template
${batchProgress ? html`<p class="hpf-hint" role="status" aria-live="polite">${batchProgress}</p>` : nothing}
${formCard({
id: 'basics',
title: t('room.group_basics'),
// §6.1: «?» стоит у зоны — пояснение про свободные зоны относится к ней, а не к карточке
body: fieldGrid([
field({
-1
View File
@@ -781,7 +781,6 @@
"toast.room_updated": "Raum aktualisiert",
"space.card_font": "Schriftgröße der Raumkarten",
"room.sizes_section": "Schriftgrößen",
"room.group_basics": "Allgemein",
"room.group_basics.help": "Der Bereich verbindet den Raum mit einem Home-Assistant-Bereich, aus dem seine Sensoren stammen. Ohne Bereich bleibt er Geometrie.",
"room.group_basics.help.aria": "Hilfe: Name und Bereich des Raums",
"room.group_fill": "Füllung",
-1
View File
@@ -781,7 +781,6 @@
"toast.room_updated": "Room updated",
"space.card_font": "Room-card font size",
"room.sizes_section": "Font sizes",
"room.group_basics": "Basics",
"room.group_basics.help": "The area links the room to a Home Assistant area, which is where its sensors come from. Without one the room stays geometry.",
"room.group_basics.help.aria": "Help: room name and area",
"room.group_fill": "Fill",
-1
View File
@@ -781,7 +781,6 @@
"toast.room_updated": "Pièce mise à jour",
"space.card_font": "Taille de police des cartes",
"room.sizes_section": "Tailles de police",
"room.group_basics": "Général",
"room.group_basics.help": "La zone relie la pièce à une zone Home Assistant, d’où viennent ses capteurs. Sans zone, la pièce reste géométrique.",
"room.group_basics.help.aria": "Aide : nom et zone de la pièce",
"room.group_fill": "Remplissage",
-1
View File
@@ -781,7 +781,6 @@
"toast.room_updated": "Комната обновлена",
"space.card_font": "Размер шрифта карточек",
"room.sizes_section": "Размеры шрифтов",
"room.group_basics": "Основное",
"room.group_basics.help": "Область связывает комнату с зоной Home Assistant: из неё берутся датчики. Без области комната остаётся геометрией.",
"room.group_basics.help.aria": "Подсказка: имя и область комнаты",
"room.group_fill": "Заливка",
+2 -2
View File
@@ -45,8 +45,8 @@
"dialog.review_fields": "{n} Feld(er) prüfen",
"dialog.discard_title": "Änderungen verwerfen?",
"dialog.discard_message": "Ihre Änderungen wurden nicht gespeichert.",
"dialog.discard_confirm": "Änderungen verwerfen",
"dialog.discard_keep": "Weiter bearbeiten",
"dialog.discard_confirm": "Verwerfen",
"dialog.discard_keep": "Fortfahren",
"gs.show_room_tooltip_hint": "Zeigen Sie auf einen Raum im Plan, um seine Übersicht zu sehen.",
"gs.radar_show_live_hint": "Blendet alle Live-Radarziele ein oder aus. Die Beobachtungsaufzeichnung wird dadurch nicht gestartet oder gestoppt.",
"gs.bg_custom_hint": "Eigene Hintergrundfarbe.",
+2 -2
View File
@@ -45,8 +45,8 @@
"dialog.review_fields": "Review {n} field(s)",
"dialog.discard_title": "Discard your changes?",
"dialog.discard_message": "Your changes haven’t been saved.",
"dialog.discard_confirm": "Discard changes",
"dialog.discard_keep": "Keep editing",
"dialog.discard_confirm": "Discard",
"dialog.discard_keep": "Continue",
"gs.show_room_tooltip_hint": "Hover a room on the plan to see its summary.",
"gs.radar_show_live_hint": "Hides or shows all live radar targets. This does not start or stop observation recording.",
"gs.bg_custom_hint": "Custom background color.",
+1 -1
View File
@@ -46,7 +46,7 @@
"dialog.discard_title": "Abandonner vos modifications ?",
"dialog.discard_message": "Vos modifications n’ont pas été enregistrées.",
"dialog.discard_confirm": "Abandonner",
"dialog.discard_keep": "Continuer la modification",
"dialog.discard_keep": "Continuer",
"gs.show_room_tooltip_hint": "Survolez une pièce sur le plan pour voir son résumé.",
"gs.radar_show_live_hint": "Affiche ou masque toutes les cibles radar en direct. Cela ne démarre ni n’arrête l’enregistrement d’observation.",
"gs.bg_custom_hint": "Couleur de fond personnalisée.",
+2 -2
View File
@@ -45,8 +45,8 @@
"dialog.review_fields": "Проверьте поля: {n}",
"dialog.discard_title": "Отменить изменения?",
"dialog.discard_message": "Изменения не сохранены.",
"dialog.discard_confirm": "Отменить изменения",
"dialog.discard_keep": "Продолжить редактирование",
"dialog.discard_confirm": "Отменить",
"dialog.discard_keep": "Продолжить",
"gs.show_room_tooltip_hint": "Наведите на комнату на плане, чтобы увидеть сводку.",
"gs.radar_show_live_hint": "Показывает или скрывает все живые цели радаров. Запись наблюдения не запускается и не останавливается.",
"gs.bg_custom_hint": "Свой цвет фона.",
+1
View File
@@ -267,6 +267,7 @@ function extrasCss(options: FormKitCssOptions): string {
.${p}-toggle > input::before {
content: '';
position: absolute;
box-sizing: border-box;
width: 36px;
height: 22px;
inset: 11px 4px;
+1
View File
@@ -141,6 +141,7 @@
.hpf-toggle > input::before {
content: '';
position: absolute;
box-sizing: border-box;
width: 36px;
height: 22px;
inset: 11px 4px;
+1
View File
@@ -127,6 +127,7 @@
.hpf-toggle > input::before {
content: '';
position: absolute;
box-sizing: border-box;
width: 36px;
height: 22px;
inset: 11px 4px;