From 2cfb6d21697b8302a7e1e464d38e7f865e4dee88 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 23 Sep 2026 10:34:09 +0300 Subject: [PATCH] fix: protect View config recovery (#612) Issue: #612 User-Visible: yes --- .../houseplan/frontend/houseplan-assets.json | 288 +++++++++--------- ...-Cw68iWqr.js => backdrop-pick-4y8dV8Ve.js} | 76 ++--- .../frontend/houseplan-assets/de-Cf-Yh-qD.js | 2 +- .../houseplan-assets/editor-COYbDg2h.js | 10 +- .../form-kit.styles-eIw2y67V.js | 2 +- .../frontend/houseplan-assets/fr-C5bQpwdy.js | 2 +- .../furniture-plan-art.generated-CkHr8lOA.js | 2 +- ...OIS3Mvzx.js => houseplan-card-Dvtr52xr.js} | 10 +- ...s => houseplan-editor-runtime-C54tPnne.js} | 6 +- ... houseplan-onboarding-runtime-Ch5D7oRi.js} | 2 +- ...=> hp-zigbee-topology-overlay-CQpKEtLv.js} | 2 +- .../iso-scene-render-CqI3ABeb.js | 4 +- ...s => live-interaction-runtime-qZV2DHRS.js} | 2 +- ...ort-IUs8Loq8.js => pdf-export-Bmt-_V6k.js} | 4 +- .../summary-panel-editor-BBxrM3sF.js | 2 +- ...O.js => summary-panel-metrics-Ck5HHl5d.js} | 2 +- .../summary-panel-runtime-loaded-CPobCF-I.js | 4 +- .../zigbee-topology-PPd-Bqxz.js | 2 +- ...js => zigbee-topology-runtime-DlN1vrja.js} | 2 +- .../houseplan/frontend/houseplan-card.js | 2 +- .../houseplan/frontend/houseplan-panel.js | 2 +- demo/smoke_readonly_cold_start.mjs | 54 +++- dist/houseplan-assets.json | 288 +++++++++--------- ...-Cw68iWqr.js => backdrop-pick-4y8dV8Ve.js} | 76 ++--- .../houseplan-assets/de-Cf-Yh-qD.js | 2 +- .../houseplan-assets/editor-COYbDg2h.js | 10 +- .../form-kit.styles-eIw2y67V.js | 2 +- .../houseplan-assets/fr-C5bQpwdy.js | 2 +- .../furniture-plan-art.generated-CkHr8lOA.js | 2 +- ...OIS3Mvzx.js => houseplan-card-Dvtr52xr.js} | 10 +- ...s => houseplan-editor-runtime-C54tPnne.js} | 6 +- ... houseplan-onboarding-runtime-Ch5D7oRi.js} | 2 +- ...=> hp-zigbee-topology-overlay-CQpKEtLv.js} | 2 +- .../iso-scene-render-CqI3ABeb.js | 4 +- ...s => live-interaction-runtime-qZV2DHRS.js} | 2 +- ...ort-IUs8Loq8.js => pdf-export-Bmt-_V6k.js} | 4 +- .../summary-panel-editor-BBxrM3sF.js | 2 +- ...O.js => summary-panel-metrics-Ck5HHl5d.js} | 2 +- .../summary-panel-runtime-loaded-CPobCF-I.js | 4 +- .../zigbee-topology-PPd-Bqxz.js | 2 +- ...js => zigbee-topology-runtime-DlN1vrja.js} | 2 +- dist/houseplan-card.js | 2 +- dist/houseplan-panel.js | 2 +- docs/CHANGELOG.md | 4 + docs/CHANGELOG.ru.md | 5 + docs/images/screenshots.json | 24 +- scripts/mutation-registry.mjs | 24 ++ src/config-write-conflict.ts | 16 + src/houseplan-card.ts | 7 +- test/config-write-conflict.test.mjs | 23 ++ tsconfig.test.json | 2 +- 51 files changed, 569 insertions(+), 446 deletions(-) rename custom_components/houseplan/frontend/houseplan-assets/{backdrop-pick-Cw68iWqr.js => backdrop-pick-4y8dV8Ve.js} (95%) rename dist/houseplan-assets/de-gIMcxW3P.js => custom_components/houseplan/frontend/houseplan-assets/de-Cf-Yh-qD.js (99%) rename dist/houseplan-assets/editor-CA7MKuk8.js => custom_components/houseplan/frontend/houseplan-assets/editor-COYbDg2h.js (86%) rename dist/houseplan-assets/form-kit.styles-HxyRNtFW.js => custom_components/houseplan/frontend/houseplan-assets/form-kit.styles-eIw2y67V.js (99%) rename dist/houseplan-assets/fr-DmdKwehD.js => custom_components/houseplan/frontend/houseplan-assets/fr-C5bQpwdy.js (99%) rename dist/houseplan-assets/furniture-plan-art.generated-CWQQHnJL.js => custom_components/houseplan/frontend/houseplan-assets/furniture-plan-art.generated-CkHr8lOA.js (99%) rename custom_components/houseplan/frontend/houseplan-assets/{houseplan-card-OIS3Mvzx.js => houseplan-card-Dvtr52xr.js} (92%) rename custom_components/houseplan/frontend/houseplan-assets/{houseplan-editor-runtime-BcL3Rj9i.js => houseplan-editor-runtime-C54tPnne.js} (99%) rename custom_components/houseplan/frontend/houseplan-assets/{houseplan-onboarding-runtime-DIQStHYP.js => houseplan-onboarding-runtime-Ch5D7oRi.js} (97%) rename custom_components/houseplan/frontend/houseplan-assets/{hp-zigbee-topology-overlay-CfzcT25m.js => hp-zigbee-topology-overlay-CQpKEtLv.js} (95%) rename dist/houseplan-assets/iso-scene-render-CtsBhANN.js => custom_components/houseplan/frontend/houseplan-assets/iso-scene-render-CqI3ABeb.js (92%) rename custom_components/houseplan/frontend/houseplan-assets/{live-interaction-runtime-CrYU-Xe2.js => live-interaction-runtime-qZV2DHRS.js} (96%) rename custom_components/houseplan/frontend/houseplan-assets/{pdf-export-IUs8Loq8.js => pdf-export-Bmt-_V6k.js} (99%) rename dist/houseplan-assets/summary-panel-editor-vVUmBjBs.js => custom_components/houseplan/frontend/houseplan-assets/summary-panel-editor-BBxrM3sF.js (97%) rename custom_components/houseplan/frontend/houseplan-assets/{summary-panel-metrics-B-djAqRO.js => summary-panel-metrics-Ck5HHl5d.js} (50%) rename dist/houseplan-assets/summary-panel-runtime-loaded-CJhgoeV3.js => custom_components/houseplan/frontend/houseplan-assets/summary-panel-runtime-loaded-CPobCF-I.js (99%) rename dist/houseplan-assets/zigbee-topology-4qCSmPRR.js => custom_components/houseplan/frontend/houseplan-assets/zigbee-topology-PPd-Bqxz.js (95%) rename custom_components/houseplan/frontend/houseplan-assets/{zigbee-topology-runtime-ul8YAth8.js => zigbee-topology-runtime-DlN1vrja.js} (93%) rename dist/houseplan-assets/{backdrop-pick-Cw68iWqr.js => backdrop-pick-4y8dV8Ve.js} (95%) rename custom_components/houseplan/frontend/houseplan-assets/de-gIMcxW3P.js => dist/houseplan-assets/de-Cf-Yh-qD.js (99%) rename custom_components/houseplan/frontend/houseplan-assets/editor-CA7MKuk8.js => dist/houseplan-assets/editor-COYbDg2h.js (86%) rename custom_components/houseplan/frontend/houseplan-assets/form-kit.styles-HxyRNtFW.js => dist/houseplan-assets/form-kit.styles-eIw2y67V.js (99%) rename custom_components/houseplan/frontend/houseplan-assets/fr-DmdKwehD.js => dist/houseplan-assets/fr-C5bQpwdy.js (99%) rename custom_components/houseplan/frontend/houseplan-assets/furniture-plan-art.generated-CWQQHnJL.js => dist/houseplan-assets/furniture-plan-art.generated-CkHr8lOA.js (99%) rename dist/houseplan-assets/{houseplan-card-OIS3Mvzx.js => houseplan-card-Dvtr52xr.js} (92%) rename dist/houseplan-assets/{houseplan-editor-runtime-BcL3Rj9i.js => houseplan-editor-runtime-C54tPnne.js} (99%) rename dist/houseplan-assets/{houseplan-onboarding-runtime-DIQStHYP.js => houseplan-onboarding-runtime-Ch5D7oRi.js} (97%) rename dist/houseplan-assets/{hp-zigbee-topology-overlay-CfzcT25m.js => hp-zigbee-topology-overlay-CQpKEtLv.js} (95%) rename custom_components/houseplan/frontend/houseplan-assets/iso-scene-render-CtsBhANN.js => dist/houseplan-assets/iso-scene-render-CqI3ABeb.js (92%) rename dist/houseplan-assets/{live-interaction-runtime-CrYU-Xe2.js => live-interaction-runtime-qZV2DHRS.js} (96%) rename dist/houseplan-assets/{pdf-export-IUs8Loq8.js => pdf-export-Bmt-_V6k.js} (99%) rename custom_components/houseplan/frontend/houseplan-assets/summary-panel-editor-vVUmBjBs.js => dist/houseplan-assets/summary-panel-editor-BBxrM3sF.js (97%) rename dist/houseplan-assets/{summary-panel-metrics-B-djAqRO.js => summary-panel-metrics-Ck5HHl5d.js} (50%) rename custom_components/houseplan/frontend/houseplan-assets/summary-panel-runtime-loaded-CJhgoeV3.js => dist/houseplan-assets/summary-panel-runtime-loaded-CPobCF-I.js (99%) rename custom_components/houseplan/frontend/houseplan-assets/zigbee-topology-4qCSmPRR.js => dist/houseplan-assets/zigbee-topology-PPd-Bqxz.js (95%) rename dist/houseplan-assets/{zigbee-topology-runtime-ul8YAth8.js => zigbee-topology-runtime-DlN1vrja.js} (93%) create mode 100644 src/config-write-conflict.ts create mode 100644 test/config-write-conflict.test.mjs diff --git a/custom_components/houseplan/frontend/houseplan-assets.json b/custom_components/houseplan/frontend/houseplan-assets.json index dd4f2727..235ea315 100644 --- a/custom_components/houseplan/frontend/houseplan-assets.json +++ b/custom_components/houseplan/frontend/houseplan-assets.json @@ -1,312 +1,312 @@ { "schema": 1, - "fingerprint": "fab26ba4f38e0ad405db785685445fcef47de8ffbe84f490e8de7c6b8c1291a7", + "fingerprint": "34ed8381ef1adf8c591e66e7e06a85168914fdc4d58c21a841ade47a105c7ef0", "entry": "houseplan-card.js", "panelEntry": "houseplan-panel.js", "initialViewFiles": [ - "houseplan-assets/houseplan-card-OIS3Mvzx.js", + "houseplan-assets/houseplan-card-Dvtr52xr.js", "houseplan-card.js" ], - "initialViewGzipBytes": 290838, + "initialViewGzipBytes": 290841, "initialPanelFiles": [ - "houseplan-assets/houseplan-card-OIS3Mvzx.js", + "houseplan-assets/houseplan-card-Dvtr52xr.js", "houseplan-panel.js" ], - "initialPanelGzipBytes": 292360, + "initialPanelGzipBytes": 292363, "initialPanelOnlyFiles": [ "houseplan-panel.js" ], - "initialPanelOnlyGzipBytes": 2324, + "initialPanelOnlyGzipBytes": 2322, "lazyFiles": [ - "houseplan-assets/backdrop-pick-Cw68iWqr.js", - "houseplan-assets/de-gIMcxW3P.js", - "houseplan-assets/editor-CA7MKuk8.js", - "houseplan-assets/form-kit.styles-HxyRNtFW.js", - "houseplan-assets/fr-DmdKwehD.js", - "houseplan-assets/furniture-plan-art.generated-CWQQHnJL.js", - "houseplan-assets/houseplan-editor-runtime-BcL3Rj9i.js", - "houseplan-assets/houseplan-onboarding-runtime-DIQStHYP.js", - "houseplan-assets/hp-zigbee-topology-overlay-CfzcT25m.js", - "houseplan-assets/iso-scene-render-CtsBhANN.js", - "houseplan-assets/live-interaction-runtime-CrYU-Xe2.js", - "houseplan-assets/pdf-export-IUs8Loq8.js", - "houseplan-assets/summary-panel-runtime-loaded-CJhgoeV3.js", - "houseplan-assets/zigbee-topology-4qCSmPRR.js", - "houseplan-assets/zigbee-topology-runtime-ul8YAth8.js" + "houseplan-assets/backdrop-pick-4y8dV8Ve.js", + "houseplan-assets/de-Cf-Yh-qD.js", + "houseplan-assets/editor-COYbDg2h.js", + "houseplan-assets/form-kit.styles-eIw2y67V.js", + "houseplan-assets/fr-C5bQpwdy.js", + "houseplan-assets/furniture-plan-art.generated-CkHr8lOA.js", + "houseplan-assets/houseplan-editor-runtime-C54tPnne.js", + "houseplan-assets/houseplan-onboarding-runtime-Ch5D7oRi.js", + "houseplan-assets/hp-zigbee-topology-overlay-CQpKEtLv.js", + "houseplan-assets/iso-scene-render-CqI3ABeb.js", + "houseplan-assets/live-interaction-runtime-qZV2DHRS.js", + "houseplan-assets/pdf-export-Bmt-_V6k.js", + "houseplan-assets/summary-panel-runtime-loaded-CPobCF-I.js", + "houseplan-assets/zigbee-topology-PPd-Bqxz.js", + "houseplan-assets/zigbee-topology-runtime-DlN1vrja.js" ], - "lazyGzipBytes": 460210, + "lazyGzipBytes": 460178, "lazyEditorFiles": [ - "houseplan-assets/backdrop-pick-Cw68iWqr.js", - "houseplan-assets/editor-CA7MKuk8.js", - "houseplan-assets/form-kit.styles-HxyRNtFW.js", - "houseplan-assets/furniture-plan-art.generated-CWQQHnJL.js", - "houseplan-assets/houseplan-editor-runtime-BcL3Rj9i.js", - "houseplan-assets/zigbee-topology-4qCSmPRR.js" + "houseplan-assets/backdrop-pick-4y8dV8Ve.js", + "houseplan-assets/editor-COYbDg2h.js", + "houseplan-assets/form-kit.styles-eIw2y67V.js", + "houseplan-assets/furniture-plan-art.generated-CkHr8lOA.js", + "houseplan-assets/houseplan-editor-runtime-C54tPnne.js", + "houseplan-assets/zigbee-topology-PPd-Bqxz.js" ], - "lazyEditorGzipBytes": 243659, + "lazyEditorGzipBytes": 243641, "lazyOnboardingFiles": [ - "houseplan-assets/backdrop-pick-Cw68iWqr.js", - "houseplan-assets/form-kit.styles-HxyRNtFW.js", - "houseplan-assets/houseplan-onboarding-runtime-DIQStHYP.js" + "houseplan-assets/backdrop-pick-4y8dV8Ve.js", + "houseplan-assets/form-kit.styles-eIw2y67V.js", + "houseplan-assets/houseplan-onboarding-runtime-Ch5D7oRi.js" ], - "lazyOnboardingGzipBytes": 34057, + "lazyOnboardingGzipBytes": 34053, "lazyLocaleFiles": [ - "houseplan-assets/de-gIMcxW3P.js", - "houseplan-assets/fr-DmdKwehD.js" + "houseplan-assets/de-Cf-Yh-qD.js", + "houseplan-assets/fr-C5bQpwdy.js" ], - "lazyLocaleGzipBytes": 55363, + "lazyLocaleGzipBytes": 55369, "lazyIsometricFiles": [ - "houseplan-assets/iso-scene-render-CtsBhANN.js" + "houseplan-assets/iso-scene-render-CqI3ABeb.js" ], - "lazyIsometricGzipBytes": 17642, + "lazyIsometricGzipBytes": 17639, "lazyFurnitureArtFiles": [ - "houseplan-assets/furniture-plan-art.generated-CWQQHnJL.js" + "houseplan-assets/furniture-plan-art.generated-CkHr8lOA.js" ], - "lazyFurnitureArtGzipBytes": 16942, + "lazyFurnitureArtGzipBytes": 16939, "lazyPdfFiles": [ - "houseplan-assets/furniture-plan-art.generated-CWQQHnJL.js", - "houseplan-assets/pdf-export-IUs8Loq8.js" + "houseplan-assets/furniture-plan-art.generated-CkHr8lOA.js", + "houseplan-assets/pdf-export-Bmt-_V6k.js" ], - "lazyPdfGzipBytes": 126831, + "lazyPdfGzipBytes": 126825, "files": [ { - "path": "houseplan-assets/backdrop-pick-Cw68iWqr.js", - "sha256": "4d86bc7c941e260641e7b4e9c169fa16e206f38fa9cb9d70192536a8d66af928", + "path": "houseplan-assets/backdrop-pick-4y8dV8Ve.js", + "sha256": "16794f5a4841f5a099f9e788342a0b36517795f667591e798fccc9d7c66259b7", "rawBytes": 74683, - "gzipBytes": 24173, + "gzipBytes": 24171, "isEntry": false, "imports": [ - "houseplan-assets/form-kit.styles-HxyRNtFW.js", - "houseplan-assets/houseplan-card-OIS3Mvzx.js" + "houseplan-assets/form-kit.styles-eIw2y67V.js", + "houseplan-assets/houseplan-card-Dvtr52xr.js" ], "dynamicImports": [] }, { - "path": "houseplan-assets/de-gIMcxW3P.js", - "sha256": "6d6967e057eca2c9848fdbe74083fb4629d7466222fb9adb910c047412c354d2", + "path": "houseplan-assets/de-Cf-Yh-qD.js", + "sha256": "26098db87918225904088f44664b86f8c803177f05081cfab7869afa5459b268", "rawBytes": 92496, - "gzipBytes": 27924, + "gzipBytes": 27926, "isEntry": false, "imports": [], "dynamicImports": [] }, { - "path": "houseplan-assets/editor-CA7MKuk8.js", - "sha256": "161461fa1331a4dc738cbc1e0106dc7465e10b3b374f6be14a133fb4899da6bd", + "path": "houseplan-assets/editor-COYbDg2h.js", + "sha256": "47233950f346534ac171ab2bc9cd000c21bfbeaae8cc18f3c4c3d99533ece040", "rawBytes": 3833, - "gzipBytes": 1583, + "gzipBytes": 1581, "isEntry": false, "imports": [ - "houseplan-assets/houseplan-card-OIS3Mvzx.js" + "houseplan-assets/houseplan-card-Dvtr52xr.js" ], "dynamicImports": [] }, { - "path": "houseplan-assets/form-kit.styles-HxyRNtFW.js", - "sha256": "e09fa7879efc12edc1a1d034cbe85c0361fc1be10512aa5d28f5094d05763d28", + "path": "houseplan-assets/form-kit.styles-eIw2y67V.js", + "sha256": "9e92c98fab6738941682b03c6a21153dd96de8211de3edd83e86ec8a0e09f847", "rawBytes": 25600, - "gzipBytes": 5056, + "gzipBytes": 5054, "isEntry": false, "imports": [], "dynamicImports": [] }, { - "path": "houseplan-assets/fr-DmdKwehD.js", - "sha256": "e447713cc06ac0794252390a1a044fa12a7cba59c76f68c2f8222de07cdcd4a4", + "path": "houseplan-assets/fr-C5bQpwdy.js", + "sha256": "3133e01d3bee3c3038d4c4dc1f0c1fa06d1e8d4ae3d21731533aff1b219c84a1", "rawBytes": 94813, - "gzipBytes": 27439, + "gzipBytes": 27443, "isEntry": false, "imports": [], "dynamicImports": [] }, { - "path": "houseplan-assets/furniture-plan-art.generated-CWQQHnJL.js", - "sha256": "7f8a02bf9c007e6b4167d6ec11427d7ce952933442b45367943cd3ae078e9834", + "path": "houseplan-assets/furniture-plan-art.generated-CkHr8lOA.js", + "sha256": "56d372ba8e0b7d8c30259ccebd3c7c25715c6f980c800477223c46b23e932b1e", "rawBytes": 52035, - "gzipBytes": 16942, + "gzipBytes": 16939, "isEntry": false, "imports": [], "dynamicImports": [] }, { - "path": "houseplan-assets/houseplan-card-OIS3Mvzx.js", - "sha256": "866afdc9095bc6338d0f3fb6e2cd6b7c3ff9171d590a8e3146a5b87f9414d899", - "rawBytes": 1031507, - "gzipBytes": 290036, + "path": "houseplan-assets/houseplan-card-Dvtr52xr.js", + "sha256": "c8f730ccefec2a91571c000911d1fb8d0efc4e872edeb08fb1d8a17fc453447d", + "rawBytes": 1031560, + "gzipBytes": 290041, "isEntry": false, "imports": [], "dynamicImports": [ - "houseplan-assets/de-gIMcxW3P.js", - "houseplan-assets/editor-CA7MKuk8.js", - "houseplan-assets/fr-DmdKwehD.js", - "houseplan-assets/furniture-plan-art.generated-CWQQHnJL.js", - "houseplan-assets/houseplan-editor-runtime-BcL3Rj9i.js", - "houseplan-assets/houseplan-onboarding-runtime-DIQStHYP.js", - "houseplan-assets/hp-zigbee-topology-overlay-CfzcT25m.js", - "houseplan-assets/iso-scene-render-CtsBhANN.js", - "houseplan-assets/live-interaction-runtime-CrYU-Xe2.js", - "houseplan-assets/pdf-export-IUs8Loq8.js", - "houseplan-assets/summary-panel-runtime-loaded-CJhgoeV3.js" + "houseplan-assets/de-Cf-Yh-qD.js", + "houseplan-assets/editor-COYbDg2h.js", + "houseplan-assets/fr-C5bQpwdy.js", + "houseplan-assets/furniture-plan-art.generated-CkHr8lOA.js", + "houseplan-assets/houseplan-editor-runtime-C54tPnne.js", + "houseplan-assets/houseplan-onboarding-runtime-Ch5D7oRi.js", + "houseplan-assets/hp-zigbee-topology-overlay-CQpKEtLv.js", + "houseplan-assets/iso-scene-render-CqI3ABeb.js", + "houseplan-assets/live-interaction-runtime-qZV2DHRS.js", + "houseplan-assets/pdf-export-Bmt-_V6k.js", + "houseplan-assets/summary-panel-runtime-loaded-CPobCF-I.js" ] }, { - "path": "houseplan-assets/houseplan-editor-runtime-BcL3Rj9i.js", - "sha256": "8a8c626d0c2c186981a6911c2db173d6cb69ceb58c3fe3bf997747aebeae813a", + "path": "houseplan-assets/houseplan-editor-runtime-C54tPnne.js", + "sha256": "972acd8d6e338b16e197c2eadac07457034cf3fefea39c5a9b1c37d08d4a8ab8", "rawBytes": 677942, - "gzipBytes": 188476, + "gzipBytes": 188472, "isEntry": false, "imports": [ - "houseplan-assets/backdrop-pick-Cw68iWqr.js", - "houseplan-assets/form-kit.styles-HxyRNtFW.js", - "houseplan-assets/furniture-plan-art.generated-CWQQHnJL.js", - "houseplan-assets/houseplan-card-OIS3Mvzx.js", - "houseplan-assets/zigbee-topology-4qCSmPRR.js" + "houseplan-assets/backdrop-pick-4y8dV8Ve.js", + "houseplan-assets/form-kit.styles-eIw2y67V.js", + "houseplan-assets/furniture-plan-art.generated-CkHr8lOA.js", + "houseplan-assets/houseplan-card-Dvtr52xr.js", + "houseplan-assets/zigbee-topology-PPd-Bqxz.js" ], "dynamicImports": [ - "houseplan-assets/zigbee-topology-runtime-ul8YAth8.js" + "houseplan-assets/zigbee-topology-runtime-DlN1vrja.js" ] }, { - "path": "houseplan-assets/houseplan-onboarding-runtime-DIQStHYP.js", - "sha256": "5d38adbc5c64caea18e81f136c3e60f859eae9baa9789b6edef95c1765261c83", + "path": "houseplan-assets/houseplan-onboarding-runtime-Ch5D7oRi.js", + "sha256": "b40d0ea3bd87b970334ee2482338cd8aa3674e6fd7a51a53d06bc4720273dfed", "rawBytes": 15667, "gzipBytes": 4828, "isEntry": false, "imports": [ - "houseplan-assets/backdrop-pick-Cw68iWqr.js", - "houseplan-assets/form-kit.styles-HxyRNtFW.js", - "houseplan-assets/houseplan-card-OIS3Mvzx.js" + "houseplan-assets/backdrop-pick-4y8dV8Ve.js", + "houseplan-assets/form-kit.styles-eIw2y67V.js", + "houseplan-assets/houseplan-card-Dvtr52xr.js" ], "dynamicImports": [] }, { - "path": "houseplan-assets/hp-zigbee-topology-overlay-CfzcT25m.js", - "sha256": "200adf925b2a7c1097fe9a9eb0bac0d4274c5b48a7790ecff57cf488e5312253", + "path": "houseplan-assets/hp-zigbee-topology-overlay-CQpKEtLv.js", + "sha256": "9d4f76a5c0326ff856c2dae97f233ded939549480a4e60c6d42d7b407aeadcd7", "rawBytes": 10759, - "gzipBytes": 3684, + "gzipBytes": 3680, "isEntry": false, "imports": [ - "houseplan-assets/houseplan-card-OIS3Mvzx.js", - "houseplan-assets/zigbee-topology-4qCSmPRR.js", - "houseplan-assets/zigbee-topology-runtime-ul8YAth8.js" + "houseplan-assets/houseplan-card-Dvtr52xr.js", + "houseplan-assets/zigbee-topology-PPd-Bqxz.js", + "houseplan-assets/zigbee-topology-runtime-DlN1vrja.js" ], "dynamicImports": [] }, { - "path": "houseplan-assets/iso-scene-render-CtsBhANN.js", - "sha256": "563aa1d2051de0c18ac59590d0c4803e5623929811d55f5affc9579092ed7b9c", + "path": "houseplan-assets/iso-scene-render-CqI3ABeb.js", + "sha256": "dc1afe7f4524595faf6dbca1dbd1430c795182070291ab48f037eb9099c4d110", "rawBytes": 51983, - "gzipBytes": 17642, + "gzipBytes": 17639, "isEntry": false, "imports": [ - "houseplan-assets/houseplan-card-OIS3Mvzx.js" + "houseplan-assets/houseplan-card-Dvtr52xr.js" ], "dynamicImports": [] }, { - "path": "houseplan-assets/live-interaction-runtime-CrYU-Xe2.js", - "sha256": "778330eb3a4cc03ceff627f4d0a8fa6e501666d6c69012ef6d63fdf2f9a9dc48", + "path": "houseplan-assets/live-interaction-runtime-qZV2DHRS.js", + "sha256": "dd2853b8ecd883ad55f15dc30219ba5ab1417c9fbfd48df9f0a4d76aa0971008", "rawBytes": 8216, - "gzipBytes": 3207, + "gzipBytes": 3204, "isEntry": false, "imports": [ - "houseplan-assets/houseplan-card-OIS3Mvzx.js" + "houseplan-assets/houseplan-card-Dvtr52xr.js" ], "dynamicImports": [] }, { - "path": "houseplan-assets/pdf-export-IUs8Loq8.js", - "sha256": "6b9cddfde0743d06fa3dba3a04aee68175f31d48aae40b01254656af821329f0", + "path": "houseplan-assets/pdf-export-Bmt-_V6k.js", + "sha256": "c90d4fa9c838be1a1132109ec13f6ad04e3e4cea6a3298e0177413677a2298a1", "rawBytes": 236264, - "gzipBytes": 109889, + "gzipBytes": 109886, "isEntry": false, "imports": [ - "houseplan-assets/furniture-plan-art.generated-CWQQHnJL.js", - "houseplan-assets/houseplan-card-OIS3Mvzx.js" + "houseplan-assets/furniture-plan-art.generated-CkHr8lOA.js", + "houseplan-assets/houseplan-card-Dvtr52xr.js" ], "dynamicImports": [] }, { - "path": "houseplan-assets/summary-panel-editor-vVUmBjBs.js", - "sha256": "88766397f714c720249bfc11fdb0bb46a272218fb6b222b6be8e553cb33abdf0", + "path": "houseplan-assets/summary-panel-editor-BBxrM3sF.js", + "sha256": "bfedcc5ca13c71e1623ec92dc5979359192caa4c49bf993fe385734adcb9293c", "rawBytes": 14862, - "gzipBytes": 3426, + "gzipBytes": 3420, "isEntry": false, "imports": [ - "houseplan-assets/form-kit.styles-HxyRNtFW.js", - "houseplan-assets/houseplan-card-OIS3Mvzx.js", - "houseplan-assets/summary-panel-runtime-loaded-CJhgoeV3.js" + "houseplan-assets/form-kit.styles-eIw2y67V.js", + "houseplan-assets/houseplan-card-Dvtr52xr.js", + "houseplan-assets/summary-panel-runtime-loaded-CPobCF-I.js" ], "dynamicImports": [] }, { - "path": "houseplan-assets/summary-panel-metrics-B-djAqRO.js", - "sha256": "48144253e983f08e364dfa59713d3a91a087f62af6cf5f1e4c8ad758b6b24d95", + "path": "houseplan-assets/summary-panel-metrics-Ck5HHl5d.js", + "sha256": "d691ab7cbb3a76f1337147091c4443cea8fb51f133dcf788c49aaafb81bcd2c2", "rawBytes": 2611, - "gzipBytes": 1307, + "gzipBytes": 1306, "isEntry": false, "imports": [ - "houseplan-assets/houseplan-card-OIS3Mvzx.js" + "houseplan-assets/houseplan-card-Dvtr52xr.js" ], "dynamicImports": [] }, { - "path": "houseplan-assets/summary-panel-runtime-loaded-CJhgoeV3.js", - "sha256": "ec0ebaf80af3fcff7f7792d67dc21811398456c37286eff4175ff8e3cb9086a4", + "path": "houseplan-assets/summary-panel-runtime-loaded-CPobCF-I.js", + "sha256": "d782b2a4faa18bb30a1099aa9384d4a837b18b5884fad9cf9b32c89ac4d70b0b", "rawBytes": 72733, - "gzipBytes": 20174, + "gzipBytes": 20169, "isEntry": false, "imports": [ - "houseplan-assets/form-kit.styles-HxyRNtFW.js", - "houseplan-assets/houseplan-card-OIS3Mvzx.js" + "houseplan-assets/form-kit.styles-eIw2y67V.js", + "houseplan-assets/houseplan-card-Dvtr52xr.js" ], "dynamicImports": [ - "houseplan-assets/summary-panel-editor-vVUmBjBs.js", - "houseplan-assets/summary-panel-metrics-B-djAqRO.js" + "houseplan-assets/summary-panel-editor-BBxrM3sF.js", + "houseplan-assets/summary-panel-metrics-Ck5HHl5d.js" ] }, { - "path": "houseplan-assets/zigbee-topology-4qCSmPRR.js", - "sha256": "19c6b44a2a83f8b9542f66cdd301e0766c5443a2adf20d96696daa5c21543572", + "path": "houseplan-assets/zigbee-topology-PPd-Bqxz.js", + "sha256": "26dafa1b5f06ec4fe01aab1e492c80896593fd62a7f16e9766075d25b15e88fb", "rawBytes": 18962, - "gzipBytes": 7429, + "gzipBytes": 7424, "isEntry": false, "imports": [ - "houseplan-assets/houseplan-card-OIS3Mvzx.js" + "houseplan-assets/houseplan-card-Dvtr52xr.js" ], "dynamicImports": [] }, { - "path": "houseplan-assets/zigbee-topology-runtime-ul8YAth8.js", - "sha256": "0f9ffcb2b82a8e40aca694268395bddd4895ad080c34a3a69e1b2b06412d46f3", + "path": "houseplan-assets/zigbee-topology-runtime-DlN1vrja.js", + "sha256": "26dd9b4f4962e0f6b19cba4a4e7d222de6fa6324eea56bb9cd2db1a807a91486", "rawBytes": 3942, - "gzipBytes": 1764, + "gzipBytes": 1762, "isEntry": false, "imports": [ - "houseplan-assets/houseplan-card-OIS3Mvzx.js", - "houseplan-assets/zigbee-topology-4qCSmPRR.js" + "houseplan-assets/houseplan-card-Dvtr52xr.js", + "houseplan-assets/zigbee-topology-PPd-Bqxz.js" ], "dynamicImports": [] }, { "path": "houseplan-card.js", - "sha256": "ca44bf40de6ccf2d41a79c05b2a59553c1aabd87a79b87c541ef907dd5143f77", + "sha256": "ed977d6515b2c79736c48c1e4c67526abd633cfb2b308099119b2c8b601d98f3", "rawBytes": 1205, - "gzipBytes": 802, + "gzipBytes": 800, "isEntry": true, "imports": [ - "houseplan-assets/houseplan-card-OIS3Mvzx.js" + "houseplan-assets/houseplan-card-Dvtr52xr.js" ], "dynamicImports": [] }, { "path": "houseplan-panel.js", - "sha256": "18c3b3f1580e6c14c5949b8ad67c2f36a4979cce87112d4930dfe89ea9bb1bfc", + "sha256": "4ab6d42187cda8188950e8e64f71b3cda0f44cb4955eeb2b07bb0ad87c8a7f82", "rawBytes": 6165, - "gzipBytes": 2324, + "gzipBytes": 2322, "isEntry": true, "imports": [ - "houseplan-assets/houseplan-card-OIS3Mvzx.js" + "houseplan-assets/houseplan-card-Dvtr52xr.js" ], "dynamicImports": [] } diff --git a/custom_components/houseplan/frontend/houseplan-assets/backdrop-pick-Cw68iWqr.js b/custom_components/houseplan/frontend/houseplan-assets/backdrop-pick-4y8dV8Ve.js similarity index 95% rename from custom_components/houseplan/frontend/houseplan-assets/backdrop-pick-Cw68iWqr.js rename to custom_components/houseplan/frontend/houseplan-assets/backdrop-pick-4y8dV8Ve.js index 6d8c70b0..ea28fc8c 100644 --- a/custom_components/houseplan/frontend/houseplan-assets/backdrop-pick-Cw68iWqr.js +++ b/custom_components/houseplan/frontend/houseplan-assets/backdrop-pick-4y8dV8Ve.js @@ -1,16 +1,16 @@ -globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="fab26ba4f38e0ad405db785685445fcef47de8ffbe84f490e8de7c6b8c1291a7";import{A as e,c as t,s as a,l as i,cH as n,ao as s,dD as r,dE as o,cG as l,dF as c,cM as p,cL as d,dG as h,bo as u,bn as m,bp as g,ar as _,ay as b,az as f,dH as v}from"./houseplan-card-OIS3Mvzx.js";import{c as w,f as y,C as $}from"./form-kit.styles-HxyRNtFW.js";const k=w+y($,{withSwitch:!1}),x=new WeakSet;let S=null;function M(e){const t=e.renderRoot;if(!t||x.has(t))return;const a=t.ownerDocument??globalThis.document,i=a?.defaultView?.CSSStyleSheet;if(i&&"adoptedStyleSheets"in t)return S||(S=new i,S.replaceSync(k)),t.adoptedStyleSheets=[...t.adoptedStyleSheets,S],void x.add(t);if(t.querySelector("style[data-hp-form-kit]"))return void x.add(t);const n=a.createElement("style");n.dataset.hpFormKit="true",n.textContent=k,t.appendChild(n),x.add(t)}function C({title:a,help:i,body:n,id:s}){return t`
+globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="34ed8381ef1adf8c591e66e7e06a85168914fdc4d58c21a841ade47a105c7ef0";import{A as e,c as t,s as a,l as i,cH as n,ao as s,dD as r,dE as o,cG as l,dF as c,cM as d,cL as p,dG as h,bo as u,bn as m,bp as g,ar as _,ay as b,az as f,dH as v}from"./houseplan-card-Dvtr52xr.js";import{c as w,f as y,C as $}from"./form-kit.styles-eIw2y67V.js";const k=w+y($,{withSwitch:!1}),x=new WeakSet;let S=null;function M(e){const t=e.renderRoot;if(!t||x.has(t))return;const a=t.ownerDocument??globalThis.document,i=a?.defaultView?.CSSStyleSheet;if(i&&"adoptedStyleSheets"in t)return S||(S=new i,S.replaceSync(k)),t.adoptedStyleSheets=[...t.adoptedStyleSheets,S],void x.add(t);if(t.querySelector("style[data-hp-form-kit]"))return void x.add(t);const n=a.createElement("style");n.dataset.hpFormKit="true",n.textContent=k,t.appendChild(n),x.add(t)}function C({title:a,help:i,body:n,id:s}){return t`
${a?t`

${a}

${i??e}
`:e}
${n}
`}function L({title:a,help:i}){return t`

${a}

${i??e}
`}function z({label:a,htmlFor:i,help:n,control:s,hint:r,error:o}){return t`
${i?t``:a}${n??e} ${s} ${o?t``:r?t`

${r}

`:e} -
`}function P(e,{narrow:a=!1}={}){return t`
${e}
`}function T({icon:a,title:i,caption:n,help:s,checked:r,disabled:o=!1,compact:l=!1,onChange:c,id:p}){const d=p&&n?`${p}-caption`:void 0;return t`
`}}ul.properties={hass:{attribute:!1},presentation:{attribute:!1},registry:{attribute:!1},deviceName:{attribute:!1}},ul.styles=[At,zt`:host{display:block;min-width:0;}.devicepreview{margin:4px 0 14px;padding:14px;border:1px solid var(--divider-color,rgba(127,127,127,0.28));border-radius:14px;background:color-mix(in srgb,var(--card-background-color,#20232b) 92%,var(--primary-color,#03a9f4));color:var(--primary-text-color,#fff);overflow:hidden;}.previewhead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;}.previewbadge{padding:3px 9px;border-radius:999px;color:var(--secondary-text-color,#9aa0aa);background:color-mix(in srgb,var(--secondary-text-color,#9aa0aa) 12%,transparent);font-size:12px;font-weight:700;}.previewbadge.example{color:var(--warning-color,#ffb300);}.previewgrid{display:grid;grid-template-columns:minmax(170px,0.8fr) minmax(240px,1.2fr);gap:16px;align-items:stretch;}.previewstage{position:relative;min-height:168px;border-radius:12px;background:var(--secondary-background-color,rgba(0,0,0,0.16));overflow:hidden;pointer-events:none;container-type:inline-size;--icon-size:54px;--device-base-size:48.6px;}.previewfit{position:absolute;left:50%;top:50%;transform-origin:center;}.previewstage .dev{left:0;top:0;cursor:default;}:host([data-pointer-hover]) .previewstage .dev:hover{z-index:2;}.previewfacts{min-width:0;display:grid;align-content:start;gap:8px;}.previewfacts>div{display:grid;grid-template-columns:minmax(115px,0.8fr) minmax(0,1.3fr);gap:8px;}.previewfacts span{color:var(--secondary-text-color,#9aa0aa);}.previewfacts b{min-width:0;overflow-wrap:anywhere;}.previewnotice{margin:2px 0 0;color:var(--secondary-text-color,#9aa0aa);font-size:13px;}.previewdetails{margin-top:12px;}.previewdetails summary{cursor:pointer;color:var(--secondary-text-color,#9aa0aa);}.previewtable{display:grid;gap:8px;margin-top:9px;}.previewsource{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:3px 10px;font-size:13px;}.previewsource>*{min-width:0;overflow-wrap:anywhere;}.previewsource code{color:var(--secondary-text-color,#9aa0aa);}.previewdemo{min-height:40px;display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--divider-color,rgba(127,127,127,0.35));border-radius:10px;background:transparent;color:inherit;cursor:pointer;}.previewdemos{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}.previewdemo:focus-visible{outline:2px solid var(--primary-color,#03a9f4);outline-offset:2px;}.previewdemo:disabled{opacity:0.5;cursor:not-allowed;}@media (max-width:640px){.previewgrid{grid-template-columns:minmax(0,1fr);}.previewstage{min-height:142px;}.previewfacts>div{grid-template-columns:minmax(0,1fr);gap:2px;}}`],customElements.get("hp-device-preview")||customElements.define("hp-device-preview",ul);const _l={revision:0,topologies:[],states:{}};class ml extends Ft{constructor(){super(...arguments),this.value={enabled:!1,z2mBaseTopics:[]},this.savedEnabled=!1,this.devices=[],this._runtime=null,this._snapshot=_l,this._topicText="zigbee2mqtt",this._invalidTopic=!1,this.embedded=!1}disconnectedCallback(){this._release?.(),this._release=void 0,super.disconnectedCallback()}updated(t){t.has("hass")&&(this._release?.(),this._release=void 0,this._runtime=null,this._snapshot=_l),this.savedEnabled&&this._admin&&this._ensureRuntime()}willUpdate(t){t.has("value")&&(this._topicText=(this.value.z2mBaseTopics.length?this.value.z2mBaseTopics:["zigbee2mqtt"]).join("\n"),this._invalidTopic=!1)}get _admin(){return!0===this.hass?.user?.is_admin}_t(t,e){return Qo(l(this.hass),t,e)}_help(){const t=l(this.hass);return Xo(t,"help")&&Xo(t,"help_aria")?p``:d}async _ensureRuntime(){return this._runtime||(this._runtime=await import("./zigbee-topology-runtime-ul8YAth8.js"),this._snapshot=this._runtime.zigbeeTopologyRuntimeSnapshot(this.hass),this._release=this._runtime.subscribeZigbeeTopology(this.hass,()=>{this._snapshot=this._runtime.zigbeeTopologyRuntimeSnapshot(this.hass),this.requestUpdate()}),this.requestUpdate()),this._runtime}_emit(t){this._admin&&this.dispatchEvent(new CustomEvent("hp-topology-settings-change",{detail:t,bubbles:!0,composed:!0}))}_topics(){return this.value.z2mBaseTopics.length?this.value.z2mBaseTopics:["zigbee2mqtt"]}_editTopics(t){this._topicText=t;const e=t.split(/[\r\n,]+/).map(t=>t.trim()).filter(Boolean),s=e.map(Gt).filter(Boolean);this._invalidTopic=s.length!==e.length,this._invalidTopic?this.requestUpdate():this._emit({...this.value,z2mBaseTopics:[...new Set(s)].slice(0,8)})}_status(t){const e=this._snapshot.states[t];if(!e)return this._t("status_idle");if("loading"===e.phase)return this._t("status_loading");if("error"===e.phase)return this._t(`error_${e.error||"provider"}`);if("ready"!==e.phase||!e.obtainedAt)return this._t("status_idle");const s=new Date(e.obtainedAt).toLocaleTimeString(l(this.hass),{hour:"2-digit",minute:"2-digit"}),i=this._snapshot.topologies.find(e=>"zha"===t?"zha"===e.provider:`z2m:${e.instanceId}`===t),o=!!i&&!!this.registry&&ta(i,this.devices,this.registry).warnings.length>0;return e.partial||o?this._t("status_partial",{time:s}):i&&!i.links.length?this._t("status_no_links",{time:s}):this._t(Date.now()-e.obtainedAt>ea?"status_stale":"status_ready",{time:s})}_busy(t){return"loading"===this._snapshot.states[t]?.phase}async _readZha(){this.savedEnabled&&this._admin&&(await this._ensureRuntime()).readZhaTopology(this.hass)}async _refreshZ2m(t){this.savedEnabled&&this._admin&&(await this._ensureRuntime()).refreshZ2mTopology(this.hass,t)}render(){if(this.embedded)return this._renderEmbedded();const t=this._admin,e=this.value.enabled,s=t&&this.savedEnabled,i=this._topics();return p` + .ariaLabel=${this._t("help_aria")}>`:d}async _ensureRuntime(){return this._runtime||(this._runtime=await import("./zigbee-topology-runtime-DlN1vrja.js"),this._snapshot=this._runtime.zigbeeTopologyRuntimeSnapshot(this.hass),this._release=this._runtime.subscribeZigbeeTopology(this.hass,()=>{this._snapshot=this._runtime.zigbeeTopologyRuntimeSnapshot(this.hass),this.requestUpdate()}),this.requestUpdate()),this._runtime}_emit(t){this._admin&&this.dispatchEvent(new CustomEvent("hp-topology-settings-change",{detail:t,bubbles:!0,composed:!0}))}_topics(){return this.value.z2mBaseTopics.length?this.value.z2mBaseTopics:["zigbee2mqtt"]}_editTopics(t){this._topicText=t;const e=t.split(/[\r\n,]+/).map(t=>t.trim()).filter(Boolean),s=e.map(Gt).filter(Boolean);this._invalidTopic=s.length!==e.length,this._invalidTopic?this.requestUpdate():this._emit({...this.value,z2mBaseTopics:[...new Set(s)].slice(0,8)})}_status(t){const e=this._snapshot.states[t];if(!e)return this._t("status_idle");if("loading"===e.phase)return this._t("status_loading");if("error"===e.phase)return this._t(`error_${e.error||"provider"}`);if("ready"!==e.phase||!e.obtainedAt)return this._t("status_idle");const s=new Date(e.obtainedAt).toLocaleTimeString(l(this.hass),{hour:"2-digit",minute:"2-digit"}),i=this._snapshot.topologies.find(e=>"zha"===t?"zha"===e.provider:`z2m:${e.instanceId}`===t),o=!!i&&!!this.registry&&ta(i,this.devices,this.registry).warnings.length>0;return e.partial||o?this._t("status_partial",{time:s}):i&&!i.links.length?this._t("status_no_links",{time:s}):this._t(Date.now()-e.obtainedAt>ea?"status_stale":"status_ready",{time:s})}_busy(t){return"loading"===this._snapshot.states[t]?.phase}async _readZha(){this.savedEnabled&&this._admin&&(await this._ensureRuntime()).readZhaTopology(this.hass)}async _refreshZ2m(t){this.savedEnabled&&this._admin&&(await this._ensureRuntime()).refreshZ2mTopology(this.hass,t)}render(){if(this.embedded)return this._renderEmbedded();const t=this._admin,e=this.value.enabled,s=t&&this.savedEnabled,i=this._topics();return p`
${this._t("title")}${this._help()}