fix(dialogs): короткие подписи сегментов заливки по референсу — общие ключи fill.seg_* (#600)

Продолжение r1 M1: полные fill.* в RU («По силе зигби-сигнала», «По
температуре») не входили одной строкой в четыре колонки сегмента пространства
и переносились на вторую строку кнопками. Референс (§4.2 reference/app.js
fillOptions, §6.1) даёт короткие подписи Custom | Zigbee | Lights |
Temperature — они и стоят в обоих сегментах общими ключами ленивого словаря
fill.seg_* (en/ru/de/fr); room.fill_seg_* удалены. USER-GUIDE ru/en,
ACCEPTANCE.md и smoke_ux_fixes обновлены; changelog называет короткие подписи.

Три эталона меняются к лучшему и требуют повторной приёмки:
device-dialog-desktop-en и toggle-entity-dialog-desktop-en («Colour and
brightness» одной строкой вместо двух), space-room-color-popover-desktop-ru
(сегмент RU без разорванных слов); остальные десять сцен — passed на этом
дереве диагностически.

Issue: #600
User-Visible: yes
This commit is contained in:
Claude
2026-09-20 16:53:08 +03:00
parent 8dc60aec6e
commit ec97fd9524
54 changed files with 534 additions and 520 deletions
@@ -1,312 +1,312 @@
{
"schema": 1,
"fingerprint": "54fcdd48a85ca3f133f7a631e38722f7eb58d88c475a1cfb768130946dffad32",
"fingerprint": "0cdc9f2c04830cb52c4e16ec0ce41af1a29dc2a68ae01cf02d1d545bc692ba82",
"entry": "houseplan-card.js",
"panelEntry": "houseplan-panel.js",
"initialViewFiles": [
"houseplan-assets/houseplan-card-9fMSy3y3.js",
"houseplan-assets/houseplan-card-COwlrP1O.js",
"houseplan-card.js"
],
"initialViewGzipBytes": 289852,
"initialViewGzipBytes": 289826,
"initialPanelFiles": [
"houseplan-assets/houseplan-card-9fMSy3y3.js",
"houseplan-assets/houseplan-card-COwlrP1O.js",
"houseplan-panel.js"
],
"initialPanelGzipBytes": 291374,
"initialPanelGzipBytes": 291348,
"initialPanelOnlyFiles": [
"houseplan-panel.js"
],
"initialPanelOnlyGzipBytes": 2325,
"initialPanelOnlyGzipBytes": 2321,
"lazyFiles": [
"houseplan-assets/backdrop-pick-BJOCHJxe.js",
"houseplan-assets/de-DVCIKwC0.js",
"houseplan-assets/editor-C694OxAO.js",
"houseplan-assets/form-kit.styles-CKUQLdmn.js",
"houseplan-assets/fr-DHxhbm5E.js",
"houseplan-assets/furniture-plan-art.generated-DaxkO8ol.js",
"houseplan-assets/houseplan-editor-runtime-AzCVhtuX.js",
"houseplan-assets/houseplan-onboarding-runtime-Dp2b84fm.js",
"houseplan-assets/hp-zigbee-topology-overlay-CbSbT5WT.js",
"houseplan-assets/iso-scene-render-fYqz_-Ot.js",
"houseplan-assets/live-interaction-runtime-XyTIhKAA.js",
"houseplan-assets/pdf-export-D3vmqIY6.js",
"houseplan-assets/summary-panel-runtime-loaded-CX2cplA1.js",
"houseplan-assets/zigbee-topology-CI6PJorK.js",
"houseplan-assets/zigbee-topology-runtime-d-S2Abll.js"
"houseplan-assets/backdrop-pick-CO67Izwr.js",
"houseplan-assets/de-Du5_pA7f.js",
"houseplan-assets/editor-CHfYmrt5.js",
"houseplan-assets/form-kit.styles-COBHNvsH.js",
"houseplan-assets/fr-B36ReLzT.js",
"houseplan-assets/furniture-plan-art.generated-DiBFwQID.js",
"houseplan-assets/houseplan-editor-runtime-DlbJeVBX.js",
"houseplan-assets/houseplan-onboarding-runtime-BWepbRo2.js",
"houseplan-assets/hp-zigbee-topology-overlay-DXZYfUKs.js",
"houseplan-assets/iso-scene-render-D587ZbM1.js",
"houseplan-assets/live-interaction-runtime-C2jrtBKS.js",
"houseplan-assets/pdf-export-cPUyR7qn.js",
"houseplan-assets/summary-panel-runtime-loaded-D9vYgudE.js",
"houseplan-assets/zigbee-topology-CDLyN3-N.js",
"houseplan-assets/zigbee-topology-runtime-CcDynYR9.js"
],
"lazyGzipBytes": 459551,
"lazyGzipBytes": 459588,
"lazyEditorFiles": [
"houseplan-assets/backdrop-pick-BJOCHJxe.js",
"houseplan-assets/editor-C694OxAO.js",
"houseplan-assets/form-kit.styles-CKUQLdmn.js",
"houseplan-assets/furniture-plan-art.generated-DaxkO8ol.js",
"houseplan-assets/houseplan-editor-runtime-AzCVhtuX.js",
"houseplan-assets/zigbee-topology-CI6PJorK.js"
"houseplan-assets/backdrop-pick-CO67Izwr.js",
"houseplan-assets/editor-CHfYmrt5.js",
"houseplan-assets/form-kit.styles-COBHNvsH.js",
"houseplan-assets/furniture-plan-art.generated-DiBFwQID.js",
"houseplan-assets/houseplan-editor-runtime-DlbJeVBX.js",
"houseplan-assets/zigbee-topology-CDLyN3-N.js"
],
"lazyEditorGzipBytes": 242989,
"lazyEditorGzipBytes": 243061,
"lazyOnboardingFiles": [
"houseplan-assets/backdrop-pick-BJOCHJxe.js",
"houseplan-assets/form-kit.styles-CKUQLdmn.js",
"houseplan-assets/houseplan-onboarding-runtime-Dp2b84fm.js"
"houseplan-assets/backdrop-pick-CO67Izwr.js",
"houseplan-assets/form-kit.styles-COBHNvsH.js",
"houseplan-assets/houseplan-onboarding-runtime-BWepbRo2.js"
],
"lazyOnboardingGzipBytes": 33577,
"lazyOnboardingGzipBytes": 33661,
"lazyLocaleFiles": [
"houseplan-assets/de-DVCIKwC0.js",
"houseplan-assets/fr-DHxhbm5E.js"
"houseplan-assets/de-Du5_pA7f.js",
"houseplan-assets/fr-B36ReLzT.js"
],
"lazyLocaleGzipBytes": 55383,
"lazyLocaleGzipBytes": 55374,
"lazyIsometricFiles": [
"houseplan-assets/iso-scene-render-fYqz_-Ot.js"
"houseplan-assets/iso-scene-render-D587ZbM1.js"
],
"lazyIsometricGzipBytes": 17643,
"lazyIsometricGzipBytes": 17640,
"lazyFurnitureArtFiles": [
"houseplan-assets/furniture-plan-art.generated-DaxkO8ol.js"
"houseplan-assets/furniture-plan-art.generated-DiBFwQID.js"
],
"lazyFurnitureArtGzipBytes": 16942,
"lazyFurnitureArtGzipBytes": 16944,
"lazyPdfFiles": [
"houseplan-assets/furniture-plan-art.generated-DaxkO8ol.js",
"houseplan-assets/pdf-export-D3vmqIY6.js"
"houseplan-assets/furniture-plan-art.generated-DiBFwQID.js",
"houseplan-assets/pdf-export-cPUyR7qn.js"
],
"lazyPdfGzipBytes": 126817,
"files": [
{
"path": "houseplan-assets/backdrop-pick-BJOCHJxe.js",
"sha256": "c24f2896a89f71e0a4147184f93b0e69e0c22eb705b772e644e9fc131ff879f4",
"rawBytes": 74375,
"gzipBytes": 24031,
"path": "houseplan-assets/backdrop-pick-CO67Izwr.js",
"sha256": "a4bc180faa3202e1d8f63aa96c8987008e488d6dd3ca4dca3f7a710725c11209",
"rawBytes": 74674,
"gzipBytes": 24120,
"isEntry": false,
"imports": [
"houseplan-assets/form-kit.styles-CKUQLdmn.js",
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/form-kit.styles-COBHNvsH.js",
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/de-DVCIKwC0.js",
"sha256": "6f716933e452260c6e7c0c40d7193e750b6fc443f162cca5cb814c734142dde5",
"path": "houseplan-assets/de-Du5_pA7f.js",
"sha256": "db29c690a55ac67c07065e1666ecd0cedff19c31031aa4560fff9c4562174329",
"rawBytes": 92513,
"gzipBytes": 27933,
"gzipBytes": 27927,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/editor-C694OxAO.js",
"sha256": "f95242b8000cddf2fe1856a5518883c00a27a90c2983f228003db0189dffc1b4",
"path": "houseplan-assets/editor-CHfYmrt5.js",
"sha256": "0d50e2fd290781676e619648f2da76fa53fc31669d9d61c3f7bdcce496708e0d",
"rawBytes": 3833,
"gzipBytes": 1583,
"gzipBytes": 1581,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/form-kit.styles-CKUQLdmn.js",
"sha256": "44a654e7c905948ab4bb363514532c13e67e3e54eee37e4af0ec8447f706fbc1",
"path": "houseplan-assets/form-kit.styles-COBHNvsH.js",
"sha256": "2bede296d4c3a3347ee9bdde605a657e88c7b2ae9097aaffd154b09f8bbdcb0c",
"rawBytes": 23544,
"gzipBytes": 4716,
"gzipBytes": 4715,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/fr-DHxhbm5E.js",
"sha256": "f603ade3217ebe9959225379598608583ec29ab654dc257f57ae894d85ca448f",
"path": "houseplan-assets/fr-B36ReLzT.js",
"sha256": "9c2ee16aed204d874d85a67a12105fa454613bb4c80f79a363367e9c9f2fa86c",
"rawBytes": 94824,
"gzipBytes": 27450,
"gzipBytes": 27447,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/furniture-plan-art.generated-DaxkO8ol.js",
"sha256": "86d1074252f182c84d47285560a5b22c26724e21f21d03fbac4583973a9c11a7",
"path": "houseplan-assets/furniture-plan-art.generated-DiBFwQID.js",
"sha256": "6face3496a7ad5c9faf547b8ecefbb2f68c0e2759fc6ff1ed25a5741c589ea44",
"rawBytes": 52033,
"gzipBytes": 16942,
"gzipBytes": 16944,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-card-9fMSy3y3.js",
"sha256": "e475fbae1c25540d2e349d4441bc963a4ff4181b8659fd491309dd1e578f716a",
"path": "houseplan-assets/houseplan-card-COwlrP1O.js",
"sha256": "d9760789aad7c05fc71a0eba803dea8a0e0ebdb00e9aa12152fa814a68168df4",
"rawBytes": 1027208,
"gzipBytes": 289049,
"gzipBytes": 289027,
"isEntry": false,
"imports": [],
"dynamicImports": [
"houseplan-assets/de-DVCIKwC0.js",
"houseplan-assets/editor-C694OxAO.js",
"houseplan-assets/fr-DHxhbm5E.js",
"houseplan-assets/furniture-plan-art.generated-DaxkO8ol.js",
"houseplan-assets/houseplan-editor-runtime-AzCVhtuX.js",
"houseplan-assets/houseplan-onboarding-runtime-Dp2b84fm.js",
"houseplan-assets/hp-zigbee-topology-overlay-CbSbT5WT.js",
"houseplan-assets/iso-scene-render-fYqz_-Ot.js",
"houseplan-assets/live-interaction-runtime-XyTIhKAA.js",
"houseplan-assets/pdf-export-D3vmqIY6.js",
"houseplan-assets/summary-panel-runtime-loaded-CX2cplA1.js"
"houseplan-assets/de-Du5_pA7f.js",
"houseplan-assets/editor-CHfYmrt5.js",
"houseplan-assets/fr-B36ReLzT.js",
"houseplan-assets/furniture-plan-art.generated-DiBFwQID.js",
"houseplan-assets/houseplan-editor-runtime-DlbJeVBX.js",
"houseplan-assets/houseplan-onboarding-runtime-BWepbRo2.js",
"houseplan-assets/hp-zigbee-topology-overlay-DXZYfUKs.js",
"houseplan-assets/iso-scene-render-D587ZbM1.js",
"houseplan-assets/live-interaction-runtime-C2jrtBKS.js",
"houseplan-assets/pdf-export-cPUyR7qn.js",
"houseplan-assets/summary-panel-runtime-loaded-D9vYgudE.js"
]
},
{
"path": "houseplan-assets/houseplan-editor-runtime-AzCVhtuX.js",
"sha256": "e84feb1cf320be8297982134d45a5adceaec5a50f95aaa884e6e53cae2664edd",
"rawBytes": 677390,
"gzipBytes": 188290,
"path": "houseplan-assets/houseplan-editor-runtime-DlbJeVBX.js",
"sha256": "a040c3b1bfb3caab29ed3925f8d9155d147ee53817007a7571169373f7ce8aee",
"rawBytes": 677322,
"gzipBytes": 188275,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-BJOCHJxe.js",
"houseplan-assets/form-kit.styles-CKUQLdmn.js",
"houseplan-assets/furniture-plan-art.generated-DaxkO8ol.js",
"houseplan-assets/houseplan-card-9fMSy3y3.js",
"houseplan-assets/zigbee-topology-CI6PJorK.js"
"houseplan-assets/backdrop-pick-CO67Izwr.js",
"houseplan-assets/form-kit.styles-COBHNvsH.js",
"houseplan-assets/furniture-plan-art.generated-DiBFwQID.js",
"houseplan-assets/houseplan-card-COwlrP1O.js",
"houseplan-assets/zigbee-topology-CDLyN3-N.js"
],
"dynamicImports": [
"houseplan-assets/zigbee-topology-runtime-d-S2Abll.js"
"houseplan-assets/zigbee-topology-runtime-CcDynYR9.js"
]
},
{
"path": "houseplan-assets/houseplan-onboarding-runtime-Dp2b84fm.js",
"sha256": "64367a8743ea22c4a9a350456878b7006ba01a346cc89eabb786e3c1d944ad3a",
"path": "houseplan-assets/houseplan-onboarding-runtime-BWepbRo2.js",
"sha256": "31cc896b2dd622f721dba8aec48f2bc03a64efe2fe038a24bbfddacff85bfb2f",
"rawBytes": 15667,
"gzipBytes": 4830,
"gzipBytes": 4826,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-BJOCHJxe.js",
"houseplan-assets/form-kit.styles-CKUQLdmn.js",
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/backdrop-pick-CO67Izwr.js",
"houseplan-assets/form-kit.styles-COBHNvsH.js",
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/hp-zigbee-topology-overlay-CbSbT5WT.js",
"sha256": "b2fa73ad0fc3353630e380abe1f63f483113c7bfc5f1e634150c2f0e12b4e0cf",
"path": "houseplan-assets/hp-zigbee-topology-overlay-DXZYfUKs.js",
"sha256": "9046135d11c562249abb70e69b0169355f14381ce87c86dc0ba3fbfbb83f1cf4",
"rawBytes": 10759,
"gzipBytes": 3686,
"gzipBytes": 3682,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-9fMSy3y3.js",
"houseplan-assets/zigbee-topology-CI6PJorK.js",
"houseplan-assets/zigbee-topology-runtime-d-S2Abll.js"
"houseplan-assets/houseplan-card-COwlrP1O.js",
"houseplan-assets/zigbee-topology-CDLyN3-N.js",
"houseplan-assets/zigbee-topology-runtime-CcDynYR9.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/iso-scene-render-fYqz_-Ot.js",
"sha256": "009a9217d1c522a5c2b6f9d5ea3450e2a77aafe52096d9c1d19902a18c6632f9",
"path": "houseplan-assets/iso-scene-render-D587ZbM1.js",
"sha256": "2182acd9989c8fba95b57ec8d49342ad225ff5b846411287e45cfa9b64080f29",
"rawBytes": 51983,
"gzipBytes": 17643,
"gzipBytes": 17640,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/live-interaction-runtime-XyTIhKAA.js",
"sha256": "0fd38fd067699ea97f11565db7c4ae86c1bcc867041e7e3377408f40e741f03f",
"path": "houseplan-assets/live-interaction-runtime-C2jrtBKS.js",
"sha256": "af56aaf8ab0c7dee9f0e3de23b4c4fbe26b98f904a6a294e8fd4e473cb2dc9c5",
"rawBytes": 8216,
"gzipBytes": 3209,
"gzipBytes": 3201,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/pdf-export-D3vmqIY6.js",
"sha256": "4c60cf0b34a17777c60c4849f1ee42841fb74b69466366adcf94cf97eec9ad2e",
"path": "houseplan-assets/pdf-export-cPUyR7qn.js",
"sha256": "aab1097826135ac16f9fdf8d8f3d989c1485399ee7d494d68a3bf9918c99307d",
"rawBytes": 236247,
"gzipBytes": 109875,
"gzipBytes": 109873,
"isEntry": false,
"imports": [
"houseplan-assets/furniture-plan-art.generated-DaxkO8ol.js",
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/furniture-plan-art.generated-DiBFwQID.js",
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/summary-panel-editor-CNT_mev4.js",
"sha256": "ef5dcf22a38fb5df834dcce277de7967303b8025167527483aab726dd30f3a2c",
"rawBytes": 14867,
"gzipBytes": 3427,
"path": "houseplan-assets/summary-panel-editor-CeUXHEmo.js",
"sha256": "744b8ce4dea90a3a42af2b2356d558224531dbd0aac73ee7e8f18497d25fecc5",
"rawBytes": 14862,
"gzipBytes": 3420,
"isEntry": false,
"imports": [
"houseplan-assets/form-kit.styles-CKUQLdmn.js",
"houseplan-assets/houseplan-card-9fMSy3y3.js",
"houseplan-assets/summary-panel-runtime-loaded-CX2cplA1.js"
"houseplan-assets/form-kit.styles-COBHNvsH.js",
"houseplan-assets/houseplan-card-COwlrP1O.js",
"houseplan-assets/summary-panel-runtime-loaded-D9vYgudE.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/summary-panel-metrics-BhoEMuKv.js",
"sha256": "0b4f1816c4069cc62f20dccaeeeceb82c139dee339782833e594e46aa768fe06",
"path": "houseplan-assets/summary-panel-metrics-CtDve8JT.js",
"sha256": "ac5d957013d3db30ab00a6c3e94ac5512145270d85a3f155c5ee131a88aa8ba2",
"rawBytes": 2611,
"gzipBytes": 1308,
"gzipBytes": 1305,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/summary-panel-runtime-loaded-CX2cplA1.js",
"sha256": "95e65a1d327f9d2f90796b9ae7754e0d8a64c15e44a82cefe329dca8f6115689",
"path": "houseplan-assets/summary-panel-runtime-loaded-D9vYgudE.js",
"sha256": "36caf881e1133ab072f8d6df613677b3564a35dee37a502117040c783089a1b6",
"rawBytes": 72733,
"gzipBytes": 20172,
"gzipBytes": 20170,
"isEntry": false,
"imports": [
"houseplan-assets/form-kit.styles-CKUQLdmn.js",
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/form-kit.styles-COBHNvsH.js",
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": [
"houseplan-assets/summary-panel-editor-CNT_mev4.js",
"houseplan-assets/summary-panel-metrics-BhoEMuKv.js"
"houseplan-assets/summary-panel-editor-CeUXHEmo.js",
"houseplan-assets/summary-panel-metrics-CtDve8JT.js"
]
},
{
"path": "houseplan-assets/zigbee-topology-CI6PJorK.js",
"sha256": "6e503b93a48deeda46368588fd4eebf7215aa4a2928e1162747da8b3ffe4b67a",
"path": "houseplan-assets/zigbee-topology-CDLyN3-N.js",
"sha256": "898295e433fd3b841d1299feb676f9efce98b10b1390c4306529a4e676598f78",
"rawBytes": 18962,
"gzipBytes": 7427,
"gzipBytes": 7426,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/zigbee-topology-runtime-d-S2Abll.js",
"sha256": "f6aad0abbf74532abc1c705d1268cce95048e7dbdc81a52a776a996c8b70f969",
"path": "houseplan-assets/zigbee-topology-runtime-CcDynYR9.js",
"sha256": "6d9ba4d38f5b6ef8793118241c99572d5887e88ceab666c56ffcf8931faeaf69",
"rawBytes": 3942,
"gzipBytes": 1764,
"gzipBytes": 1761,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-9fMSy3y3.js",
"houseplan-assets/zigbee-topology-CI6PJorK.js"
"houseplan-assets/houseplan-card-COwlrP1O.js",
"houseplan-assets/zigbee-topology-CDLyN3-N.js"
],
"dynamicImports": []
},
{
"path": "houseplan-card.js",
"sha256": "c796620c6d67c8fb18479291279eb410302ad541ed2b3679d59b780f74e8935b",
"sha256": "c34e1813f3085f66287231ad1f53c45d11a173133dc459934dbcaca630aea950",
"rawBytes": 1205,
"gzipBytes": 803,
"gzipBytes": 799,
"isEntry": true,
"imports": [
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
},
{
"path": "houseplan-panel.js",
"sha256": "c134452d829194d8d630e5859f8142d345e15348a706d7a83d5d9328b0df3faa",
"sha256": "860ad9ba4933e3d40d7bc490aa14d366eae9eab12096bbbf06e1838c473ce57b",
"rawBytes": 6165,
"gzipBytes": 2325,
"gzipBytes": 2321,
"isEntry": true,
"imports": [
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
}
File diff suppressed because one or more lines are too long
@@ -1,14 +1,14 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58d88c475a1cfb768130946dffad32";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-9fMSy3y3.js";class f 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,f={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")},h=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__="0cdc9f2c04830cb52c4e16ec0ce41af1a29dc2a68ae01cf02d1d545bc692ba82";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-COwlrP1O.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}
.computeLabel=${e=>f[e.name]||e.name}
.computeLabel=${e=>h[e.name]||e.name}
@value-changed=${this._valueChanged}
></ha-form>`;return c`
${d(h.slice(0,3))}
${d(f.slice(0,3))}
${_?c`<div class="default-floor-error" role="alert"
style="color:var(--error-color,#db4437);margin:-4px 0 12px;overflow-wrap:anywhere">
${t(s,"editor.default_floor_missing",{id:_})}
</div>`:a}
${d(h.slice(3))}
`}_valueChanged(e){const o={...this._config,...e.detail.value};""===o.floor?delete o.floor:o.floor===this._floorToken&&(o.floor=this._config?.floor);const t=new Event("config-changed",{bubbles:!0,composed:!0});t.detail={config:o},this.dispatchEvent(t)}}f.properties={hass:{attribute:!1},_config:{state:!0},_spaces:{state:!0}},customElements.get("houseplan-card-editor")||customElements.define("houseplan-card-editor",f);
${d(f.slice(3))}
`}_valueChanged(e){const o={...this._config,...e.detail.value};""===o.floor?delete o.floor:o.floor===this._floorToken&&(o.floor=this._config?.floor);const t=new Event("config-changed",{bubbles:!0,composed:!0});t.detail={config:o},this.dispatchEvent(t)}}h.properties={hass:{attribute:!1},_config:{state:!0},_spaces:{state:!0}},customElements.get("houseplan-card-editor")||customElements.define("houseplan-card-editor",h);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58d88c475a1cfb768130946dffad32";import{c as a,A as s}from"./houseplan-card-9fMSy3y3.js";import{s as e,n as t,a as l,m as r,b as o,c as i,d as u}from"./summary-panel-runtime-loaded-CX2cplA1.js";import"./form-kit.styles-CKUQLdmn.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&&!e(t(d.draft),d.base),p=$&&!d.busy&&!y,v=a=>n.find(s=>s.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__="0cdc9f2c04830cb52c4e16ec0ce41af1a29dc2a68ae01cf02d1d545bc692ba82";import{c as a,A as e}from"./houseplan-card-COwlrP1O.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-D9vYgudE.js";import"./form-kit.styles-COBHNvsH.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"
@@ -10,31 +10,31 @@ globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58
dismiss-on-scrim aria-busy=${String(d.busy)}
@hp-close=${k}>
<div class="body summary-editor" @click=${()=>m.closeSource()}>
${d.localOnly?a`<p class="summary-local-hint">${b(d.localOnlyHint)}</p>`:s}
${d.localOnly?a`<p class="summary-local-hint">${b(d.localOnlyHint)}</p>`:e}
<section class="summary-general" aria-labelledby="summary-general-title">
<h3 id="summary-general-title">${b("summary.general_settings")}</h3>
<div class="summary-general-grid">
${d.localOnly?s:a`<div class="summary-field">
${d.localOnly?e:a`<div class="summary-field">
<label for="summary-panel-title">${b("summary.panel_title")}</label>
<input id="summary-panel-title" type="text" .value=${d.draft.title}
?disabled=${d.busy}
data-summary-error=${String(d.attempted&&"title"===y?.path)}
aria-invalid=${"error"===v("title")?.kind?"true":"false"}
@input=${a=>m.mutate(s=>{s.title=a.target.value})} />
${v("title")?a`<div class="summary-problem error">${h(v("title"))}</div>`:s}
@input=${a=>m.mutate(e=>{e.title=a.target.value})} />
${v("title")?a`<div class="summary-problem error">${h(v("title"))}</div>`:e}
</div>`}
${g}
${d.localOnly?s:a`<label class="summary-switch" for="summary-mobile-show">
${d.localOnly?e:a`<label class="summary-switch" for="summary-mobile-show">
<span class="summary-switch-caption"><strong>${b("summary.show_mobile")}</strong>
<small id="summary-mobile-show-hint">${b("summary.show_mobile_hint")}</small></span>
<input id="summary-mobile-show" data-summary-mobile-show type="checkbox"
.checked=${d.draft.show_on_mobile} ?disabled=${!d.localShow||d.busy}
aria-label=${b("summary.show_mobile")} aria-describedby="summary-mobile-show-hint"
@change=${a=>m.mutate(s=>{s.show_on_mobile=a.target.checked})} /></label>`}
@change=${a=>m.mutate(e=>{e.show_on_mobile=a.target.checked})} /></label>`}
</div>
${m.storageUnavailable?a`<div class="summary-problem warning">${b("summary.storage_unavailable")}</div>`:s}
${m.storageUnavailable?a`<div class="summary-problem warning">${b("summary.storage_unavailable")}</div>`:e}
</section>
${d.localOnly?s:a`
${d.localOnly?e:a`
<section class="summary-blocks-card" aria-labelledby="summary-blocks-title">
<header class="summary-blocks-heading">
<div><h3 id="summary-blocks-title">${b("summary.blocks")}</h3>
@@ -42,7 +42,7 @@ globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58
<span class="summary-block-count">${b("summary.block_count").replace("{count}",String(d.draft.blocks.length)).replace("{limit}","10")}</span>
</header>
<div class="summary-editor-blocks">
${d.draft.blocks.map((e,t)=>{const u=`blocks.${t}`,n=v(`${u}.scope`);return a`<article class="summary-editor-block"
${d.draft.blocks.map((s,t)=>{const u=`blocks.${t}`,n=v(`${u}.scope`);return a`<article class="summary-editor-block"
@dragover=${a=>a.preventDefault()}
@drop=${a=>m.drop(a,`block:${t}`)}>
<div class="summary-block-head">
@@ -57,40 +57,40 @@ globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58
?disabled=${t===d.draft.blocks.length-1||d.busy}
@click=${()=>m.mutate(a=>{a.blocks=r(a.blocks,t,t+1)})}>${l("down")}</button>
</div>
<input class="summary-block-title" type="text" .value=${e.title}
<input class="summary-block-title" type="text" .value=${s.title}
placeholder=${b("summary.block_title")} aria-label=${b("summary.block_title")}
?disabled=${d.busy}
data-summary-error=${String(d.attempted&&y?.path===`${u}.title`)}
aria-invalid=${"error"===v(`${u}.title`)?.kind?"true":"false"}
@input=${a=>m.mutate(s=>{s.blocks[t].title=a.target.value})} />
@input=${a=>m.mutate(e=>{e.blocks[t].title=a.target.value})} />
<button class="summary-icon-button summary-visibility" type="button"
?disabled=${d.busy} aria-pressed=${String(e.visible)}
title=${b(e.visible?"summary.hide_block":"summary.show_block")}
aria-label=${b(e.visible?"summary.hide_block":"summary.show_block")}
@click=${()=>m.mutate(a=>{a.blocks[t].visible=!a.blocks[t].visible})}>${l(e.visible?"eye":"eyeOff")}</button>
${v(`${u}.title`)?a`<div class="summary-problem error summary-block-title-error">${h(v(`${u}.title`))}</div>`:s}
?disabled=${d.busy} aria-pressed=${String(s.visible)}
title=${b(s.visible?"summary.hide_block":"summary.show_block")}
aria-label=${b(s.visible?"summary.hide_block":"summary.show_block")}
@click=${()=>m.mutate(a=>{a.blocks[t].visible=!a.blocks[t].visible})}>${l(s.visible?"eye":"eyeOff")}</button>
${v(`${u}.title`)?a`<div class="summary-problem error summary-block-title-error">${h(v(`${u}.title`))}</div>`:e}
<div class="summary-scope">
<select .value=${e.scope.type} ?disabled=${d.busy}
<select .value=${s.scope.type} ?disabled=${d.busy}
aria-label=${b("summary.scope")}
@change=${a=>m.mutate(s=>{s.blocks[t].scope="space"===a.target.value?{type:"space",space_id:c._space}:{type:"all"}})}>
<option value="all" ?selected=${"all"===e.scope.type}>${b("summary.scope_all")}</option>
<option value="space" ?selected=${"space"===e.scope.type}>${b("summary.scope_space")}</option>
@change=${a=>m.mutate(e=>{e.blocks[t].scope="space"===a.target.value?{type:"space",space_id:c._space}:{type:"all"}})}>
<option value="all" ?selected=${"all"===s.scope.type}>${b("summary.scope_all")}</option>
<option value="space" ?selected=${"space"===s.scope.type}>${b("summary.scope_space")}</option>
</select>
${"space"===e.scope.type?a`<select .value=${e.scope.space_id}
${"space"===s.scope.type?a`<select .value=${s.scope.space_id}
?disabled=${d.busy} aria-label=${b("summary.scope_space")}
data-summary-error=${String(d.attempted&&y?.path===`${u}.scope`)}
aria-invalid=${"error"===n?.kind?"true":"false"}
@change=${a=>m.mutate(s=>{const e=s.blocks[t].scope;"space"===e.type&&(e.space_id=a.target.value)})}>
${c._model.some(a=>a.id===e.scope.space_id)?s:a`<option value=${e.scope.space_id} selected>${e.scope.space_id}</option>`}
${c._model.map(s=>a`<option value=${s.id}
?selected=${s.id===e.scope.space_id}>${s.title}</option>`)}
</select>`:s}
@change=${a=>m.mutate(e=>{const s=e.blocks[t].scope;"space"===s.type&&(s.space_id=a.target.value)})}>
${c._model.some(a=>a.id===s.scope.space_id)?e:a`<option value=${s.scope.space_id} selected>${s.scope.space_id}</option>`}
${c._model.map(e=>a`<option value=${e.id}
?selected=${e.id===s.scope.space_id}>${e.title}</option>`)}
</select>`:e}
</div>
${n?a`<div class="summary-problem summary-scope-problem ${n.kind}">${h(n)}</div>`:s}
${n?a`<div class="summary-problem summary-scope-problem ${n.kind}">${h(n)}</div>`:e}
</div>
<div class="summary-block-body">
<div class="summary-editor-values">
${e.values.map((i,c)=>{const n=`${u}.values.${c}`,$=v(`${n}.source`),p=m.sourceToken(i.source),k=d.activeSource?.blockId===e.id&&d.activeSource.valueId===i.id,g="system"===i.source.type?b(`summary.system.${i.source.key}`):i.source.entity_id?m.entityIndex.labels.get(i.source.entity_id)||i.source.entity_id:b("summary.select_source"),_="system"===i.source.type?b("summary.system_source"):i.source.entity_id,f=k?o(m.entityIndex,d.entityFilter):null,w="entity"===i.source.type&&!!i.source.entity_id&&!m.entityIndex.labels.has(i.source.entity_id),S=`${e.id}\n${i.id}`;return a`<div class="summary-editor-value"
${s.values.map((i,c)=>{const n=`${u}.values.${c}`,$=v(`${n}.source`),p=m.sourceToken(i.source),k=d.activeSource?.blockId===s.id&&d.activeSource.valueId===i.id,g="system"===i.source.type?b(`summary.system.${i.source.key}`):i.source.entity_id?m.entityIndex.labels.get(i.source.entity_id)||i.source.entity_id:b("summary.select_source"),_="system"===i.source.type?b("summary.system_source"):i.source.entity_id,f=k?o(m.entityIndex,d.entityFilter):null,w="entity"===i.source.type&&!!i.source.entity_id&&!m.entityIndex.labels.has(i.source.entity_id),S=`${s.id}\n${i.id}`;return a`<div class="summary-editor-value"
@dragover=${a=>{a.preventDefault(),a.stopPropagation()}}
@drop=${a=>m.drop(a,`value:${t}:${c}`)}>
<span class="summary-drag" draggable=${String(!d.busy)} title=${b("summary.drag")}
@@ -101,7 +101,7 @@ globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58
@click=${()=>m.mutate(a=>{a.blocks[t].values=r(a.blocks[t].values,c,c-1)})}>${l("up")}</button>
<button class="summary-icon-button" type="button" title=${b("summary.down")}
aria-label=${b("summary.down")}
?disabled=${c===e.values.length-1||d.busy}
?disabled=${c===s.values.length-1||d.busy}
@click=${()=>m.mutate(a=>{a.blocks[t].values=r(a.blocks[t].values,c,c+1)})}>${l("down")}</button>
</div>
<div class="summary-value-label">
@@ -109,8 +109,8 @@ globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58
placeholder=${b("summary.value_name")} aria-label=${b("summary.value_name")}
data-summary-error=${String(d.attempted&&y?.path===`${n}.label`)}
aria-invalid=${"error"===v(`${n}.label`)?.kind?"true":"false"}
@input=${a=>m.mutate(s=>{s.blocks[t].values[c].label=a.target.value})} />
${v(`${n}.label`)?a`<div class="summary-problem error">${h(v(`${n}.label`))}</div>`:s}
@input=${a=>m.mutate(e=>{e.blocks[t].values[c].label=a.target.value})} />
${v(`${n}.label`)?a`<div class="summary-problem error">${h(v(`${n}.label`))}</div>`:e}
</div>
<div class="summary-source-field">
<button class="summary-source" type="button"
@@ -119,9 +119,9 @@ globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58
data-summary-error=${String(d.attempted&&y?.path===`${n}.source`)}
aria-invalid=${"error"===$?.kind?"true":"false"}
aria-haspopup="listbox" aria-expanded=${k?"true":"false"}
@click=${a=>{a.stopPropagation(),k?m.closeSource():m.openSource(e.id,i.id)}}>
@click=${a=>{a.stopPropagation(),k?m.closeSource():m.openSource(s.id,i.id)}}>
<span class="summary-source-caption"><strong>${g}</strong>
${_?a`<small>${_}</small>`:s}</span>
${_?a`<small>${_}</small>`:e}</span>
${l("chevron")}
</button>
${k&&f?a`<div class="summary-source-picker"
@@ -135,39 +135,39 @@ globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58
<div class="summary-source-results" role="listbox"
aria-label=${b("summary.select_source")}>
<div class="summary-source-group">${b("summary.system_group")}</div>
${["device_count","total_area","datetime"].map(s=>a`
${["device_count","total_area","datetime"].map(e=>a`
<button type="button" role="option"
?disabled=${d.busy}
aria-selected=${p===`system:${s}`?"true":"false"}
@click=${()=>m.setSource(e.id,i.id,`system:${s}`)}>
${b(`summary.system.${s}`)}
aria-selected=${p===`system:${e}`?"true":"false"}
@click=${()=>m.setSource(s.id,i.id,`system:${e}`)}>
${b(`summary.system.${e}`)}
</button>`)}
${w?a`<div class="summary-source-group">${b("summary.current_source")}</div>
<button type="button" role="option" class="broken" aria-selected="true"
?disabled=${d.busy}
@click=${()=>m.setSource(e.id,i.id,p)}>
@click=${()=>m.setSource(s.id,i.id,p)}>
${g}
</button>`:s}
</button>`:e}
<div class="summary-source-group">${b("summary.entities_group")}</div>
${f.entries.map(s=>a`<button type="button" role="option"
${f.entries.map(e=>a`<button type="button" role="option"
?disabled=${d.busy}
aria-selected=${p===`entity:${s.id}`?"true":"false"}
@click=${()=>m.setSource(e.id,i.id,`entity:${s.id}`)}>
<span>${s.label}</span><small>${s.id}</small>
aria-selected=${p===`entity:${e.id}`?"true":"false"}
@click=${()=>m.setSource(s.id,i.id,`entity:${e.id}`)}>
<span>${e.label}</span><small>${e.id}</small>
</button>`)}
${f.total?s:a`<div class="summary-empty">${b("summary.no_search_results")}</div>`}
${f.truncated?a`<div class="summary-refine">${b("summary.refine_search")}</div>`:s}
${f.total?e:a`<div class="summary-empty">${b("summary.no_search_results")}</div>`}
${f.truncated?a`<div class="summary-refine">${b("summary.refine_search")}</div>`:e}
</div>
</div>`:s}
${$?a`<div class="summary-problem ${$.kind}">${h($)}</div>`:s}
</div>`:e}
${$?a`<div class="summary-problem ${$.kind}">${h($)}</div>`:e}
</div>
<button class="summary-icon-button summary-value-remove" type="button"
title=${b("btn.delete")} aria-label=${b("btn.delete")} ?disabled=${d.busy}
@click=${()=>m.mutate(a=>{a.blocks[t].values.splice(c,1)})}>${l("close")}</button>
</div>`})}
<button class="summary-add summary-add-value" type="button"
?disabled=${e.values.length>=20||d.busy}
title=${e.values.length>=20?b("summary.limit_values"):""}
?disabled=${s.values.length>=20||d.busy}
title=${s.values.length>=20?b("summary.limit_values"):""}
@click=${()=>m.mutate(a=>{a.blocks[t].values.push(i())})}>
${l("plus")}${b("summary.add_value")}
</button>
@@ -186,11 +186,11 @@ globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58
${l("plus")}${b("summary.add_block")}
</button>
</section>
${d.error?a`<div class="summary-problem error" role="alert">${d.error}</div>`:s}
${d.error?a`<div class="summary-problem error" role="alert">${d.error}</div>`:e}
${d.conflict?a`<button class="btn ghost summary-reload" type="button"
?disabled=${d.busy} @click=${()=>m.reload()}>
<ha-icon icon="mdi:reload"></ha-icon>${b("summary.reload_current")}
</button>`:s}
</button>`:e}
`}
</div>
<div class="row summary-editor-footer" slot="footer">
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58d88c475a1cfb768130946dffad32";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-9fMSy3y3.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};
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="0cdc9f2c04830cb52c4e16ec0ce41af1a29dc2a68ae01cf02d1d545bc692ba82";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-COwlrP1O.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 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58d88c475a1cfb768130946dffad32";import{n as t,b as n}from"./zigbee-topology-CI6PJorK.js";import{aI as e}from"./houseplan-card-9fMSy3y3.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};
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="0cdc9f2c04830cb52c4e16ec0ce41af1a29dc2a68ae01cf02d1d545bc692ba82";import{n as t,b as n}from"./zigbee-topology-CDLyN3-N.js";import{aI as e}from"./houseplan-card-COwlrP1O.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};
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58d88c475a1cfb768130946dffad32";try{await import("./houseplan-assets/houseplan-card-9fMSy3y3.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__="0cdc9f2c04830cb52c4e16ec0ce41af1a29dc2a68ae01cf02d1d545bc692ba82";try{await import("./houseplan-assets/houseplan-card-COwlrP1O.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
+1 -1
View File
@@ -141,7 +141,7 @@ checkAll(res, {
"tipTemp": 22.4,
"tipHum": 48,
"fillRadios": 4,
"fillLabels": ["Свой цвет", "По силе зигби-сигнала", "По освещению", "По температуре"],
"fillLabels": ["Свой цвет", "Zigbee", "Свет", "Температура"],
"fillHasNone": false,
"legacyNoneProjection": "custom",
"legacyNoneAlpha": 0,
+146 -146
View File
@@ -1,312 +1,312 @@
{
"schema": 1,
"fingerprint": "54fcdd48a85ca3f133f7a631e38722f7eb58d88c475a1cfb768130946dffad32",
"fingerprint": "0cdc9f2c04830cb52c4e16ec0ce41af1a29dc2a68ae01cf02d1d545bc692ba82",
"entry": "houseplan-card.js",
"panelEntry": "houseplan-panel.js",
"initialViewFiles": [
"houseplan-assets/houseplan-card-9fMSy3y3.js",
"houseplan-assets/houseplan-card-COwlrP1O.js",
"houseplan-card.js"
],
"initialViewGzipBytes": 289852,
"initialViewGzipBytes": 289826,
"initialPanelFiles": [
"houseplan-assets/houseplan-card-9fMSy3y3.js",
"houseplan-assets/houseplan-card-COwlrP1O.js",
"houseplan-panel.js"
],
"initialPanelGzipBytes": 291374,
"initialPanelGzipBytes": 291348,
"initialPanelOnlyFiles": [
"houseplan-panel.js"
],
"initialPanelOnlyGzipBytes": 2325,
"initialPanelOnlyGzipBytes": 2321,
"lazyFiles": [
"houseplan-assets/backdrop-pick-BJOCHJxe.js",
"houseplan-assets/de-DVCIKwC0.js",
"houseplan-assets/editor-C694OxAO.js",
"houseplan-assets/form-kit.styles-CKUQLdmn.js",
"houseplan-assets/fr-DHxhbm5E.js",
"houseplan-assets/furniture-plan-art.generated-DaxkO8ol.js",
"houseplan-assets/houseplan-editor-runtime-AzCVhtuX.js",
"houseplan-assets/houseplan-onboarding-runtime-Dp2b84fm.js",
"houseplan-assets/hp-zigbee-topology-overlay-CbSbT5WT.js",
"houseplan-assets/iso-scene-render-fYqz_-Ot.js",
"houseplan-assets/live-interaction-runtime-XyTIhKAA.js",
"houseplan-assets/pdf-export-D3vmqIY6.js",
"houseplan-assets/summary-panel-runtime-loaded-CX2cplA1.js",
"houseplan-assets/zigbee-topology-CI6PJorK.js",
"houseplan-assets/zigbee-topology-runtime-d-S2Abll.js"
"houseplan-assets/backdrop-pick-CO67Izwr.js",
"houseplan-assets/de-Du5_pA7f.js",
"houseplan-assets/editor-CHfYmrt5.js",
"houseplan-assets/form-kit.styles-COBHNvsH.js",
"houseplan-assets/fr-B36ReLzT.js",
"houseplan-assets/furniture-plan-art.generated-DiBFwQID.js",
"houseplan-assets/houseplan-editor-runtime-DlbJeVBX.js",
"houseplan-assets/houseplan-onboarding-runtime-BWepbRo2.js",
"houseplan-assets/hp-zigbee-topology-overlay-DXZYfUKs.js",
"houseplan-assets/iso-scene-render-D587ZbM1.js",
"houseplan-assets/live-interaction-runtime-C2jrtBKS.js",
"houseplan-assets/pdf-export-cPUyR7qn.js",
"houseplan-assets/summary-panel-runtime-loaded-D9vYgudE.js",
"houseplan-assets/zigbee-topology-CDLyN3-N.js",
"houseplan-assets/zigbee-topology-runtime-CcDynYR9.js"
],
"lazyGzipBytes": 459551,
"lazyGzipBytes": 459588,
"lazyEditorFiles": [
"houseplan-assets/backdrop-pick-BJOCHJxe.js",
"houseplan-assets/editor-C694OxAO.js",
"houseplan-assets/form-kit.styles-CKUQLdmn.js",
"houseplan-assets/furniture-plan-art.generated-DaxkO8ol.js",
"houseplan-assets/houseplan-editor-runtime-AzCVhtuX.js",
"houseplan-assets/zigbee-topology-CI6PJorK.js"
"houseplan-assets/backdrop-pick-CO67Izwr.js",
"houseplan-assets/editor-CHfYmrt5.js",
"houseplan-assets/form-kit.styles-COBHNvsH.js",
"houseplan-assets/furniture-plan-art.generated-DiBFwQID.js",
"houseplan-assets/houseplan-editor-runtime-DlbJeVBX.js",
"houseplan-assets/zigbee-topology-CDLyN3-N.js"
],
"lazyEditorGzipBytes": 242989,
"lazyEditorGzipBytes": 243061,
"lazyOnboardingFiles": [
"houseplan-assets/backdrop-pick-BJOCHJxe.js",
"houseplan-assets/form-kit.styles-CKUQLdmn.js",
"houseplan-assets/houseplan-onboarding-runtime-Dp2b84fm.js"
"houseplan-assets/backdrop-pick-CO67Izwr.js",
"houseplan-assets/form-kit.styles-COBHNvsH.js",
"houseplan-assets/houseplan-onboarding-runtime-BWepbRo2.js"
],
"lazyOnboardingGzipBytes": 33577,
"lazyOnboardingGzipBytes": 33661,
"lazyLocaleFiles": [
"houseplan-assets/de-DVCIKwC0.js",
"houseplan-assets/fr-DHxhbm5E.js"
"houseplan-assets/de-Du5_pA7f.js",
"houseplan-assets/fr-B36ReLzT.js"
],
"lazyLocaleGzipBytes": 55383,
"lazyLocaleGzipBytes": 55374,
"lazyIsometricFiles": [
"houseplan-assets/iso-scene-render-fYqz_-Ot.js"
"houseplan-assets/iso-scene-render-D587ZbM1.js"
],
"lazyIsometricGzipBytes": 17643,
"lazyIsometricGzipBytes": 17640,
"lazyFurnitureArtFiles": [
"houseplan-assets/furniture-plan-art.generated-DaxkO8ol.js"
"houseplan-assets/furniture-plan-art.generated-DiBFwQID.js"
],
"lazyFurnitureArtGzipBytes": 16942,
"lazyFurnitureArtGzipBytes": 16944,
"lazyPdfFiles": [
"houseplan-assets/furniture-plan-art.generated-DaxkO8ol.js",
"houseplan-assets/pdf-export-D3vmqIY6.js"
"houseplan-assets/furniture-plan-art.generated-DiBFwQID.js",
"houseplan-assets/pdf-export-cPUyR7qn.js"
],
"lazyPdfGzipBytes": 126817,
"files": [
{
"path": "houseplan-assets/backdrop-pick-BJOCHJxe.js",
"sha256": "c24f2896a89f71e0a4147184f93b0e69e0c22eb705b772e644e9fc131ff879f4",
"rawBytes": 74375,
"gzipBytes": 24031,
"path": "houseplan-assets/backdrop-pick-CO67Izwr.js",
"sha256": "a4bc180faa3202e1d8f63aa96c8987008e488d6dd3ca4dca3f7a710725c11209",
"rawBytes": 74674,
"gzipBytes": 24120,
"isEntry": false,
"imports": [
"houseplan-assets/form-kit.styles-CKUQLdmn.js",
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/form-kit.styles-COBHNvsH.js",
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/de-DVCIKwC0.js",
"sha256": "6f716933e452260c6e7c0c40d7193e750b6fc443f162cca5cb814c734142dde5",
"path": "houseplan-assets/de-Du5_pA7f.js",
"sha256": "db29c690a55ac67c07065e1666ecd0cedff19c31031aa4560fff9c4562174329",
"rawBytes": 92513,
"gzipBytes": 27933,
"gzipBytes": 27927,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/editor-C694OxAO.js",
"sha256": "f95242b8000cddf2fe1856a5518883c00a27a90c2983f228003db0189dffc1b4",
"path": "houseplan-assets/editor-CHfYmrt5.js",
"sha256": "0d50e2fd290781676e619648f2da76fa53fc31669d9d61c3f7bdcce496708e0d",
"rawBytes": 3833,
"gzipBytes": 1583,
"gzipBytes": 1581,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/form-kit.styles-CKUQLdmn.js",
"sha256": "44a654e7c905948ab4bb363514532c13e67e3e54eee37e4af0ec8447f706fbc1",
"path": "houseplan-assets/form-kit.styles-COBHNvsH.js",
"sha256": "2bede296d4c3a3347ee9bdde605a657e88c7b2ae9097aaffd154b09f8bbdcb0c",
"rawBytes": 23544,
"gzipBytes": 4716,
"gzipBytes": 4715,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/fr-DHxhbm5E.js",
"sha256": "f603ade3217ebe9959225379598608583ec29ab654dc257f57ae894d85ca448f",
"path": "houseplan-assets/fr-B36ReLzT.js",
"sha256": "9c2ee16aed204d874d85a67a12105fa454613bb4c80f79a363367e9c9f2fa86c",
"rawBytes": 94824,
"gzipBytes": 27450,
"gzipBytes": 27447,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/furniture-plan-art.generated-DaxkO8ol.js",
"sha256": "86d1074252f182c84d47285560a5b22c26724e21f21d03fbac4583973a9c11a7",
"path": "houseplan-assets/furniture-plan-art.generated-DiBFwQID.js",
"sha256": "6face3496a7ad5c9faf547b8ecefbb2f68c0e2759fc6ff1ed25a5741c589ea44",
"rawBytes": 52033,
"gzipBytes": 16942,
"gzipBytes": 16944,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-card-9fMSy3y3.js",
"sha256": "e475fbae1c25540d2e349d4441bc963a4ff4181b8659fd491309dd1e578f716a",
"path": "houseplan-assets/houseplan-card-COwlrP1O.js",
"sha256": "d9760789aad7c05fc71a0eba803dea8a0e0ebdb00e9aa12152fa814a68168df4",
"rawBytes": 1027208,
"gzipBytes": 289049,
"gzipBytes": 289027,
"isEntry": false,
"imports": [],
"dynamicImports": [
"houseplan-assets/de-DVCIKwC0.js",
"houseplan-assets/editor-C694OxAO.js",
"houseplan-assets/fr-DHxhbm5E.js",
"houseplan-assets/furniture-plan-art.generated-DaxkO8ol.js",
"houseplan-assets/houseplan-editor-runtime-AzCVhtuX.js",
"houseplan-assets/houseplan-onboarding-runtime-Dp2b84fm.js",
"houseplan-assets/hp-zigbee-topology-overlay-CbSbT5WT.js",
"houseplan-assets/iso-scene-render-fYqz_-Ot.js",
"houseplan-assets/live-interaction-runtime-XyTIhKAA.js",
"houseplan-assets/pdf-export-D3vmqIY6.js",
"houseplan-assets/summary-panel-runtime-loaded-CX2cplA1.js"
"houseplan-assets/de-Du5_pA7f.js",
"houseplan-assets/editor-CHfYmrt5.js",
"houseplan-assets/fr-B36ReLzT.js",
"houseplan-assets/furniture-plan-art.generated-DiBFwQID.js",
"houseplan-assets/houseplan-editor-runtime-DlbJeVBX.js",
"houseplan-assets/houseplan-onboarding-runtime-BWepbRo2.js",
"houseplan-assets/hp-zigbee-topology-overlay-DXZYfUKs.js",
"houseplan-assets/iso-scene-render-D587ZbM1.js",
"houseplan-assets/live-interaction-runtime-C2jrtBKS.js",
"houseplan-assets/pdf-export-cPUyR7qn.js",
"houseplan-assets/summary-panel-runtime-loaded-D9vYgudE.js"
]
},
{
"path": "houseplan-assets/houseplan-editor-runtime-AzCVhtuX.js",
"sha256": "e84feb1cf320be8297982134d45a5adceaec5a50f95aaa884e6e53cae2664edd",
"rawBytes": 677390,
"gzipBytes": 188290,
"path": "houseplan-assets/houseplan-editor-runtime-DlbJeVBX.js",
"sha256": "a040c3b1bfb3caab29ed3925f8d9155d147ee53817007a7571169373f7ce8aee",
"rawBytes": 677322,
"gzipBytes": 188275,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-BJOCHJxe.js",
"houseplan-assets/form-kit.styles-CKUQLdmn.js",
"houseplan-assets/furniture-plan-art.generated-DaxkO8ol.js",
"houseplan-assets/houseplan-card-9fMSy3y3.js",
"houseplan-assets/zigbee-topology-CI6PJorK.js"
"houseplan-assets/backdrop-pick-CO67Izwr.js",
"houseplan-assets/form-kit.styles-COBHNvsH.js",
"houseplan-assets/furniture-plan-art.generated-DiBFwQID.js",
"houseplan-assets/houseplan-card-COwlrP1O.js",
"houseplan-assets/zigbee-topology-CDLyN3-N.js"
],
"dynamicImports": [
"houseplan-assets/zigbee-topology-runtime-d-S2Abll.js"
"houseplan-assets/zigbee-topology-runtime-CcDynYR9.js"
]
},
{
"path": "houseplan-assets/houseplan-onboarding-runtime-Dp2b84fm.js",
"sha256": "64367a8743ea22c4a9a350456878b7006ba01a346cc89eabb786e3c1d944ad3a",
"path": "houseplan-assets/houseplan-onboarding-runtime-BWepbRo2.js",
"sha256": "31cc896b2dd622f721dba8aec48f2bc03a64efe2fe038a24bbfddacff85bfb2f",
"rawBytes": 15667,
"gzipBytes": 4830,
"gzipBytes": 4826,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-BJOCHJxe.js",
"houseplan-assets/form-kit.styles-CKUQLdmn.js",
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/backdrop-pick-CO67Izwr.js",
"houseplan-assets/form-kit.styles-COBHNvsH.js",
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/hp-zigbee-topology-overlay-CbSbT5WT.js",
"sha256": "b2fa73ad0fc3353630e380abe1f63f483113c7bfc5f1e634150c2f0e12b4e0cf",
"path": "houseplan-assets/hp-zigbee-topology-overlay-DXZYfUKs.js",
"sha256": "9046135d11c562249abb70e69b0169355f14381ce87c86dc0ba3fbfbb83f1cf4",
"rawBytes": 10759,
"gzipBytes": 3686,
"gzipBytes": 3682,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-9fMSy3y3.js",
"houseplan-assets/zigbee-topology-CI6PJorK.js",
"houseplan-assets/zigbee-topology-runtime-d-S2Abll.js"
"houseplan-assets/houseplan-card-COwlrP1O.js",
"houseplan-assets/zigbee-topology-CDLyN3-N.js",
"houseplan-assets/zigbee-topology-runtime-CcDynYR9.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/iso-scene-render-fYqz_-Ot.js",
"sha256": "009a9217d1c522a5c2b6f9d5ea3450e2a77aafe52096d9c1d19902a18c6632f9",
"path": "houseplan-assets/iso-scene-render-D587ZbM1.js",
"sha256": "2182acd9989c8fba95b57ec8d49342ad225ff5b846411287e45cfa9b64080f29",
"rawBytes": 51983,
"gzipBytes": 17643,
"gzipBytes": 17640,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/live-interaction-runtime-XyTIhKAA.js",
"sha256": "0fd38fd067699ea97f11565db7c4ae86c1bcc867041e7e3377408f40e741f03f",
"path": "houseplan-assets/live-interaction-runtime-C2jrtBKS.js",
"sha256": "af56aaf8ab0c7dee9f0e3de23b4c4fbe26b98f904a6a294e8fd4e473cb2dc9c5",
"rawBytes": 8216,
"gzipBytes": 3209,
"gzipBytes": 3201,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/pdf-export-D3vmqIY6.js",
"sha256": "4c60cf0b34a17777c60c4849f1ee42841fb74b69466366adcf94cf97eec9ad2e",
"path": "houseplan-assets/pdf-export-cPUyR7qn.js",
"sha256": "aab1097826135ac16f9fdf8d8f3d989c1485399ee7d494d68a3bf9918c99307d",
"rawBytes": 236247,
"gzipBytes": 109875,
"gzipBytes": 109873,
"isEntry": false,
"imports": [
"houseplan-assets/furniture-plan-art.generated-DaxkO8ol.js",
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/furniture-plan-art.generated-DiBFwQID.js",
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/summary-panel-editor-CNT_mev4.js",
"sha256": "ef5dcf22a38fb5df834dcce277de7967303b8025167527483aab726dd30f3a2c",
"rawBytes": 14867,
"gzipBytes": 3427,
"path": "houseplan-assets/summary-panel-editor-CeUXHEmo.js",
"sha256": "744b8ce4dea90a3a42af2b2356d558224531dbd0aac73ee7e8f18497d25fecc5",
"rawBytes": 14862,
"gzipBytes": 3420,
"isEntry": false,
"imports": [
"houseplan-assets/form-kit.styles-CKUQLdmn.js",
"houseplan-assets/houseplan-card-9fMSy3y3.js",
"houseplan-assets/summary-panel-runtime-loaded-CX2cplA1.js"
"houseplan-assets/form-kit.styles-COBHNvsH.js",
"houseplan-assets/houseplan-card-COwlrP1O.js",
"houseplan-assets/summary-panel-runtime-loaded-D9vYgudE.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/summary-panel-metrics-BhoEMuKv.js",
"sha256": "0b4f1816c4069cc62f20dccaeeeceb82c139dee339782833e594e46aa768fe06",
"path": "houseplan-assets/summary-panel-metrics-CtDve8JT.js",
"sha256": "ac5d957013d3db30ab00a6c3e94ac5512145270d85a3f155c5ee131a88aa8ba2",
"rawBytes": 2611,
"gzipBytes": 1308,
"gzipBytes": 1305,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/summary-panel-runtime-loaded-CX2cplA1.js",
"sha256": "95e65a1d327f9d2f90796b9ae7754e0d8a64c15e44a82cefe329dca8f6115689",
"path": "houseplan-assets/summary-panel-runtime-loaded-D9vYgudE.js",
"sha256": "36caf881e1133ab072f8d6df613677b3564a35dee37a502117040c783089a1b6",
"rawBytes": 72733,
"gzipBytes": 20172,
"gzipBytes": 20170,
"isEntry": false,
"imports": [
"houseplan-assets/form-kit.styles-CKUQLdmn.js",
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/form-kit.styles-COBHNvsH.js",
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": [
"houseplan-assets/summary-panel-editor-CNT_mev4.js",
"houseplan-assets/summary-panel-metrics-BhoEMuKv.js"
"houseplan-assets/summary-panel-editor-CeUXHEmo.js",
"houseplan-assets/summary-panel-metrics-CtDve8JT.js"
]
},
{
"path": "houseplan-assets/zigbee-topology-CI6PJorK.js",
"sha256": "6e503b93a48deeda46368588fd4eebf7215aa4a2928e1162747da8b3ffe4b67a",
"path": "houseplan-assets/zigbee-topology-CDLyN3-N.js",
"sha256": "898295e433fd3b841d1299feb676f9efce98b10b1390c4306529a4e676598f78",
"rawBytes": 18962,
"gzipBytes": 7427,
"gzipBytes": 7426,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/zigbee-topology-runtime-d-S2Abll.js",
"sha256": "f6aad0abbf74532abc1c705d1268cce95048e7dbdc81a52a776a996c8b70f969",
"path": "houseplan-assets/zigbee-topology-runtime-CcDynYR9.js",
"sha256": "6d9ba4d38f5b6ef8793118241c99572d5887e88ceab666c56ffcf8931faeaf69",
"rawBytes": 3942,
"gzipBytes": 1764,
"gzipBytes": 1761,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-9fMSy3y3.js",
"houseplan-assets/zigbee-topology-CI6PJorK.js"
"houseplan-assets/houseplan-card-COwlrP1O.js",
"houseplan-assets/zigbee-topology-CDLyN3-N.js"
],
"dynamicImports": []
},
{
"path": "houseplan-card.js",
"sha256": "c796620c6d67c8fb18479291279eb410302ad541ed2b3679d59b780f74e8935b",
"sha256": "c34e1813f3085f66287231ad1f53c45d11a173133dc459934dbcaca630aea950",
"rawBytes": 1205,
"gzipBytes": 803,
"gzipBytes": 799,
"isEntry": true,
"imports": [
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
},
{
"path": "houseplan-panel.js",
"sha256": "c134452d829194d8d630e5859f8142d345e15348a706d7a83d5d9328b0df3faa",
"sha256": "860ad9ba4933e3d40d7bc490aa14d366eae9eab12096bbbf06e1838c473ce57b",
"rawBytes": 6165,
"gzipBytes": 2325,
"gzipBytes": 2321,
"isEntry": true,
"imports": [
"houseplan-assets/houseplan-card-9fMSy3y3.js"
"houseplan-assets/houseplan-card-COwlrP1O.js"
],
"dynamicImports": []
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,14 +1,14 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58d88c475a1cfb768130946dffad32";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-9fMSy3y3.js";class f 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,f={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")},h=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__="0cdc9f2c04830cb52c4e16ec0ce41af1a29dc2a68ae01cf02d1d545bc692ba82";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-COwlrP1O.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}
.computeLabel=${e=>f[e.name]||e.name}
.computeLabel=${e=>h[e.name]||e.name}
@value-changed=${this._valueChanged}
></ha-form>`;return c`
${d(h.slice(0,3))}
${d(f.slice(0,3))}
${_?c`<div class="default-floor-error" role="alert"
style="color:var(--error-color,#db4437);margin:-4px 0 12px;overflow-wrap:anywhere">
${t(s,"editor.default_floor_missing",{id:_})}
</div>`:a}
${d(h.slice(3))}
`}_valueChanged(e){const o={...this._config,...e.detail.value};""===o.floor?delete o.floor:o.floor===this._floorToken&&(o.floor=this._config?.floor);const t=new Event("config-changed",{bubbles:!0,composed:!0});t.detail={config:o},this.dispatchEvent(t)}}f.properties={hass:{attribute:!1},_config:{state:!0},_spaces:{state:!0}},customElements.get("houseplan-card-editor")||customElements.define("houseplan-card-editor",f);
${d(f.slice(3))}
`}_valueChanged(e){const o={...this._config,...e.detail.value};""===o.floor?delete o.floor:o.floor===this._floorToken&&(o.floor=this._config?.floor);const t=new Event("config-changed",{bubbles:!0,composed:!0});t.detail={config:o},this.dispatchEvent(t)}}h.properties={hass:{attribute:!1},_config:{state:!0},_spaces:{state:!0}},customElements.get("houseplan-card-editor")||customElements.define("houseplan-card-editor",h);
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__="54fcdd48a85ca3f133f7a631e38722f7eb58d88c475a1cfb768130946dffad32";import{c as a,A as s}from"./houseplan-card-9fMSy3y3.js";import{s as e,n as t,a as l,m as r,b as o,c as i,d as u}from"./summary-panel-runtime-loaded-CX2cplA1.js";import"./form-kit.styles-CKUQLdmn.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&&!e(t(d.draft),d.base),p=$&&!d.busy&&!y,v=a=>n.find(s=>s.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__="0cdc9f2c04830cb52c4e16ec0ce41af1a29dc2a68ae01cf02d1d545bc692ba82";import{c as a,A as e}from"./houseplan-card-COwlrP1O.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-D9vYgudE.js";import"./form-kit.styles-COBHNvsH.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"
@@ -10,31 +10,31 @@ globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58
dismiss-on-scrim aria-busy=${String(d.busy)}
@hp-close=${k}>
<div class="body summary-editor" @click=${()=>m.closeSource()}>
${d.localOnly?a`<p class="summary-local-hint">${b(d.localOnlyHint)}</p>`:s}
${d.localOnly?a`<p class="summary-local-hint">${b(d.localOnlyHint)}</p>`:e}
<section class="summary-general" aria-labelledby="summary-general-title">
<h3 id="summary-general-title">${b("summary.general_settings")}</h3>
<div class="summary-general-grid">
${d.localOnly?s:a`<div class="summary-field">
${d.localOnly?e:a`<div class="summary-field">
<label for="summary-panel-title">${b("summary.panel_title")}</label>
<input id="summary-panel-title" type="text" .value=${d.draft.title}
?disabled=${d.busy}
data-summary-error=${String(d.attempted&&"title"===y?.path)}
aria-invalid=${"error"===v("title")?.kind?"true":"false"}
@input=${a=>m.mutate(s=>{s.title=a.target.value})} />
${v("title")?a`<div class="summary-problem error">${h(v("title"))}</div>`:s}
@input=${a=>m.mutate(e=>{e.title=a.target.value})} />
${v("title")?a`<div class="summary-problem error">${h(v("title"))}</div>`:e}
</div>`}
${g}
${d.localOnly?s:a`<label class="summary-switch" for="summary-mobile-show">
${d.localOnly?e:a`<label class="summary-switch" for="summary-mobile-show">
<span class="summary-switch-caption"><strong>${b("summary.show_mobile")}</strong>
<small id="summary-mobile-show-hint">${b("summary.show_mobile_hint")}</small></span>
<input id="summary-mobile-show" data-summary-mobile-show type="checkbox"
.checked=${d.draft.show_on_mobile} ?disabled=${!d.localShow||d.busy}
aria-label=${b("summary.show_mobile")} aria-describedby="summary-mobile-show-hint"
@change=${a=>m.mutate(s=>{s.show_on_mobile=a.target.checked})} /></label>`}
@change=${a=>m.mutate(e=>{e.show_on_mobile=a.target.checked})} /></label>`}
</div>
${m.storageUnavailable?a`<div class="summary-problem warning">${b("summary.storage_unavailable")}</div>`:s}
${m.storageUnavailable?a`<div class="summary-problem warning">${b("summary.storage_unavailable")}</div>`:e}
</section>
${d.localOnly?s:a`
${d.localOnly?e:a`
<section class="summary-blocks-card" aria-labelledby="summary-blocks-title">
<header class="summary-blocks-heading">
<div><h3 id="summary-blocks-title">${b("summary.blocks")}</h3>
@@ -42,7 +42,7 @@ globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58
<span class="summary-block-count">${b("summary.block_count").replace("{count}",String(d.draft.blocks.length)).replace("{limit}","10")}</span>
</header>
<div class="summary-editor-blocks">
${d.draft.blocks.map((e,t)=>{const u=`blocks.${t}`,n=v(`${u}.scope`);return a`<article class="summary-editor-block"
${d.draft.blocks.map((s,t)=>{const u=`blocks.${t}`,n=v(`${u}.scope`);return a`<article class="summary-editor-block"
@dragover=${a=>a.preventDefault()}
@drop=${a=>m.drop(a,`block:${t}`)}>
<div class="summary-block-head">
@@ -57,40 +57,40 @@ globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58
?disabled=${t===d.draft.blocks.length-1||d.busy}
@click=${()=>m.mutate(a=>{a.blocks=r(a.blocks,t,t+1)})}>${l("down")}</button>
</div>
<input class="summary-block-title" type="text" .value=${e.title}
<input class="summary-block-title" type="text" .value=${s.title}
placeholder=${b("summary.block_title")} aria-label=${b("summary.block_title")}
?disabled=${d.busy}
data-summary-error=${String(d.attempted&&y?.path===`${u}.title`)}
aria-invalid=${"error"===v(`${u}.title`)?.kind?"true":"false"}
@input=${a=>m.mutate(s=>{s.blocks[t].title=a.target.value})} />
@input=${a=>m.mutate(e=>{e.blocks[t].title=a.target.value})} />
<button class="summary-icon-button summary-visibility" type="button"
?disabled=${d.busy} aria-pressed=${String(e.visible)}
title=${b(e.visible?"summary.hide_block":"summary.show_block")}
aria-label=${b(e.visible?"summary.hide_block":"summary.show_block")}
@click=${()=>m.mutate(a=>{a.blocks[t].visible=!a.blocks[t].visible})}>${l(e.visible?"eye":"eyeOff")}</button>
${v(`${u}.title`)?a`<div class="summary-problem error summary-block-title-error">${h(v(`${u}.title`))}</div>`:s}
?disabled=${d.busy} aria-pressed=${String(s.visible)}
title=${b(s.visible?"summary.hide_block":"summary.show_block")}
aria-label=${b(s.visible?"summary.hide_block":"summary.show_block")}
@click=${()=>m.mutate(a=>{a.blocks[t].visible=!a.blocks[t].visible})}>${l(s.visible?"eye":"eyeOff")}</button>
${v(`${u}.title`)?a`<div class="summary-problem error summary-block-title-error">${h(v(`${u}.title`))}</div>`:e}
<div class="summary-scope">
<select .value=${e.scope.type} ?disabled=${d.busy}
<select .value=${s.scope.type} ?disabled=${d.busy}
aria-label=${b("summary.scope")}
@change=${a=>m.mutate(s=>{s.blocks[t].scope="space"===a.target.value?{type:"space",space_id:c._space}:{type:"all"}})}>
<option value="all" ?selected=${"all"===e.scope.type}>${b("summary.scope_all")}</option>
<option value="space" ?selected=${"space"===e.scope.type}>${b("summary.scope_space")}</option>
@change=${a=>m.mutate(e=>{e.blocks[t].scope="space"===a.target.value?{type:"space",space_id:c._space}:{type:"all"}})}>
<option value="all" ?selected=${"all"===s.scope.type}>${b("summary.scope_all")}</option>
<option value="space" ?selected=${"space"===s.scope.type}>${b("summary.scope_space")}</option>
</select>
${"space"===e.scope.type?a`<select .value=${e.scope.space_id}
${"space"===s.scope.type?a`<select .value=${s.scope.space_id}
?disabled=${d.busy} aria-label=${b("summary.scope_space")}
data-summary-error=${String(d.attempted&&y?.path===`${u}.scope`)}
aria-invalid=${"error"===n?.kind?"true":"false"}
@change=${a=>m.mutate(s=>{const e=s.blocks[t].scope;"space"===e.type&&(e.space_id=a.target.value)})}>
${c._model.some(a=>a.id===e.scope.space_id)?s:a`<option value=${e.scope.space_id} selected>${e.scope.space_id}</option>`}
${c._model.map(s=>a`<option value=${s.id}
?selected=${s.id===e.scope.space_id}>${s.title}</option>`)}
</select>`:s}
@change=${a=>m.mutate(e=>{const s=e.blocks[t].scope;"space"===s.type&&(s.space_id=a.target.value)})}>
${c._model.some(a=>a.id===s.scope.space_id)?e:a`<option value=${s.scope.space_id} selected>${s.scope.space_id}</option>`}
${c._model.map(e=>a`<option value=${e.id}
?selected=${e.id===s.scope.space_id}>${e.title}</option>`)}
</select>`:e}
</div>
${n?a`<div class="summary-problem summary-scope-problem ${n.kind}">${h(n)}</div>`:s}
${n?a`<div class="summary-problem summary-scope-problem ${n.kind}">${h(n)}</div>`:e}
</div>
<div class="summary-block-body">
<div class="summary-editor-values">
${e.values.map((i,c)=>{const n=`${u}.values.${c}`,$=v(`${n}.source`),p=m.sourceToken(i.source),k=d.activeSource?.blockId===e.id&&d.activeSource.valueId===i.id,g="system"===i.source.type?b(`summary.system.${i.source.key}`):i.source.entity_id?m.entityIndex.labels.get(i.source.entity_id)||i.source.entity_id:b("summary.select_source"),_="system"===i.source.type?b("summary.system_source"):i.source.entity_id,f=k?o(m.entityIndex,d.entityFilter):null,w="entity"===i.source.type&&!!i.source.entity_id&&!m.entityIndex.labels.has(i.source.entity_id),S=`${e.id}\n${i.id}`;return a`<div class="summary-editor-value"
${s.values.map((i,c)=>{const n=`${u}.values.${c}`,$=v(`${n}.source`),p=m.sourceToken(i.source),k=d.activeSource?.blockId===s.id&&d.activeSource.valueId===i.id,g="system"===i.source.type?b(`summary.system.${i.source.key}`):i.source.entity_id?m.entityIndex.labels.get(i.source.entity_id)||i.source.entity_id:b("summary.select_source"),_="system"===i.source.type?b("summary.system_source"):i.source.entity_id,f=k?o(m.entityIndex,d.entityFilter):null,w="entity"===i.source.type&&!!i.source.entity_id&&!m.entityIndex.labels.has(i.source.entity_id),S=`${s.id}\n${i.id}`;return a`<div class="summary-editor-value"
@dragover=${a=>{a.preventDefault(),a.stopPropagation()}}
@drop=${a=>m.drop(a,`value:${t}:${c}`)}>
<span class="summary-drag" draggable=${String(!d.busy)} title=${b("summary.drag")}
@@ -101,7 +101,7 @@ globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58
@click=${()=>m.mutate(a=>{a.blocks[t].values=r(a.blocks[t].values,c,c-1)})}>${l("up")}</button>
<button class="summary-icon-button" type="button" title=${b("summary.down")}
aria-label=${b("summary.down")}
?disabled=${c===e.values.length-1||d.busy}
?disabled=${c===s.values.length-1||d.busy}
@click=${()=>m.mutate(a=>{a.blocks[t].values=r(a.blocks[t].values,c,c+1)})}>${l("down")}</button>
</div>
<div class="summary-value-label">
@@ -109,8 +109,8 @@ globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58
placeholder=${b("summary.value_name")} aria-label=${b("summary.value_name")}
data-summary-error=${String(d.attempted&&y?.path===`${n}.label`)}
aria-invalid=${"error"===v(`${n}.label`)?.kind?"true":"false"}
@input=${a=>m.mutate(s=>{s.blocks[t].values[c].label=a.target.value})} />
${v(`${n}.label`)?a`<div class="summary-problem error">${h(v(`${n}.label`))}</div>`:s}
@input=${a=>m.mutate(e=>{e.blocks[t].values[c].label=a.target.value})} />
${v(`${n}.label`)?a`<div class="summary-problem error">${h(v(`${n}.label`))}</div>`:e}
</div>
<div class="summary-source-field">
<button class="summary-source" type="button"
@@ -119,9 +119,9 @@ globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58
data-summary-error=${String(d.attempted&&y?.path===`${n}.source`)}
aria-invalid=${"error"===$?.kind?"true":"false"}
aria-haspopup="listbox" aria-expanded=${k?"true":"false"}
@click=${a=>{a.stopPropagation(),k?m.closeSource():m.openSource(e.id,i.id)}}>
@click=${a=>{a.stopPropagation(),k?m.closeSource():m.openSource(s.id,i.id)}}>
<span class="summary-source-caption"><strong>${g}</strong>
${_?a`<small>${_}</small>`:s}</span>
${_?a`<small>${_}</small>`:e}</span>
${l("chevron")}
</button>
${k&&f?a`<div class="summary-source-picker"
@@ -135,39 +135,39 @@ globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58
<div class="summary-source-results" role="listbox"
aria-label=${b("summary.select_source")}>
<div class="summary-source-group">${b("summary.system_group")}</div>
${["device_count","total_area","datetime"].map(s=>a`
${["device_count","total_area","datetime"].map(e=>a`
<button type="button" role="option"
?disabled=${d.busy}
aria-selected=${p===`system:${s}`?"true":"false"}
@click=${()=>m.setSource(e.id,i.id,`system:${s}`)}>
${b(`summary.system.${s}`)}
aria-selected=${p===`system:${e}`?"true":"false"}
@click=${()=>m.setSource(s.id,i.id,`system:${e}`)}>
${b(`summary.system.${e}`)}
</button>`)}
${w?a`<div class="summary-source-group">${b("summary.current_source")}</div>
<button type="button" role="option" class="broken" aria-selected="true"
?disabled=${d.busy}
@click=${()=>m.setSource(e.id,i.id,p)}>
@click=${()=>m.setSource(s.id,i.id,p)}>
${g}
</button>`:s}
</button>`:e}
<div class="summary-source-group">${b("summary.entities_group")}</div>
${f.entries.map(s=>a`<button type="button" role="option"
${f.entries.map(e=>a`<button type="button" role="option"
?disabled=${d.busy}
aria-selected=${p===`entity:${s.id}`?"true":"false"}
@click=${()=>m.setSource(e.id,i.id,`entity:${s.id}`)}>
<span>${s.label}</span><small>${s.id}</small>
aria-selected=${p===`entity:${e.id}`?"true":"false"}
@click=${()=>m.setSource(s.id,i.id,`entity:${e.id}`)}>
<span>${e.label}</span><small>${e.id}</small>
</button>`)}
${f.total?s:a`<div class="summary-empty">${b("summary.no_search_results")}</div>`}
${f.truncated?a`<div class="summary-refine">${b("summary.refine_search")}</div>`:s}
${f.total?e:a`<div class="summary-empty">${b("summary.no_search_results")}</div>`}
${f.truncated?a`<div class="summary-refine">${b("summary.refine_search")}</div>`:e}
</div>
</div>`:s}
${$?a`<div class="summary-problem ${$.kind}">${h($)}</div>`:s}
</div>`:e}
${$?a`<div class="summary-problem ${$.kind}">${h($)}</div>`:e}
</div>
<button class="summary-icon-button summary-value-remove" type="button"
title=${b("btn.delete")} aria-label=${b("btn.delete")} ?disabled=${d.busy}
@click=${()=>m.mutate(a=>{a.blocks[t].values.splice(c,1)})}>${l("close")}</button>
</div>`})}
<button class="summary-add summary-add-value" type="button"
?disabled=${e.values.length>=20||d.busy}
title=${e.values.length>=20?b("summary.limit_values"):""}
?disabled=${s.values.length>=20||d.busy}
title=${s.values.length>=20?b("summary.limit_values"):""}
@click=${()=>m.mutate(a=>{a.blocks[t].values.push(i())})}>
${l("plus")}${b("summary.add_value")}
</button>
@@ -186,11 +186,11 @@ globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58
${l("plus")}${b("summary.add_block")}
</button>
</section>
${d.error?a`<div class="summary-problem error" role="alert">${d.error}</div>`:s}
${d.error?a`<div class="summary-problem error" role="alert">${d.error}</div>`:e}
${d.conflict?a`<button class="btn ghost summary-reload" type="button"
?disabled=${d.busy} @click=${()=>m.reload()}>
<ha-icon icon="mdi:reload"></ha-icon>${b("summary.reload_current")}
</button>`:s}
</button>`:e}
`}
</div>
<div class="row summary-editor-footer" slot="footer">
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58d88c475a1cfb768130946dffad32";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-9fMSy3y3.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};
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="0cdc9f2c04830cb52c4e16ec0ce41af1a29dc2a68ae01cf02d1d545bc692ba82";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-COwlrP1O.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 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58d88c475a1cfb768130946dffad32";import{n as t,b as n}from"./zigbee-topology-CI6PJorK.js";import{aI as e}from"./houseplan-card-9fMSy3y3.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};
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="0cdc9f2c04830cb52c4e16ec0ce41af1a29dc2a68ae01cf02d1d545bc692ba82";import{n as t,b as n}from"./zigbee-topology-CDLyN3-N.js";import{aI as e}from"./houseplan-card-COwlrP1O.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};
+1 -1
View File
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="54fcdd48a85ca3f133f7a631e38722f7eb58d88c475a1cfb768130946dffad32";try{await import("./houseplan-assets/houseplan-card-9fMSy3y3.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__="0cdc9f2c04830cb52c4e16ec0ce41af1a29dc2a68ae01cf02d1d545bc692ba82";try{await import("./houseplan-assets/houseplan-card-COwlrP1O.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
+3 -2
View File
@@ -9,8 +9,9 @@
heading and a `?`. Inside them: full-width rows with an icon, a caption and a
switch on the right (borders, layers, names, glow, tooltips, confirmation,
device temperature); segmented choices where a short list used to be radios
or a dropdown (room fill, zero-wall style, background, sun rays, ray origin,
device binding, light-source role, glow mode, badge side); colour plates —
or a dropdown (room fill with short option names — Custom · Zigbee · Lights ·
Temperature — zero-wall style, background, sun rays, ray origin, device
binding, light-source role, glow mode, badge side); colour plates —
swatch, hex code, opacity number and Reset — around the existing colour
picker; number fields with the unit inside the frame (cm, °C, m, %, °);
sliders paired with an editable number and Reset to 100%; chips for linked
+2 -1
View File
@@ -15,7 +15,8 @@
плоские, с заголовком и «?». Внутри: полные строки с иконкой, подписью и
тумблером справа (границы, слои, названия, свечение, подсказки, подтверждение,
температура устройства); сегменты там, где короткий список был радио или
выпадающим (заливка комнаты, нулевые стены, фон, лучи солнца и их источник,
выпадающим (заливка комнаты с короткими подписями — Свой цвет · Zigbee ·
Свет · Температура, — нулевые стены, фон, лучи солнца и их источник,
привязка устройства, роль источника света, режим свечения, сторона бейджа);
плашки цвета — свотч, hex, число прозрачности и «Сбросить» — вокруг
прежнего пикера; числовые поля с единицей внутри рамки (см, °C, м, %, °);
+1 -1
View File
@@ -471,7 +471,7 @@ and the **Review N fields** link in the footer jumps to the first one.
A space's **Appearance** card has switch rows for room borders and the two
visible layers (**Decorative layer**, **Doors, windows and gates** — on means
visible), a segment for zero-thickness walls, a colour plate for rooms and the
fill segment (custom colour / Zigbee signal / lights / temperature, with two
fill segment (Custom / Zigbee / Lights / Temperature, with two
°C bound fields for temperature). **Room cards** holds the names switch, four
metric tiles, the card font slider and a sample card; **Sun and light** holds
the background segment, north (as general or a custom direction with a compass),
+2 -2
View File
@@ -539,7 +539,7 @@ desktop: для точного рисования, Resize, модификато
![Карточка комнаты с температурой, LQI и состоянием света](images/08-room-card.png)
| Внешний вид | Цвет комнат | Плашка цвета: общий цвет и прозрачность комнат |
| Внешний вид | Заливка комнат | Сегмент «Свой цвет / Сигнал Zigbee / Свет / Температура»; при температуре ниже появляются два поля границ °C с легендой |
| Внешний вид | Заливка комнат | Сегмент «Свой цвет / Zigbee / Свет / Температура»; при температуре ниже появляются два поля границ °C с легендой |
| Солнце и свет | Фон | Сегмент «Как в общих / Статический / День-ночь» |
| Солнце и свет | Север на плане и лучи | Выпадающий список «Как в общих · N°» или «Своё направление» с полем градусов и компасом; лучи — сегмент «Как в общих / Включены / Выключены». Локально переопределяет общие настройки |
| Солнце и свет | Заливка | см. «Внешний вид»: постоянный цвет либо данные для заливки комнат пространства; свой цвет является обычным режимом по умолчанию |
@@ -605,7 +605,7 @@ Assistant в одну строку), **Заливка**, **Источники**
В **Заливке** стоит строка с тумблером **Как у пространства**: пока он включён,
комната следует режиму пространства, и подпись говорит, какому именно. Выключите
его — ниже появится сегмент из пяти режимов (Нет / Сигнал Zigbee / Свет /
его — ниже появится сегмент из пяти режимов (Нет / Zigbee / Свет /
Температура / Свой цвет), причём стартует он с режима, который уже действует для
пространства, а не с «Нет». «Свой цвет» раскрывает плашку цвета: пока цвет не
менялся, это цвет пространства, после первого изменения — свой, и рядом появляется
@@ -53,6 +53,7 @@ AC10 унаследован от #598, где диалог комнаты не
| Образец карточки комнаты | убран (§4.2) | внутри карточки Room cards на тинте | решение владельца Q2 |
| Поле цвета | `input[type=color]` (§3.2) | плашка вокруг `hp-color-opacity` | решение владельца Q5 |
| Тексты подписей | Space name, Floor plan, Appearance, Room cards, Sun & light… | те же (переименования Q6) | §4.1, решение владельца Q6 |
| Подписи сегмента заливки | Custom · Zigbee · Lights · Temperature | те же — короткие ключи `fill.seg_*` ленивого словаря, общие с комнатой (r1 M1: полные `fill.*` в RU переносились посреди слова) | §4.2 `reference/app.js` `fillOptions` |
| Копия / удаление | Copy и Delete слева в футере | то же | §4.1 «Футер» |
### General settings (§5)
@@ -69,7 +70,7 @@ AC10 унаследован от #598, где диалог комнаты не
|---|---|---|---|
| Образец карточки | убран (§6.1 «Font sizes») | под подсказкой размеров, на тинте | решение владельца Q2 |
| «?» у Basics | у поля Home Assistant area | у поля Home Assistant area (перенесён с заголовка карточки) | §6.1 |
| Подписи сегмента заливки | None · Zigbee · Lights · Temperature · Custom, по одной строке на пункт | те же (короткие ключи `room.fill_seg_*` для двух длинных). Ревью r1 M1: «Temperature» рвалось посреди слова в пяти равных колонках — колонка сегмента больше не сжимается ниже самого длинного слова, слова переносятся только по пробелам, не поместившийся сегмент переносится на вторую строку целыми кнопками; свидетель — `smoke_dialog_segments_i18n` (четыре диалога × en/ru/de/fr) | §6.1, §3.1 «Сегмент» |
| Подписи сегмента заливки | None · Zigbee · Lights · Temperature · Custom, по одной строке на пункт | те же — короткие ключи `fill.seg_*` (общие с пространством). Ревью r1 M1: «Temperature» рвалось посреди слова в пяти равных колонках — колонка сегмента больше не сжимается ниже самого длинного слова, слова переносятся только по пробелам, не поместившийся сегмент переносится на вторую строку целыми кнопками; свидетель — `smoke_dialog_segments_i18n` (четыре диалога × en/ru/de/fr) | §6.1, §3.1 «Сегмент» |
| Подписи источников | Temperature / Humidity | Temperature source / Humidity source (прежние ключи) | текст, не раскладка |
| Поле цвета «Свой цвет» | `input[type=color]` | плашка вокруг `hp-color-opacity` | Q5 |
| Кнопка выбора датчика | в потоке, панель с поиском | то же (`sourcePicker` набора) | §3.1 «Кнопка выбора источника» |
+3 -5
View File
@@ -194,11 +194,9 @@ export function renderRoomSettingsDialog(this: HouseplanEditorRuntime): Template
name: 'rfill',
value: host._roomFill as RoomFillMode,
ariaLabel: t('room.fill_label'),
// Короткие подписи там, где полные не помещаются в пять сегментов (§6.1: None | Zigbee | Lights | Temperature | Custom)
options: ROOM_FILL_MODES.map((value) => ({
value,
label: value === 'lqi' ? st('room.fill_seg_lqi') : value === 'custom' ? st('room.fill_seg_custom') : t(`fill.${value}` as I18nKey),
})),
// Короткие подписи сегмента по референсу (§6.1: None | Zigbee | Lights | Temperature | Custom),
// общие с сегментом пространства (§4.2)
options: ROOM_FILL_MODES.map((value) => ({ value, label: st(`fill.seg_${value}`) })),
onChange: (value) => setFill(value),
}),
})}
+2 -1
View File
@@ -357,7 +357,8 @@ function renderAppearance(port: SpaceFormPort, d: SpaceDialogState, id: (n: stri
name: `${port.idPrefix}-fill-mode`,
value: d.fillMode === 'none' ? 'custom' : d.fillMode,
ariaLabel: t('space.fill_label'),
options: SPACE_FILL_UI_MODES.map((v) => ({ value: v, label: t(`fill.${v}` as I18nKey) })),
// §4.2 референса: Custom | Zigbee | Lights | Temperature — короткие подписи сегмента (общие с комнатой)
options: SPACE_FILL_UI_MODES.map((v) => ({ value: v, label: st(`fill.seg_${v}`) })),
onChange: (v) => set(port, { ...d, fillMode: v }),
})}
${fillDetail}
+5 -2
View File
@@ -85,6 +85,9 @@
"marker.size.help.aria": "Hilfe: Symbolgröße und Drehung",
"marker.size_short": "Größe",
"marker.error_binding": "Wählen Sie ein Gerät oder eine Entität zum Verknüpfen.",
"room.fill_seg_lqi": "Zigbee",
"room.fill_seg_custom": "Eigene"
"fill.seg_none": "Keine",
"fill.seg_lqi": "Zigbee",
"fill.seg_light": "Licht",
"fill.seg_temp": "Temperatur",
"fill.seg_custom": "Eigene"
}
+5 -2
View File
@@ -85,6 +85,9 @@
"marker.size.help.aria": "Help: icon size and rotation",
"marker.size_short": "Size",
"marker.error_binding": "Choose a device or entity to bind.",
"room.fill_seg_lqi": "Zigbee",
"room.fill_seg_custom": "Custom"
"fill.seg_none": "None",
"fill.seg_lqi": "Zigbee",
"fill.seg_light": "Lights",
"fill.seg_temp": "Temperature",
"fill.seg_custom": "Custom"
}
+5 -2
View File
@@ -85,6 +85,9 @@
"marker.size.help.aria": "Aide : taille et rotation de l’icône",
"marker.size_short": "Taille",
"marker.error_binding": "Choisissez un appareil ou une entité à lier.",
"room.fill_seg_lqi": "Zigbee",
"room.fill_seg_custom": "Perso"
"fill.seg_none": "Aucun",
"fill.seg_lqi": "Zigbee",
"fill.seg_light": "Lumières",
"fill.seg_temp": "Température",
"fill.seg_custom": "Perso"
}
+5 -2
View File
@@ -85,6 +85,9 @@
"marker.size.help.aria": "Справка: размер и поворот иконки",
"marker.size_short": "Размер",
"marker.error_binding": "Выберите устройство или сущность для привязки.",
"room.fill_seg_lqi": "Zigbee",
"room.fill_seg_custom": "Свой цвет"
"fill.seg_none": "Нет",
"fill.seg_lqi": "Zigbee",
"fill.seg_light": "Свет",
"fill.seg_temp": "Температура",
"fill.seg_custom": "Свой цвет"
}