mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
fix: openings and markers keep their identity across a space switch (#525)
Lit reuses list nodes by position. The opening list and the device markers had no keys, so on a space switch the leaf that held a slot kept its DOM node and only changed values — and `.op-leaf` (transform) and `.op-arc` (stroke-dashoffset) carry a 0.6 s transition, so the browser animated a door that never moved: the new floor's leaf drove in from the previous floor's opening angle. Measured on two spaces with a door in the same place and opposite contact states: the node is reused, transform goes `rotate(-90deg) → rotate(0deg)`, dash offset `0 → 125.66`, both transitions `running`. The marker shell adds two more with its `box-shadow`. Both lists are now rendered through `repeat(…, (item) => item.id, …)`, the same lesson `glow-scene.ts` already learned for the Glow spots. The trap is written where it starts — above the two transitions in `plan.styles.ts` — because that is the file someone edits when adding the next animated property. `houseplan-card.ts` is at its line ceiling, and the note would have cost the budget a dozen lines for nothing: the swap itself is line-for-line. The witness walks the shadow tree per element. `document.getAnimations()` is empty here EVEN ON THE BROKEN CODE — the card lives in a shadow root and the document-level call does not reach into it, and the issue proposed exactly that call. The smoke also builds its own fixture: the demo home has no openings at all, so two doors in two spaces are prepared in the smoke, and it asserts the other half of the contract as well — a real contact change inside one space still animates the leaf. On `origin/dev` the smoke fails on five facts, naming the offenders: `op-arc:stroke-dashoffset`, `op-leaf:transform`, `device-shell-frame:box-shadow` twice. Mutants `openings-rendered-without-keys` and `device-markers-rendered-without-keys` put each `map` back. Perf, 7 samples against `19e421b3`: spaceSwitchMs 524.8 (limit 769.35, base 512.9), switchCycleMs 1293.9 (1696.28, 1256.5), firstStableRenderMs 2533.8 (3000, 2529.2), modelReadyMs 732.7 (944.97, 726.9), longTask.maxSingleMs 663 (910, 660) — `benchmark:compare` green in full. The initial View graph grows 241 B gzip: `repeat` enters it for the first time. The #438 ceiling is recentred 300 400 → 300 700 with the usual dated note; measured 300 059 B keeps 641 B above and 1 359 B below the band. The 301 066 B budget is untouched, but only 366 B now separate the ceiling from it — the #367 headroom debt has stopped being theoretical. Issue: #525 User-Visible: yes
This commit is contained in:
@@ -1,309 +1,309 @@
|
|||||||
{
|
{
|
||||||
"schema": 1,
|
"schema": 1,
|
||||||
"fingerprint": "f00ccb2e025e4749d8b21b734ae6193bd0a556f441d56991773969a015d817ec",
|
"fingerprint": "7d8c26b95986499fd35534164d8e2bc2e897f0fbe9d846bccffa49f45116a618",
|
||||||
"entry": "houseplan-card.js",
|
"entry": "houseplan-card.js",
|
||||||
"panelEntry": "houseplan-panel.js",
|
"panelEntry": "houseplan-panel.js",
|
||||||
"initialViewFiles": [
|
"initialViewFiles": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js",
|
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||||
"houseplan-card.js"
|
"houseplan-card.js"
|
||||||
],
|
],
|
||||||
"initialViewGzipBytes": 299818,
|
"initialViewGzipBytes": 300059,
|
||||||
"initialPanelFiles": [
|
"initialPanelFiles": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js",
|
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||||
"houseplan-card.js",
|
"houseplan-card.js",
|
||||||
"houseplan-panel.js"
|
"houseplan-panel.js"
|
||||||
],
|
],
|
||||||
"initialPanelGzipBytes": 302123,
|
"initialPanelGzipBytes": 302365,
|
||||||
"initialPanelOnlyFiles": [
|
"initialPanelOnlyFiles": [
|
||||||
"houseplan-panel.js"
|
"houseplan-panel.js"
|
||||||
],
|
],
|
||||||
"initialPanelOnlyGzipBytes": 2305,
|
"initialPanelOnlyGzipBytes": 2306,
|
||||||
"lazyFiles": [
|
"lazyFiles": [
|
||||||
"houseplan-assets/backdrop-pick-Cn3C2LDS.js",
|
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||||
"houseplan-assets/de-Rx23MWgW.js",
|
"houseplan-assets/de-HksnN-9C.js",
|
||||||
"houseplan-assets/editor-BKd7m0Cl.js",
|
"houseplan-assets/editor-CSFqqHwT.js",
|
||||||
"houseplan-assets/fr-Cmciv8Kg.js",
|
"houseplan-assets/fr-lBEFwYGK.js",
|
||||||
"houseplan-assets/furniture-plan-art.generated-CyDdfRbk.js",
|
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||||
"houseplan-assets/guard-B-DpMbo8.js",
|
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||||
"houseplan-assets/houseplan-editor-runtime-Ct6C87Tu.js",
|
"houseplan-assets/houseplan-editor-runtime-uP6vjZmA.js",
|
||||||
"houseplan-assets/houseplan-onboarding-runtime-BNaIaYhC.js",
|
"houseplan-assets/houseplan-onboarding-runtime-BdClDAcS.js",
|
||||||
"houseplan-assets/hp-zigbee-topology-overlay-BRzrNvxL.js",
|
"houseplan-assets/hp-zigbee-topology-overlay-DRpau2VG.js",
|
||||||
"houseplan-assets/iso-scene-render-cM25hLUD.js",
|
"houseplan-assets/iso-scene-render-RhSO-S9j.js",
|
||||||
"houseplan-assets/live-interaction-runtime-CfFnUimM.js",
|
"houseplan-assets/live-interaction-runtime-C_klxsXE.js",
|
||||||
"houseplan-assets/pdf-export-C7QX7Os6.js",
|
"houseplan-assets/pdf-export-CsCJxU0E.js",
|
||||||
"houseplan-assets/summary-panel-runtime-loaded-fHmauMhT.js",
|
"houseplan-assets/summary-panel-runtime-loaded-DQS834xA.js",
|
||||||
"houseplan-assets/zigbee-topology-BqMFLBzX.js",
|
"houseplan-assets/zigbee-topology-LI-FVdpo.js",
|
||||||
"houseplan-assets/zigbee-topology-runtime-cidfav1L.js"
|
"houseplan-assets/zigbee-topology-runtime-DTi-kj9C.js"
|
||||||
],
|
],
|
||||||
"lazyGzipBytes": 418163,
|
"lazyGzipBytes": 418179,
|
||||||
"lazyEditorFiles": [
|
"lazyEditorFiles": [
|
||||||
"houseplan-assets/backdrop-pick-Cn3C2LDS.js",
|
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||||
"houseplan-assets/editor-BKd7m0Cl.js",
|
"houseplan-assets/editor-CSFqqHwT.js",
|
||||||
"houseplan-assets/furniture-plan-art.generated-CyDdfRbk.js",
|
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||||
"houseplan-assets/guard-B-DpMbo8.js",
|
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||||
"houseplan-assets/houseplan-editor-runtime-Ct6C87Tu.js",
|
"houseplan-assets/houseplan-editor-runtime-uP6vjZmA.js",
|
||||||
"houseplan-assets/zigbee-topology-BqMFLBzX.js"
|
"houseplan-assets/zigbee-topology-LI-FVdpo.js"
|
||||||
],
|
],
|
||||||
"lazyEditorGzipBytes": 205716,
|
"lazyEditorGzipBytes": 205726,
|
||||||
"lazyOnboardingFiles": [
|
"lazyOnboardingFiles": [
|
||||||
"houseplan-assets/backdrop-pick-Cn3C2LDS.js",
|
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||||
"houseplan-assets/houseplan-onboarding-runtime-BNaIaYhC.js"
|
"houseplan-assets/houseplan-onboarding-runtime-BdClDAcS.js"
|
||||||
],
|
],
|
||||||
"lazyOnboardingGzipBytes": 14184,
|
"lazyOnboardingGzipBytes": 14187,
|
||||||
"lazyLocaleFiles": [
|
"lazyLocaleFiles": [
|
||||||
"houseplan-assets/de-Rx23MWgW.js",
|
"houseplan-assets/de-HksnN-9C.js",
|
||||||
"houseplan-assets/fr-Cmciv8Kg.js"
|
"houseplan-assets/fr-lBEFwYGK.js"
|
||||||
],
|
],
|
||||||
"lazyLocaleGzipBytes": 54858,
|
"lazyLocaleGzipBytes": 54854,
|
||||||
"lazyIsometricFiles": [
|
"lazyIsometricFiles": [
|
||||||
"houseplan-assets/guard-B-DpMbo8.js",
|
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||||
"houseplan-assets/iso-scene-render-cM25hLUD.js"
|
"houseplan-assets/iso-scene-render-RhSO-S9j.js"
|
||||||
],
|
],
|
||||||
"lazyIsometricGzipBytes": 13458,
|
"lazyIsometricGzipBytes": 13460,
|
||||||
"lazyFurnitureArtFiles": [
|
"lazyFurnitureArtFiles": [
|
||||||
"houseplan-assets/furniture-plan-art.generated-CyDdfRbk.js"
|
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js"
|
||||||
],
|
],
|
||||||
"lazyFurnitureArtGzipBytes": 10252,
|
"lazyFurnitureArtGzipBytes": 10255,
|
||||||
"lazyPdfFiles": [
|
"lazyPdfFiles": [
|
||||||
"houseplan-assets/furniture-plan-art.generated-CyDdfRbk.js",
|
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||||
"houseplan-assets/pdf-export-C7QX7Os6.js"
|
"houseplan-assets/pdf-export-CsCJxU0E.js"
|
||||||
],
|
],
|
||||||
"lazyPdfGzipBytes": 120368,
|
"lazyPdfGzipBytes": 120372,
|
||||||
"files": [
|
"files": [
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/backdrop-pick-Cn3C2LDS.js",
|
"path": "houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||||
"sha256": "ce4df7477daa960c9f146de09dd7e9f383e13dd1199b32ccf5e8fdbc03361594",
|
"sha256": "e76da9cb2c5c8a32b2798c6f8785819bd7ff6ee624987feb8ff2c89522f87fef",
|
||||||
"rawBytes": 21134,
|
"rawBytes": 21134,
|
||||||
"gzipBytes": 7147,
|
"gzipBytes": 7148,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/de-Rx23MWgW.js",
|
"path": "houseplan-assets/de-HksnN-9C.js",
|
||||||
"sha256": "35001ee0702c4b0a1dec055a4ce59450a4944610d1c3f4b2395f6b43a8c516a8",
|
"sha256": "3a1ada3b04ef3eb7e9c6856c700d589e90e962a6753087b59f89b481c68a9499",
|
||||||
"rawBytes": 91441,
|
"rawBytes": 91441,
|
||||||
"gzipBytes": 27712,
|
"gzipBytes": 27710,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/editor-BKd7m0Cl.js",
|
"path": "houseplan-assets/editor-CSFqqHwT.js",
|
||||||
"sha256": "fb68ec6ca16c3dde08e8b423492f76b762ebe22275c40a7bc36fa8acce4da4ad",
|
"sha256": "a5adebb3a438356deb0e5a35fa218bcb4ab6a8be23d6e535b6cd350170775926",
|
||||||
"rawBytes": 3832,
|
"rawBytes": 3832,
|
||||||
"gzipBytes": 1584,
|
"gzipBytes": 1585,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/fr-Cmciv8Kg.js",
|
"path": "houseplan-assets/fr-lBEFwYGK.js",
|
||||||
"sha256": "587aee0ac33d157d50d4f80a3fe66846dc6bf779cdad865b1c43eacab78d1c4e",
|
"sha256": "de104eb96b8e4fbb2895ab861300878eb3f27dc616e4737bc2e9e818286c9d88",
|
||||||
"rawBytes": 93719,
|
"rawBytes": 93719,
|
||||||
"gzipBytes": 27146,
|
"gzipBytes": 27144,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/furniture-plan-art.generated-CyDdfRbk.js",
|
"path": "houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||||
"sha256": "1209c487274724f24a596cc73f632e59cd1955ff25f42e506177656abc2e54f6",
|
"sha256": "9b63fd1d6479a45b433b323468a56b46ab0e0e3d2a5bfb82b6349d475e59eee8",
|
||||||
"rawBytes": 33655,
|
"rawBytes": 33655,
|
||||||
"gzipBytes": 10252,
|
"gzipBytes": 10255,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/guard-B-DpMbo8.js",
|
"path": "houseplan-assets/guard-Bdo2w6Sq.js",
|
||||||
"sha256": "fcf685e554aae83843223f5c19b3db5e194eb54ff6344ba0448cb6f82a01cb9c",
|
"sha256": "b98da3eb22fde2449b43c37851d7e2cbbcb14103b20b7c6b417fa4bab2502416",
|
||||||
"rawBytes": 518,
|
"rawBytes": 518,
|
||||||
"gzipBytes": 372,
|
"gzipBytes": 371,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/houseplan-card-Bp1zKCs9.js",
|
"path": "houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||||
"sha256": "fbccd0542cc2244ad027ae8f23faea17d5bbbe1ebf7c4a9a44c2609714a7f100",
|
"sha256": "e7bdf9f5d1b699c27b57f25c369b137eceae0cf6f3ec7f2d364ef6c2bd552887",
|
||||||
"rawBytes": 1078600,
|
"rawBytes": 1079369,
|
||||||
"gzipBytes": 299014,
|
"gzipBytes": 299254,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"dynamicImports": [
|
"dynamicImports": [
|
||||||
"houseplan-assets/de-Rx23MWgW.js",
|
"houseplan-assets/de-HksnN-9C.js",
|
||||||
"houseplan-assets/editor-BKd7m0Cl.js",
|
"houseplan-assets/editor-CSFqqHwT.js",
|
||||||
"houseplan-assets/fr-Cmciv8Kg.js",
|
"houseplan-assets/fr-lBEFwYGK.js",
|
||||||
"houseplan-assets/furniture-plan-art.generated-CyDdfRbk.js",
|
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||||
"houseplan-assets/houseplan-editor-runtime-Ct6C87Tu.js",
|
"houseplan-assets/houseplan-editor-runtime-uP6vjZmA.js",
|
||||||
"houseplan-assets/houseplan-onboarding-runtime-BNaIaYhC.js",
|
"houseplan-assets/houseplan-onboarding-runtime-BdClDAcS.js",
|
||||||
"houseplan-assets/hp-zigbee-topology-overlay-BRzrNvxL.js",
|
"houseplan-assets/hp-zigbee-topology-overlay-DRpau2VG.js",
|
||||||
"houseplan-assets/iso-scene-render-cM25hLUD.js",
|
"houseplan-assets/iso-scene-render-RhSO-S9j.js",
|
||||||
"houseplan-assets/live-interaction-runtime-CfFnUimM.js",
|
"houseplan-assets/live-interaction-runtime-C_klxsXE.js",
|
||||||
"houseplan-assets/pdf-export-C7QX7Os6.js",
|
"houseplan-assets/pdf-export-CsCJxU0E.js",
|
||||||
"houseplan-assets/summary-panel-runtime-loaded-fHmauMhT.js"
|
"houseplan-assets/summary-panel-runtime-loaded-DQS834xA.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/houseplan-editor-runtime-Ct6C87Tu.js",
|
"path": "houseplan-assets/houseplan-editor-runtime-uP6vjZmA.js",
|
||||||
"sha256": "1b4a0ed9da5735e0ead38d031fa24a8046ba1684144b8cc0bbbb0f3fbaec851f",
|
"sha256": "00be6a1cdb443cd875e736984baf86b77e63d96474ec72d4d66bf2baa9f1a2ba",
|
||||||
"rawBytes": 672339,
|
"rawBytes": 672339,
|
||||||
"gzipBytes": 178931,
|
"gzipBytes": 178936,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/backdrop-pick-Cn3C2LDS.js",
|
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||||
"houseplan-assets/furniture-plan-art.generated-CyDdfRbk.js",
|
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||||
"houseplan-assets/guard-B-DpMbo8.js",
|
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js",
|
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||||
"houseplan-assets/zigbee-topology-BqMFLBzX.js"
|
"houseplan-assets/zigbee-topology-LI-FVdpo.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": [
|
"dynamicImports": [
|
||||||
"houseplan-assets/zigbee-topology-runtime-cidfav1L.js"
|
"houseplan-assets/zigbee-topology-runtime-DTi-kj9C.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/houseplan-onboarding-runtime-BNaIaYhC.js",
|
"path": "houseplan-assets/houseplan-onboarding-runtime-BdClDAcS.js",
|
||||||
"sha256": "354e2a62dc98b9c0540ef2fd946d7d6ffe57228eaea970a160ed342c067b85a5",
|
"sha256": "f81b58bde08ff74bab903803cc709e18449900dc91a3f64106db737bbabd55e3",
|
||||||
"rawBytes": 28287,
|
"rawBytes": 28287,
|
||||||
"gzipBytes": 7037,
|
"gzipBytes": 7039,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/backdrop-pick-Cn3C2LDS.js",
|
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/hp-zigbee-topology-overlay-BRzrNvxL.js",
|
"path": "houseplan-assets/hp-zigbee-topology-overlay-DRpau2VG.js",
|
||||||
"sha256": "477c0a0d7c9b3cfcc31ae10ec258ad1dc0813d0e2a85090d9cc7b39bdc9cb264",
|
"sha256": "968345cc4eaaf6cc46accbdc30b4fff83e3fc40a5a7b7a0f611229f0e53ec6b9",
|
||||||
"rawBytes": 11034,
|
"rawBytes": 11034,
|
||||||
"gzipBytes": 3730,
|
"gzipBytes": 3731,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js",
|
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||||
"houseplan-assets/zigbee-topology-BqMFLBzX.js",
|
"houseplan-assets/zigbee-topology-LI-FVdpo.js",
|
||||||
"houseplan-assets/zigbee-topology-runtime-cidfav1L.js"
|
"houseplan-assets/zigbee-topology-runtime-DTi-kj9C.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/iso-scene-render-cM25hLUD.js",
|
"path": "houseplan-assets/iso-scene-render-RhSO-S9j.js",
|
||||||
"sha256": "23631a94530e942caf4f396db1a88d0a40b42e668b25988ea0c903fe475bae4b",
|
"sha256": "b5c630c05c0c2648c96006ab51cf271ae2ca585742df4bd9ad456ce9dac86646",
|
||||||
"rawBytes": 38562,
|
"rawBytes": 38562,
|
||||||
"gzipBytes": 13086,
|
"gzipBytes": 13089,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/guard-B-DpMbo8.js",
|
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/live-interaction-runtime-CfFnUimM.js",
|
"path": "houseplan-assets/live-interaction-runtime-C_klxsXE.js",
|
||||||
"sha256": "3bfa67222093a06ca360d43b666a5b68bd6ec4e5a4997b6876a57b1c0f3bd189",
|
"sha256": "319a2a94cf85acd20b27522ae71b81e25ee1f2d69f1688256c5eeed4dddec3d5",
|
||||||
"rawBytes": 5196,
|
"rawBytes": 5196,
|
||||||
"gzipBytes": 2128,
|
"gzipBytes": 2129,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/pdf-export-C7QX7Os6.js",
|
"path": "houseplan-assets/pdf-export-CsCJxU0E.js",
|
||||||
"sha256": "fda446084e6a626d103d53b326b2e8053c8188e99c52db752bcfe29b1144ae5e",
|
"sha256": "eccac69e0d54ceeff8fceb8db69a0f20f5339443cb7961f8916f9a850bb1ae6c",
|
||||||
"rawBytes": 237254,
|
"rawBytes": 237254,
|
||||||
"gzipBytes": 110116,
|
"gzipBytes": 110117,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/furniture-plan-art.generated-CyDdfRbk.js",
|
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/summary-panel-editor-v6P_pydT.js",
|
"path": "houseplan-assets/summary-panel-editor-BC_vG9Hn.js",
|
||||||
"sha256": "a3f855dedeef4f4495e0839c343d627fbcf08eb4bde465f8155b9d2db9897489",
|
"sha256": "5c7fd338b94152ae5e1194f07c6353863a9e22c4f2e99424f5795484da989a64",
|
||||||
"rawBytes": 14824,
|
"rawBytes": 14824,
|
||||||
"gzipBytes": 3400,
|
"gzipBytes": 3401,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js",
|
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||||
"houseplan-assets/summary-panel-runtime-loaded-fHmauMhT.js"
|
"houseplan-assets/summary-panel-runtime-loaded-DQS834xA.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/summary-panel-metrics-CWsAhuuf.js",
|
"path": "houseplan-assets/summary-panel-metrics-C2M32Xkf.js",
|
||||||
"sha256": "5dc4acc6d8b5204659a47617d8f9fcc33e49d250706cc3b0eea91b7639d5b5d3",
|
"sha256": "bca21f0d66af64c7c1ef501a8cd38e04e2a74ee7196e004f6f60397d9e9a72f1",
|
||||||
"rawBytes": 2610,
|
"rawBytes": 2610,
|
||||||
"gzipBytes": 1307,
|
"gzipBytes": 1308,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/summary-panel-runtime-loaded-fHmauMhT.js",
|
"path": "houseplan-assets/summary-panel-runtime-loaded-DQS834xA.js",
|
||||||
"sha256": "4b2b0b337120ddf130777bd73a9c77f646bbd74adc861b2f749cf73b209eea5d",
|
"sha256": "54c791fdd19e77c24ac142794c4207345eaec03d2ab15dfdf3b991afa32bb812",
|
||||||
"rawBytes": 72272,
|
"rawBytes": 72272,
|
||||||
"gzipBytes": 19727,
|
"gzipBytes": 19729,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": [
|
"dynamicImports": [
|
||||||
"houseplan-assets/summary-panel-editor-v6P_pydT.js",
|
"houseplan-assets/summary-panel-editor-BC_vG9Hn.js",
|
||||||
"houseplan-assets/summary-panel-metrics-CWsAhuuf.js"
|
"houseplan-assets/summary-panel-metrics-C2M32Xkf.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/zigbee-topology-BqMFLBzX.js",
|
"path": "houseplan-assets/zigbee-topology-LI-FVdpo.js",
|
||||||
"sha256": "60da11d2bdb40780b5ca7853c8ca5c7c70f334442a56eda9052f76df260c458b",
|
"sha256": "d01ec49d20c5f3dc028a59107f1f9060634ab93d6d112e03a7c2b85792159440",
|
||||||
"rawBytes": 18961,
|
"rawBytes": 18961,
|
||||||
"gzipBytes": 7430,
|
"gzipBytes": 7431,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/zigbee-topology-runtime-cidfav1L.js",
|
"path": "houseplan-assets/zigbee-topology-runtime-DTi-kj9C.js",
|
||||||
"sha256": "ad947ed4a3a1c0da71322a8cb3d2487b735c5d53abea0c129f0727f5a9ad0d12",
|
"sha256": "3a0fad7d479bbeb161434e498a3c8ac7f88da62ef37c173b66f95057098bcc97",
|
||||||
"rawBytes": 3941,
|
"rawBytes": 3941,
|
||||||
"gzipBytes": 1765,
|
"gzipBytes": 1765,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js",
|
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||||
"houseplan-assets/zigbee-topology-BqMFLBzX.js"
|
"houseplan-assets/zigbee-topology-LI-FVdpo.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-card.js",
|
"path": "houseplan-card.js",
|
||||||
"sha256": "40819c556cd468a5dac8bfb8dc2eb5e5b14a9a78684d402a470d026d9aab4781",
|
"sha256": "21da7b3390ea9d4992e33bf4d6fdf684145b53f407e253a599e70a459585298d",
|
||||||
"rawBytes": 1205,
|
"rawBytes": 1205,
|
||||||
"gzipBytes": 804,
|
"gzipBytes": 805,
|
||||||
"isEntry": true,
|
"isEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-panel.js",
|
"path": "houseplan-panel.js",
|
||||||
"sha256": "d678f3b11374134cd913c92a93916f04cbde2b184fad191f4e599f43317d4909",
|
"sha256": "a664721695cf5c85903eea440d05a295cb6d6d2cd1e3669fd5c65c9752534492",
|
||||||
"rawBytes": 6124,
|
"rawBytes": 6124,
|
||||||
"gzipBytes": 2305,
|
"gzipBytes": 2306,
|
||||||
"isEntry": true,
|
"isEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-card.js"
|
"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__="f00ccb2e025e4749d8b21b734ae6193bd0a556f441d56991773969a015d817ec";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-Bp1zKCs9.js";class h extends e{constructor(){super(...arguments),this._spaces=null,this._spacesLoading=!1,this._spacesAuthoritative=!1}setConfig(e){this._config=e}async _loadSpaces(){if(!this._spaces&&!this._spacesLoading&&this.hass){this._spacesLoading=!0;try{const e=await this.hass.callWS({type:"houseplan/config/get"});this._spaces=(e?.config?.spaces||[]).map(e=>({value:e.id,label:e.title||e.id})),this._spacesAuthoritative=!0}catch{this._spaces=[],this._spacesAuthoritative=!1}finally{this._spacesLoading=!1}}}get _lang(){return o(this.hass,this._config?.language)}get _floorToken(){const e=this._config?.floor;return"number"==typeof e?`__houseplan_yaml_floor_index__:${String(e)}`:null}get _formData(){const e={...this._config},o=this._floorToken;return o?e.floor=o:Object.prototype.hasOwnProperty.call(e,"floor")||(e.floor=""),e}get _schema(){const e=this._spaces||[],o=this._lang,a=[{value:"",label:t(o,"editor.floor_none")}],i=this._floorToken;i&&a.push({value:i,label:t(o,"editor.floor_index",{index:String(this._config?.floor)})});const l="string"==typeof this._config?.floor?this._config.floor:"";l&&!e.some(e=>e.value===l)&&a.push({value:l,label:l}),a.push(...e);const n="string"==typeof this._config?.default_floor?this._config.default_floor:"",r=[...e];return n&&!e.some(e=>e.value===n)&&r.unshift({value:n,label:n}),[{name:"title",selector:{text:{}}},{name:"floor",selector:{select:{mode:"dropdown",options:a}}},e.length?{name:"default_floor",selector:{select:{mode:"dropdown",options:r}}}:{name:"default_floor",selector:{text:{}}},{name:"language",selector:{select:{mode:"dropdown",options:s(t(o,"editor.lang_auto"),this._config?.language)}}},{name:"icon_size",selector:{number:{min:1,max:6,step:.1,mode:"box"}}},{name:"show_temperature",selector:{boolean:{}}},{name:"live_states",selector:{boolean:{}}},{name:"show_signal",selector:{boolean:{}}},{name:"kiosk",selector:{boolean:{}}},{name:"cycle",selector:{number:{min:0,max:3600,step:5,mode:"box"}}}]}render(){if(!this.hass||!this._config)return a;const e=i(this,l,o(this.hass,this._config.language));if("cold"===e)return n();if("warm"===e)return r;this._loadSpaces();const s=this._lang,h={title:t(s,"editor.title"),floor:t(s,"editor.floor"),default_floor:t(s,"editor.default_floor"),language:t(s,"editor.language"),icon_size:t(s,"editor.icon_size"),show_temperature:t(s,"editor.show_temperature"),live_states:t(s,"editor.live_states"),show_signal:t(s,"editor.show_signal"),kiosk:t(s,"editor.kiosk"),cycle:t(s,"editor.cycle")},f=this._schema,_=function(e,o,t){if(!t||null===o)return null;const s="string"==typeof e?.default_floor?e.default_floor:"";return!s||o.some(e=>e.value===s)?null:s}(this._config,this._spaces,this._spacesAuthoritative),d=e=>c`<ha-form
|
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="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
|
||||||
.hass=${this.hass}
|
.hass=${this.hass}
|
||||||
.data=${this._formData}
|
.data=${this._formData}
|
||||||
.schema=${e}
|
.schema=${e}
|
||||||
.computeLabel=${e=>h[e.name]||e.name}
|
.computeLabel=${e=>f[e.name]||e.name}
|
||||||
@value-changed=${this._valueChanged}
|
@value-changed=${this._valueChanged}
|
||||||
></ha-form>`;return c`
|
></ha-form>`;return c`
|
||||||
${d(f.slice(0,3))}
|
${d(h.slice(0,3))}
|
||||||
${_?c`<div class="default-floor-error" role="alert"
|
${_?c`<div class="default-floor-error" role="alert"
|
||||||
style="color:var(--error-color,#db4437);margin:-4px 0 12px;overflow-wrap:anywhere">
|
style="color:var(--error-color,#db4437);margin:-4px 0 12px;overflow-wrap:anywhere">
|
||||||
${t(s,"editor.default_floor_missing",{id:_})}
|
${t(s,"editor.default_floor_missing",{id:_})}
|
||||||
</div>`:a}
|
</div>`:a}
|
||||||
${d(f.slice(3))}
|
${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)}}h.properties={hass:{attribute:!1},_config:{state:!0},_spaces:{state:!0}},customElements.get("houseplan-card-editor")||customElements.define("houseplan-card-editor",h);
|
`}_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);
|
||||||
+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__="f00ccb2e025e4749d8b21b734ae6193bd0a556f441d56991773969a015d817ec";import{dS as r,dT as t,dU as e}from"./houseplan-card-Bp1zKCs9.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__="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};
|
||||||
+101
-90
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__="f00ccb2e025e4749d8b21b734ae6193bd0a556f441d56991773969a015d817ec";import{b as a,A as e}from"./houseplan-card-Bp1zKCs9.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-fHmauMhT.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__="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">
|
||||||
<span class="summary-switch-caption"><strong>${b("summary.show_local")}</strong>
|
<span class="summary-switch-caption"><strong>${b("summary.show_local")}</strong>
|
||||||
<small id="summary-local-show-hint">${b("summary.show_local_hint")}</small></span>
|
<small id="summary-local-show-hint">${b("summary.show_local_hint")}</small></span>
|
||||||
<input id="summary-local-show" data-summary-local-show type="checkbox"
|
<input id="summary-local-show" data-summary-local-show type="checkbox"
|
||||||
+1
-1
@@ -1 +1 @@
|
|||||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="f00ccb2e025e4749d8b21b734ae6193bd0a556f441d56991773969a015d817ec";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-Bp1zKCs9.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__="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};
|
||||||
+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__="f00ccb2e025e4749d8b21b734ae6193bd0a556f441d56991773969a015d817ec";import{n as t,b as n}from"./zigbee-topology-BqMFLBzX.js";import{B as e}from"./houseplan-card-Bp1zKCs9.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};
|
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};
|
||||||
@@ -1 +1 @@
|
|||||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="f00ccb2e025e4749d8b21b734ae6193bd0a556f441d56991773969a015d817ec";try{await import("./houseplan-assets/houseplan-card-Bp1zKCs9.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__="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)}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,139 @@
|
|||||||
|
// Переключение пространств не доигрывает чужие переходы (#525).
|
||||||
|
//
|
||||||
|
// Lit переиспользует узлы списка по позиции. Пока у створки двери
|
||||||
|
// (`.op-leaf`, `transform`) и у дуги (`.op-arc`, `stroke-dashoffset`) есть
|
||||||
|
// переход в 0.6 с, позиционное переиспользование превращает смену
|
||||||
|
// пространства в анимацию: створка нового этажа доезжает из положения двери,
|
||||||
|
// которая занимала этот слот раньше. То же у оболочки маркера
|
||||||
|
// (`.device-shell-frame`, `box-shadow`).
|
||||||
|
//
|
||||||
|
// Две ловушки, обе стоили бы свидетелю правдивости:
|
||||||
|
// 1. `document.getAnimations()` здесь пуст ДАЖЕ НА СЛОМАННОМ КОДЕ — карточка
|
||||||
|
// живёт в shadow root, и документный вызов туда не заходит. Считаем
|
||||||
|
// поэлементно, обходя вложенные теневые деревья.
|
||||||
|
// 2. В демо-доме проёмов нет вовсе (`space.openings` пуст у обоих
|
||||||
|
// пространств), поэтому дверь в двух пространствах готовит сам смок.
|
||||||
|
import { launch, checkAll, finish } from './serve.mjs';
|
||||||
|
const { page, browser } = await launch();
|
||||||
|
|
||||||
|
const res = await page.evaluate(async () => {
|
||||||
|
const out = {};
|
||||||
|
const c = window.__card;
|
||||||
|
const root = () => c.shadowRoot || c.renderRoot;
|
||||||
|
const frame = () => new Promise((resolve) => requestAnimationFrame(() => resolve()));
|
||||||
|
const settle = async (frames = 10, ms = 500) => {
|
||||||
|
for (let i = 0; i < frames; i++) await frame();
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, ms));
|
||||||
|
};
|
||||||
|
/** Все бегущие анимации внутри карточки, включая вложенные shadow root. */
|
||||||
|
const runningAnimations = () => {
|
||||||
|
const found = [];
|
||||||
|
const walk = (node) => {
|
||||||
|
for (const element of node.querySelectorAll('*')) {
|
||||||
|
const list = element.getAnimations ? element.getAnimations() : [];
|
||||||
|
for (const animation of list) {
|
||||||
|
if (animation.playState !== 'running') continue;
|
||||||
|
found.push({
|
||||||
|
cls: element.getAttribute?.('class') || element.tagName,
|
||||||
|
property: animation.transitionProperty || animation.animationName || '?',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (element.shadowRoot) walk(element.shadowRoot);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
walk(root());
|
||||||
|
return found;
|
||||||
|
};
|
||||||
|
// Вкладка подсвечивается, слайд едет, значения сводной панели проявляются —
|
||||||
|
// это и есть переключение. Всё остальное, что бежит сразу после него,
|
||||||
|
// доигрывает чужие данные.
|
||||||
|
const EXPECTED = (entry) => /(^|\s)tab(\s|$)|zoomwrap/.test(entry.cls)
|
||||||
|
|| /^summary-/.test(entry.property);
|
||||||
|
|
||||||
|
// ---- фикстура: дверь на одном месте в двух пространствах ---------------
|
||||||
|
const ids = c._serverCfg.spaces.map((space) => space.id).slice(0, 2);
|
||||||
|
out.twoSpacesExist = ids.length === 2;
|
||||||
|
const physicalize = (space) => {
|
||||||
|
for (const room of [...(space.rooms || [])]) {
|
||||||
|
const rendered = c._spaceModelById(space.id)?.rooms?.find((item) => item.id === room.id);
|
||||||
|
if (!rendered?.poly?.length) continue;
|
||||||
|
c._wallDialog = {
|
||||||
|
a: rendered.poly[0], b: rendered.poly[1], value: '15', roomId: room.id,
|
||||||
|
source: { kind: 'room' }, sx: 0, sy: 0,
|
||||||
|
};
|
||||||
|
c._wallThickApply(true);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
for (const id of ids) physicalize(c._serverCfg.spaces.find((space) => space.id === id));
|
||||||
|
c._geometryHistory.length = 0;
|
||||||
|
const contactOpen = 'binary_sensor.probe_door_open';
|
||||||
|
const contactShut = 'binary_sensor.probe_door_shut';
|
||||||
|
const withContacts = (openState) => ({
|
||||||
|
...c.hass,
|
||||||
|
states: {
|
||||||
|
...c.hass.states,
|
||||||
|
[contactOpen]: { entity_id: contactOpen, state: openState, attributes: { device_class: 'door' } },
|
||||||
|
[contactShut]: { entity_id: contactShut, state: 'off', attributes: { device_class: 'door' } },
|
||||||
|
},
|
||||||
|
entities: {
|
||||||
|
...(c.hass.entities || {}),
|
||||||
|
[contactOpen]: { entity_id: contactOpen },
|
||||||
|
[contactShut]: { entity_id: contactShut },
|
||||||
|
},
|
||||||
|
});
|
||||||
|
c.hass = withContacts('on');
|
||||||
|
const door = (id, contact) => ({
|
||||||
|
id, type: 'door', x: 0.2, y: 0.14, angle: 0, length: 0.08, contact,
|
||||||
|
});
|
||||||
|
c._serverCfg.spaces.find((space) => space.id === ids[0]).openings = [door('opA', contactOpen)];
|
||||||
|
c._serverCfg.spaces.find((space) => space.id === ids[1]).openings = [door('opB', contactShut)];
|
||||||
|
c._cfgEpoch++;
|
||||||
|
c.requestUpdate();
|
||||||
|
await c.updateComplete;
|
||||||
|
|
||||||
|
// ---- 1) штатное переключение не анимирует чужую створку ----------------
|
||||||
|
c._pickSpace(ids[0]);
|
||||||
|
await c.updateComplete;
|
||||||
|
await settle();
|
||||||
|
const leafBefore = root().querySelector('.op-leaf');
|
||||||
|
out.doorIsDrawnInTheFirstSpace = !!leafBefore;
|
||||||
|
out.quietBeforeTheSwitch = runningAnimations().filter((entry) => !EXPECTED(entry)).length === 0;
|
||||||
|
// поворот створки живёт инлайновым стилем, не атрибутом
|
||||||
|
const leafTransform = (leaf) => leaf?.style?.transform || leaf?.getAttribute('transform') || null;
|
||||||
|
const transformBefore = leafTransform(leafBefore);
|
||||||
|
|
||||||
|
c._pickSpace(ids[1]);
|
||||||
|
await c.updateComplete;
|
||||||
|
await frame();
|
||||||
|
const afterSwitch = runningAnimations();
|
||||||
|
const leafAfter = root().querySelector('.op-leaf');
|
||||||
|
out.doorIsDrawnInTheSecondSpace = !!leafAfter;
|
||||||
|
out.theTwoDoorsDifferInState = !!transformBefore && transformBefore !== leafTransform(leafAfter);
|
||||||
|
out.noOpeningTransitionOnSwitch = afterSwitch
|
||||||
|
.filter((entry) => /op-leaf|op-arc/.test(entry.cls)).length === 0;
|
||||||
|
out.noMarkerTransitionOnSwitch = afterSwitch
|
||||||
|
.filter((entry) => /device-shell-frame/.test(entry.cls)).length === 0;
|
||||||
|
const unexpected = afterSwitch.filter((entry) => !EXPECTED(entry));
|
||||||
|
out.onlyTheSwitchItselfAnimates = unexpected.length === 0;
|
||||||
|
out.unexpectedAnimations = unexpected.map((entry) => `${entry.cls}:${entry.property}`);
|
||||||
|
// ещё кадр — переход мог стартовать с задержкой в один тик
|
||||||
|
await frame();
|
||||||
|
await frame();
|
||||||
|
const later = runningAnimations().filter((entry) => !EXPECTED(entry));
|
||||||
|
out.stillQuietOneFrameLater = later.length === 0;
|
||||||
|
|
||||||
|
// ---- 2) настоящая смена состояния двери по-прежнему анимируется --------
|
||||||
|
await settle();
|
||||||
|
out.quietBeforeTheRealChange = runningAnimations()
|
||||||
|
.filter((entry) => /op-leaf|op-arc/.test(entry.cls)).length === 0;
|
||||||
|
c.hass = { ...c.hass, states: { ...c.hass.states,
|
||||||
|
[contactShut]: { entity_id: contactShut, state: 'on', attributes: { device_class: 'door' } } } };
|
||||||
|
await c.updateComplete;
|
||||||
|
await frame();
|
||||||
|
const onRealChange = runningAnimations();
|
||||||
|
out.aRealDoorOpeningStillAnimates = onRealChange
|
||||||
|
.filter((entry) => /op-leaf/.test(entry.cls)).length >= 1;
|
||||||
|
return out;
|
||||||
|
});
|
||||||
|
checkAll(res, { unexpectedAnimations: [] });
|
||||||
|
await finish(browser, res);
|
||||||
Vendored
+141
-141
@@ -1,309 +1,309 @@
|
|||||||
{
|
{
|
||||||
"schema": 1,
|
"schema": 1,
|
||||||
"fingerprint": "f00ccb2e025e4749d8b21b734ae6193bd0a556f441d56991773969a015d817ec",
|
"fingerprint": "7d8c26b95986499fd35534164d8e2bc2e897f0fbe9d846bccffa49f45116a618",
|
||||||
"entry": "houseplan-card.js",
|
"entry": "houseplan-card.js",
|
||||||
"panelEntry": "houseplan-panel.js",
|
"panelEntry": "houseplan-panel.js",
|
||||||
"initialViewFiles": [
|
"initialViewFiles": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js",
|
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||||
"houseplan-card.js"
|
"houseplan-card.js"
|
||||||
],
|
],
|
||||||
"initialViewGzipBytes": 299818,
|
"initialViewGzipBytes": 300059,
|
||||||
"initialPanelFiles": [
|
"initialPanelFiles": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js",
|
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||||
"houseplan-card.js",
|
"houseplan-card.js",
|
||||||
"houseplan-panel.js"
|
"houseplan-panel.js"
|
||||||
],
|
],
|
||||||
"initialPanelGzipBytes": 302123,
|
"initialPanelGzipBytes": 302365,
|
||||||
"initialPanelOnlyFiles": [
|
"initialPanelOnlyFiles": [
|
||||||
"houseplan-panel.js"
|
"houseplan-panel.js"
|
||||||
],
|
],
|
||||||
"initialPanelOnlyGzipBytes": 2305,
|
"initialPanelOnlyGzipBytes": 2306,
|
||||||
"lazyFiles": [
|
"lazyFiles": [
|
||||||
"houseplan-assets/backdrop-pick-Cn3C2LDS.js",
|
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||||
"houseplan-assets/de-Rx23MWgW.js",
|
"houseplan-assets/de-HksnN-9C.js",
|
||||||
"houseplan-assets/editor-BKd7m0Cl.js",
|
"houseplan-assets/editor-CSFqqHwT.js",
|
||||||
"houseplan-assets/fr-Cmciv8Kg.js",
|
"houseplan-assets/fr-lBEFwYGK.js",
|
||||||
"houseplan-assets/furniture-plan-art.generated-CyDdfRbk.js",
|
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||||
"houseplan-assets/guard-B-DpMbo8.js",
|
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||||
"houseplan-assets/houseplan-editor-runtime-Ct6C87Tu.js",
|
"houseplan-assets/houseplan-editor-runtime-uP6vjZmA.js",
|
||||||
"houseplan-assets/houseplan-onboarding-runtime-BNaIaYhC.js",
|
"houseplan-assets/houseplan-onboarding-runtime-BdClDAcS.js",
|
||||||
"houseplan-assets/hp-zigbee-topology-overlay-BRzrNvxL.js",
|
"houseplan-assets/hp-zigbee-topology-overlay-DRpau2VG.js",
|
||||||
"houseplan-assets/iso-scene-render-cM25hLUD.js",
|
"houseplan-assets/iso-scene-render-RhSO-S9j.js",
|
||||||
"houseplan-assets/live-interaction-runtime-CfFnUimM.js",
|
"houseplan-assets/live-interaction-runtime-C_klxsXE.js",
|
||||||
"houseplan-assets/pdf-export-C7QX7Os6.js",
|
"houseplan-assets/pdf-export-CsCJxU0E.js",
|
||||||
"houseplan-assets/summary-panel-runtime-loaded-fHmauMhT.js",
|
"houseplan-assets/summary-panel-runtime-loaded-DQS834xA.js",
|
||||||
"houseplan-assets/zigbee-topology-BqMFLBzX.js",
|
"houseplan-assets/zigbee-topology-LI-FVdpo.js",
|
||||||
"houseplan-assets/zigbee-topology-runtime-cidfav1L.js"
|
"houseplan-assets/zigbee-topology-runtime-DTi-kj9C.js"
|
||||||
],
|
],
|
||||||
"lazyGzipBytes": 418163,
|
"lazyGzipBytes": 418179,
|
||||||
"lazyEditorFiles": [
|
"lazyEditorFiles": [
|
||||||
"houseplan-assets/backdrop-pick-Cn3C2LDS.js",
|
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||||
"houseplan-assets/editor-BKd7m0Cl.js",
|
"houseplan-assets/editor-CSFqqHwT.js",
|
||||||
"houseplan-assets/furniture-plan-art.generated-CyDdfRbk.js",
|
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||||
"houseplan-assets/guard-B-DpMbo8.js",
|
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||||
"houseplan-assets/houseplan-editor-runtime-Ct6C87Tu.js",
|
"houseplan-assets/houseplan-editor-runtime-uP6vjZmA.js",
|
||||||
"houseplan-assets/zigbee-topology-BqMFLBzX.js"
|
"houseplan-assets/zigbee-topology-LI-FVdpo.js"
|
||||||
],
|
],
|
||||||
"lazyEditorGzipBytes": 205716,
|
"lazyEditorGzipBytes": 205726,
|
||||||
"lazyOnboardingFiles": [
|
"lazyOnboardingFiles": [
|
||||||
"houseplan-assets/backdrop-pick-Cn3C2LDS.js",
|
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||||
"houseplan-assets/houseplan-onboarding-runtime-BNaIaYhC.js"
|
"houseplan-assets/houseplan-onboarding-runtime-BdClDAcS.js"
|
||||||
],
|
],
|
||||||
"lazyOnboardingGzipBytes": 14184,
|
"lazyOnboardingGzipBytes": 14187,
|
||||||
"lazyLocaleFiles": [
|
"lazyLocaleFiles": [
|
||||||
"houseplan-assets/de-Rx23MWgW.js",
|
"houseplan-assets/de-HksnN-9C.js",
|
||||||
"houseplan-assets/fr-Cmciv8Kg.js"
|
"houseplan-assets/fr-lBEFwYGK.js"
|
||||||
],
|
],
|
||||||
"lazyLocaleGzipBytes": 54858,
|
"lazyLocaleGzipBytes": 54854,
|
||||||
"lazyIsometricFiles": [
|
"lazyIsometricFiles": [
|
||||||
"houseplan-assets/guard-B-DpMbo8.js",
|
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||||
"houseplan-assets/iso-scene-render-cM25hLUD.js"
|
"houseplan-assets/iso-scene-render-RhSO-S9j.js"
|
||||||
],
|
],
|
||||||
"lazyIsometricGzipBytes": 13458,
|
"lazyIsometricGzipBytes": 13460,
|
||||||
"lazyFurnitureArtFiles": [
|
"lazyFurnitureArtFiles": [
|
||||||
"houseplan-assets/furniture-plan-art.generated-CyDdfRbk.js"
|
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js"
|
||||||
],
|
],
|
||||||
"lazyFurnitureArtGzipBytes": 10252,
|
"lazyFurnitureArtGzipBytes": 10255,
|
||||||
"lazyPdfFiles": [
|
"lazyPdfFiles": [
|
||||||
"houseplan-assets/furniture-plan-art.generated-CyDdfRbk.js",
|
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||||
"houseplan-assets/pdf-export-C7QX7Os6.js"
|
"houseplan-assets/pdf-export-CsCJxU0E.js"
|
||||||
],
|
],
|
||||||
"lazyPdfGzipBytes": 120368,
|
"lazyPdfGzipBytes": 120372,
|
||||||
"files": [
|
"files": [
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/backdrop-pick-Cn3C2LDS.js",
|
"path": "houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||||
"sha256": "ce4df7477daa960c9f146de09dd7e9f383e13dd1199b32ccf5e8fdbc03361594",
|
"sha256": "e76da9cb2c5c8a32b2798c6f8785819bd7ff6ee624987feb8ff2c89522f87fef",
|
||||||
"rawBytes": 21134,
|
"rawBytes": 21134,
|
||||||
"gzipBytes": 7147,
|
"gzipBytes": 7148,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/de-Rx23MWgW.js",
|
"path": "houseplan-assets/de-HksnN-9C.js",
|
||||||
"sha256": "35001ee0702c4b0a1dec055a4ce59450a4944610d1c3f4b2395f6b43a8c516a8",
|
"sha256": "3a1ada3b04ef3eb7e9c6856c700d589e90e962a6753087b59f89b481c68a9499",
|
||||||
"rawBytes": 91441,
|
"rawBytes": 91441,
|
||||||
"gzipBytes": 27712,
|
"gzipBytes": 27710,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/editor-BKd7m0Cl.js",
|
"path": "houseplan-assets/editor-CSFqqHwT.js",
|
||||||
"sha256": "fb68ec6ca16c3dde08e8b423492f76b762ebe22275c40a7bc36fa8acce4da4ad",
|
"sha256": "a5adebb3a438356deb0e5a35fa218bcb4ab6a8be23d6e535b6cd350170775926",
|
||||||
"rawBytes": 3832,
|
"rawBytes": 3832,
|
||||||
"gzipBytes": 1584,
|
"gzipBytes": 1585,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/fr-Cmciv8Kg.js",
|
"path": "houseplan-assets/fr-lBEFwYGK.js",
|
||||||
"sha256": "587aee0ac33d157d50d4f80a3fe66846dc6bf779cdad865b1c43eacab78d1c4e",
|
"sha256": "de104eb96b8e4fbb2895ab861300878eb3f27dc616e4737bc2e9e818286c9d88",
|
||||||
"rawBytes": 93719,
|
"rawBytes": 93719,
|
||||||
"gzipBytes": 27146,
|
"gzipBytes": 27144,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/furniture-plan-art.generated-CyDdfRbk.js",
|
"path": "houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||||
"sha256": "1209c487274724f24a596cc73f632e59cd1955ff25f42e506177656abc2e54f6",
|
"sha256": "9b63fd1d6479a45b433b323468a56b46ab0e0e3d2a5bfb82b6349d475e59eee8",
|
||||||
"rawBytes": 33655,
|
"rawBytes": 33655,
|
||||||
"gzipBytes": 10252,
|
"gzipBytes": 10255,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/guard-B-DpMbo8.js",
|
"path": "houseplan-assets/guard-Bdo2w6Sq.js",
|
||||||
"sha256": "fcf685e554aae83843223f5c19b3db5e194eb54ff6344ba0448cb6f82a01cb9c",
|
"sha256": "b98da3eb22fde2449b43c37851d7e2cbbcb14103b20b7c6b417fa4bab2502416",
|
||||||
"rawBytes": 518,
|
"rawBytes": 518,
|
||||||
"gzipBytes": 372,
|
"gzipBytes": 371,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/houseplan-card-Bp1zKCs9.js",
|
"path": "houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||||
"sha256": "fbccd0542cc2244ad027ae8f23faea17d5bbbe1ebf7c4a9a44c2609714a7f100",
|
"sha256": "e7bdf9f5d1b699c27b57f25c369b137eceae0cf6f3ec7f2d364ef6c2bd552887",
|
||||||
"rawBytes": 1078600,
|
"rawBytes": 1079369,
|
||||||
"gzipBytes": 299014,
|
"gzipBytes": 299254,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"dynamicImports": [
|
"dynamicImports": [
|
||||||
"houseplan-assets/de-Rx23MWgW.js",
|
"houseplan-assets/de-HksnN-9C.js",
|
||||||
"houseplan-assets/editor-BKd7m0Cl.js",
|
"houseplan-assets/editor-CSFqqHwT.js",
|
||||||
"houseplan-assets/fr-Cmciv8Kg.js",
|
"houseplan-assets/fr-lBEFwYGK.js",
|
||||||
"houseplan-assets/furniture-plan-art.generated-CyDdfRbk.js",
|
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||||
"houseplan-assets/houseplan-editor-runtime-Ct6C87Tu.js",
|
"houseplan-assets/houseplan-editor-runtime-uP6vjZmA.js",
|
||||||
"houseplan-assets/houseplan-onboarding-runtime-BNaIaYhC.js",
|
"houseplan-assets/houseplan-onboarding-runtime-BdClDAcS.js",
|
||||||
"houseplan-assets/hp-zigbee-topology-overlay-BRzrNvxL.js",
|
"houseplan-assets/hp-zigbee-topology-overlay-DRpau2VG.js",
|
||||||
"houseplan-assets/iso-scene-render-cM25hLUD.js",
|
"houseplan-assets/iso-scene-render-RhSO-S9j.js",
|
||||||
"houseplan-assets/live-interaction-runtime-CfFnUimM.js",
|
"houseplan-assets/live-interaction-runtime-C_klxsXE.js",
|
||||||
"houseplan-assets/pdf-export-C7QX7Os6.js",
|
"houseplan-assets/pdf-export-CsCJxU0E.js",
|
||||||
"houseplan-assets/summary-panel-runtime-loaded-fHmauMhT.js"
|
"houseplan-assets/summary-panel-runtime-loaded-DQS834xA.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/houseplan-editor-runtime-Ct6C87Tu.js",
|
"path": "houseplan-assets/houseplan-editor-runtime-uP6vjZmA.js",
|
||||||
"sha256": "1b4a0ed9da5735e0ead38d031fa24a8046ba1684144b8cc0bbbb0f3fbaec851f",
|
"sha256": "00be6a1cdb443cd875e736984baf86b77e63d96474ec72d4d66bf2baa9f1a2ba",
|
||||||
"rawBytes": 672339,
|
"rawBytes": 672339,
|
||||||
"gzipBytes": 178931,
|
"gzipBytes": 178936,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/backdrop-pick-Cn3C2LDS.js",
|
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||||
"houseplan-assets/furniture-plan-art.generated-CyDdfRbk.js",
|
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||||
"houseplan-assets/guard-B-DpMbo8.js",
|
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js",
|
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||||
"houseplan-assets/zigbee-topology-BqMFLBzX.js"
|
"houseplan-assets/zigbee-topology-LI-FVdpo.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": [
|
"dynamicImports": [
|
||||||
"houseplan-assets/zigbee-topology-runtime-cidfav1L.js"
|
"houseplan-assets/zigbee-topology-runtime-DTi-kj9C.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/houseplan-onboarding-runtime-BNaIaYhC.js",
|
"path": "houseplan-assets/houseplan-onboarding-runtime-BdClDAcS.js",
|
||||||
"sha256": "354e2a62dc98b9c0540ef2fd946d7d6ffe57228eaea970a160ed342c067b85a5",
|
"sha256": "f81b58bde08ff74bab903803cc709e18449900dc91a3f64106db737bbabd55e3",
|
||||||
"rawBytes": 28287,
|
"rawBytes": 28287,
|
||||||
"gzipBytes": 7037,
|
"gzipBytes": 7039,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/backdrop-pick-Cn3C2LDS.js",
|
"houseplan-assets/backdrop-pick-BvtFVd_V.js",
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/hp-zigbee-topology-overlay-BRzrNvxL.js",
|
"path": "houseplan-assets/hp-zigbee-topology-overlay-DRpau2VG.js",
|
||||||
"sha256": "477c0a0d7c9b3cfcc31ae10ec258ad1dc0813d0e2a85090d9cc7b39bdc9cb264",
|
"sha256": "968345cc4eaaf6cc46accbdc30b4fff83e3fc40a5a7b7a0f611229f0e53ec6b9",
|
||||||
"rawBytes": 11034,
|
"rawBytes": 11034,
|
||||||
"gzipBytes": 3730,
|
"gzipBytes": 3731,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js",
|
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||||
"houseplan-assets/zigbee-topology-BqMFLBzX.js",
|
"houseplan-assets/zigbee-topology-LI-FVdpo.js",
|
||||||
"houseplan-assets/zigbee-topology-runtime-cidfav1L.js"
|
"houseplan-assets/zigbee-topology-runtime-DTi-kj9C.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/iso-scene-render-cM25hLUD.js",
|
"path": "houseplan-assets/iso-scene-render-RhSO-S9j.js",
|
||||||
"sha256": "23631a94530e942caf4f396db1a88d0a40b42e668b25988ea0c903fe475bae4b",
|
"sha256": "b5c630c05c0c2648c96006ab51cf271ae2ca585742df4bd9ad456ce9dac86646",
|
||||||
"rawBytes": 38562,
|
"rawBytes": 38562,
|
||||||
"gzipBytes": 13086,
|
"gzipBytes": 13089,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/guard-B-DpMbo8.js",
|
"houseplan-assets/guard-Bdo2w6Sq.js",
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/live-interaction-runtime-CfFnUimM.js",
|
"path": "houseplan-assets/live-interaction-runtime-C_klxsXE.js",
|
||||||
"sha256": "3bfa67222093a06ca360d43b666a5b68bd6ec4e5a4997b6876a57b1c0f3bd189",
|
"sha256": "319a2a94cf85acd20b27522ae71b81e25ee1f2d69f1688256c5eeed4dddec3d5",
|
||||||
"rawBytes": 5196,
|
"rawBytes": 5196,
|
||||||
"gzipBytes": 2128,
|
"gzipBytes": 2129,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/pdf-export-C7QX7Os6.js",
|
"path": "houseplan-assets/pdf-export-CsCJxU0E.js",
|
||||||
"sha256": "fda446084e6a626d103d53b326b2e8053c8188e99c52db752bcfe29b1144ae5e",
|
"sha256": "eccac69e0d54ceeff8fceb8db69a0f20f5339443cb7961f8916f9a850bb1ae6c",
|
||||||
"rawBytes": 237254,
|
"rawBytes": 237254,
|
||||||
"gzipBytes": 110116,
|
"gzipBytes": 110117,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/furniture-plan-art.generated-CyDdfRbk.js",
|
"houseplan-assets/furniture-plan-art.generated-B3wZVvff.js",
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/summary-panel-editor-v6P_pydT.js",
|
"path": "houseplan-assets/summary-panel-editor-BC_vG9Hn.js",
|
||||||
"sha256": "a3f855dedeef4f4495e0839c343d627fbcf08eb4bde465f8155b9d2db9897489",
|
"sha256": "5c7fd338b94152ae5e1194f07c6353863a9e22c4f2e99424f5795484da989a64",
|
||||||
"rawBytes": 14824,
|
"rawBytes": 14824,
|
||||||
"gzipBytes": 3400,
|
"gzipBytes": 3401,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js",
|
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||||
"houseplan-assets/summary-panel-runtime-loaded-fHmauMhT.js"
|
"houseplan-assets/summary-panel-runtime-loaded-DQS834xA.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/summary-panel-metrics-CWsAhuuf.js",
|
"path": "houseplan-assets/summary-panel-metrics-C2M32Xkf.js",
|
||||||
"sha256": "5dc4acc6d8b5204659a47617d8f9fcc33e49d250706cc3b0eea91b7639d5b5d3",
|
"sha256": "bca21f0d66af64c7c1ef501a8cd38e04e2a74ee7196e004f6f60397d9e9a72f1",
|
||||||
"rawBytes": 2610,
|
"rawBytes": 2610,
|
||||||
"gzipBytes": 1307,
|
"gzipBytes": 1308,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/summary-panel-runtime-loaded-fHmauMhT.js",
|
"path": "houseplan-assets/summary-panel-runtime-loaded-DQS834xA.js",
|
||||||
"sha256": "4b2b0b337120ddf130777bd73a9c77f646bbd74adc861b2f749cf73b209eea5d",
|
"sha256": "54c791fdd19e77c24ac142794c4207345eaec03d2ab15dfdf3b991afa32bb812",
|
||||||
"rawBytes": 72272,
|
"rawBytes": 72272,
|
||||||
"gzipBytes": 19727,
|
"gzipBytes": 19729,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": [
|
"dynamicImports": [
|
||||||
"houseplan-assets/summary-panel-editor-v6P_pydT.js",
|
"houseplan-assets/summary-panel-editor-BC_vG9Hn.js",
|
||||||
"houseplan-assets/summary-panel-metrics-CWsAhuuf.js"
|
"houseplan-assets/summary-panel-metrics-C2M32Xkf.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/zigbee-topology-BqMFLBzX.js",
|
"path": "houseplan-assets/zigbee-topology-LI-FVdpo.js",
|
||||||
"sha256": "60da11d2bdb40780b5ca7853c8ca5c7c70f334442a56eda9052f76df260c458b",
|
"sha256": "d01ec49d20c5f3dc028a59107f1f9060634ab93d6d112e03a7c2b85792159440",
|
||||||
"rawBytes": 18961,
|
"rawBytes": 18961,
|
||||||
"gzipBytes": 7430,
|
"gzipBytes": 7431,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-assets/zigbee-topology-runtime-cidfav1L.js",
|
"path": "houseplan-assets/zigbee-topology-runtime-DTi-kj9C.js",
|
||||||
"sha256": "ad947ed4a3a1c0da71322a8cb3d2487b735c5d53abea0c129f0727f5a9ad0d12",
|
"sha256": "3a0fad7d479bbeb161434e498a3c8ac7f88da62ef37c173b66f95057098bcc97",
|
||||||
"rawBytes": 3941,
|
"rawBytes": 3941,
|
||||||
"gzipBytes": 1765,
|
"gzipBytes": 1765,
|
||||||
"isEntry": false,
|
"isEntry": false,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js",
|
"houseplan-assets/houseplan-card-DkiI2BOK.js",
|
||||||
"houseplan-assets/zigbee-topology-BqMFLBzX.js"
|
"houseplan-assets/zigbee-topology-LI-FVdpo.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-card.js",
|
"path": "houseplan-card.js",
|
||||||
"sha256": "40819c556cd468a5dac8bfb8dc2eb5e5b14a9a78684d402a470d026d9aab4781",
|
"sha256": "21da7b3390ea9d4992e33bf4d6fdf684145b53f407e253a599e70a459585298d",
|
||||||
"rawBytes": 1205,
|
"rawBytes": 1205,
|
||||||
"gzipBytes": 804,
|
"gzipBytes": 805,
|
||||||
"isEntry": true,
|
"isEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-assets/houseplan-card-Bp1zKCs9.js"
|
"houseplan-assets/houseplan-card-DkiI2BOK.js"
|
||||||
],
|
],
|
||||||
"dynamicImports": []
|
"dynamicImports": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "houseplan-panel.js",
|
"path": "houseplan-panel.js",
|
||||||
"sha256": "d678f3b11374134cd913c92a93916f04cbde2b184fad191f4e599f43317d4909",
|
"sha256": "a664721695cf5c85903eea440d05a295cb6d6d2cd1e3669fd5c65c9752534492",
|
||||||
"rawBytes": 6124,
|
"rawBytes": 6124,
|
||||||
"gzipBytes": 2305,
|
"gzipBytes": 2306,
|
||||||
"isEntry": true,
|
"isEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"houseplan-card.js"
|
"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__="f00ccb2e025e4749d8b21b734ae6193bd0a556f441d56991773969a015d817ec";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-Bp1zKCs9.js";class h extends e{constructor(){super(...arguments),this._spaces=null,this._spacesLoading=!1,this._spacesAuthoritative=!1}setConfig(e){this._config=e}async _loadSpaces(){if(!this._spaces&&!this._spacesLoading&&this.hass){this._spacesLoading=!0;try{const e=await this.hass.callWS({type:"houseplan/config/get"});this._spaces=(e?.config?.spaces||[]).map(e=>({value:e.id,label:e.title||e.id})),this._spacesAuthoritative=!0}catch{this._spaces=[],this._spacesAuthoritative=!1}finally{this._spacesLoading=!1}}}get _lang(){return o(this.hass,this._config?.language)}get _floorToken(){const e=this._config?.floor;return"number"==typeof e?`__houseplan_yaml_floor_index__:${String(e)}`:null}get _formData(){const e={...this._config},o=this._floorToken;return o?e.floor=o:Object.prototype.hasOwnProperty.call(e,"floor")||(e.floor=""),e}get _schema(){const e=this._spaces||[],o=this._lang,a=[{value:"",label:t(o,"editor.floor_none")}],i=this._floorToken;i&&a.push({value:i,label:t(o,"editor.floor_index",{index:String(this._config?.floor)})});const l="string"==typeof this._config?.floor?this._config.floor:"";l&&!e.some(e=>e.value===l)&&a.push({value:l,label:l}),a.push(...e);const n="string"==typeof this._config?.default_floor?this._config.default_floor:"",r=[...e];return n&&!e.some(e=>e.value===n)&&r.unshift({value:n,label:n}),[{name:"title",selector:{text:{}}},{name:"floor",selector:{select:{mode:"dropdown",options:a}}},e.length?{name:"default_floor",selector:{select:{mode:"dropdown",options:r}}}:{name:"default_floor",selector:{text:{}}},{name:"language",selector:{select:{mode:"dropdown",options:s(t(o,"editor.lang_auto"),this._config?.language)}}},{name:"icon_size",selector:{number:{min:1,max:6,step:.1,mode:"box"}}},{name:"show_temperature",selector:{boolean:{}}},{name:"live_states",selector:{boolean:{}}},{name:"show_signal",selector:{boolean:{}}},{name:"kiosk",selector:{boolean:{}}},{name:"cycle",selector:{number:{min:0,max:3600,step:5,mode:"box"}}}]}render(){if(!this.hass||!this._config)return a;const e=i(this,l,o(this.hass,this._config.language));if("cold"===e)return n();if("warm"===e)return r;this._loadSpaces();const s=this._lang,h={title:t(s,"editor.title"),floor:t(s,"editor.floor"),default_floor:t(s,"editor.default_floor"),language:t(s,"editor.language"),icon_size:t(s,"editor.icon_size"),show_temperature:t(s,"editor.show_temperature"),live_states:t(s,"editor.live_states"),show_signal:t(s,"editor.show_signal"),kiosk:t(s,"editor.kiosk"),cycle:t(s,"editor.cycle")},f=this._schema,_=function(e,o,t){if(!t||null===o)return null;const s="string"==typeof e?.default_floor?e.default_floor:"";return!s||o.some(e=>e.value===s)?null:s}(this._config,this._spaces,this._spacesAuthoritative),d=e=>c`<ha-form
|
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="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
|
||||||
.hass=${this.hass}
|
.hass=${this.hass}
|
||||||
.data=${this._formData}
|
.data=${this._formData}
|
||||||
.schema=${e}
|
.schema=${e}
|
||||||
.computeLabel=${e=>h[e.name]||e.name}
|
.computeLabel=${e=>f[e.name]||e.name}
|
||||||
@value-changed=${this._valueChanged}
|
@value-changed=${this._valueChanged}
|
||||||
></ha-form>`;return c`
|
></ha-form>`;return c`
|
||||||
${d(f.slice(0,3))}
|
${d(h.slice(0,3))}
|
||||||
${_?c`<div class="default-floor-error" role="alert"
|
${_?c`<div class="default-floor-error" role="alert"
|
||||||
style="color:var(--error-color,#db4437);margin:-4px 0 12px;overflow-wrap:anywhere">
|
style="color:var(--error-color,#db4437);margin:-4px 0 12px;overflow-wrap:anywhere">
|
||||||
${t(s,"editor.default_floor_missing",{id:_})}
|
${t(s,"editor.default_floor_missing",{id:_})}
|
||||||
</div>`:a}
|
</div>`:a}
|
||||||
${d(f.slice(3))}
|
${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)}}h.properties={hass:{attribute:!1},_config:{state:!0},_spaces:{state:!0}},customElements.get("houseplan-card-editor")||customElements.define("houseplan-card-editor",h);
|
`}_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);
|
||||||
+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__="f00ccb2e025e4749d8b21b734ae6193bd0a556f441d56991773969a015d817ec";import{dS as r,dT as t,dU as e}from"./houseplan-card-Bp1zKCs9.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__="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};
|
||||||
Vendored
+101
-90
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__="f00ccb2e025e4749d8b21b734ae6193bd0a556f441d56991773969a015d817ec";import{b as a,A as e}from"./houseplan-card-Bp1zKCs9.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-fHmauMhT.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__="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">
|
||||||
<span class="summary-switch-caption"><strong>${b("summary.show_local")}</strong>
|
<span class="summary-switch-caption"><strong>${b("summary.show_local")}</strong>
|
||||||
<small id="summary-local-show-hint">${b("summary.show_local_hint")}</small></span>
|
<small id="summary-local-show-hint">${b("summary.show_local_hint")}</small></span>
|
||||||
<input id="summary-local-show" data-summary-local-show type="checkbox"
|
<input id="summary-local-show" data-summary-local-show type="checkbox"
|
||||||
+1
-1
@@ -1 +1 @@
|
|||||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="f00ccb2e025e4749d8b21b734ae6193bd0a556f441d56991773969a015d817ec";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-Bp1zKCs9.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__="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};
|
||||||
+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__="f00ccb2e025e4749d8b21b734ae6193bd0a556f441d56991773969a015d817ec";import{n as t,b as n}from"./zigbee-topology-BqMFLBzX.js";import{B as e}from"./houseplan-card-Bp1zKCs9.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};
|
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};
|
||||||
Vendored
+1
-1
@@ -1 +1 @@
|
|||||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="f00ccb2e025e4749d8b21b734ae6193bd0a556f441d56991773969a015d817ec";try{await import("./houseplan-assets/houseplan-card-Bp1zKCs9.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__="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)}
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -2,6 +2,11 @@
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
- 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
|
||||||
|
([#525](https://github.com/Matysh/houseplan-card/issues/525)).
|
||||||
|
|
||||||
## v1.74.0-beta.1 — 2026-09-10
|
## v1.74.0-beta.1 — 2026-09-10
|
||||||
|
|
||||||
- Alignment guides follow the object again while you drag it: the marker in the
|
- Alignment guides follow the object again while you drag it: the marker in the
|
||||||
|
|||||||
@@ -8,6 +8,11 @@
|
|||||||
|
|
||||||
## Не выпущено
|
## Не выпущено
|
||||||
|
|
||||||
|
- При переключении между пространствами двери и окна больше не доигрывают
|
||||||
|
движение створки соседней двери — ни в одну сторону, ни в другую. Анимация
|
||||||
|
остаётся только за настоящей сменой состояния датчика
|
||||||
|
([#525](https://github.com/Matysh/houseplan-card/issues/525)).
|
||||||
|
|
||||||
## v1.74.0-beta.1 — 2026-09-10
|
## v1.74.0-beta.1 — 2026-09-10
|
||||||
|
|
||||||
- Направляющие выравнивания снова идут за объектом во время жеста: за значком
|
- Направляющие выравнивания снова идут за объектом во время жеста: за значком
|
||||||
|
|||||||
@@ -223,8 +223,19 @@ export const LOW_HEADROOM_WARNING_BYTES = 15_000;
|
|||||||
* последовательности, флаг и замыкание в `_loadFromServer`). Измеренный факт
|
* последовательности, флаг и замыкание в `_loadFromServer`). Измеренный факт
|
||||||
* 299 812 Б оставляет 588 Б сверху и 1 412 Б до нижней границы полосы; общий
|
* 299 812 Б оставляет 588 Б сверху и 1 412 Б до нижней границы полосы; общий
|
||||||
* бюджет 301 066 Б и долг #367 не меняются.
|
* бюджет 301 066 Б и долг #367 не меняются.
|
||||||
|
*
|
||||||
|
* 2026-09-11, #525: потолок перецентрирован 300 400 → 300 700. Списки проёмов
|
||||||
|
* и маркеров переведены на ключи (`repeat` по `id`) — без них Lit
|
||||||
|
* переиспользовал узлы по позиции и при смене пространства доигрывал переход
|
||||||
|
* створки соседней двери. Цена — сама директива `repeat`, впервые попавшая в
|
||||||
|
* начальный граф View: +241 Б gzip (проверено альтернативой `keyed` в
|
||||||
|
* обёртке-IIFE — та дороже, +373 Б). Измеренный факт 300 059 Б оставляет
|
||||||
|
* 641 Б сверху и 1 359 Б до нижней границы полосы. Общий бюджет 301 066 Б не
|
||||||
|
* меняется, но зазор между потолком и бюджетом сжался до 366 Б: долг #367
|
||||||
|
* из предупреждения стал ограничением, следующая правка начального графа
|
||||||
|
* упрётся в него всерьёз.
|
||||||
*/
|
*/
|
||||||
export const INITIAL_VIEW_GZIP_CEILING = 300_400;
|
export const INITIAL_VIEW_GZIP_CEILING = 300_700;
|
||||||
export const INITIAL_VIEW_CEILING_BAND = 2_000;
|
export const INITIAL_VIEW_CEILING_BAND = 2_000;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -7297,6 +7297,30 @@ const MUTANT_DEFINITIONS = [
|
|||||||
replace: ' this._loadOk = true;',
|
replace: ' this._loadOk = true;',
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: 'openings-rendered-without-keys',
|
||||||
|
guard: 'node demo/smoke_space_switch_transitions.mjs',
|
||||||
|
because: 'Lit reuses list nodes by position: without a key the leaf of the next space '
|
||||||
|
+ 'inherits the node of whatever door held that slot, and its 0.6s transform transition '
|
||||||
|
+ 'animates a door that never moved (#525 AC1)',
|
||||||
|
patches: [{
|
||||||
|
file: 'src/houseplan-card.ts',
|
||||||
|
find: ' return svg`<g class="openinglayer">${repeat(items, (o) => o.id, (o) => {',
|
||||||
|
replace: ' return svg`<g class="openinglayer">${items.map((o) => {',
|
||||||
|
}],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'device-markers-rendered-without-keys',
|
||||||
|
guard: 'node demo/smoke_space_switch_transitions.mjs',
|
||||||
|
because: 'the marker shell carries a `box-shadow` transition, so a positional reuse replays '
|
||||||
|
+ 'it on every space switch; the key also keeps `data-id` honest for the live editor '
|
||||||
|
+ 'painter, which finds the dragged marker by that attribute (#525 AC2)',
|
||||||
|
patches: [{
|
||||||
|
file: 'src/houseplan-card.ts',
|
||||||
|
find: ' ${repeat(devs, (d) => d.id, (d) => this._renderDevice(',
|
||||||
|
replace: ' ${devs.map((d) => this._renderDevice(',
|
||||||
|
}],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: 'live-editor-devices-drops-align-guides',
|
id: 'live-editor-devices-drops-align-guides',
|
||||||
guard: 'node demo/smoke_align_guides.mjs',
|
guard: 'node demo/smoke_align_guides.mjs',
|
||||||
|
|||||||
@@ -11784,7 +11784,7 @@ export class HouseplanCard extends LitElement {
|
|||||||
view,
|
view,
|
||||||
(point) => this._scenePoint(point),
|
(point) => this._scenePoint(point),
|
||||||
)}
|
)}
|
||||||
${devs.map((d) => this._renderDevice(
|
${repeat(devs, (d) => d.id, (d) => this._renderDevice(
|
||||||
d, view, showLqi, isoOverlays?.devices.get(d.id),
|
d, view, showLqi, isoOverlays?.devices.get(d.id),
|
||||||
))}
|
))}
|
||||||
${this._renderVacuums(this._renderVacuumDevices, view, space.id)}
|
${this._renderVacuums(this._renderVacuumDevices, view, space.id)}
|
||||||
@@ -12993,7 +12993,7 @@ export class HouseplanCard extends LitElement {
|
|||||||
const walls = this._spaceWalls;
|
const walls = this._spaceWalls;
|
||||||
const openCuts = this._openCuts();
|
const openCuts = this._openCuts();
|
||||||
const openingWallIndex = this._openingWallIndexFor(space, openCuts).value;
|
const openingWallIndex = this._openingWallIndexFor(space, openCuts).value;
|
||||||
return svg`<g class="openinglayer">${items.map((o) => {
|
return svg`<g class="openinglayer">${repeat(items, (o) => o.id, (o) => {
|
||||||
if (o.orphanReason) return svg`<g class="opening orphan" data-hp="opening-orphan"
|
if (o.orphanReason) return svg`<g class="opening orphan" data-hp="opening-orphan"
|
||||||
data-id=${o.id} role="button" tabindex="0"
|
data-id=${o.id} role="button" tabindex="0"
|
||||||
aria-label=${this._t('opening.partition_orphan')}
|
aria-label=${this._t('opening.partition_orphan')}
|
||||||
|
|||||||
@@ -519,7 +519,18 @@ export const planStyles = css`
|
|||||||
stroke: var(--hp-accent);
|
stroke: var(--hp-accent);
|
||||||
stroke-opacity: 1;
|
stroke-opacity: 1;
|
||||||
}
|
}
|
||||||
/* doors, windows & gates */
|
/* doors, windows & gates
|
||||||
|
|
||||||
|
#525: these two transitions are the reason the opening list is rendered
|
||||||
|
with repeat(items, (o) => o.id, ...) and not a bare map(). Lit reuses
|
||||||
|
list nodes by POSITION, so on a space switch the leaf that held a slot
|
||||||
|
kept its DOM node and only changed values — and the browser dutifully
|
||||||
|
animated a door that never moved: the new floor's leaf drove in from the
|
||||||
|
previous floor's opening angle, 0.6 s of an event that did not happen.
|
||||||
|
Anything animated that is rendered from a list needs a key. The Glow
|
||||||
|
spots learned it first (glow-scene.ts, opacity), the openings and the
|
||||||
|
device markers (.device-shell-frame, box-shadow) with this issue.
|
||||||
|
Witness: demo/smoke_space_switch_transitions.mjs. */
|
||||||
.op-leaf {
|
.op-leaf {
|
||||||
transition: transform 0.6s ease;
|
transition: transform 0.6s ease;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -147,3 +147,21 @@ test('свидетель направляющих ведёт жест, а не
|
|||||||
assert.match(source, /ZeroSettledRenders/);
|
assert.match(source, /ZeroSettledRenders/);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// #525. Карточка живёт в shadow root, и `document.getAnimations()` в неё не
|
||||||
|
// заходит: на сломанном коде документный вызов возвращал пустой список, пока
|
||||||
|
// створка двери честно доигрывала чужой переход. Свидетель обязан считать
|
||||||
|
// поэлементно, обходя вложенные теневые деревья, — иначе он зелен всегда.
|
||||||
|
test('свидетель переходов при переключении меряет поэлементно (#525)', () => {
|
||||||
|
const source = read('smoke_space_switch_transitions.mjs');
|
||||||
|
// Ловушка названа в шапке смока словами — упоминание в комментарии это не
|
||||||
|
// вызов; проверяется код, а не текст о нём.
|
||||||
|
const code = source.replace(/\/\*[\s\S]*?\*\//g, '').replace(/^\s*\/\/.*$/gm, '');
|
||||||
|
assert.doesNotMatch(code, /document\.getAnimations\(\)/,
|
||||||
|
'smoke_space_switch_transitions.mjs: документный getAnimations() пуст даже на'
|
||||||
|
+ ' сломанном коде — считать надо по узлам внутри renderRoot (#525)');
|
||||||
|
assert.match(code, /element\.getAnimations\(\)/);
|
||||||
|
assert.match(code, /element\.shadowRoot\) walk\(element\.shadowRoot\)/,
|
||||||
|
'обход обязан заходить во вложенные shadow root');
|
||||||
|
assert.match(code, /_pickSpace/, 'переключение делается штатным путём');
|
||||||
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user