mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
perf(markers): a marker's shadow no longer animates
The shadow of a device marker is sized from the marker, and the marker is sized from the container: --device-shell-shadow is expressed in --dev-size, which resolves to 2.5cqw. With box-shadow in the transition list, every container-query re-evaluation — a tooltip, a scrollbar, a rotation — produced a new computed value and restarted a 150 ms non-composited transition on every marker at once. The owner's Firefox profile shows what that costs: 244 box-shadow transitions, all on span.device-shell-frame, all oncompositor:false, in bursts of exactly 61 (the markers on screen), four bursts in two seconds. During them the tab presented 103 frames in 11 seconds — 9.4 per second, CONTENT_FRAME_TIME median 149 ms and up to 320 — while the refresh driver waited for paint 381 times. Our JavaScript in the worst three seconds: 16 ms. Chromium starts the same transitions (measured: one pixel of container width starts two per marker in both engines) and merely pays less for them, which is why this hid there. The shadow itself is unchanged; it simply applies at once. The core keeps the same treatment, so the selection and focus rings appear without a fade — an instant ring is ordinary feedback, a faded one costs a full-frame repaint per marker. Hover still animates border-color. Issue: #524 User-Visible: yes
This commit is contained in:
@@ -1,109 +1,109 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"fingerprint": "7d8c26b95986499fd35534164d8e2bc2e897f0fbe9d846bccffa49f45116a618",
|
||||
"fingerprint": "ff98640cc5310e1e90e00b0cf23e42c8b1ac0953c6ad38786af6378331273765",
|
||||
"entry": "houseplan-card.js",
|
||||
"panelEntry": "houseplan-panel.js",
|
||||
"initialViewFiles": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js",
|
||||
"houseplan-card.js"
|
||||
],
|
||||
"initialViewGzipBytes": 300059,
|
||||
"initialViewGzipBytes": 300577,
|
||||
"initialPanelFiles": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js",
|
||||
"houseplan-card.js",
|
||||
"houseplan-panel.js"
|
||||
],
|
||||
"initialPanelGzipBytes": 302365,
|
||||
"initialPanelGzipBytes": 302882,
|
||||
"initialPanelOnlyFiles": [
|
||||
"houseplan-panel.js"
|
||||
],
|
||||
"initialPanelOnlyGzipBytes": 2306,
|
||||
"initialPanelOnlyGzipBytes": 2305,
|
||||
"lazyFiles": [
|
||||
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||
"houseplan-assets/de-HksnN-9C.js",
|
||||
"houseplan-assets/editor-CSFqqHwT.js",
|
||||
"houseplan-assets/fr-lBEFwYGK.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-uP6vjZmA.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-BdClDAcS.js",
|
||||
"houseplan-assets/hp-zigbee-topology-overlay-DRpau2VG.js",
|
||||
"houseplan-assets/iso-scene-render-RhSO-S9j.js",
|
||||
"houseplan-assets/live-interaction-runtime-C_klxsXE.js",
|
||||
"houseplan-assets/pdf-export-CsCJxU0E.js",
|
||||
"houseplan-assets/summary-panel-runtime-loaded-DQS834xA.js",
|
||||
"houseplan-assets/zigbee-topology-LI-FVdpo.js",
|
||||
"houseplan-assets/zigbee-topology-runtime-DTi-kj9C.js"
|
||||
"houseplan-assets/backdrop-pick-D5Q4Lp1s.js",
|
||||
"houseplan-assets/de-VLLexfNZ.js",
|
||||
"houseplan-assets/editor-DxwvfCN0.js",
|
||||
"houseplan-assets/fr-sa0yIASm.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-DKbkMWv0.js",
|
||||
"houseplan-assets/guard-B08tQ2iB.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-CPHsPq8i.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-CYnWHSzo.js",
|
||||
"houseplan-assets/hp-zigbee-topology-overlay-BsRS5Mqx.js",
|
||||
"houseplan-assets/iso-scene-render-CccMMhjh.js",
|
||||
"houseplan-assets/live-interaction-runtime-DjugMgAq.js",
|
||||
"houseplan-assets/pdf-export-BxY-xCel.js",
|
||||
"houseplan-assets/summary-panel-runtime-loaded-sGYqBGeH.js",
|
||||
"houseplan-assets/zigbee-topology-BrdakkCO.js",
|
||||
"houseplan-assets/zigbee-topology-runtime-DqQtbpDf.js"
|
||||
],
|
||||
"lazyGzipBytes": 418179,
|
||||
"lazyGzipBytes": 418153,
|
||||
"lazyEditorFiles": [
|
||||
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||
"houseplan-assets/editor-CSFqqHwT.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-uP6vjZmA.js",
|
||||
"houseplan-assets/zigbee-topology-LI-FVdpo.js"
|
||||
"houseplan-assets/backdrop-pick-D5Q4Lp1s.js",
|
||||
"houseplan-assets/editor-DxwvfCN0.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-DKbkMWv0.js",
|
||||
"houseplan-assets/guard-B08tQ2iB.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-CPHsPq8i.js",
|
||||
"houseplan-assets/zigbee-topology-BrdakkCO.js"
|
||||
],
|
||||
"lazyEditorGzipBytes": 205726,
|
||||
"lazyEditorGzipBytes": 205708,
|
||||
"lazyOnboardingFiles": [
|
||||
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-BdClDAcS.js"
|
||||
"houseplan-assets/backdrop-pick-D5Q4Lp1s.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-CYnWHSzo.js"
|
||||
],
|
||||
"lazyOnboardingGzipBytes": 14187,
|
||||
"lazyOnboardingGzipBytes": 14184,
|
||||
"lazyLocaleFiles": [
|
||||
"houseplan-assets/de-HksnN-9C.js",
|
||||
"houseplan-assets/fr-lBEFwYGK.js"
|
||||
"houseplan-assets/de-VLLexfNZ.js",
|
||||
"houseplan-assets/fr-sa0yIASm.js"
|
||||
],
|
||||
"lazyLocaleGzipBytes": 54854,
|
||||
"lazyLocaleGzipBytes": 54857,
|
||||
"lazyIsometricFiles": [
|
||||
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||
"houseplan-assets/iso-scene-render-RhSO-S9j.js"
|
||||
"houseplan-assets/guard-B08tQ2iB.js",
|
||||
"houseplan-assets/iso-scene-render-CccMMhjh.js"
|
||||
],
|
||||
"lazyIsometricGzipBytes": 13460,
|
||||
"lazyIsometricGzipBytes": 13457,
|
||||
"lazyFurnitureArtFiles": [
|
||||
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js"
|
||||
"houseplan-assets/furniture-plan-art.generated-DKbkMWv0.js"
|
||||
],
|
||||
"lazyFurnitureArtGzipBytes": 10255,
|
||||
"lazyFurnitureArtGzipBytes": 10250,
|
||||
"lazyPdfFiles": [
|
||||
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||
"houseplan-assets/pdf-export-CsCJxU0E.js"
|
||||
"houseplan-assets/furniture-plan-art.generated-DKbkMWv0.js",
|
||||
"houseplan-assets/pdf-export-BxY-xCel.js"
|
||||
],
|
||||
"lazyPdfGzipBytes": 120372,
|
||||
"lazyPdfGzipBytes": 120366,
|
||||
"files": [
|
||||
{
|
||||
"path": "houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||
"sha256": "e76da9cb2c5c8a32b2798c6f8785819bd7ff6ee624987feb8ff2c89522f87fef",
|
||||
"path": "houseplan-assets/backdrop-pick-D5Q4Lp1s.js",
|
||||
"sha256": "576bbc6b2cc1e44839881fa20dd9fff9a1222f865448b26c5367a02c4d57284a",
|
||||
"rawBytes": 21134,
|
||||
"gzipBytes": 7148,
|
||||
"gzipBytes": 7147,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/de-HksnN-9C.js",
|
||||
"sha256": "3a1ada3b04ef3eb7e9c6856c700d589e90e962a6753087b59f89b481c68a9499",
|
||||
"path": "houseplan-assets/de-VLLexfNZ.js",
|
||||
"sha256": "ea2cf39e832157c796f0f419eddfe112ea85671f897c30422a93a2526b4593df",
|
||||
"rawBytes": 91441,
|
||||
"gzipBytes": 27710,
|
||||
"gzipBytes": 27713,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/editor-CSFqqHwT.js",
|
||||
"sha256": "a5adebb3a438356deb0e5a35fa218bcb4ab6a8be23d6e535b6cd350170775926",
|
||||
"path": "houseplan-assets/editor-DxwvfCN0.js",
|
||||
"sha256": "03ef45f8ca06d3caa0b2a083b82a0189dd78a51a0a36de3903e05586e7516e47",
|
||||
"rawBytes": 3832,
|
||||
"gzipBytes": 1585,
|
||||
"gzipBytes": 1583,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/fr-lBEFwYGK.js",
|
||||
"sha256": "de104eb96b8e4fbb2895ab861300878eb3f27dc616e4737bc2e9e818286c9d88",
|
||||
"path": "houseplan-assets/fr-sa0yIASm.js",
|
||||
"sha256": "aa8d30728b71a0d28378d056d4a5f13bca6e995f97443510302c097d4a5c0699",
|
||||
"rawBytes": 93719,
|
||||
"gzipBytes": 27144,
|
||||
"isEntry": false,
|
||||
@@ -111,199 +111,199 @@
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||
"sha256": "9b63fd1d6479a45b433b323468a56b46ab0e0e3d2a5bfb82b6349d475e59eee8",
|
||||
"path": "houseplan-assets/furniture-plan-art.generated-DKbkMWv0.js",
|
||||
"sha256": "26925f6dfbc834d634bc634770ee2de220aa617c065b7a10945cb716f88cfcaf",
|
||||
"rawBytes": 33655,
|
||||
"gzipBytes": 10255,
|
||||
"gzipBytes": 10250,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/guard-Bdo2w6Sq.js",
|
||||
"sha256": "b98da3eb22fde2449b43c37851d7e2cbbcb14103b20b7c6b417fa4bab2502416",
|
||||
"path": "houseplan-assets/guard-B08tQ2iB.js",
|
||||
"sha256": "d699a561e07585dc1cf90708632355dc5d19cfc09a1700ffc3db88abbe1bf2c0",
|
||||
"rawBytes": 518,
|
||||
"gzipBytes": 371,
|
||||
"gzipBytes": 370,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||
"sha256": "e7bdf9f5d1b699c27b57f25c369b137eceae0cf6f3ec7f2d364ef6c2bd552887",
|
||||
"rawBytes": 1079369,
|
||||
"gzipBytes": 299254,
|
||||
"path": "houseplan-assets/houseplan-card-D0jk3o_K.js",
|
||||
"sha256": "6b8371e61f30688bf1b3671ed27c8b80119df432af13e6c5da481be80b97afc9",
|
||||
"rawBytes": 1080267,
|
||||
"gzipBytes": 299772,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": [
|
||||
"houseplan-assets/de-HksnN-9C.js",
|
||||
"houseplan-assets/editor-CSFqqHwT.js",
|
||||
"houseplan-assets/fr-lBEFwYGK.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-uP6vjZmA.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-BdClDAcS.js",
|
||||
"houseplan-assets/hp-zigbee-topology-overlay-DRpau2VG.js",
|
||||
"houseplan-assets/iso-scene-render-RhSO-S9j.js",
|
||||
"houseplan-assets/live-interaction-runtime-C_klxsXE.js",
|
||||
"houseplan-assets/pdf-export-CsCJxU0E.js",
|
||||
"houseplan-assets/summary-panel-runtime-loaded-DQS834xA.js"
|
||||
"houseplan-assets/de-VLLexfNZ.js",
|
||||
"houseplan-assets/editor-DxwvfCN0.js",
|
||||
"houseplan-assets/fr-sa0yIASm.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-DKbkMWv0.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-CPHsPq8i.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-CYnWHSzo.js",
|
||||
"houseplan-assets/hp-zigbee-topology-overlay-BsRS5Mqx.js",
|
||||
"houseplan-assets/iso-scene-render-CccMMhjh.js",
|
||||
"houseplan-assets/live-interaction-runtime-DjugMgAq.js",
|
||||
"houseplan-assets/pdf-export-BxY-xCel.js",
|
||||
"houseplan-assets/summary-panel-runtime-loaded-sGYqBGeH.js"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/houseplan-editor-runtime-uP6vjZmA.js",
|
||||
"sha256": "00be6a1cdb443cd875e736984baf86b77e63d96474ec72d4d66bf2baa9f1a2ba",
|
||||
"path": "houseplan-assets/houseplan-editor-runtime-CPHsPq8i.js",
|
||||
"sha256": "eba46a060a4e1f4251bdd325404dc60dc60d1d61760a5b65cedda28f90e34c51",
|
||||
"rawBytes": 672339,
|
||||
"gzipBytes": 178936,
|
||||
"gzipBytes": 178932,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||
"houseplan-assets/zigbee-topology-LI-FVdpo.js"
|
||||
"houseplan-assets/backdrop-pick-D5Q4Lp1s.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-DKbkMWv0.js",
|
||||
"houseplan-assets/guard-B08tQ2iB.js",
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js",
|
||||
"houseplan-assets/zigbee-topology-BrdakkCO.js"
|
||||
],
|
||||
"dynamicImports": [
|
||||
"houseplan-assets/zigbee-topology-runtime-DTi-kj9C.js"
|
||||
"houseplan-assets/zigbee-topology-runtime-DqQtbpDf.js"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/houseplan-onboarding-runtime-BdClDAcS.js",
|
||||
"sha256": "f81b58bde08ff74bab903803cc709e18449900dc91a3f64106db737bbabd55e3",
|
||||
"path": "houseplan-assets/houseplan-onboarding-runtime-CYnWHSzo.js",
|
||||
"sha256": "934460727e0eefc0a3034af6b273fad466823f3b28c38e1039232367592e5d4e",
|
||||
"rawBytes": 28287,
|
||||
"gzipBytes": 7039,
|
||||
"gzipBytes": 7037,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/backdrop-pick-D5Q4Lp1s.js",
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/hp-zigbee-topology-overlay-DRpau2VG.js",
|
||||
"sha256": "968345cc4eaaf6cc46accbdc30b4fff83e3fc40a5a7b7a0f611229f0e53ec6b9",
|
||||
"path": "houseplan-assets/hp-zigbee-topology-overlay-BsRS5Mqx.js",
|
||||
"sha256": "64939778e4086df63abe3d4e8a3116962b264d4f0ee0c5184f08f0c0bfdf376a",
|
||||
"rawBytes": 11034,
|
||||
"gzipBytes": 3731,
|
||||
"gzipBytes": 3730,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||
"houseplan-assets/zigbee-topology-LI-FVdpo.js",
|
||||
"houseplan-assets/zigbee-topology-runtime-DTi-kj9C.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js",
|
||||
"houseplan-assets/zigbee-topology-BrdakkCO.js",
|
||||
"houseplan-assets/zigbee-topology-runtime-DqQtbpDf.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/iso-scene-render-RhSO-S9j.js",
|
||||
"sha256": "b5c630c05c0c2648c96006ab51cf271ae2ca585742df4bd9ad456ce9dac86646",
|
||||
"path": "houseplan-assets/iso-scene-render-CccMMhjh.js",
|
||||
"sha256": "c11e4b107da8102344d6999650fc0c069d0c0fbb59af01c313d44c3c7c4e6903",
|
||||
"rawBytes": 38562,
|
||||
"gzipBytes": 13089,
|
||||
"gzipBytes": 13087,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/guard-B08tQ2iB.js",
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/live-interaction-runtime-C_klxsXE.js",
|
||||
"sha256": "319a2a94cf85acd20b27522ae71b81e25ee1f2d69f1688256c5eeed4dddec3d5",
|
||||
"path": "houseplan-assets/live-interaction-runtime-DjugMgAq.js",
|
||||
"sha256": "2dbe23d9ee303be1140dbccbedd3616c29e4f89538b07220fb4026239bf9fef5",
|
||||
"rawBytes": 5196,
|
||||
"gzipBytes": 2129,
|
||||
"gzipBytes": 2127,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/pdf-export-CsCJxU0E.js",
|
||||
"sha256": "eccac69e0d54ceeff8fceb8db69a0f20f5339443cb7961f8916f9a850bb1ae6c",
|
||||
"path": "houseplan-assets/pdf-export-BxY-xCel.js",
|
||||
"sha256": "b595eee94a34d3e10e7ba12520062f39144fa8dd68a31318679d45d68a8d80aa",
|
||||
"rawBytes": 237254,
|
||||
"gzipBytes": 110117,
|
||||
"gzipBytes": 110116,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/furniture-plan-art.generated-DKbkMWv0.js",
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/summary-panel-editor-BC_vG9Hn.js",
|
||||
"sha256": "5c7fd338b94152ae5e1194f07c6353863a9e22c4f2e99424f5795484da989a64",
|
||||
"path": "houseplan-assets/summary-panel-editor-C5vWd7lx.js",
|
||||
"sha256": "c26cac6a394f9a023a49af7a3597c9e08dab5fcef1cd153132bb80f87fbdab4e",
|
||||
"rawBytes": 14824,
|
||||
"gzipBytes": 3401,
|
||||
"gzipBytes": 3402,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||
"houseplan-assets/summary-panel-runtime-loaded-DQS834xA.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js",
|
||||
"houseplan-assets/summary-panel-runtime-loaded-sGYqBGeH.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/summary-panel-metrics-C2M32Xkf.js",
|
||||
"sha256": "bca21f0d66af64c7c1ef501a8cd38e04e2a74ee7196e004f6f60397d9e9a72f1",
|
||||
"path": "houseplan-assets/summary-panel-metrics-nnK4peUR.js",
|
||||
"sha256": "7a9f1a763bf85e363bd5eb9fde91f94e8aa8e20e08a54f544ed06576bbf6e8da",
|
||||
"rawBytes": 2610,
|
||||
"gzipBytes": 1308,
|
||||
"gzipBytes": 1306,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/summary-panel-runtime-loaded-DQS834xA.js",
|
||||
"sha256": "54c791fdd19e77c24ac142794c4207345eaec03d2ab15dfdf3b991afa32bb812",
|
||||
"path": "houseplan-assets/summary-panel-runtime-loaded-sGYqBGeH.js",
|
||||
"sha256": "8c97c663bdc659ad68a9a8cbb73b07237b750d42096aeaf7736fd157775402ac",
|
||||
"rawBytes": 72272,
|
||||
"gzipBytes": 19729,
|
||||
"gzipBytes": 19727,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": [
|
||||
"houseplan-assets/summary-panel-editor-BC_vG9Hn.js",
|
||||
"houseplan-assets/summary-panel-metrics-C2M32Xkf.js"
|
||||
"houseplan-assets/summary-panel-editor-C5vWd7lx.js",
|
||||
"houseplan-assets/summary-panel-metrics-nnK4peUR.js"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/zigbee-topology-LI-FVdpo.js",
|
||||
"sha256": "d01ec49d20c5f3dc028a59107f1f9060634ab93d6d112e03a7c2b85792159440",
|
||||
"path": "houseplan-assets/zigbee-topology-BrdakkCO.js",
|
||||
"sha256": "2b70bb09cc3bd85cef479fe8135844e454dbb9d47c359584f68f15c88df6091d",
|
||||
"rawBytes": 18961,
|
||||
"gzipBytes": 7431,
|
||||
"gzipBytes": 7426,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/zigbee-topology-runtime-DTi-kj9C.js",
|
||||
"sha256": "3a0fad7d479bbeb161434e498a3c8ac7f88da62ef37c173b66f95057098bcc97",
|
||||
"path": "houseplan-assets/zigbee-topology-runtime-DqQtbpDf.js",
|
||||
"sha256": "8026b2637d3f9f7cbbd836d7f0ee2608e78d967df4b8081a8f9a946702818e6e",
|
||||
"rawBytes": 3941,
|
||||
"gzipBytes": 1765,
|
||||
"gzipBytes": 1764,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||
"houseplan-assets/zigbee-topology-LI-FVdpo.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js",
|
||||
"houseplan-assets/zigbee-topology-BrdakkCO.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-card.js",
|
||||
"sha256": "21da7b3390ea9d4992e33bf4d6fdf684145b53f407e253a599e70a459585298d",
|
||||
"sha256": "8a0de07efe43bee3b80fba47439783accc2d689621efb43eb92bd948c331f37e",
|
||||
"rawBytes": 1205,
|
||||
"gzipBytes": 805,
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-panel.js",
|
||||
"sha256": "a664721695cf5c85903eea440d05a295cb6d6d2cd1e3669fd5c65c9752534492",
|
||||
"sha256": "c5cddd44a2af9872e9d352b2915f8889858a3c3c88947409955a16c2cf392858",
|
||||
"rawBytes": 6124,
|
||||
"gzipBytes": 2306,
|
||||
"gzipBytes": 2305,
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"houseplan-card.js"
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+5
-5
@@ -1,14 +1,14 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7d8c26b95986499fd35534164d8e2bc2e897f0fbe9d846bccffa49f45116a618";import{m as e,l as o,t,e3 as s,A as a,e4 as i,e5 as l,e6 as n,dU as r,b as c}from"./houseplan-card-DkiI2BOK.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__="ff98640cc5310e1e90e00b0cf23e42c8b1ac0953c6ad38786af6378331273765";import{m as e,l as o,t,e3 as s,A as a,e4 as i,e5 as l,e6 as n,dU as r,b as c}from"./houseplan-card-D0jk3o_K.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);
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7d8c26b95986499fd35534164d8e2bc2e897f0fbe9d846bccffa49f45116a618";import{dS as r,dT as t,dU as e}from"./houseplan-card-DkiI2BOK.js";const s={},a=r(class extends t{constructor(){super(...arguments),this.ot=s}render(r,t){return t()}update(r,[t,s]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every((r,t)=>r===this.ot[t]))return e}else if(this.ot===t)return e;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,s)}});export{a as i};
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="ff98640cc5310e1e90e00b0cf23e42c8b1ac0953c6ad38786af6378331273765";import{dS as r,dT as t,dU as e}from"./houseplan-card-D0jk3o_K.js";const s={},a=r(class extends t{constructor(){super(...arguments),this.ot=s}render(r,t){return t()}update(r,[t,s]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every((r,t)=>r===this.ot[t]))return e}else if(this.ot===t)return e;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,s)}});export{a as i};
|
||||
+16
-8
File diff suppressed because one or more lines are too long
+3
-3
File diff suppressed because one or more lines are too long
+30
-30
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+2
-2
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,4 +1,4 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7d8c26b95986499fd35534164d8e2bc2e897f0fbe9d846bccffa49f45116a618";import{b as a,A as e}from"./houseplan-card-DkiI2BOK.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-DQS834xA.js";const m=m=>{const{host:c,dialog:d,problems:n,t:b}=m,y=n.find(a=>"error"===a.kind),$=d.localShow!==d.baseLocalShow||!d.localOnly&&!s(t(d.draft),d.base),p=$&&!d.busy&&!y,v=a=>n.find(e=>e.path===a),h=a=>a?b(`summary.problem.${a.code}`):"",k=()=>m.close(),g=a`<label class="summary-switch" for="summary-local-show">
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="ff98640cc5310e1e90e00b0cf23e42c8b1ac0953c6ad38786af6378331273765";import{b as a,A as e}from"./houseplan-card-D0jk3o_K.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-sGYqBGeH.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"
|
||||
+1
-1
@@ -1 +1 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7d8c26b95986499fd35534164d8e2bc2e897f0fbe9d846bccffa49f45116a618";import{e9 as e,L as t,a2 as n,J as i,an as o,N as r,bo as s,bn as a,a1 as c,a0 as l,ax as d,ea as u,eb as f,bq as m,ec as g}from"./houseplan-card-DkiI2BOK.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),s=i.binding.slice(o+1),a="device"===r?e.registry.devices?.[s]:null,c="entity"===r?e.registry.entities?.[s]:null,l="device"===r?s:c?.device_id,d="device"===r?a?.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(s))&&t.add(l)}return t}function y(e,t){return e?.length?t?.length?g(e,t):e:t}function _(e,t){const n=c(e.rooms,t.walls,t.openCuts,[],i,t.cellCm,o,r);return{roomGeom:"ok"===n.status||"degraded-extra"===n.status?n.roomGeom:void 0,multiWallNodes:l(e.rooms,t.walls,t.openCuts,i,t.cellCm,o,r)}}function*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 a=t(e);if(!a)continue;const c=n(f.rooms,e.id,m.walls,m.openCuts,i,m.cellCm,o,r,g.roomGeom,g.multiWallNodes)||a;v=y(v,s(c,m.physicalBodies)),yield}const _=m.cellCm/o;u+=a(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__="ff98640cc5310e1e90e00b0cf23e42c8b1ac0953c6ad38786af6378331273765";import{e9 as e,L as t,a2 as n,J as i,an as o,N as r,bo as s,bn as a,a1 as c,a0 as l,ax as u,ea as d,eb as f,bq as m,ec as g}from"./houseplan-card-D0jk3o_K.js";function v(e){if(!e.registry.authoritative)return null;const t=new Set,n=u(e.markers);for(const i of Object.values(e.registry.devices||{}))i?.id&&"service"!==i.entry_type&&!n.devices.has(i.id)&&i.area_id&&e.areaToSpace[i.area_id]&&t.add(i.id);for(const i of e.markers||[]){if(i.removed||"virtual"===i.binding)continue;const o=String(i.binding||"").indexOf(":");if(o<1)continue;const r=i.binding.slice(0,o),s=i.binding.slice(o+1),a="device"===r?e.registry.devices?.[s]:null,c="entity"===r?e.registry.entities?.[s]:null,l="device"===r?s:c?.device_id,u="device"===r?a?.area_id:c?.area_id||l&&e.registry.devices?.[l]?.area_id,d="string"==typeof i.room_id&&i.room_id.length>0&&null===i.area?"":i.area||u||"",f=d&&e.areaToSpace[d]||i.space||e.firstSpaceId;l&&e.registry.devices?.[l]&&e.spaceIds.has(f)&&(!n.devices.has(l)||"entity"===r&&n.liveEntities.has(s))&&t.add(l)}return t}function y(e,t){return e?.length?t?.length?g(e,t):e:t}function _(e,t){const n=c(e.rooms,t.walls,t.openCuts,[],i,t.cellCm,o,r);return{roomGeom:"ok"===n.status||"degraded-extra"===n.status?n.roomGeom:void 0,multiWallNodes:l(e.rooms,t.walls,t.openCuts,i,t.cellCm,o,r)}}function*h(c,l,u=_){try{let d=0;for(const f of l){const l=c.spaces.find(e=>String(e?.id)===f.id);if(!l)continue;const m=e(l,f),g=u(f,m);let v=null;for(const e of f.rooms){if(!e.id)continue;const a=t(e);if(!a)continue;const c=n(f.rooms,e.id,m.walls,m.openCuts,i,m.cellCm,o,r,g.roomGeom,g.multiWallNodes)||a;v=y(v,s(c,m.physicalBodies)),yield}const _=m.cellCm/o;d+=a(v)*_*_/1e4}return d}catch{return null}}function 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=d(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};
|
||||
+2
-2
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7d8c26b95986499fd35534164d8e2bc2e897f0fbe9d846bccffa49f45116a618";import{n as t,b as n}from"./zigbee-topology-LI-FVdpo.js";import{B as e}from"./houseplan-card-DkiI2BOK.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 g(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 m(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,m=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{p=t,m=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&&m?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof f&&b.push(f),await g(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 g(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,m as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot};
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="ff98640cc5310e1e90e00b0cf23e42c8b1ac0953c6ad38786af6378331273765";import{n as t,b as n}from"./zigbee-topology-BrdakkCO.js";import{B as e}from"./houseplan-card-D0jk3o_K.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 g(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 m(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,m=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{f=t,m=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&&m?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof p&&b.push(p),await g(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 g(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,m as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot};
|
||||
@@ -1 +1 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7d8c26b95986499fd35534164d8e2bc2e897f0fbe9d846bccffa49f45116a618";try{await import("./houseplan-assets/houseplan-card-DkiI2BOK.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__="ff98640cc5310e1e90e00b0cf23e42c8b1ac0953c6ad38786af6378331273765";try{await import("./houseplan-assets/houseplan-card-D0jk3o_K.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
@@ -0,0 +1,105 @@
|
||||
// #524: маркеры не анимируют тень, выраженную в контейнерных единицах.
|
||||
//
|
||||
// Тень оболочки и кольцо ядра заданы через `--dev-size`, а он восходит к
|
||||
// `2.5cqw`. Пока `box-shadow` стоял в списке переходов, ЛЮБОЙ пересчёт
|
||||
// контейнерных запросов — а он случается от подсказки, полосы прокрутки,
|
||||
// поворота экрана — менял вычисленное значение у каждого маркера и запускал
|
||||
// на нём некомпозируемый 150-миллисекундный переход. В профиле владельца
|
||||
// (Firefox 155) 61 такой переход разом давал 9,4 к/с и кадры по 149 мс.
|
||||
//
|
||||
// Свидетель судит ПРИЧИНУ, а не время кадра: считает старты переходов, а не
|
||||
// миллисекунды, и поэтому не флейкует и не зависит от движка. Проверять это
|
||||
// в Chromium честно: переход запускается в обоих движках одинаково, разница
|
||||
// только в цене перерисовки.
|
||||
import { launch, checkAll, finish } from './serve.mjs';
|
||||
|
||||
const { page, browser } = await launch({ width: 1100, height: 820 });
|
||||
|
||||
// Слушатель ставится один раз и живёт до конца прогона.
|
||||
await page.evaluate(() => {
|
||||
const card = window.__card;
|
||||
const root = card.shadowRoot || card.renderRoot;
|
||||
window.__starts = [];
|
||||
root.addEventListener('transitionrun', (event) => {
|
||||
const target = event.target;
|
||||
window.__starts.push({
|
||||
property: event.propertyName,
|
||||
cls: target?.getAttribute?.('class') || target?.tagName || '?',
|
||||
onMarker: !!target?.closest?.('.dev'),
|
||||
});
|
||||
}, true);
|
||||
});
|
||||
|
||||
const out = await page.evaluate(async () => {
|
||||
const result = {};
|
||||
const card = window.__card;
|
||||
const root = card.shadowRoot || card.renderRoot;
|
||||
const frame = () => new Promise((resolve) => requestAnimationFrame(resolve));
|
||||
const settle = async () => { await card.updateComplete; await frame(); await frame(); };
|
||||
card._setMode('devices');
|
||||
await settle();
|
||||
const markers = [...root.querySelectorAll('[data-hp="device"]')];
|
||||
result.enoughMarkers = markers.length >= 8;
|
||||
result.everyMarkerHasShell = markers.every((marker) => !!marker.querySelector('.device-shell-frame'));
|
||||
|
||||
// AC1: ширина контейнера меняется на один пиксель — переходов тени быть не должно.
|
||||
const stage = root.querySelector('.stage');
|
||||
const width = stage.getBoundingClientRect().width;
|
||||
window.__starts.length = 0;
|
||||
stage.style.width = `${Math.round(width) - 1}px`;
|
||||
await frame(); await frame();
|
||||
await new Promise((resolve) => setTimeout(resolve, 200));
|
||||
const afterResize = [...window.__starts];
|
||||
stage.style.removeProperty('width');
|
||||
await settle();
|
||||
result.containerResizeStartsNoShadowTransition = afterResize
|
||||
.every((entry) => entry.property !== 'box-shadow');
|
||||
result.shadowTransitionsOnResize = afterResize.filter((e) => e.property === 'box-shadow').length;
|
||||
result.resizeStartsNothingOnMarkers = afterResize.filter((e) => e.onMarker).length;
|
||||
|
||||
// AC3: кольцо выделения появляется сразу и без перехода.
|
||||
const target = markers[0];
|
||||
const core = target.querySelector('.device-core');
|
||||
const ringWidth = () => {
|
||||
const shadow = getComputedStyle(core).boxShadow;
|
||||
const px = [...shadow.matchAll(/(-?\d+(?:\.\d+)?)px/g)].map((m) => Math.abs(Number(m[1])));
|
||||
return Math.max(0, ...px);
|
||||
};
|
||||
const before = ringWidth();
|
||||
card._selId = target.dataset.id;
|
||||
card.requestUpdate();
|
||||
await card.updateComplete;
|
||||
await frame();
|
||||
result.selectionRingAppearsInOneFrame = ringWidth() > before;
|
||||
result.selectionRingDoesNotAnimate = (core.getAnimations?.() || []).length === 0;
|
||||
card._selId = null;
|
||||
card.requestUpdate();
|
||||
await settle();
|
||||
window.__starts.length = 0;
|
||||
return result;
|
||||
});
|
||||
|
||||
// AC2: наведение настоящей мышью — отклик остался, анимируется рамка.
|
||||
const box = await page.evaluate(() => {
|
||||
const card = window.__card;
|
||||
const root = card.shadowRoot || card.renderRoot;
|
||||
const marker = root.querySelector('[data-hp="device"]');
|
||||
const rect = marker.getBoundingClientRect();
|
||||
return { x: rect.left + rect.width / 2, y: rect.top + rect.height / 2 };
|
||||
});
|
||||
await page.mouse.move(box.x - 120, box.y - 120);
|
||||
await page.waitForTimeout(60);
|
||||
await page.mouse.move(box.x, box.y);
|
||||
await page.waitForTimeout(250);
|
||||
const hover = await page.evaluate(() => {
|
||||
const starts = [...window.__starts];
|
||||
return {
|
||||
// Браузер сообщает длинные формы: border-top-color и так далее.
|
||||
hoverAnimatesBorder: starts.some((entry) => /^border-\w+-color$/.test(entry.property) && entry.onMarker),
|
||||
hoverStartsNoShadow: starts.every((entry) => entry.property !== 'box-shadow'),
|
||||
};
|
||||
});
|
||||
|
||||
checkAll({ ...out, ...hover }, { shadowTransitionsOnResize: 0, resizeStartsNothingOnMarkers: 0 });
|
||||
await browser.close();
|
||||
finish();
|
||||
Vendored
+140
-140
@@ -1,109 +1,109 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"fingerprint": "7d8c26b95986499fd35534164d8e2bc2e897f0fbe9d846bccffa49f45116a618",
|
||||
"fingerprint": "ff98640cc5310e1e90e00b0cf23e42c8b1ac0953c6ad38786af6378331273765",
|
||||
"entry": "houseplan-card.js",
|
||||
"panelEntry": "houseplan-panel.js",
|
||||
"initialViewFiles": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js",
|
||||
"houseplan-card.js"
|
||||
],
|
||||
"initialViewGzipBytes": 300059,
|
||||
"initialViewGzipBytes": 300577,
|
||||
"initialPanelFiles": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js",
|
||||
"houseplan-card.js",
|
||||
"houseplan-panel.js"
|
||||
],
|
||||
"initialPanelGzipBytes": 302365,
|
||||
"initialPanelGzipBytes": 302882,
|
||||
"initialPanelOnlyFiles": [
|
||||
"houseplan-panel.js"
|
||||
],
|
||||
"initialPanelOnlyGzipBytes": 2306,
|
||||
"initialPanelOnlyGzipBytes": 2305,
|
||||
"lazyFiles": [
|
||||
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||
"houseplan-assets/de-HksnN-9C.js",
|
||||
"houseplan-assets/editor-CSFqqHwT.js",
|
||||
"houseplan-assets/fr-lBEFwYGK.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-uP6vjZmA.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-BdClDAcS.js",
|
||||
"houseplan-assets/hp-zigbee-topology-overlay-DRpau2VG.js",
|
||||
"houseplan-assets/iso-scene-render-RhSO-S9j.js",
|
||||
"houseplan-assets/live-interaction-runtime-C_klxsXE.js",
|
||||
"houseplan-assets/pdf-export-CsCJxU0E.js",
|
||||
"houseplan-assets/summary-panel-runtime-loaded-DQS834xA.js",
|
||||
"houseplan-assets/zigbee-topology-LI-FVdpo.js",
|
||||
"houseplan-assets/zigbee-topology-runtime-DTi-kj9C.js"
|
||||
"houseplan-assets/backdrop-pick-D5Q4Lp1s.js",
|
||||
"houseplan-assets/de-VLLexfNZ.js",
|
||||
"houseplan-assets/editor-DxwvfCN0.js",
|
||||
"houseplan-assets/fr-sa0yIASm.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-DKbkMWv0.js",
|
||||
"houseplan-assets/guard-B08tQ2iB.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-CPHsPq8i.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-CYnWHSzo.js",
|
||||
"houseplan-assets/hp-zigbee-topology-overlay-BsRS5Mqx.js",
|
||||
"houseplan-assets/iso-scene-render-CccMMhjh.js",
|
||||
"houseplan-assets/live-interaction-runtime-DjugMgAq.js",
|
||||
"houseplan-assets/pdf-export-BxY-xCel.js",
|
||||
"houseplan-assets/summary-panel-runtime-loaded-sGYqBGeH.js",
|
||||
"houseplan-assets/zigbee-topology-BrdakkCO.js",
|
||||
"houseplan-assets/zigbee-topology-runtime-DqQtbpDf.js"
|
||||
],
|
||||
"lazyGzipBytes": 418179,
|
||||
"lazyGzipBytes": 418153,
|
||||
"lazyEditorFiles": [
|
||||
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||
"houseplan-assets/editor-CSFqqHwT.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-uP6vjZmA.js",
|
||||
"houseplan-assets/zigbee-topology-LI-FVdpo.js"
|
||||
"houseplan-assets/backdrop-pick-D5Q4Lp1s.js",
|
||||
"houseplan-assets/editor-DxwvfCN0.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-DKbkMWv0.js",
|
||||
"houseplan-assets/guard-B08tQ2iB.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-CPHsPq8i.js",
|
||||
"houseplan-assets/zigbee-topology-BrdakkCO.js"
|
||||
],
|
||||
"lazyEditorGzipBytes": 205726,
|
||||
"lazyEditorGzipBytes": 205708,
|
||||
"lazyOnboardingFiles": [
|
||||
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-BdClDAcS.js"
|
||||
"houseplan-assets/backdrop-pick-D5Q4Lp1s.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-CYnWHSzo.js"
|
||||
],
|
||||
"lazyOnboardingGzipBytes": 14187,
|
||||
"lazyOnboardingGzipBytes": 14184,
|
||||
"lazyLocaleFiles": [
|
||||
"houseplan-assets/de-HksnN-9C.js",
|
||||
"houseplan-assets/fr-lBEFwYGK.js"
|
||||
"houseplan-assets/de-VLLexfNZ.js",
|
||||
"houseplan-assets/fr-sa0yIASm.js"
|
||||
],
|
||||
"lazyLocaleGzipBytes": 54854,
|
||||
"lazyLocaleGzipBytes": 54857,
|
||||
"lazyIsometricFiles": [
|
||||
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||
"houseplan-assets/iso-scene-render-RhSO-S9j.js"
|
||||
"houseplan-assets/guard-B08tQ2iB.js",
|
||||
"houseplan-assets/iso-scene-render-CccMMhjh.js"
|
||||
],
|
||||
"lazyIsometricGzipBytes": 13460,
|
||||
"lazyIsometricGzipBytes": 13457,
|
||||
"lazyFurnitureArtFiles": [
|
||||
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js"
|
||||
"houseplan-assets/furniture-plan-art.generated-DKbkMWv0.js"
|
||||
],
|
||||
"lazyFurnitureArtGzipBytes": 10255,
|
||||
"lazyFurnitureArtGzipBytes": 10250,
|
||||
"lazyPdfFiles": [
|
||||
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||
"houseplan-assets/pdf-export-CsCJxU0E.js"
|
||||
"houseplan-assets/furniture-plan-art.generated-DKbkMWv0.js",
|
||||
"houseplan-assets/pdf-export-BxY-xCel.js"
|
||||
],
|
||||
"lazyPdfGzipBytes": 120372,
|
||||
"lazyPdfGzipBytes": 120366,
|
||||
"files": [
|
||||
{
|
||||
"path": "houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||
"sha256": "e76da9cb2c5c8a32b2798c6f8785819bd7ff6ee624987feb8ff2c89522f87fef",
|
||||
"path": "houseplan-assets/backdrop-pick-D5Q4Lp1s.js",
|
||||
"sha256": "576bbc6b2cc1e44839881fa20dd9fff9a1222f865448b26c5367a02c4d57284a",
|
||||
"rawBytes": 21134,
|
||||
"gzipBytes": 7148,
|
||||
"gzipBytes": 7147,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/de-HksnN-9C.js",
|
||||
"sha256": "3a1ada3b04ef3eb7e9c6856c700d589e90e962a6753087b59f89b481c68a9499",
|
||||
"path": "houseplan-assets/de-VLLexfNZ.js",
|
||||
"sha256": "ea2cf39e832157c796f0f419eddfe112ea85671f897c30422a93a2526b4593df",
|
||||
"rawBytes": 91441,
|
||||
"gzipBytes": 27710,
|
||||
"gzipBytes": 27713,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/editor-CSFqqHwT.js",
|
||||
"sha256": "a5adebb3a438356deb0e5a35fa218bcb4ab6a8be23d6e535b6cd350170775926",
|
||||
"path": "houseplan-assets/editor-DxwvfCN0.js",
|
||||
"sha256": "03ef45f8ca06d3caa0b2a083b82a0189dd78a51a0a36de3903e05586e7516e47",
|
||||
"rawBytes": 3832,
|
||||
"gzipBytes": 1585,
|
||||
"gzipBytes": 1583,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/fr-lBEFwYGK.js",
|
||||
"sha256": "de104eb96b8e4fbb2895ab861300878eb3f27dc616e4737bc2e9e818286c9d88",
|
||||
"path": "houseplan-assets/fr-sa0yIASm.js",
|
||||
"sha256": "aa8d30728b71a0d28378d056d4a5f13bca6e995f97443510302c097d4a5c0699",
|
||||
"rawBytes": 93719,
|
||||
"gzipBytes": 27144,
|
||||
"isEntry": false,
|
||||
@@ -111,199 +111,199 @@
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||
"sha256": "9b63fd1d6479a45b433b323468a56b46ab0e0e3d2a5bfb82b6349d475e59eee8",
|
||||
"path": "houseplan-assets/furniture-plan-art.generated-DKbkMWv0.js",
|
||||
"sha256": "26925f6dfbc834d634bc634770ee2de220aa617c065b7a10945cb716f88cfcaf",
|
||||
"rawBytes": 33655,
|
||||
"gzipBytes": 10255,
|
||||
"gzipBytes": 10250,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/guard-Bdo2w6Sq.js",
|
||||
"sha256": "b98da3eb22fde2449b43c37851d7e2cbbcb14103b20b7c6b417fa4bab2502416",
|
||||
"path": "houseplan-assets/guard-B08tQ2iB.js",
|
||||
"sha256": "d699a561e07585dc1cf90708632355dc5d19cfc09a1700ffc3db88abbe1bf2c0",
|
||||
"rawBytes": 518,
|
||||
"gzipBytes": 371,
|
||||
"gzipBytes": 370,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||
"sha256": "e7bdf9f5d1b699c27b57f25c369b137eceae0cf6f3ec7f2d364ef6c2bd552887",
|
||||
"rawBytes": 1079369,
|
||||
"gzipBytes": 299254,
|
||||
"path": "houseplan-assets/houseplan-card-D0jk3o_K.js",
|
||||
"sha256": "6b8371e61f30688bf1b3671ed27c8b80119df432af13e6c5da481be80b97afc9",
|
||||
"rawBytes": 1080267,
|
||||
"gzipBytes": 299772,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": [
|
||||
"houseplan-assets/de-HksnN-9C.js",
|
||||
"houseplan-assets/editor-CSFqqHwT.js",
|
||||
"houseplan-assets/fr-lBEFwYGK.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-uP6vjZmA.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-BdClDAcS.js",
|
||||
"houseplan-assets/hp-zigbee-topology-overlay-DRpau2VG.js",
|
||||
"houseplan-assets/iso-scene-render-RhSO-S9j.js",
|
||||
"houseplan-assets/live-interaction-runtime-C_klxsXE.js",
|
||||
"houseplan-assets/pdf-export-CsCJxU0E.js",
|
||||
"houseplan-assets/summary-panel-runtime-loaded-DQS834xA.js"
|
||||
"houseplan-assets/de-VLLexfNZ.js",
|
||||
"houseplan-assets/editor-DxwvfCN0.js",
|
||||
"houseplan-assets/fr-sa0yIASm.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-DKbkMWv0.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-CPHsPq8i.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-CYnWHSzo.js",
|
||||
"houseplan-assets/hp-zigbee-topology-overlay-BsRS5Mqx.js",
|
||||
"houseplan-assets/iso-scene-render-CccMMhjh.js",
|
||||
"houseplan-assets/live-interaction-runtime-DjugMgAq.js",
|
||||
"houseplan-assets/pdf-export-BxY-xCel.js",
|
||||
"houseplan-assets/summary-panel-runtime-loaded-sGYqBGeH.js"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/houseplan-editor-runtime-uP6vjZmA.js",
|
||||
"sha256": "00be6a1cdb443cd875e736984baf86b77e63d96474ec72d4d66bf2baa9f1a2ba",
|
||||
"path": "houseplan-assets/houseplan-editor-runtime-CPHsPq8i.js",
|
||||
"sha256": "eba46a060a4e1f4251bdd325404dc60dc60d1d61760a5b65cedda28f90e34c51",
|
||||
"rawBytes": 672339,
|
||||
"gzipBytes": 178936,
|
||||
"gzipBytes": 178932,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||
"houseplan-assets/zigbee-topology-LI-FVdpo.js"
|
||||
"houseplan-assets/backdrop-pick-D5Q4Lp1s.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-DKbkMWv0.js",
|
||||
"houseplan-assets/guard-B08tQ2iB.js",
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js",
|
||||
"houseplan-assets/zigbee-topology-BrdakkCO.js"
|
||||
],
|
||||
"dynamicImports": [
|
||||
"houseplan-assets/zigbee-topology-runtime-DTi-kj9C.js"
|
||||
"houseplan-assets/zigbee-topology-runtime-DqQtbpDf.js"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/houseplan-onboarding-runtime-BdClDAcS.js",
|
||||
"sha256": "f81b58bde08ff74bab903803cc709e18449900dc91a3f64106db737bbabd55e3",
|
||||
"path": "houseplan-assets/houseplan-onboarding-runtime-CYnWHSzo.js",
|
||||
"sha256": "934460727e0eefc0a3034af6b273fad466823f3b28c38e1039232367592e5d4e",
|
||||
"rawBytes": 28287,
|
||||
"gzipBytes": 7039,
|
||||
"gzipBytes": 7037,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/backdrop-pick-D5Q4Lp1s.js",
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/hp-zigbee-topology-overlay-DRpau2VG.js",
|
||||
"sha256": "968345cc4eaaf6cc46accbdc30b4fff83e3fc40a5a7b7a0f611229f0e53ec6b9",
|
||||
"path": "houseplan-assets/hp-zigbee-topology-overlay-BsRS5Mqx.js",
|
||||
"sha256": "64939778e4086df63abe3d4e8a3116962b264d4f0ee0c5184f08f0c0bfdf376a",
|
||||
"rawBytes": 11034,
|
||||
"gzipBytes": 3731,
|
||||
"gzipBytes": 3730,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||
"houseplan-assets/zigbee-topology-LI-FVdpo.js",
|
||||
"houseplan-assets/zigbee-topology-runtime-DTi-kj9C.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js",
|
||||
"houseplan-assets/zigbee-topology-BrdakkCO.js",
|
||||
"houseplan-assets/zigbee-topology-runtime-DqQtbpDf.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/iso-scene-render-RhSO-S9j.js",
|
||||
"sha256": "b5c630c05c0c2648c96006ab51cf271ae2ca585742df4bd9ad456ce9dac86646",
|
||||
"path": "houseplan-assets/iso-scene-render-CccMMhjh.js",
|
||||
"sha256": "c11e4b107da8102344d6999650fc0c069d0c0fbb59af01c313d44c3c7c4e6903",
|
||||
"rawBytes": 38562,
|
||||
"gzipBytes": 13089,
|
||||
"gzipBytes": 13087,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/guard-B08tQ2iB.js",
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/live-interaction-runtime-C_klxsXE.js",
|
||||
"sha256": "319a2a94cf85acd20b27522ae71b81e25ee1f2d69f1688256c5eeed4dddec3d5",
|
||||
"path": "houseplan-assets/live-interaction-runtime-DjugMgAq.js",
|
||||
"sha256": "2dbe23d9ee303be1140dbccbedd3616c29e4f89538b07220fb4026239bf9fef5",
|
||||
"rawBytes": 5196,
|
||||
"gzipBytes": 2129,
|
||||
"gzipBytes": 2127,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/pdf-export-CsCJxU0E.js",
|
||||
"sha256": "eccac69e0d54ceeff8fceb8db69a0f20f5339443cb7961f8916f9a850bb1ae6c",
|
||||
"path": "houseplan-assets/pdf-export-BxY-xCel.js",
|
||||
"sha256": "b595eee94a34d3e10e7ba12520062f39144fa8dd68a31318679d45d68a8d80aa",
|
||||
"rawBytes": 237254,
|
||||
"gzipBytes": 110117,
|
||||
"gzipBytes": 110116,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/furniture-plan-art.generated-DKbkMWv0.js",
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/summary-panel-editor-BC_vG9Hn.js",
|
||||
"sha256": "5c7fd338b94152ae5e1194f07c6353863a9e22c4f2e99424f5795484da989a64",
|
||||
"path": "houseplan-assets/summary-panel-editor-C5vWd7lx.js",
|
||||
"sha256": "c26cac6a394f9a023a49af7a3597c9e08dab5fcef1cd153132bb80f87fbdab4e",
|
||||
"rawBytes": 14824,
|
||||
"gzipBytes": 3401,
|
||||
"gzipBytes": 3402,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||
"houseplan-assets/summary-panel-runtime-loaded-DQS834xA.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js",
|
||||
"houseplan-assets/summary-panel-runtime-loaded-sGYqBGeH.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/summary-panel-metrics-C2M32Xkf.js",
|
||||
"sha256": "bca21f0d66af64c7c1ef501a8cd38e04e2a74ee7196e004f6f60397d9e9a72f1",
|
||||
"path": "houseplan-assets/summary-panel-metrics-nnK4peUR.js",
|
||||
"sha256": "7a9f1a763bf85e363bd5eb9fde91f94e8aa8e20e08a54f544ed06576bbf6e8da",
|
||||
"rawBytes": 2610,
|
||||
"gzipBytes": 1308,
|
||||
"gzipBytes": 1306,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/summary-panel-runtime-loaded-DQS834xA.js",
|
||||
"sha256": "54c791fdd19e77c24ac142794c4207345eaec03d2ab15dfdf3b991afa32bb812",
|
||||
"path": "houseplan-assets/summary-panel-runtime-loaded-sGYqBGeH.js",
|
||||
"sha256": "8c97c663bdc659ad68a9a8cbb73b07237b750d42096aeaf7736fd157775402ac",
|
||||
"rawBytes": 72272,
|
||||
"gzipBytes": 19729,
|
||||
"gzipBytes": 19727,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": [
|
||||
"houseplan-assets/summary-panel-editor-BC_vG9Hn.js",
|
||||
"houseplan-assets/summary-panel-metrics-C2M32Xkf.js"
|
||||
"houseplan-assets/summary-panel-editor-C5vWd7lx.js",
|
||||
"houseplan-assets/summary-panel-metrics-nnK4peUR.js"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/zigbee-topology-LI-FVdpo.js",
|
||||
"sha256": "d01ec49d20c5f3dc028a59107f1f9060634ab93d6d112e03a7c2b85792159440",
|
||||
"path": "houseplan-assets/zigbee-topology-BrdakkCO.js",
|
||||
"sha256": "2b70bb09cc3bd85cef479fe8135844e454dbb9d47c359584f68f15c88df6091d",
|
||||
"rawBytes": 18961,
|
||||
"gzipBytes": 7431,
|
||||
"gzipBytes": 7426,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/zigbee-topology-runtime-DTi-kj9C.js",
|
||||
"sha256": "3a0fad7d479bbeb161434e498a3c8ac7f88da62ef37c173b66f95057098bcc97",
|
||||
"path": "houseplan-assets/zigbee-topology-runtime-DqQtbpDf.js",
|
||||
"sha256": "8026b2637d3f9f7cbbd836d7f0ee2608e78d967df4b8081a8f9a946702818e6e",
|
||||
"rawBytes": 3941,
|
||||
"gzipBytes": 1765,
|
||||
"gzipBytes": 1764,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||
"houseplan-assets/zigbee-topology-LI-FVdpo.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js",
|
||||
"houseplan-assets/zigbee-topology-BrdakkCO.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-card.js",
|
||||
"sha256": "21da7b3390ea9d4992e33bf4d6fdf684145b53f407e253a599e70a459585298d",
|
||||
"sha256": "8a0de07efe43bee3b80fba47439783accc2d689621efb43eb92bd948c331f37e",
|
||||
"rawBytes": 1205,
|
||||
"gzipBytes": 805,
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||
"houseplan-assets/houseplan-card-D0jk3o_K.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-panel.js",
|
||||
"sha256": "a664721695cf5c85903eea440d05a295cb6d6d2cd1e3669fd5c65c9752534492",
|
||||
"sha256": "c5cddd44a2af9872e9d352b2915f8889858a3c3c88947409955a16c2cf392858",
|
||||
"rawBytes": 6124,
|
||||
"gzipBytes": 2306,
|
||||
"gzipBytes": 2305,
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"houseplan-card.js"
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+5
-5
@@ -1,14 +1,14 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7d8c26b95986499fd35534164d8e2bc2e897f0fbe9d846bccffa49f45116a618";import{m as e,l as o,t,e3 as s,A as a,e4 as i,e5 as l,e6 as n,dU as r,b as c}from"./houseplan-card-DkiI2BOK.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__="ff98640cc5310e1e90e00b0cf23e42c8b1ac0953c6ad38786af6378331273765";import{m as e,l as o,t,e3 as s,A as a,e4 as i,e5 as l,e6 as n,dU as r,b as c}from"./houseplan-card-D0jk3o_K.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);
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7d8c26b95986499fd35534164d8e2bc2e897f0fbe9d846bccffa49f45116a618";import{dS as r,dT as t,dU as e}from"./houseplan-card-DkiI2BOK.js";const s={},a=r(class extends t{constructor(){super(...arguments),this.ot=s}render(r,t){return t()}update(r,[t,s]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every((r,t)=>r===this.ot[t]))return e}else if(this.ot===t)return e;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,s)}});export{a as i};
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="ff98640cc5310e1e90e00b0cf23e42c8b1ac0953c6ad38786af6378331273765";import{dS as r,dT as t,dU as e}from"./houseplan-card-D0jk3o_K.js";const s={},a=r(class extends t{constructor(){super(...arguments),this.ot=s}render(r,t){return t()}update(r,[t,s]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every((r,t)=>r===this.ot[t]))return e}else if(this.ot===t)return e;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,s)}});export{a as i};
|
||||
Vendored
+16
-8
File diff suppressed because one or more lines are too long
+3
-3
File diff suppressed because one or more lines are too long
+30
-30
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+2
-2
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,4 +1,4 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7d8c26b95986499fd35534164d8e2bc2e897f0fbe9d846bccffa49f45116a618";import{b as a,A as e}from"./houseplan-card-DkiI2BOK.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-DQS834xA.js";const m=m=>{const{host:c,dialog:d,problems:n,t:b}=m,y=n.find(a=>"error"===a.kind),$=d.localShow!==d.baseLocalShow||!d.localOnly&&!s(t(d.draft),d.base),p=$&&!d.busy&&!y,v=a=>n.find(e=>e.path===a),h=a=>a?b(`summary.problem.${a.code}`):"",k=()=>m.close(),g=a`<label class="summary-switch" for="summary-local-show">
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="ff98640cc5310e1e90e00b0cf23e42c8b1ac0953c6ad38786af6378331273765";import{b as a,A as e}from"./houseplan-card-D0jk3o_K.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-sGYqBGeH.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"
|
||||
+1
-1
@@ -1 +1 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7d8c26b95986499fd35534164d8e2bc2e897f0fbe9d846bccffa49f45116a618";import{e9 as e,L as t,a2 as n,J as i,an as o,N as r,bo as s,bn as a,a1 as c,a0 as l,ax as d,ea as u,eb as f,bq as m,ec as g}from"./houseplan-card-DkiI2BOK.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),s=i.binding.slice(o+1),a="device"===r?e.registry.devices?.[s]:null,c="entity"===r?e.registry.entities?.[s]:null,l="device"===r?s:c?.device_id,d="device"===r?a?.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(s))&&t.add(l)}return t}function y(e,t){return e?.length?t?.length?g(e,t):e:t}function _(e,t){const n=c(e.rooms,t.walls,t.openCuts,[],i,t.cellCm,o,r);return{roomGeom:"ok"===n.status||"degraded-extra"===n.status?n.roomGeom:void 0,multiWallNodes:l(e.rooms,t.walls,t.openCuts,i,t.cellCm,o,r)}}function*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 a=t(e);if(!a)continue;const c=n(f.rooms,e.id,m.walls,m.openCuts,i,m.cellCm,o,r,g.roomGeom,g.multiWallNodes)||a;v=y(v,s(c,m.physicalBodies)),yield}const _=m.cellCm/o;u+=a(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__="ff98640cc5310e1e90e00b0cf23e42c8b1ac0953c6ad38786af6378331273765";import{e9 as e,L as t,a2 as n,J as i,an as o,N as r,bo as s,bn as a,a1 as c,a0 as l,ax as u,ea as d,eb as f,bq as m,ec as g}from"./houseplan-card-D0jk3o_K.js";function v(e){if(!e.registry.authoritative)return null;const t=new Set,n=u(e.markers);for(const i of Object.values(e.registry.devices||{}))i?.id&&"service"!==i.entry_type&&!n.devices.has(i.id)&&i.area_id&&e.areaToSpace[i.area_id]&&t.add(i.id);for(const i of e.markers||[]){if(i.removed||"virtual"===i.binding)continue;const o=String(i.binding||"").indexOf(":");if(o<1)continue;const r=i.binding.slice(0,o),s=i.binding.slice(o+1),a="device"===r?e.registry.devices?.[s]:null,c="entity"===r?e.registry.entities?.[s]:null,l="device"===r?s:c?.device_id,u="device"===r?a?.area_id:c?.area_id||l&&e.registry.devices?.[l]?.area_id,d="string"==typeof i.room_id&&i.room_id.length>0&&null===i.area?"":i.area||u||"",f=d&&e.areaToSpace[d]||i.space||e.firstSpaceId;l&&e.registry.devices?.[l]&&e.spaceIds.has(f)&&(!n.devices.has(l)||"entity"===r&&n.liveEntities.has(s))&&t.add(l)}return t}function y(e,t){return e?.length?t?.length?g(e,t):e:t}function _(e,t){const n=c(e.rooms,t.walls,t.openCuts,[],i,t.cellCm,o,r);return{roomGeom:"ok"===n.status||"degraded-extra"===n.status?n.roomGeom:void 0,multiWallNodes:l(e.rooms,t.walls,t.openCuts,i,t.cellCm,o,r)}}function*h(c,l,u=_){try{let d=0;for(const f of l){const l=c.spaces.find(e=>String(e?.id)===f.id);if(!l)continue;const m=e(l,f),g=u(f,m);let v=null;for(const e of f.rooms){if(!e.id)continue;const a=t(e);if(!a)continue;const c=n(f.rooms,e.id,m.walls,m.openCuts,i,m.cellCm,o,r,g.roomGeom,g.multiWallNodes)||a;v=y(v,s(c,m.physicalBodies)),yield}const _=m.cellCm/o;d+=a(v)*_*_/1e4}return d}catch{return null}}function 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=d(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};
|
||||
+2
-2
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7d8c26b95986499fd35534164d8e2bc2e897f0fbe9d846bccffa49f45116a618";import{n as t,b as n}from"./zigbee-topology-LI-FVdpo.js";import{B as e}from"./houseplan-card-DkiI2BOK.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 g(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 m(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,m=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{p=t,m=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&&m?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof f&&b.push(f),await g(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 g(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,m as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot};
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="ff98640cc5310e1e90e00b0cf23e42c8b1ac0953c6ad38786af6378331273765";import{n as t,b as n}from"./zigbee-topology-BrdakkCO.js";import{B as e}from"./houseplan-card-D0jk3o_K.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 g(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 m(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,m=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{f=t,m=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&&m?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof p&&b.push(p),await g(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 g(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,m as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot};
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7d8c26b95986499fd35534164d8e2bc2e897f0fbe9d846bccffa49f45116a618";try{await import("./houseplan-assets/houseplan-card-DkiI2BOK.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__="ff98640cc5310e1e90e00b0cf23e42c8b1ac0953c6ad38786af6378331273765";try{await import("./houseplan-assets/houseplan-card-D0jk3o_K.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)}
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -2,6 +2,13 @@
|
||||
|
||||
## Unreleased
|
||||
|
||||
- The plan is smooth again in Firefox. A device marker's shadow is sized from
|
||||
the marker, which is sized from the container, so anything that changed the
|
||||
container width — a tooltip, a scrollbar, a rotation — restarted a shadow
|
||||
animation on every marker at once. Sixty-one of them at a time dropped
|
||||
Firefox to nine frames per second; the shadow now simply appears, unchanged
|
||||
([#524](https://github.com/Matysh/houseplan-card/issues/524)).
|
||||
|
||||
- Switching between spaces no longer replays a neighbouring door's leaf
|
||||
movement, in either direction. The animation now belongs to a real sensor
|
||||
change and nothing else
|
||||
|
||||
@@ -8,6 +8,13 @@
|
||||
|
||||
## Не выпущено
|
||||
|
||||
- План снова плавный в Firefox. Тень маркера устройства считается от размера
|
||||
маркера, а он — от ширины контейнера, поэтому всё, что эту ширину меняло —
|
||||
подсказка, полоса прокрутки, поворот экрана, — заново запускало анимацию
|
||||
тени сразу у всех маркеров. Шестьдесят одна такая анимация роняла Firefox до
|
||||
девяти кадров в секунду; теперь тень просто появляется, оставшись прежней
|
||||
([#524](https://github.com/Matysh/houseplan-card/issues/524)).
|
||||
|
||||
- При переключении между пространствами двери и окна больше не доигрывают
|
||||
движение створки соседней двери — ни в одну сторону, ни в другую. Анимация
|
||||
остаётся только за настоящей сменой состояния датчика
|
||||
|
||||
@@ -279,6 +279,27 @@ node scripts/bundle-tree.mjs dist custom_components/houseplan/frontend
|
||||
|
||||
The full HA pytest harness requires Linux/WSL; native Windows lacks `fcntl`.
|
||||
|
||||
## Do not animate container-relative properties on the plan (#524)
|
||||
|
||||
A CSS property whose value is expressed in container query units — `cqw`,
|
||||
`cqh`, or any custom property derived from them, such as `--dev-size` — must
|
||||
not appear in a `transition` on elements the plan draws in quantity.
|
||||
|
||||
Container query styles are re-evaluated whenever the container's inline size
|
||||
changes: a tooltip, a scrollbar, a rotation, a panel resize. Every such
|
||||
re-evaluation produces a new computed value and therefore **restarts the
|
||||
transition on every one of those elements at once**.
|
||||
|
||||
That is how `box-shadow` on device markers cost a real user 9.4 frames per
|
||||
second in Firefox 155: sixty-one markers started a 150 ms non-composited
|
||||
shadow transition four times in two seconds, and the refresh driver spent the
|
||||
window waiting for paint. Chromium starts exactly the same transitions — it
|
||||
merely pays less for them, which is why the defect hid there.
|
||||
|
||||
The witness is browser-independent and lives in
|
||||
`demo/smoke_marker_shadow_transitions.mjs`: change the stage container width by
|
||||
one pixel and assert that no `transitionrun` for `box-shadow` arrives.
|
||||
|
||||
## Dependency and cache gotchas
|
||||
|
||||
- **polygon-clipping is a trap**: its `.d.ts` declares named exports but the ESM build has only
|
||||
|
||||
@@ -3611,6 +3611,18 @@ const MUTANT_DEFINITIONS = [
|
||||
replace: " if (ledger.caught[mutant.id] === fingerprint || mutant.id in ledger.caught) skipped.push(mutant);",
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'marker-shadow-animates-again',
|
||||
guard: 'node demo/smoke_marker_shadow_transitions.mjs',
|
||||
because: '#524: тень маркера выражена в контейнерных единицах — с переходом любой пересчёт '
|
||||
+ 'контейнерных запросов запускает некомпозируемый переход на каждом маркере; в профиле '
|
||||
+ 'владельца 61 штука разом дала 9,4 к/с и кадры по 149 мс',
|
||||
patches: [{
|
||||
file: 'src/styles/devices.styles.ts',
|
||||
find: ' transition: border-color .15s, opacity' + ' .2s;',
|
||||
replace: ' transition: border-color .15s, box-shadow .15s, opacity .2s;',
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'anchor-region-narrows-ambiguous-anchor',
|
||||
guard: 'node --test --test-name-pattern="#518 AC4" test/mutation-gate.test.mjs',
|
||||
|
||||
@@ -209,7 +209,12 @@ export const devicesStyles = css`
|
||||
border-radius: 9999px;
|
||||
background: transparent;
|
||||
box-shadow: var(--device-shell-shadow);
|
||||
transition: border-color .15s, box-shadow .15s, opacity .2s;
|
||||
/* #524: тень оболочки выражена в --dev-size, а он — в cqw. Пока
|
||||
box-shadow стоял в переходах, любой пересчёт контейнерных запросов
|
||||
запускал некомпозируемый переход на КАЖДОМ маркере: на плане владельца
|
||||
61 штука разом роняли Firefox до 9,4 к/с. Сама тень не изменилась —
|
||||
она просто применяется сразу. */
|
||||
transition: border-color .15s, opacity .2s;
|
||||
pointer-events: auto;
|
||||
/* Normative production fallback: never add a per-marker backdrop blur. */
|
||||
backdrop-filter: none;
|
||||
@@ -261,7 +266,10 @@ export const devicesStyles = css`
|
||||
var(--device-core-inset-shadow),
|
||||
0 0 0 var(--device-ring-width) var(--device-ring-color);
|
||||
line-height: 0;
|
||||
transition: background .15s, color .15s, box-shadow .15s, opacity .2s;
|
||||
/* #524: то же и у ядра — кольцо выделения и внутренняя тень заданы
|
||||
через --dev-size. Кольцо появляется мгновенно; плавное стоило бы
|
||||
перерисовки кадра на каждый маркер при каждом пересчёте контейнера. */
|
||||
transition: background .15s, color .15s, opacity .2s;
|
||||
pointer-events: none;
|
||||
}
|
||||
.device-sections {
|
||||
|
||||
Reference in New Issue
Block a user