mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-28 19:01:34 +00:00
test: close House Plan panel acceptance gaps
Issue: #486 User-Visible: no
This commit is contained in:
@@ -1,270 +1,270 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"fingerprint": "3555cb7791d3391b320376d4bcba14d217a5718d018ca955eb741df1762804b5",
|
||||
"fingerprint": "8e7650990368dac8b2651e684ac8ae9c578ba2a166396aa678bc3bf1ad9519ea",
|
||||
"entry": "houseplan-card.js",
|
||||
"panelEntry": "houseplan-panel.js",
|
||||
"initialViewFiles": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js",
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js",
|
||||
"houseplan-card.js"
|
||||
],
|
||||
"initialViewGzipBytes": 289934,
|
||||
"initialViewGzipBytes": 289923,
|
||||
"initialPanelFiles": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js",
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js",
|
||||
"houseplan-card.js",
|
||||
"houseplan-panel.js"
|
||||
],
|
||||
"initialPanelGzipBytes": 291864,
|
||||
"initialPanelGzipBytes": 291879,
|
||||
"initialPanelOnlyFiles": [
|
||||
"houseplan-panel.js"
|
||||
],
|
||||
"initialPanelOnlyGzipBytes": 1930,
|
||||
"initialPanelOnlyGzipBytes": 1956,
|
||||
"lazyFiles": [
|
||||
"houseplan-assets/backdrop-pick-B8uJVpYl.js",
|
||||
"houseplan-assets/de-pA3tnOax.js",
|
||||
"houseplan-assets/editor-CJSkbmJl.js",
|
||||
"houseplan-assets/fr-BjBWP2nl.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-CUlu3GpV.js",
|
||||
"houseplan-assets/guard-Dk7ygy6z.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-B3O-Y3rk.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-lwyMxFqY.js",
|
||||
"houseplan-assets/hp-zigbee-topology-overlay-f-40j--2.js",
|
||||
"houseplan-assets/iso-scene-render-C5A4O41t.js",
|
||||
"houseplan-assets/live-interaction-runtime-iZ4G2R9J.js",
|
||||
"houseplan-assets/pdf-export-Cg8R9f0g.js",
|
||||
"houseplan-assets/zigbee-topology-DjTDqsI9.js",
|
||||
"houseplan-assets/zigbee-topology-runtime-CEUb94-9.js"
|
||||
"houseplan-assets/backdrop-pick-CIhMrg6h.js",
|
||||
"houseplan-assets/de-DfGuBjvm.js",
|
||||
"houseplan-assets/editor-B5bM25yU.js",
|
||||
"houseplan-assets/fr-CGMIia7A.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-COMxSEvn.js",
|
||||
"houseplan-assets/guard-DkG_-pXI.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-C22BmdCl.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-1HFjNRDc.js",
|
||||
"houseplan-assets/hp-zigbee-topology-overlay-B1Y6Lsed.js",
|
||||
"houseplan-assets/iso-scene-render-DsNJJlLa.js",
|
||||
"houseplan-assets/live-interaction-runtime-CR9Bunvu.js",
|
||||
"houseplan-assets/pdf-export-Cx12fdwF.js",
|
||||
"houseplan-assets/zigbee-topology-ByUE5Pt1.js",
|
||||
"houseplan-assets/zigbee-topology-runtime-B0BH5SMM.js"
|
||||
],
|
||||
"lazyGzipBytes": 383241,
|
||||
"lazyGzipBytes": 383205,
|
||||
"lazyEditorFiles": [
|
||||
"houseplan-assets/backdrop-pick-B8uJVpYl.js",
|
||||
"houseplan-assets/editor-CJSkbmJl.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-CUlu3GpV.js",
|
||||
"houseplan-assets/guard-Dk7ygy6z.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-B3O-Y3rk.js",
|
||||
"houseplan-assets/zigbee-topology-DjTDqsI9.js"
|
||||
"houseplan-assets/backdrop-pick-CIhMrg6h.js",
|
||||
"houseplan-assets/editor-B5bM25yU.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-COMxSEvn.js",
|
||||
"houseplan-assets/guard-DkG_-pXI.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-C22BmdCl.js",
|
||||
"houseplan-assets/zigbee-topology-ByUE5Pt1.js"
|
||||
],
|
||||
"lazyEditorGzipBytes": 195231,
|
||||
"lazyEditorGzipBytes": 195222,
|
||||
"lazyOnboardingFiles": [
|
||||
"houseplan-assets/backdrop-pick-B8uJVpYl.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-lwyMxFqY.js"
|
||||
"houseplan-assets/backdrop-pick-CIhMrg6h.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-1HFjNRDc.js"
|
||||
],
|
||||
"lazyOnboardingGzipBytes": 14330,
|
||||
"lazyOnboardingGzipBytes": 14323,
|
||||
"lazyLocaleFiles": [
|
||||
"houseplan-assets/de-pA3tnOax.js",
|
||||
"houseplan-assets/fr-BjBWP2nl.js"
|
||||
"houseplan-assets/de-DfGuBjvm.js",
|
||||
"houseplan-assets/fr-CGMIia7A.js"
|
||||
],
|
||||
"lazyLocaleGzipBytes": 50249,
|
||||
"lazyLocaleGzipBytes": 50233,
|
||||
"lazyIsometricFiles": [
|
||||
"houseplan-assets/guard-Dk7ygy6z.js",
|
||||
"houseplan-assets/iso-scene-render-C5A4O41t.js"
|
||||
"houseplan-assets/guard-DkG_-pXI.js",
|
||||
"houseplan-assets/iso-scene-render-DsNJJlLa.js"
|
||||
],
|
||||
"lazyIsometricGzipBytes": 13455,
|
||||
"lazyIsometricGzipBytes": 13452,
|
||||
"lazyFurnitureArtFiles": [
|
||||
"houseplan-assets/furniture-plan-art.generated-CUlu3GpV.js"
|
||||
"houseplan-assets/furniture-plan-art.generated-COMxSEvn.js"
|
||||
],
|
||||
"lazyFurnitureArtGzipBytes": 10250,
|
||||
"lazyFurnitureArtGzipBytes": 10252,
|
||||
"lazyPdfFiles": [
|
||||
"houseplan-assets/furniture-plan-art.generated-CUlu3GpV.js",
|
||||
"houseplan-assets/pdf-export-Cg8R9f0g.js"
|
||||
"houseplan-assets/furniture-plan-art.generated-COMxSEvn.js",
|
||||
"houseplan-assets/pdf-export-Cx12fdwF.js"
|
||||
],
|
||||
"lazyPdfGzipBytes": 120330,
|
||||
"lazyPdfGzipBytes": 120332,
|
||||
"files": [
|
||||
{
|
||||
"path": "houseplan-assets/backdrop-pick-B8uJVpYl.js",
|
||||
"sha256": "2068520cc9eff1a9d016ff3d466d1fcc5bb92a81d738b81eebc2787552b9bfea",
|
||||
"path": "houseplan-assets/backdrop-pick-CIhMrg6h.js",
|
||||
"sha256": "78f523fca97745659b18db735b574f32e8f608e0e85edda47889c5789baa7ee0",
|
||||
"rawBytes": 21592,
|
||||
"gzipBytes": 7360,
|
||||
"gzipBytes": 7358,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js"
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/de-pA3tnOax.js",
|
||||
"sha256": "24f7756f5e74d37fb84570bdafe56c7038e4429a5e873efca18cefa098ac7f07",
|
||||
"path": "houseplan-assets/de-DfGuBjvm.js",
|
||||
"sha256": "72af7b6e8baffa5309e6c8bb39328b9935d6b7356d509fa56904f24c1030eb33",
|
||||
"rawBytes": 84250,
|
||||
"gzipBytes": 25378,
|
||||
"gzipBytes": 25370,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/editor-CJSkbmJl.js",
|
||||
"sha256": "d075ee42e36c88cd90da708c6f8f8870e18749b4e39f0409a0151d17a0e47308",
|
||||
"path": "houseplan-assets/editor-B5bM25yU.js",
|
||||
"sha256": "ae6c537571bc85f4c7f46546ab5a23e35f01baf18f911955102e78a1d649a6ea",
|
||||
"rawBytes": 3837,
|
||||
"gzipBytes": 1590,
|
||||
"gzipBytes": 1588,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js"
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/fr-BjBWP2nl.js",
|
||||
"sha256": "800d1cc7dc98f729dff9a8683dc7b5d4bdf890f901a0e1a953b047751e150694",
|
||||
"path": "houseplan-assets/fr-CGMIia7A.js",
|
||||
"sha256": "d5a189fa11bd0e764ff8721a4aa4f074941ca73c3472fa74bf583073fafb5a24",
|
||||
"rawBytes": 86269,
|
||||
"gzipBytes": 24871,
|
||||
"gzipBytes": 24863,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/furniture-plan-art.generated-CUlu3GpV.js",
|
||||
"sha256": "3fc4d19f8fb5320c9edc15079cbe62f031ba25f2c35cc10411028ccf90ff8da1",
|
||||
"path": "houseplan-assets/furniture-plan-art.generated-COMxSEvn.js",
|
||||
"sha256": "8420ab185f250af10f3361b67a8eca9fed66f7e962a689fc33469171149c88be",
|
||||
"rawBytes": 33655,
|
||||
"gzipBytes": 10250,
|
||||
"gzipBytes": 10252,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/guard-Dk7ygy6z.js",
|
||||
"sha256": "9a4f82565f03a902724d6d58b596becce76d82095233e7f125ee64e67445a0ee",
|
||||
"path": "houseplan-assets/guard-DkG_-pXI.js",
|
||||
"sha256": "868320ea9845071a5a7fc0c638ece7445d2efc498431f79194e2eac49f168bb0",
|
||||
"rawBytes": 518,
|
||||
"gzipBytes": 370,
|
||||
"gzipBytes": 368,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js"
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/houseplan-card-ZsbfBSl1.js",
|
||||
"sha256": "15f7c3dc17e2fbfb4a0c61ef15498da70d2d01ed9f2831bb08103fa5c3c0d13c",
|
||||
"path": "houseplan-assets/houseplan-card-qefTb7jv.js",
|
||||
"sha256": "8ba44847aaa94be3b44327431319dbb1541c9848ffa146d5564ac2cff1481fc6",
|
||||
"rawBytes": 1042320,
|
||||
"gzipBytes": 289130,
|
||||
"gzipBytes": 289121,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": [
|
||||
"houseplan-assets/de-pA3tnOax.js",
|
||||
"houseplan-assets/editor-CJSkbmJl.js",
|
||||
"houseplan-assets/fr-BjBWP2nl.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-CUlu3GpV.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-B3O-Y3rk.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-lwyMxFqY.js",
|
||||
"houseplan-assets/hp-zigbee-topology-overlay-f-40j--2.js",
|
||||
"houseplan-assets/iso-scene-render-C5A4O41t.js",
|
||||
"houseplan-assets/live-interaction-runtime-iZ4G2R9J.js",
|
||||
"houseplan-assets/pdf-export-Cg8R9f0g.js"
|
||||
"houseplan-assets/de-DfGuBjvm.js",
|
||||
"houseplan-assets/editor-B5bM25yU.js",
|
||||
"houseplan-assets/fr-CGMIia7A.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-COMxSEvn.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-C22BmdCl.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-1HFjNRDc.js",
|
||||
"houseplan-assets/hp-zigbee-topology-overlay-B1Y6Lsed.js",
|
||||
"houseplan-assets/iso-scene-render-DsNJJlLa.js",
|
||||
"houseplan-assets/live-interaction-runtime-CR9Bunvu.js",
|
||||
"houseplan-assets/pdf-export-Cx12fdwF.js"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/houseplan-editor-runtime-B3O-Y3rk.js",
|
||||
"sha256": "f203e37165f45f1c286d49937077cddeb3744f74e7b5fe0b78438cb88f0d72c2",
|
||||
"path": "houseplan-assets/houseplan-editor-runtime-C22BmdCl.js",
|
||||
"sha256": "eaf078111af87f18d6ec01fc72851deb8ff9e11f82c5b255236abe3ec26b90bc",
|
||||
"rawBytes": 631884,
|
||||
"gzipBytes": 168234,
|
||||
"gzipBytes": 168231,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/backdrop-pick-B8uJVpYl.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-CUlu3GpV.js",
|
||||
"houseplan-assets/guard-Dk7ygy6z.js",
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js",
|
||||
"houseplan-assets/zigbee-topology-DjTDqsI9.js"
|
||||
"houseplan-assets/backdrop-pick-CIhMrg6h.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-COMxSEvn.js",
|
||||
"houseplan-assets/guard-DkG_-pXI.js",
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js",
|
||||
"houseplan-assets/zigbee-topology-ByUE5Pt1.js"
|
||||
],
|
||||
"dynamicImports": [
|
||||
"houseplan-assets/zigbee-topology-runtime-CEUb94-9.js"
|
||||
"houseplan-assets/zigbee-topology-runtime-B0BH5SMM.js"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/houseplan-onboarding-runtime-lwyMxFqY.js",
|
||||
"sha256": "ce8ffc4f4fd388849286b785baae152f82c96dcfe71def236e392cd7a9c41a66",
|
||||
"path": "houseplan-assets/houseplan-onboarding-runtime-1HFjNRDc.js",
|
||||
"sha256": "11b2692248e91ecf0342a3b14e9e6a99d4ffb7a52c384769cd4c8447777c6c25",
|
||||
"rawBytes": 28071,
|
||||
"gzipBytes": 6970,
|
||||
"gzipBytes": 6965,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/backdrop-pick-B8uJVpYl.js",
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js"
|
||||
"houseplan-assets/backdrop-pick-CIhMrg6h.js",
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/hp-zigbee-topology-overlay-f-40j--2.js",
|
||||
"sha256": "c2f4e19a3e42a124b336d949d51a9c70c10560b36a66c700b59c7ba8e5be02a6",
|
||||
"path": "houseplan-assets/hp-zigbee-topology-overlay-B1Y6Lsed.js",
|
||||
"sha256": "548ce3c8814177c623e7ac7273f512b6215b3213ffb89e9ab4a720bfe6925032",
|
||||
"rawBytes": 11034,
|
||||
"gzipBytes": 3732,
|
||||
"gzipBytes": 3731,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js",
|
||||
"houseplan-assets/zigbee-topology-DjTDqsI9.js",
|
||||
"houseplan-assets/zigbee-topology-runtime-CEUb94-9.js"
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js",
|
||||
"houseplan-assets/zigbee-topology-ByUE5Pt1.js",
|
||||
"houseplan-assets/zigbee-topology-runtime-B0BH5SMM.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/iso-scene-render-C5A4O41t.js",
|
||||
"sha256": "d8feaf167a8a23a407336c75e1dc55b24bf0e6538001f7556ec83df2fd0fe2f5",
|
||||
"path": "houseplan-assets/iso-scene-render-DsNJJlLa.js",
|
||||
"sha256": "4e4d4774861f650986775ad0b24ebb6a9729ab1d82fa5d3415a91f082b85288a",
|
||||
"rawBytes": 38562,
|
||||
"gzipBytes": 13085,
|
||||
"gzipBytes": 13084,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/guard-Dk7ygy6z.js",
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js"
|
||||
"houseplan-assets/guard-DkG_-pXI.js",
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/live-interaction-runtime-iZ4G2R9J.js",
|
||||
"sha256": "6983fe8ce1e011f26b2c35d28199d111ef460e53c8617e37a99cf70d687c9495",
|
||||
"path": "houseplan-assets/live-interaction-runtime-CR9Bunvu.js",
|
||||
"sha256": "ca247a90ffa8cfa860cf9f6818af69344d11b0a82da8afe7ab70e6d1a5584f5f",
|
||||
"rawBytes": 5196,
|
||||
"gzipBytes": 2129,
|
||||
"gzipBytes": 2127,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js"
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/pdf-export-Cg8R9f0g.js",
|
||||
"sha256": "12dfd49e241e1d2e05848601c0afe258edf244c41b34bdd7a8eb2640fdc8a784",
|
||||
"path": "houseplan-assets/pdf-export-Cx12fdwF.js",
|
||||
"sha256": "9ac6bde0f29d864d7357a1a34de5e4c91f150db40bbd48cc7a68e23a17a1e6c1",
|
||||
"rawBytes": 237163,
|
||||
"gzipBytes": 110080,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/furniture-plan-art.generated-CUlu3GpV.js",
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js"
|
||||
"houseplan-assets/furniture-plan-art.generated-COMxSEvn.js",
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/zigbee-topology-DjTDqsI9.js",
|
||||
"sha256": "a4cc005467f8000796a9ebcd8eaa1c181059ee501edb49c92ed093f2ce3868f9",
|
||||
"path": "houseplan-assets/zigbee-topology-ByUE5Pt1.js",
|
||||
"sha256": "a8ade99a9993a0a3a275bc3e4219bd73eb48700ea7cdf50aa1a8a835d5d6e38c",
|
||||
"rawBytes": 18961,
|
||||
"gzipBytes": 7427,
|
||||
"gzipBytes": 7425,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js"
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/zigbee-topology-runtime-CEUb94-9.js",
|
||||
"sha256": "b48d6eaa60ee40fb8e48782194d4e9ddffea2e206cb5d8b920427a2fd38e5cd3",
|
||||
"path": "houseplan-assets/zigbee-topology-runtime-B0BH5SMM.js",
|
||||
"sha256": "b6ecb6b77abe75667845b690e3ad2d8a955a8af7bed00962ed59b162b972c7b4",
|
||||
"rawBytes": 3941,
|
||||
"gzipBytes": 1765,
|
||||
"gzipBytes": 1763,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js",
|
||||
"houseplan-assets/zigbee-topology-DjTDqsI9.js"
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js",
|
||||
"houseplan-assets/zigbee-topology-ByUE5Pt1.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-card.js",
|
||||
"sha256": "ba995a027242c56f3033f47778a21f24cab36ef8cc0809658c6a2479619ebfd3",
|
||||
"sha256": "4e524e0bafece333e3520d1ed027371c36e6f25d3496c5b956a9be36a52234ae",
|
||||
"rawBytes": 1205,
|
||||
"gzipBytes": 804,
|
||||
"gzipBytes": 802,
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js"
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-panel.js",
|
||||
"sha256": "7593c0dc42ba3a4c49b40995d91b63f348320d8b2094318601f51a6f03fb61cb",
|
||||
"rawBytes": 5119,
|
||||
"gzipBytes": 1930,
|
||||
"sha256": "ced7893f5096ad6dd13f659faaa3678aed17495ed16525db3f47323db86d2408",
|
||||
"rawBytes": 5337,
|
||||
"gzipBytes": 1956,
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"houseplan-card.js"
|
||||
|
||||
+7
-7
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,4 +1,4 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="3555cb7791d3391b320376d4bcba14d217a5718d018ca955eb741df1762804b5";import{t as e,l as o,x as t,dX as s,A as a,dY as i,dZ as l,d_ as n,dM as r,b as c}from"./houseplan-card-ZsbfBSl1.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")},_=this._schema,f=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__="8e7650990368dac8b2651e684ac8ae9c578ba2a166396aa678bc3bf1ad9519ea";import{t as e,l as o,x as t,dX as s,A as a,dY as i,dZ as l,d_ as n,dM as r,b as c}from"./houseplan-card-qefTb7jv.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")},_=this._schema,f=function(e,o,t){if(!t||null===o)return null;const s="string"==typeof e?.default_floor?e.default_floor:"";return!s||o.some(e=>e.value===s)?null:s}(this._config,this._spaces,this._spacesAuthoritative),d=e=>c`<ha-form
|
||||
.hass=${this.hass}
|
||||
.data=${this._formData}
|
||||
.schema=${e}
|
||||
+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 +0,0 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="3555cb7791d3391b320376d4bcba14d217a5718d018ca955eb741df1762804b5";import{dK as r,dL as t,dM as s}from"./houseplan-card-ZsbfBSl1.js";const e={},a=r(class extends t{constructor(){super(...arguments),this.ot=e}render(r,t){return t()}update(r,[t,e]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every((r,t)=>r===this.ot[t]))return s}else if(this.ot===t)return s;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,e)}});export{a as i};
|
||||
@@ -0,0 +1 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="8e7650990368dac8b2651e684ac8ae9c578ba2a166396aa678bc3bf1ad9519ea";import{dK as r,dL as t,dM as a}from"./houseplan-card-qefTb7jv.js";const e={},s=r(class extends t{constructor(){super(...arguments),this.ot=e}render(r,t){return t()}update(r,[t,e]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every((r,t)=>r===this.ot[t]))return a}else if(this.ot===t)return a;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,e)}});export{s as i};
|
||||
+6
-6
File diff suppressed because one or more lines are too long
+3
-3
File diff suppressed because one or more lines are too long
+28
-28
File diff suppressed because one or more lines are too long
+2
-2
File diff suppressed because one or more lines are too long
+8
-8
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
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="3555cb7791d3391b320376d4bcba14d217a5718d018ca955eb741df1762804b5";import{n as t,b as n}from"./zigbee-topology-DjTDqsI9.js";import{F as e}from"./houseplan-card-ZsbfBSl1.js";const o=new WeakMap;function i(t){const n=function(t){const n=t?.connection||t;return!n||"object"!=typeof n&&"function"!=typeof n?null:n}(t);if(!n)return null;let e=o.get(n);return e||(e={revision:0,topologies:[],states:{},listeners:new Set,inflight:new Map},o.set(n,e)),e}function r(t,n,e){t.states={...t.states,[n]:e},function(t){t.revision++;for(const n of t.listeners)n()}(t)}function s(t){const n=t?.code;if("permission"===n||"unsupported"===n||"timeout"===n||"invalid_topic"===n||"invalid_payload"===n)return n;const e=String(t?.message||"").toLowerCase();return e.includes("unauthor")||e.includes("permission")?"permission":e.includes("unknown_command")||e.includes("not found")?"unsupported":"provider"}function a(t){return Object.assign(new Error(t),{code:t})}function c(t,n,e){const o=t.inflight.get(n);if(o)return o;r(t,n,{phase:"loading"});const i=e().then(n=>{if(!n.nodes.length&&n.warnings.some(t=>"invalid_payload"===t.code))throw a("invalid_payload");!function(t,n){t.topologies=[...t.topologies.filter(t=>!(t.provider===n.provider&&t.instanceId===n.instanceId)),n],r(t,"zha"===n.provider?"zha":`z2m:${n.instanceId}`,{phase:"ready",obtainedAt:n.obtainedAt,partial:n.warnings.length>0})}(t,n)}).catch(e=>{r(t,n,{phase:"error",error:s(e)})}).finally(()=>t.inflight.delete(n));return t.inflight.set(n,i),i}function l(t){const n=i(t);return n?{revision:n.revision,topologies:n.topologies,states:n.states}:{revision:0,topologies:[],states:{}}}function u(t,n){const e=i(t);return e?(e.listeners.add(n),()=>e.listeners.delete(n)):()=>{}}function p(t){if(!0!==t?.user?.is_admin)throw a("permission")}function f(n){const e=i(n);return e?c(e,"zha",async()=>{if(p(n),"function"!=typeof n?.callWS)throw a("unsupported");return t(await n.callWS({type:"zha/devices"}))}):Promise.resolve()}function d(t){return null!==t&&"object"==typeof t?t:null}function h(t){const n=d(t),e=n?.payload??t;if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}}async function m(t,n){let e;try{return await Promise.race([t,new Promise((t,o)=>{e=globalThis.setTimeout(()=>o(a("timeout")),Math.max(1,n))})])}finally{void 0!==e&&globalThis.clearTimeout(e)}}function g(t,o,r=15e4){const s=i(t);if(!s)return Promise.resolve();const l=e(o);return c(s,`z2m:${l||String(o)}`,async()=>{if(p(t),!l)throw a("invalid_topic");const e=t.connection,o=e?.subscribeMessage;if("function"!=typeof o||"function"!=typeof t?.callService)throw a("unsupported");const i=function(){const t=globalThis.crypto;return"function"==typeof t?.randomUUID?`houseplan-${t.randomUUID()}`:`houseplan-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}(),s=Date.now()+Math.max(1,r);let c=!1,u=null,f=null,g=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{f=t,g=n}),b=[];try{const r=await o.call(e,t=>{!0===d(t)?.retain&&h(t)&&u?.()},{type:"mqtt/subscribe",topic:`${l}/bridge/info`});"function"==typeof r&&b.push(r);const p=await o.call(e,t=>{if(!0===d(t)?.retain)return;const n=h(t);null!==n?n&&function(t){const n=d(t),e=n?.transaction??d(n?.data)?.transaction;return"string"==typeof e||"number"==typeof e?String(e):null}(n)===i&&f?.(n):c&&g?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof p&&b.push(p),await m(y,Math.min(4e3,Math.max(1,s-Date.now()))),c=!0,await t.callService("mqtt","publish",{topic:`${l}/bridge/request/networkmap`,payload:JSON.stringify({type:"raw",routes:!1,transaction:i}),qos:0,retain:!1});const v=await m(w,s-Date.now()),_=d(v)?.status;if(_&&"ok"!==_)throw a("provider");return n(v,l)}finally{for(const t of b)try{t()}catch{}}})}export{f as readZhaTopology,g as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot};
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="8e7650990368dac8b2651e684ac8ae9c578ba2a166396aa678bc3bf1ad9519ea";import{n as t,b as n}from"./zigbee-topology-ByUE5Pt1.js";import{F as e}from"./houseplan-card-qefTb7jv.js";const o=new WeakMap;function i(t){const n=function(t){const n=t?.connection||t;return!n||"object"!=typeof n&&"function"!=typeof n?null:n}(t);if(!n)return null;let e=o.get(n);return e||(e={revision:0,topologies:[],states:{},listeners:new Set,inflight:new Map},o.set(n,e)),e}function r(t,n,e){t.states={...t.states,[n]:e},function(t){t.revision++;for(const n of t.listeners)n()}(t)}function s(t){const n=t?.code;if("permission"===n||"unsupported"===n||"timeout"===n||"invalid_topic"===n||"invalid_payload"===n)return n;const e=String(t?.message||"").toLowerCase();return e.includes("unauthor")||e.includes("permission")?"permission":e.includes("unknown_command")||e.includes("not found")?"unsupported":"provider"}function a(t){return Object.assign(new Error(t),{code:t})}function c(t,n,e){const o=t.inflight.get(n);if(o)return o;r(t,n,{phase:"loading"});const i=e().then(n=>{if(!n.nodes.length&&n.warnings.some(t=>"invalid_payload"===t.code))throw a("invalid_payload");!function(t,n){t.topologies=[...t.topologies.filter(t=>!(t.provider===n.provider&&t.instanceId===n.instanceId)),n],r(t,"zha"===n.provider?"zha":`z2m:${n.instanceId}`,{phase:"ready",obtainedAt:n.obtainedAt,partial:n.warnings.length>0})}(t,n)}).catch(e=>{r(t,n,{phase:"error",error:s(e)})}).finally(()=>t.inflight.delete(n));return t.inflight.set(n,i),i}function l(t){const n=i(t);return n?{revision:n.revision,topologies:n.topologies,states:n.states}:{revision:0,topologies:[],states:{}}}function u(t,n){const e=i(t);return e?(e.listeners.add(n),()=>e.listeners.delete(n)):()=>{}}function p(t){if(!0!==t?.user?.is_admin)throw a("permission")}function f(n){const e=i(n);return e?c(e,"zha",async()=>{if(p(n),"function"!=typeof n?.callWS)throw a("unsupported");return t(await n.callWS({type:"zha/devices"}))}):Promise.resolve()}function d(t){return null!==t&&"object"==typeof t?t:null}function h(t){const n=d(t),e=n?.payload??t;if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}}async function m(t,n){let e;try{return await Promise.race([t,new Promise((t,o)=>{e=globalThis.setTimeout(()=>o(a("timeout")),Math.max(1,n))})])}finally{void 0!==e&&globalThis.clearTimeout(e)}}function g(t,o,r=15e4){const s=i(t);if(!s)return Promise.resolve();const l=e(o);return c(s,`z2m:${l||String(o)}`,async()=>{if(p(t),!l)throw a("invalid_topic");const e=t.connection,o=e?.subscribeMessage;if("function"!=typeof o||"function"!=typeof t?.callService)throw a("unsupported");const i=function(){const t=globalThis.crypto;return"function"==typeof t?.randomUUID?`houseplan-${t.randomUUID()}`:`houseplan-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}(),s=Date.now()+Math.max(1,r);let c=!1,u=null,f=null,g=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{f=t,g=n}),b=[];try{const r=await o.call(e,t=>{!0===d(t)?.retain&&h(t)&&u?.()},{type:"mqtt/subscribe",topic:`${l}/bridge/info`});"function"==typeof r&&b.push(r);const p=await o.call(e,t=>{if(!0===d(t)?.retain)return;const n=h(t);null!==n?n&&function(t){const n=d(t),e=n?.transaction??d(n?.data)?.transaction;return"string"==typeof e||"number"==typeof e?String(e):null}(n)===i&&f?.(n):c&&g?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof p&&b.push(p),await m(y,Math.min(4e3,Math.max(1,s-Date.now()))),c=!0,await t.callService("mqtt","publish",{topic:`${l}/bridge/request/networkmap`,payload:JSON.stringify({type:"raw",routes:!1,transaction:i}),qos:0,retain:!1});const v=await m(w,s-Date.now()),_=d(v)?.status;if(_&&"ok"!==_)throw a("provider");return n(v,l)}finally{for(const t of b)try{t()}catch{}}})}export{f as readZhaTopology,g as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot};
|
||||
@@ -1 +1 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="3555cb7791d3391b320376d4bcba14d217a5718d018ca955eb741df1762804b5";try{await import("./houseplan-assets/houseplan-card-ZsbfBSl1.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__="8e7650990368dac8b2651e684ac8ae9c578ba2a166396aa678bc3bf1ad9519ea";try{await import("./houseplan-assets/houseplan-card-qefTb7jv.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
+8
-1
@@ -129,6 +129,8 @@ async function launchInternal(
|
||||
contextOptions = {},
|
||||
serveRoot = ROOT,
|
||||
repoRoot = REPO_ROOT,
|
||||
entry = '/demo.html',
|
||||
waitForCard = true,
|
||||
) {
|
||||
const browser = await chromium.launch({ args: ['--no-sandbox', ...browserArgs] });
|
||||
const page = await (await browser.newContext({
|
||||
@@ -147,8 +149,9 @@ async function launchInternal(
|
||||
? r.fulfill({ status: 200, headers: { 'content-type': CT[p.slice(p.lastIndexOf('.'))] || 'application/octet-stream' }, body: readFileSync(f) })
|
||||
: r.fulfill({ status: 404, body: 'nf' });
|
||||
});
|
||||
await page.goto('http://demo.local/demo.html', { waitUntil: 'domcontentloaded' });
|
||||
await page.goto(`http://demo.local${entry}`, { waitUntil: 'domcontentloaded' });
|
||||
await installHarnessIsoRuntimeHelper(page);
|
||||
if (!waitForCard) return { page, browser };
|
||||
await page.waitForFunction(() => window.__card?._model?.length > 0, { timeout: 9000 });
|
||||
// Свежесть бандла проверяется здесь, а не в каждом смоке (#236). Смок читает
|
||||
// demo/srv/assets/houseplan-card.js; если туда не скопирован свежий dist,
|
||||
@@ -180,3 +183,7 @@ async function launchInternal(
|
||||
|
||||
export const launch = (...args) => launchInternal(true, ...args);
|
||||
export const launchColdView = (...args) => launchInternal(false, ...args);
|
||||
/** A true cold panel document: fixture APIs exist, but neither frontend entry is loaded. */
|
||||
export const launchPanelCold = (viewport = { width: 1280, height: 800 }) => launchInternal(
|
||||
false, viewport, 1, [], {}, ROOT, REPO_ROOT, '/demo.html?panel-cold=1', false,
|
||||
);
|
||||
|
||||
+161
-23
@@ -1,7 +1,12 @@
|
||||
// #486: the custom sidebar panel is a thin, stable host around the existing card.
|
||||
import { launchColdView, checkAll, finish } from './serve.mjs';
|
||||
import { launchPanelCold, checkAll, finish } from './serve.mjs';
|
||||
import { assertFreshDemoBundleUnlessAllowed } from './bundle-freshness.mjs';
|
||||
|
||||
const { page, browser } = await launchColdView({ width: 1280, height: 800 });
|
||||
const { page, browser } = await launchPanelCold({ width: 1280, height: 800 });
|
||||
const coldBefore = await page.evaluate(() => ({
|
||||
coldStartsWithoutPanelDefinition: !customElements.get('houseplan-panel'),
|
||||
coldStartsWithoutCardDefinition: !customElements.get('houseplan-card'),
|
||||
}));
|
||||
const result = await page.evaluate(async () => {
|
||||
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
||||
const frame = () => new Promise((resolve) => requestAnimationFrame(resolve));
|
||||
@@ -18,7 +23,13 @@ const result = await page.evaluate(async () => {
|
||||
await import('/assets/houseplan-panel.js');
|
||||
await customElements.whenDefined('houseplan-panel');
|
||||
const Card = customElements.get('houseplan-card');
|
||||
window.__card.remove();
|
||||
const originalSetConfig = Card.prototype.setConfig;
|
||||
const panelSetConfigCalls = new WeakMap();
|
||||
Card.prototype.setConfig = function setConfig(config) {
|
||||
if (this.panelHost) panelSetConfigCalls.set(this, (panelSetConfigCalls.get(this) || 0) + 1);
|
||||
return originalSetConfig.call(this, config);
|
||||
};
|
||||
window.__hpPanelSetConfigCalls = (card) => panelSetConfigCalls.get(card) || 0;
|
||||
Card._warmBootReset?.();
|
||||
for (const key of Object.keys(localStorage)) {
|
||||
if (key.startsWith('houseplan_card_')) localStorage.removeItem(key);
|
||||
@@ -60,7 +71,16 @@ const result = await page.evaluate(async () => {
|
||||
await emptyCard.updateComplete;
|
||||
const emptyRoot = emptyCard.shadowRoot || emptyCard.renderRoot;
|
||||
const emptyText = emptyRoot.querySelector('.empty')?.textContent || '';
|
||||
const coldFrontendResources = performance.getEntriesByType('resource')
|
||||
.map((entry) => new URL(entry.name).pathname)
|
||||
.filter((path) => path.includes('/assets/houseplan-'));
|
||||
const readOnlyResult = {
|
||||
coldPanelEntryLoadsFirst: coldFrontendResources[0] === '/assets/houseplan-panel.js',
|
||||
coldPanelDefinesCardThroughItsOwnGraph: !!customElements.get('houseplan-card'),
|
||||
coldReadOnlyKeepsEditorAndOnboardingLazy: !coldFrontendResources.some(
|
||||
(path) => /houseplan-(?:editor|onboarding)-runtime/.test(path),
|
||||
),
|
||||
readOnlyConfiguresChildOnce: window.__hpPanelSetConfigCalls(emptyCard) === 1,
|
||||
readOnlyHasNoCreateAction: !emptyRoot.querySelector('.empty button'),
|
||||
readOnlyExplainsRestriction: emptyText.includes('administrator'),
|
||||
readOnlyDoesNotOpenDialog: !emptyCard._spaceDialog && !emptyCard._importDialog,
|
||||
@@ -69,16 +89,61 @@ const result = await page.evaluate(async () => {
|
||||
emptyPanel.remove();
|
||||
await frame();
|
||||
|
||||
// Server write capability, not HA administrator status, owns onboarding.
|
||||
// Use an empty non-admin writer and prove one lazy dialog/runtime only.
|
||||
const emptyWriterHass = {
|
||||
...emptyHass,
|
||||
floors: {},
|
||||
user: { id: 'writer', name: 'Writer', is_admin: false },
|
||||
callWS: async (message) => {
|
||||
if (message.type === 'houseplan/config/get') {
|
||||
return { config: { spaces: [], markers: [], settings: {} }, rev: 1, can_write: true };
|
||||
}
|
||||
return emptyHass.callWS(message);
|
||||
},
|
||||
};
|
||||
const writerPanel = document.createElement('houseplan-panel');
|
||||
writerPanel.route = { path: '/houseplan' };
|
||||
host.replaceChildren(writerPanel);
|
||||
writerPanel.hass = emptyWriterHass;
|
||||
const writerCard = await waitFor(
|
||||
() => writerPanel.shadowRoot?.querySelector('houseplan-card'), 'writer empty child',
|
||||
);
|
||||
await waitFor(
|
||||
() => writerCard._loadOk && writerCard._serverCanWrite === true
|
||||
&& writerCard._onboardingRuntime && writerCard._spaceDialog,
|
||||
'writer onboarding',
|
||||
);
|
||||
await writerCard.updateComplete;
|
||||
const writerRoot = writerCard.shadowRoot || writerCard.renderRoot;
|
||||
writerPanel.hass = { ...emptyWriterHass, themes: { darkMode: true } };
|
||||
await writerCard.updateComplete;
|
||||
const onboardingImports = performance.getEntriesByType('resource')
|
||||
.map((entry) => new URL(entry.name).pathname)
|
||||
.filter((path) => path.includes('houseplan-onboarding-runtime')).length;
|
||||
const writerResult = {
|
||||
emptyNonAdminWriterCanCreate: !!writerRoot.querySelector('.empty button'),
|
||||
emptyWriterOpensOneOnboarding: writerRoot.querySelectorAll('hp-dialog').length === 1,
|
||||
emptyWriterLoadsOnboardingOnce: onboardingImports === 1,
|
||||
emptyWriterConfiguresChildOnce: window.__hpPanelSetConfigCalls(writerCard) === 1,
|
||||
};
|
||||
writerPanel.remove();
|
||||
await frame();
|
||||
|
||||
Card._warmBootReset?.();
|
||||
for (const key of Object.keys(localStorage)) {
|
||||
if (key.startsWith('houseplan_card_')) localStorage.removeItem(key);
|
||||
}
|
||||
localStorage.setItem('houseplan_card_nav_v1', JSON.stringify({ space: 'missing-space' }));
|
||||
const panel = document.createElement('houseplan-panel');
|
||||
panel.narrow = false;
|
||||
panel.route = { path: '/houseplan' };
|
||||
panel.panel = { component_name: 'houseplan-panel' };
|
||||
host.append(panel);
|
||||
const baseHass = window.__mkHass();
|
||||
const baseHass = {
|
||||
...window.__mkHass(),
|
||||
user: { id: 'writer', name: 'Writer', is_admin: false },
|
||||
};
|
||||
panel.hass = baseHass;
|
||||
const card = await waitFor(() => panel.shadowRoot?.querySelector('houseplan-card'), 'populated child');
|
||||
await waitFor(() => card._loadOk && card._model?.length && card._booting === false, 'populated view');
|
||||
@@ -91,6 +156,7 @@ const result = await page.evaluate(async () => {
|
||||
const updatedHass = { ...baseHass, themes: { ...(baseHass.themes || {}), darkMode: true } };
|
||||
panel.hass = updatedHass;
|
||||
panel.narrow = true;
|
||||
panel.narrow = false;
|
||||
panel.route = { path: '/houseplan', prefix: '/houseplan' };
|
||||
panel.panel = { component_name: 'houseplan-panel', config: { ignored: true } };
|
||||
await card.updateComplete;
|
||||
@@ -109,9 +175,15 @@ const result = await page.evaluate(async () => {
|
||||
const headerRect = cardRoot.querySelector('.hdr').getBoundingClientRect();
|
||||
const viewStageRect = cardRoot.querySelector('.stage').getBoundingClientRect();
|
||||
const viewSpace = card._space;
|
||||
const viewBox = card._view;
|
||||
const fitEnvelope = card._baseVb();
|
||||
const layoutResult = {
|
||||
exactlyOneChild: shellRoot.querySelectorAll('houseplan-card').length === 1,
|
||||
propertiesDoNotRemount: shellRoot.querySelector('houseplan-card') === childBefore,
|
||||
populatedNonAdminWriterHasEditors: !!cardRoot.querySelector('[data-editor-navigation="plan"]'),
|
||||
missingLastSpaceFallsBackDeterministically: card._space !== 'missing-space'
|
||||
&& card._model.some((space) => space.id === card._space),
|
||||
populatedWriterConfiguresChildOnce: window.__hpPanelSetConfigCalls(card) === 1,
|
||||
hassForwarded: card.hass === updatedHass,
|
||||
panelHostWithoutKiosk: card.panelHost === true && card._config?.kiosk !== true,
|
||||
noDuplicateProductTitle: !cardRoot.querySelector('.head > .title')
|
||||
@@ -121,35 +193,46 @@ const result = await page.evaluate(async () => {
|
||||
menuContract: menuEvents === 1 && menuDetail?.bubbles === true && menuDetail?.composed === true,
|
||||
menuAccessible: shellRoot.querySelector('.menu').getAttribute('aria-label') === 'Menu'
|
||||
&& shellRoot.querySelector('.menu').getBoundingClientRect().width >= 44,
|
||||
appbarKeepsHeaderAndToolbarSemantics: shellRoot.querySelector('.appbar')?.tagName === 'HEADER'
|
||||
&& !shellRoot.querySelector('.appbar').hasAttribute('role')
|
||||
&& shellRoot.querySelector('.toolbar')?.getAttribute('role') === 'toolbar',
|
||||
noHorizontalOverflow: panel.scrollWidth - panel.clientWidth <= 1
|
||||
&& shellRoot.querySelector('.page').scrollWidth - shellRoot.querySelector('.page').clientWidth <= 1,
|
||||
cardOwnsContentSlot: Math.abs(cardRect.height - contentRect.height) <= 1
|
||||
&& Math.abs(haCardRect.height - contentRect.height) <= 1,
|
||||
viewStageUsesRemainingHeight: viewStageRect.height > 0
|
||||
&& Math.abs(viewStageRect.height + headerRect.height - contentRect.height) <= 1,
|
||||
fitEnvelopeIsInsideOpeningView: !!viewBox
|
||||
&& fitEnvelope[0] >= viewBox.x - 0.01
|
||||
&& fitEnvelope[1] >= viewBox.y - 0.01
|
||||
&& fitEnvelope[0] + fitEnvelope[2] <= viewBox.x + viewBox.w + 0.01
|
||||
&& fitEnvelope[1] + fitEnvelope[3] <= viewBox.y + viewBox.h + 0.01,
|
||||
sectionsDefaultIsFull: JSON.stringify(card.getGridOptions()) === JSON.stringify({ columns: 'full' })
|
||||
&& card.getCardSize() === 12,
|
||||
};
|
||||
|
||||
const runtimeReady = await card._ensureEditorRuntime();
|
||||
await card._requestMode('plan', false);
|
||||
await card.updateComplete;
|
||||
await frame();
|
||||
await frame();
|
||||
cardRoot.querySelector('[data-editor-navigation="plan"]').click();
|
||||
await waitFor(() => card._mode === 'plan' && !card._modeTransitionBusy, 'animated editor enter');
|
||||
await card.updateComplete; await frame(); await frame();
|
||||
const editorStage = cardRoot.querySelector('.stage').getBoundingClientRect();
|
||||
const editorHeader = cardRoot.querySelector('.hdr').getBoundingClientRect();
|
||||
cardRoot.querySelector('[data-editor-navigation="view"]').click();
|
||||
await waitFor(() => card._mode === 'view' && !card._modeTransitionBusy, 'animated editor exit');
|
||||
await card.updateComplete; await frame(); await frame();
|
||||
const returnedViewStage = cardRoot.querySelector('.stage').getBoundingClientRect();
|
||||
cardRoot.querySelector('[data-editor-navigation="plan"]').click();
|
||||
await waitFor(() => card._mode === 'plan' && !card._modeTransitionBusy, 'second editor enter');
|
||||
const editorResult = {
|
||||
editorRuntimeLoads: runtimeReady && card._mode === 'plan',
|
||||
editorRuntimeLoads: runtimeReady && !!card._editorRuntime,
|
||||
editorKeepsPositiveStableStage: editorStage.width > 0 && editorStage.height > 0,
|
||||
editorStillFillsContent: Math.abs(editorStage.height + editorHeader.height - contentRect.height) <= 1,
|
||||
editorSwapReturnsToPositiveView: returnedViewStage.width > 0 && returnedViewStage.height > 0,
|
||||
};
|
||||
|
||||
history.pushState(null, '', '/config/dashboard');
|
||||
window.dispatchEvent(new Event('location-changed'));
|
||||
await card.updateComplete;
|
||||
history.pushState(null, '', '/houseplan');
|
||||
window.dispatchEvent(new Event('location-changed'));
|
||||
await card.updateComplete;
|
||||
await waitFor(() => card._mode === 'view', 'route departure reset');
|
||||
const routeResult = {
|
||||
routeDepartureReturnsToView: card._mode === 'view',
|
||||
routeDepartureKeepsSpace: card._space === viewSpace,
|
||||
@@ -157,24 +240,57 @@ const result = await page.evaluate(async () => {
|
||||
|
||||
panel.remove();
|
||||
await frame();
|
||||
host.append(panel);
|
||||
await card.updateComplete;
|
||||
const reconnectResult = {
|
||||
reconnectKeepsSingleChild: panel.shadowRoot.querySelectorAll('houseplan-card').length === 1,
|
||||
reconnectKeepsChildIdentity: panel.shadowRoot.querySelector('houseplan-card') === childBefore,
|
||||
history.pushState(null, '', '/houseplan');
|
||||
const returnPanel = document.createElement('houseplan-panel');
|
||||
returnPanel.narrow = false;
|
||||
returnPanel.route = { path: '/houseplan' };
|
||||
returnPanel.panel = { component_name: 'houseplan-panel' };
|
||||
host.replaceChildren(returnPanel);
|
||||
returnPanel.hass = updatedHass;
|
||||
const returnCard = await waitFor(
|
||||
() => returnPanel.shadowRoot?.querySelector('houseplan-card'), 'route return child',
|
||||
);
|
||||
await waitFor(
|
||||
() => returnCard._loadOk && returnCard._model?.length && returnCard._booting === false,
|
||||
'route return view',
|
||||
);
|
||||
await waitFor(() => returnCard._devices?.length, 'route return devices');
|
||||
await returnCard.updateComplete;
|
||||
const returnResult = {
|
||||
routeReturnCreatesFreshPanelCard: returnCard !== childBefore,
|
||||
routeReturnRestoresSpaceInView: returnCard._space === viewSpace && returnCard._mode === 'view',
|
||||
routeReturnConfiguresFreshChildOnce: window.__hpPanelSetConfigCalls(returnCard) === 1,
|
||||
};
|
||||
|
||||
window.__hpPanel = panel;
|
||||
window.__hpPanelCard = card;
|
||||
returnPanel.remove();
|
||||
await frame();
|
||||
host.append(returnPanel);
|
||||
await returnCard.updateComplete;
|
||||
await frame();
|
||||
await waitFor(
|
||||
() => returnCard.renderRoot.querySelector('[data-hp="device"][data-id="d_temp"][tabindex="0"]'),
|
||||
'route return stage interactive',
|
||||
);
|
||||
const reconnectResult = {
|
||||
reconnectKeepsSingleChild: returnPanel.shadowRoot.querySelectorAll('houseplan-card').length === 1,
|
||||
reconnectKeepsChildIdentity: returnPanel.shadowRoot.querySelector('houseplan-card') === returnCard,
|
||||
reconnectDoesNotRepeatSetConfig: window.__hpPanelSetConfigCalls(returnCard) === 1,
|
||||
};
|
||||
|
||||
window.__hpPanel = returnPanel;
|
||||
window.__hpPanelCard = returnCard;
|
||||
|
||||
return {
|
||||
...readOnlyResult,
|
||||
...writerResult,
|
||||
...layoutResult,
|
||||
...editorResult,
|
||||
...routeResult,
|
||||
...returnResult,
|
||||
...reconnectResult,
|
||||
};
|
||||
});
|
||||
await assertFreshDemoBundleUnlessAllowed(page);
|
||||
|
||||
// The panel contract is about real user activation, not HTMLElement.click().
|
||||
// Exercise both pointer and keyboard paths through the open shadow root.
|
||||
@@ -191,21 +307,40 @@ await page.evaluate(() => {
|
||||
composed: event.composed,
|
||||
});
|
||||
});
|
||||
const card = window.__hpPanelCard;
|
||||
const stageInteractive = card.renderRoot.querySelector(
|
||||
'.stage [data-hp="device"][data-id="d_temp"][tabindex="0"]',
|
||||
);
|
||||
window.__hpStageInteractive = stageInteractive;
|
||||
window.__hpStageEvidence = { moreInfo: 0 };
|
||||
panel.addEventListener('hass-more-info', () => { window.__hpStageEvidence.moreInfo += 1; });
|
||||
});
|
||||
const wideMenu = page.locator('houseplan-panel').locator('.menu');
|
||||
await wideMenu.click();
|
||||
await wideMenu.focus();
|
||||
await page.keyboard.press('Enter');
|
||||
await page.evaluate(() => window.__hpStageInteractive?.focus());
|
||||
const stageFocused = await page.evaluate(() => (
|
||||
window.__hpPanelCard.renderRoot.activeElement === window.__hpStageInteractive
|
||||
));
|
||||
await page.keyboard.press('Enter');
|
||||
const wideUserActivation = await page.evaluate(() => ({
|
||||
realSources: window.__hpPanelMenuEvidence.sources.every(Boolean),
|
||||
eventCount: window.__hpPanelMenuEvidence.events.length,
|
||||
validEvents: window.__hpPanelMenuEvidence.events.every(
|
||||
(event) => event.bubbles && event.composed,
|
||||
),
|
||||
retainedStageInteractive: !!window.__hpPanelCard.renderRoot.querySelector(
|
||||
'.stage [tabindex="0"], .stage button:not([disabled]), .stage [role="button"]',
|
||||
retainedStageInteractiveFocuses: !!window.__hpStageInteractive,
|
||||
retainedStageInteractiveActivates: !!window.__hpStageInteractive
|
||||
&& (window.__hpPanelCard._infoCard?.id === window.__hpStageInteractive.dataset.id
|
||||
|| window.__hpStageEvidence.moreInfo === 1),
|
||||
retainedStageInteractiveNamed: !!(
|
||||
window.__hpStageInteractive?.getAttribute('aria-label')
|
||||
|| window.__hpStageInteractive?.getAttribute('title')
|
||||
|| window.__hpStageInteractive?.textContent?.trim()
|
||||
),
|
||||
}));
|
||||
wideUserActivation.retainedStageInteractiveFocuses &&= stageFocused;
|
||||
|
||||
// A real viewport resize must settle without a feedback loop or a page-wide
|
||||
// horizontal scrollbar. Keep the populated panel mounted for this check.
|
||||
@@ -295,13 +430,16 @@ const narrowUserActivation = await page.evaluate(() => ({
|
||||
}));
|
||||
|
||||
const finalResult = {
|
||||
...coldBefore,
|
||||
...result,
|
||||
...resized,
|
||||
...narrowReadOnly,
|
||||
wideMenuRealSources: wideUserActivation.realSources,
|
||||
wideMenuEventCount: wideUserActivation.eventCount,
|
||||
wideMenuValidEvents: wideUserActivation.validEvents,
|
||||
retainedStageInteractive: wideUserActivation.retainedStageInteractive,
|
||||
retainedStageInteractiveFocuses: wideUserActivation.retainedStageInteractiveFocuses,
|
||||
retainedStageInteractiveActivates: wideUserActivation.retainedStageInteractiveActivates,
|
||||
retainedStageInteractiveNamed: wideUserActivation.retainedStageInteractiveNamed,
|
||||
...narrowUserActivation,
|
||||
};
|
||||
checkAll(finalResult, {
|
||||
|
||||
+9
-6
@@ -190,13 +190,16 @@ function mkHass(){
|
||||
formatEntityState:(st)=>st.state,
|
||||
};
|
||||
}
|
||||
await import('/assets/houseplan-card.js');
|
||||
const card=document.createElement('houseplan-card');
|
||||
card.setConfig({type:'custom:houseplan-card', title:'House Plan', icon_size:3.4});
|
||||
document.getElementById('host').appendChild(card);
|
||||
card.hass=mkHass();
|
||||
window.__card=card;
|
||||
window.__mkHass=mkHass;
|
||||
let card=null;
|
||||
if(!new URLSearchParams(location.search).has('panel-cold')){
|
||||
await import('/assets/houseplan-card.js');
|
||||
card=document.createElement('houseplan-card');
|
||||
card.setConfig({type:'custom:houseplan-card', title:'House Plan', icon_size:3.4});
|
||||
document.getElementById('host').appendChild(card);
|
||||
card.hass=mkHass();
|
||||
window.__card=card;
|
||||
}
|
||||
window.__setRegistryAccess=(mode)=>{REGISTRY_ACCESS=mode==='full'?'full':'limited';};
|
||||
window.__setRegistryDisabled=(kind,id,disabledBy='user')=>{
|
||||
const row=(kind==='device'?DEVICES:ENTITIES)[id];
|
||||
|
||||
Vendored
+124
-124
@@ -1,270 +1,270 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"fingerprint": "3555cb7791d3391b320376d4bcba14d217a5718d018ca955eb741df1762804b5",
|
||||
"fingerprint": "8e7650990368dac8b2651e684ac8ae9c578ba2a166396aa678bc3bf1ad9519ea",
|
||||
"entry": "houseplan-card.js",
|
||||
"panelEntry": "houseplan-panel.js",
|
||||
"initialViewFiles": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js",
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js",
|
||||
"houseplan-card.js"
|
||||
],
|
||||
"initialViewGzipBytes": 289934,
|
||||
"initialViewGzipBytes": 289923,
|
||||
"initialPanelFiles": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js",
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js",
|
||||
"houseplan-card.js",
|
||||
"houseplan-panel.js"
|
||||
],
|
||||
"initialPanelGzipBytes": 291864,
|
||||
"initialPanelGzipBytes": 291879,
|
||||
"initialPanelOnlyFiles": [
|
||||
"houseplan-panel.js"
|
||||
],
|
||||
"initialPanelOnlyGzipBytes": 1930,
|
||||
"initialPanelOnlyGzipBytes": 1956,
|
||||
"lazyFiles": [
|
||||
"houseplan-assets/backdrop-pick-B8uJVpYl.js",
|
||||
"houseplan-assets/de-pA3tnOax.js",
|
||||
"houseplan-assets/editor-CJSkbmJl.js",
|
||||
"houseplan-assets/fr-BjBWP2nl.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-CUlu3GpV.js",
|
||||
"houseplan-assets/guard-Dk7ygy6z.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-B3O-Y3rk.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-lwyMxFqY.js",
|
||||
"houseplan-assets/hp-zigbee-topology-overlay-f-40j--2.js",
|
||||
"houseplan-assets/iso-scene-render-C5A4O41t.js",
|
||||
"houseplan-assets/live-interaction-runtime-iZ4G2R9J.js",
|
||||
"houseplan-assets/pdf-export-Cg8R9f0g.js",
|
||||
"houseplan-assets/zigbee-topology-DjTDqsI9.js",
|
||||
"houseplan-assets/zigbee-topology-runtime-CEUb94-9.js"
|
||||
"houseplan-assets/backdrop-pick-CIhMrg6h.js",
|
||||
"houseplan-assets/de-DfGuBjvm.js",
|
||||
"houseplan-assets/editor-B5bM25yU.js",
|
||||
"houseplan-assets/fr-CGMIia7A.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-COMxSEvn.js",
|
||||
"houseplan-assets/guard-DkG_-pXI.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-C22BmdCl.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-1HFjNRDc.js",
|
||||
"houseplan-assets/hp-zigbee-topology-overlay-B1Y6Lsed.js",
|
||||
"houseplan-assets/iso-scene-render-DsNJJlLa.js",
|
||||
"houseplan-assets/live-interaction-runtime-CR9Bunvu.js",
|
||||
"houseplan-assets/pdf-export-Cx12fdwF.js",
|
||||
"houseplan-assets/zigbee-topology-ByUE5Pt1.js",
|
||||
"houseplan-assets/zigbee-topology-runtime-B0BH5SMM.js"
|
||||
],
|
||||
"lazyGzipBytes": 383241,
|
||||
"lazyGzipBytes": 383205,
|
||||
"lazyEditorFiles": [
|
||||
"houseplan-assets/backdrop-pick-B8uJVpYl.js",
|
||||
"houseplan-assets/editor-CJSkbmJl.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-CUlu3GpV.js",
|
||||
"houseplan-assets/guard-Dk7ygy6z.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-B3O-Y3rk.js",
|
||||
"houseplan-assets/zigbee-topology-DjTDqsI9.js"
|
||||
"houseplan-assets/backdrop-pick-CIhMrg6h.js",
|
||||
"houseplan-assets/editor-B5bM25yU.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-COMxSEvn.js",
|
||||
"houseplan-assets/guard-DkG_-pXI.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-C22BmdCl.js",
|
||||
"houseplan-assets/zigbee-topology-ByUE5Pt1.js"
|
||||
],
|
||||
"lazyEditorGzipBytes": 195231,
|
||||
"lazyEditorGzipBytes": 195222,
|
||||
"lazyOnboardingFiles": [
|
||||
"houseplan-assets/backdrop-pick-B8uJVpYl.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-lwyMxFqY.js"
|
||||
"houseplan-assets/backdrop-pick-CIhMrg6h.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-1HFjNRDc.js"
|
||||
],
|
||||
"lazyOnboardingGzipBytes": 14330,
|
||||
"lazyOnboardingGzipBytes": 14323,
|
||||
"lazyLocaleFiles": [
|
||||
"houseplan-assets/de-pA3tnOax.js",
|
||||
"houseplan-assets/fr-BjBWP2nl.js"
|
||||
"houseplan-assets/de-DfGuBjvm.js",
|
||||
"houseplan-assets/fr-CGMIia7A.js"
|
||||
],
|
||||
"lazyLocaleGzipBytes": 50249,
|
||||
"lazyLocaleGzipBytes": 50233,
|
||||
"lazyIsometricFiles": [
|
||||
"houseplan-assets/guard-Dk7ygy6z.js",
|
||||
"houseplan-assets/iso-scene-render-C5A4O41t.js"
|
||||
"houseplan-assets/guard-DkG_-pXI.js",
|
||||
"houseplan-assets/iso-scene-render-DsNJJlLa.js"
|
||||
],
|
||||
"lazyIsometricGzipBytes": 13455,
|
||||
"lazyIsometricGzipBytes": 13452,
|
||||
"lazyFurnitureArtFiles": [
|
||||
"houseplan-assets/furniture-plan-art.generated-CUlu3GpV.js"
|
||||
"houseplan-assets/furniture-plan-art.generated-COMxSEvn.js"
|
||||
],
|
||||
"lazyFurnitureArtGzipBytes": 10250,
|
||||
"lazyFurnitureArtGzipBytes": 10252,
|
||||
"lazyPdfFiles": [
|
||||
"houseplan-assets/furniture-plan-art.generated-CUlu3GpV.js",
|
||||
"houseplan-assets/pdf-export-Cg8R9f0g.js"
|
||||
"houseplan-assets/furniture-plan-art.generated-COMxSEvn.js",
|
||||
"houseplan-assets/pdf-export-Cx12fdwF.js"
|
||||
],
|
||||
"lazyPdfGzipBytes": 120330,
|
||||
"lazyPdfGzipBytes": 120332,
|
||||
"files": [
|
||||
{
|
||||
"path": "houseplan-assets/backdrop-pick-B8uJVpYl.js",
|
||||
"sha256": "2068520cc9eff1a9d016ff3d466d1fcc5bb92a81d738b81eebc2787552b9bfea",
|
||||
"path": "houseplan-assets/backdrop-pick-CIhMrg6h.js",
|
||||
"sha256": "78f523fca97745659b18db735b574f32e8f608e0e85edda47889c5789baa7ee0",
|
||||
"rawBytes": 21592,
|
||||
"gzipBytes": 7360,
|
||||
"gzipBytes": 7358,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js"
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/de-pA3tnOax.js",
|
||||
"sha256": "24f7756f5e74d37fb84570bdafe56c7038e4429a5e873efca18cefa098ac7f07",
|
||||
"path": "houseplan-assets/de-DfGuBjvm.js",
|
||||
"sha256": "72af7b6e8baffa5309e6c8bb39328b9935d6b7356d509fa56904f24c1030eb33",
|
||||
"rawBytes": 84250,
|
||||
"gzipBytes": 25378,
|
||||
"gzipBytes": 25370,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/editor-CJSkbmJl.js",
|
||||
"sha256": "d075ee42e36c88cd90da708c6f8f8870e18749b4e39f0409a0151d17a0e47308",
|
||||
"path": "houseplan-assets/editor-B5bM25yU.js",
|
||||
"sha256": "ae6c537571bc85f4c7f46546ab5a23e35f01baf18f911955102e78a1d649a6ea",
|
||||
"rawBytes": 3837,
|
||||
"gzipBytes": 1590,
|
||||
"gzipBytes": 1588,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js"
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/fr-BjBWP2nl.js",
|
||||
"sha256": "800d1cc7dc98f729dff9a8683dc7b5d4bdf890f901a0e1a953b047751e150694",
|
||||
"path": "houseplan-assets/fr-CGMIia7A.js",
|
||||
"sha256": "d5a189fa11bd0e764ff8721a4aa4f074941ca73c3472fa74bf583073fafb5a24",
|
||||
"rawBytes": 86269,
|
||||
"gzipBytes": 24871,
|
||||
"gzipBytes": 24863,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/furniture-plan-art.generated-CUlu3GpV.js",
|
||||
"sha256": "3fc4d19f8fb5320c9edc15079cbe62f031ba25f2c35cc10411028ccf90ff8da1",
|
||||
"path": "houseplan-assets/furniture-plan-art.generated-COMxSEvn.js",
|
||||
"sha256": "8420ab185f250af10f3361b67a8eca9fed66f7e962a689fc33469171149c88be",
|
||||
"rawBytes": 33655,
|
||||
"gzipBytes": 10250,
|
||||
"gzipBytes": 10252,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/guard-Dk7ygy6z.js",
|
||||
"sha256": "9a4f82565f03a902724d6d58b596becce76d82095233e7f125ee64e67445a0ee",
|
||||
"path": "houseplan-assets/guard-DkG_-pXI.js",
|
||||
"sha256": "868320ea9845071a5a7fc0c638ece7445d2efc498431f79194e2eac49f168bb0",
|
||||
"rawBytes": 518,
|
||||
"gzipBytes": 370,
|
||||
"gzipBytes": 368,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js"
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/houseplan-card-ZsbfBSl1.js",
|
||||
"sha256": "15f7c3dc17e2fbfb4a0c61ef15498da70d2d01ed9f2831bb08103fa5c3c0d13c",
|
||||
"path": "houseplan-assets/houseplan-card-qefTb7jv.js",
|
||||
"sha256": "8ba44847aaa94be3b44327431319dbb1541c9848ffa146d5564ac2cff1481fc6",
|
||||
"rawBytes": 1042320,
|
||||
"gzipBytes": 289130,
|
||||
"gzipBytes": 289121,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": [
|
||||
"houseplan-assets/de-pA3tnOax.js",
|
||||
"houseplan-assets/editor-CJSkbmJl.js",
|
||||
"houseplan-assets/fr-BjBWP2nl.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-CUlu3GpV.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-B3O-Y3rk.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-lwyMxFqY.js",
|
||||
"houseplan-assets/hp-zigbee-topology-overlay-f-40j--2.js",
|
||||
"houseplan-assets/iso-scene-render-C5A4O41t.js",
|
||||
"houseplan-assets/live-interaction-runtime-iZ4G2R9J.js",
|
||||
"houseplan-assets/pdf-export-Cg8R9f0g.js"
|
||||
"houseplan-assets/de-DfGuBjvm.js",
|
||||
"houseplan-assets/editor-B5bM25yU.js",
|
||||
"houseplan-assets/fr-CGMIia7A.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-COMxSEvn.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-C22BmdCl.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-1HFjNRDc.js",
|
||||
"houseplan-assets/hp-zigbee-topology-overlay-B1Y6Lsed.js",
|
||||
"houseplan-assets/iso-scene-render-DsNJJlLa.js",
|
||||
"houseplan-assets/live-interaction-runtime-CR9Bunvu.js",
|
||||
"houseplan-assets/pdf-export-Cx12fdwF.js"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/houseplan-editor-runtime-B3O-Y3rk.js",
|
||||
"sha256": "f203e37165f45f1c286d49937077cddeb3744f74e7b5fe0b78438cb88f0d72c2",
|
||||
"path": "houseplan-assets/houseplan-editor-runtime-C22BmdCl.js",
|
||||
"sha256": "eaf078111af87f18d6ec01fc72851deb8ff9e11f82c5b255236abe3ec26b90bc",
|
||||
"rawBytes": 631884,
|
||||
"gzipBytes": 168234,
|
||||
"gzipBytes": 168231,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/backdrop-pick-B8uJVpYl.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-CUlu3GpV.js",
|
||||
"houseplan-assets/guard-Dk7ygy6z.js",
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js",
|
||||
"houseplan-assets/zigbee-topology-DjTDqsI9.js"
|
||||
"houseplan-assets/backdrop-pick-CIhMrg6h.js",
|
||||
"houseplan-assets/furniture-plan-art.generated-COMxSEvn.js",
|
||||
"houseplan-assets/guard-DkG_-pXI.js",
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js",
|
||||
"houseplan-assets/zigbee-topology-ByUE5Pt1.js"
|
||||
],
|
||||
"dynamicImports": [
|
||||
"houseplan-assets/zigbee-topology-runtime-CEUb94-9.js"
|
||||
"houseplan-assets/zigbee-topology-runtime-B0BH5SMM.js"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/houseplan-onboarding-runtime-lwyMxFqY.js",
|
||||
"sha256": "ce8ffc4f4fd388849286b785baae152f82c96dcfe71def236e392cd7a9c41a66",
|
||||
"path": "houseplan-assets/houseplan-onboarding-runtime-1HFjNRDc.js",
|
||||
"sha256": "11b2692248e91ecf0342a3b14e9e6a99d4ffb7a52c384769cd4c8447777c6c25",
|
||||
"rawBytes": 28071,
|
||||
"gzipBytes": 6970,
|
||||
"gzipBytes": 6965,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/backdrop-pick-B8uJVpYl.js",
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js"
|
||||
"houseplan-assets/backdrop-pick-CIhMrg6h.js",
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/hp-zigbee-topology-overlay-f-40j--2.js",
|
||||
"sha256": "c2f4e19a3e42a124b336d949d51a9c70c10560b36a66c700b59c7ba8e5be02a6",
|
||||
"path": "houseplan-assets/hp-zigbee-topology-overlay-B1Y6Lsed.js",
|
||||
"sha256": "548ce3c8814177c623e7ac7273f512b6215b3213ffb89e9ab4a720bfe6925032",
|
||||
"rawBytes": 11034,
|
||||
"gzipBytes": 3732,
|
||||
"gzipBytes": 3731,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js",
|
||||
"houseplan-assets/zigbee-topology-DjTDqsI9.js",
|
||||
"houseplan-assets/zigbee-topology-runtime-CEUb94-9.js"
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js",
|
||||
"houseplan-assets/zigbee-topology-ByUE5Pt1.js",
|
||||
"houseplan-assets/zigbee-topology-runtime-B0BH5SMM.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/iso-scene-render-C5A4O41t.js",
|
||||
"sha256": "d8feaf167a8a23a407336c75e1dc55b24bf0e6538001f7556ec83df2fd0fe2f5",
|
||||
"path": "houseplan-assets/iso-scene-render-DsNJJlLa.js",
|
||||
"sha256": "4e4d4774861f650986775ad0b24ebb6a9729ab1d82fa5d3415a91f082b85288a",
|
||||
"rawBytes": 38562,
|
||||
"gzipBytes": 13085,
|
||||
"gzipBytes": 13084,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/guard-Dk7ygy6z.js",
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js"
|
||||
"houseplan-assets/guard-DkG_-pXI.js",
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/live-interaction-runtime-iZ4G2R9J.js",
|
||||
"sha256": "6983fe8ce1e011f26b2c35d28199d111ef460e53c8617e37a99cf70d687c9495",
|
||||
"path": "houseplan-assets/live-interaction-runtime-CR9Bunvu.js",
|
||||
"sha256": "ca247a90ffa8cfa860cf9f6818af69344d11b0a82da8afe7ab70e6d1a5584f5f",
|
||||
"rawBytes": 5196,
|
||||
"gzipBytes": 2129,
|
||||
"gzipBytes": 2127,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js"
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/pdf-export-Cg8R9f0g.js",
|
||||
"sha256": "12dfd49e241e1d2e05848601c0afe258edf244c41b34bdd7a8eb2640fdc8a784",
|
||||
"path": "houseplan-assets/pdf-export-Cx12fdwF.js",
|
||||
"sha256": "9ac6bde0f29d864d7357a1a34de5e4c91f150db40bbd48cc7a68e23a17a1e6c1",
|
||||
"rawBytes": 237163,
|
||||
"gzipBytes": 110080,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/furniture-plan-art.generated-CUlu3GpV.js",
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js"
|
||||
"houseplan-assets/furniture-plan-art.generated-COMxSEvn.js",
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/zigbee-topology-DjTDqsI9.js",
|
||||
"sha256": "a4cc005467f8000796a9ebcd8eaa1c181059ee501edb49c92ed093f2ce3868f9",
|
||||
"path": "houseplan-assets/zigbee-topology-ByUE5Pt1.js",
|
||||
"sha256": "a8ade99a9993a0a3a275bc3e4219bd73eb48700ea7cdf50aa1a8a835d5d6e38c",
|
||||
"rawBytes": 18961,
|
||||
"gzipBytes": 7427,
|
||||
"gzipBytes": 7425,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js"
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/zigbee-topology-runtime-CEUb94-9.js",
|
||||
"sha256": "b48d6eaa60ee40fb8e48782194d4e9ddffea2e206cb5d8b920427a2fd38e5cd3",
|
||||
"path": "houseplan-assets/zigbee-topology-runtime-B0BH5SMM.js",
|
||||
"sha256": "b6ecb6b77abe75667845b690e3ad2d8a955a8af7bed00962ed59b162b972c7b4",
|
||||
"rawBytes": 3941,
|
||||
"gzipBytes": 1765,
|
||||
"gzipBytes": 1763,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js",
|
||||
"houseplan-assets/zigbee-topology-DjTDqsI9.js"
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js",
|
||||
"houseplan-assets/zigbee-topology-ByUE5Pt1.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-card.js",
|
||||
"sha256": "ba995a027242c56f3033f47778a21f24cab36ef8cc0809658c6a2479619ebfd3",
|
||||
"sha256": "4e524e0bafece333e3520d1ed027371c36e6f25d3496c5b956a9be36a52234ae",
|
||||
"rawBytes": 1205,
|
||||
"gzipBytes": 804,
|
||||
"gzipBytes": 802,
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-ZsbfBSl1.js"
|
||||
"houseplan-assets/houseplan-card-qefTb7jv.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-panel.js",
|
||||
"sha256": "7593c0dc42ba3a4c49b40995d91b63f348320d8b2094318601f51a6f03fb61cb",
|
||||
"rawBytes": 5119,
|
||||
"gzipBytes": 1930,
|
||||
"sha256": "ced7893f5096ad6dd13f659faaa3678aed17495ed16525db3f47323db86d2408",
|
||||
"rawBytes": 5337,
|
||||
"gzipBytes": 1956,
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"houseplan-card.js"
|
||||
|
||||
Vendored
+7
-7
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,4 +1,4 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="3555cb7791d3391b320376d4bcba14d217a5718d018ca955eb741df1762804b5";import{t as e,l as o,x as t,dX as s,A as a,dY as i,dZ as l,d_ as n,dM as r,b as c}from"./houseplan-card-ZsbfBSl1.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")},_=this._schema,f=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__="8e7650990368dac8b2651e684ac8ae9c578ba2a166396aa678bc3bf1ad9519ea";import{t as e,l as o,x as t,dX as s,A as a,dY as i,dZ as l,d_ as n,dM as r,b as c}from"./houseplan-card-qefTb7jv.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")},_=this._schema,f=function(e,o,t){if(!t||null===o)return null;const s="string"==typeof e?.default_floor?e.default_floor:"";return!s||o.some(e=>e.value===s)?null:s}(this._config,this._spaces,this._spacesAuthoritative),d=e=>c`<ha-form
|
||||
.hass=${this.hass}
|
||||
.data=${this._formData}
|
||||
.schema=${e}
|
||||
+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 +0,0 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="3555cb7791d3391b320376d4bcba14d217a5718d018ca955eb741df1762804b5";import{dK as r,dL as t,dM as s}from"./houseplan-card-ZsbfBSl1.js";const e={},a=r(class extends t{constructor(){super(...arguments),this.ot=e}render(r,t){return t()}update(r,[t,e]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every((r,t)=>r===this.ot[t]))return s}else if(this.ot===t)return s;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,e)}});export{a as i};
|
||||
+1
@@ -0,0 +1 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="8e7650990368dac8b2651e684ac8ae9c578ba2a166396aa678bc3bf1ad9519ea";import{dK as r,dL as t,dM as a}from"./houseplan-card-qefTb7jv.js";const e={},s=r(class extends t{constructor(){super(...arguments),this.ot=e}render(r,t){return t()}update(r,[t,e]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every((r,t)=>r===this.ot[t]))return a}else if(this.ot===t)return a;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,e)}});export{s as i};
|
||||
Vendored
+6
-6
File diff suppressed because one or more lines are too long
+3
-3
File diff suppressed because one or more lines are too long
+28
-28
File diff suppressed because one or more lines are too long
+2
-2
File diff suppressed because one or more lines are too long
+8
-8
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
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="3555cb7791d3391b320376d4bcba14d217a5718d018ca955eb741df1762804b5";import{n as t,b as n}from"./zigbee-topology-DjTDqsI9.js";import{F as e}from"./houseplan-card-ZsbfBSl1.js";const o=new WeakMap;function i(t){const n=function(t){const n=t?.connection||t;return!n||"object"!=typeof n&&"function"!=typeof n?null:n}(t);if(!n)return null;let e=o.get(n);return e||(e={revision:0,topologies:[],states:{},listeners:new Set,inflight:new Map},o.set(n,e)),e}function r(t,n,e){t.states={...t.states,[n]:e},function(t){t.revision++;for(const n of t.listeners)n()}(t)}function s(t){const n=t?.code;if("permission"===n||"unsupported"===n||"timeout"===n||"invalid_topic"===n||"invalid_payload"===n)return n;const e=String(t?.message||"").toLowerCase();return e.includes("unauthor")||e.includes("permission")?"permission":e.includes("unknown_command")||e.includes("not found")?"unsupported":"provider"}function a(t){return Object.assign(new Error(t),{code:t})}function c(t,n,e){const o=t.inflight.get(n);if(o)return o;r(t,n,{phase:"loading"});const i=e().then(n=>{if(!n.nodes.length&&n.warnings.some(t=>"invalid_payload"===t.code))throw a("invalid_payload");!function(t,n){t.topologies=[...t.topologies.filter(t=>!(t.provider===n.provider&&t.instanceId===n.instanceId)),n],r(t,"zha"===n.provider?"zha":`z2m:${n.instanceId}`,{phase:"ready",obtainedAt:n.obtainedAt,partial:n.warnings.length>0})}(t,n)}).catch(e=>{r(t,n,{phase:"error",error:s(e)})}).finally(()=>t.inflight.delete(n));return t.inflight.set(n,i),i}function l(t){const n=i(t);return n?{revision:n.revision,topologies:n.topologies,states:n.states}:{revision:0,topologies:[],states:{}}}function u(t,n){const e=i(t);return e?(e.listeners.add(n),()=>e.listeners.delete(n)):()=>{}}function p(t){if(!0!==t?.user?.is_admin)throw a("permission")}function f(n){const e=i(n);return e?c(e,"zha",async()=>{if(p(n),"function"!=typeof n?.callWS)throw a("unsupported");return t(await n.callWS({type:"zha/devices"}))}):Promise.resolve()}function d(t){return null!==t&&"object"==typeof t?t:null}function h(t){const n=d(t),e=n?.payload??t;if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}}async function m(t,n){let e;try{return await Promise.race([t,new Promise((t,o)=>{e=globalThis.setTimeout(()=>o(a("timeout")),Math.max(1,n))})])}finally{void 0!==e&&globalThis.clearTimeout(e)}}function g(t,o,r=15e4){const s=i(t);if(!s)return Promise.resolve();const l=e(o);return c(s,`z2m:${l||String(o)}`,async()=>{if(p(t),!l)throw a("invalid_topic");const e=t.connection,o=e?.subscribeMessage;if("function"!=typeof o||"function"!=typeof t?.callService)throw a("unsupported");const i=function(){const t=globalThis.crypto;return"function"==typeof t?.randomUUID?`houseplan-${t.randomUUID()}`:`houseplan-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}(),s=Date.now()+Math.max(1,r);let c=!1,u=null,f=null,g=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{f=t,g=n}),b=[];try{const r=await o.call(e,t=>{!0===d(t)?.retain&&h(t)&&u?.()},{type:"mqtt/subscribe",topic:`${l}/bridge/info`});"function"==typeof r&&b.push(r);const p=await o.call(e,t=>{if(!0===d(t)?.retain)return;const n=h(t);null!==n?n&&function(t){const n=d(t),e=n?.transaction??d(n?.data)?.transaction;return"string"==typeof e||"number"==typeof e?String(e):null}(n)===i&&f?.(n):c&&g?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof p&&b.push(p),await m(y,Math.min(4e3,Math.max(1,s-Date.now()))),c=!0,await t.callService("mqtt","publish",{topic:`${l}/bridge/request/networkmap`,payload:JSON.stringify({type:"raw",routes:!1,transaction:i}),qos:0,retain:!1});const v=await m(w,s-Date.now()),_=d(v)?.status;if(_&&"ok"!==_)throw a("provider");return n(v,l)}finally{for(const t of b)try{t()}catch{}}})}export{f as readZhaTopology,g as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot};
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="8e7650990368dac8b2651e684ac8ae9c578ba2a166396aa678bc3bf1ad9519ea";import{n as t,b as n}from"./zigbee-topology-ByUE5Pt1.js";import{F as e}from"./houseplan-card-qefTb7jv.js";const o=new WeakMap;function i(t){const n=function(t){const n=t?.connection||t;return!n||"object"!=typeof n&&"function"!=typeof n?null:n}(t);if(!n)return null;let e=o.get(n);return e||(e={revision:0,topologies:[],states:{},listeners:new Set,inflight:new Map},o.set(n,e)),e}function r(t,n,e){t.states={...t.states,[n]:e},function(t){t.revision++;for(const n of t.listeners)n()}(t)}function s(t){const n=t?.code;if("permission"===n||"unsupported"===n||"timeout"===n||"invalid_topic"===n||"invalid_payload"===n)return n;const e=String(t?.message||"").toLowerCase();return e.includes("unauthor")||e.includes("permission")?"permission":e.includes("unknown_command")||e.includes("not found")?"unsupported":"provider"}function a(t){return Object.assign(new Error(t),{code:t})}function c(t,n,e){const o=t.inflight.get(n);if(o)return o;r(t,n,{phase:"loading"});const i=e().then(n=>{if(!n.nodes.length&&n.warnings.some(t=>"invalid_payload"===t.code))throw a("invalid_payload");!function(t,n){t.topologies=[...t.topologies.filter(t=>!(t.provider===n.provider&&t.instanceId===n.instanceId)),n],r(t,"zha"===n.provider?"zha":`z2m:${n.instanceId}`,{phase:"ready",obtainedAt:n.obtainedAt,partial:n.warnings.length>0})}(t,n)}).catch(e=>{r(t,n,{phase:"error",error:s(e)})}).finally(()=>t.inflight.delete(n));return t.inflight.set(n,i),i}function l(t){const n=i(t);return n?{revision:n.revision,topologies:n.topologies,states:n.states}:{revision:0,topologies:[],states:{}}}function u(t,n){const e=i(t);return e?(e.listeners.add(n),()=>e.listeners.delete(n)):()=>{}}function p(t){if(!0!==t?.user?.is_admin)throw a("permission")}function f(n){const e=i(n);return e?c(e,"zha",async()=>{if(p(n),"function"!=typeof n?.callWS)throw a("unsupported");return t(await n.callWS({type:"zha/devices"}))}):Promise.resolve()}function d(t){return null!==t&&"object"==typeof t?t:null}function h(t){const n=d(t),e=n?.payload??t;if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}}async function m(t,n){let e;try{return await Promise.race([t,new Promise((t,o)=>{e=globalThis.setTimeout(()=>o(a("timeout")),Math.max(1,n))})])}finally{void 0!==e&&globalThis.clearTimeout(e)}}function g(t,o,r=15e4){const s=i(t);if(!s)return Promise.resolve();const l=e(o);return c(s,`z2m:${l||String(o)}`,async()=>{if(p(t),!l)throw a("invalid_topic");const e=t.connection,o=e?.subscribeMessage;if("function"!=typeof o||"function"!=typeof t?.callService)throw a("unsupported");const i=function(){const t=globalThis.crypto;return"function"==typeof t?.randomUUID?`houseplan-${t.randomUUID()}`:`houseplan-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}(),s=Date.now()+Math.max(1,r);let c=!1,u=null,f=null,g=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{f=t,g=n}),b=[];try{const r=await o.call(e,t=>{!0===d(t)?.retain&&h(t)&&u?.()},{type:"mqtt/subscribe",topic:`${l}/bridge/info`});"function"==typeof r&&b.push(r);const p=await o.call(e,t=>{if(!0===d(t)?.retain)return;const n=h(t);null!==n?n&&function(t){const n=d(t),e=n?.transaction??d(n?.data)?.transaction;return"string"==typeof e||"number"==typeof e?String(e):null}(n)===i&&f?.(n):c&&g?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof p&&b.push(p),await m(y,Math.min(4e3,Math.max(1,s-Date.now()))),c=!0,await t.callService("mqtt","publish",{topic:`${l}/bridge/request/networkmap`,payload:JSON.stringify({type:"raw",routes:!1,transaction:i}),qos:0,retain:!1});const v=await m(w,s-Date.now()),_=d(v)?.status;if(_&&"ok"!==_)throw a("provider");return n(v,l)}finally{for(const t of b)try{t()}catch{}}})}export{f as readZhaTopology,g as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot};
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="3555cb7791d3391b320376d4bcba14d217a5718d018ca955eb741df1762804b5";try{await import("./houseplan-assets/houseplan-card-ZsbfBSl1.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__="8e7650990368dac8b2651e684ac8ae9c578ba2a166396aa678bc3bf1ad9519ea";try{await import("./houseplan-assets/houseplan-card-qefTb7jv.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
@@ -721,6 +721,17 @@ const MUTANT_DEFINITIONS = [
|
||||
replace: ' if False: # mutant: unverifiable ownership is accepted',
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'panel-readonly-empty-bypasses-write-capability',
|
||||
guard: 'node demo/smoke_houseplan_panel.mjs',
|
||||
because: 'an empty read-only panel must stay passive and lazy; bypassing the server write '
|
||||
+ 'capability would expose Add space and load onboarding for a household viewer (#486 AC10)',
|
||||
patches: [{
|
||||
file: 'src/houseplan-card.ts',
|
||||
find: ' if (this._serverCanWrite !== null) return this._serverCanWrite;',
|
||||
replace: ' if (this._serverCanWrite !== null) return true; // mutant: read-only becomes writer',
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'version-recovery-treats-unknown-as-mismatch',
|
||||
guard: 'node --test --test-name-pattern="malformed values stay unknown" '
|
||||
|
||||
+12
-2
@@ -85,6 +85,13 @@ export class HouseplanPanel extends HTMLElement {
|
||||
border-bottom: 1px solid var(--divider-color);
|
||||
z-index: 1;
|
||||
}
|
||||
.toolbar {
|
||||
min-width: 0;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
.menu {
|
||||
box-sizing: border-box;
|
||||
width: 44px;
|
||||
@@ -140,7 +147,9 @@ export class HouseplanPanel extends HTMLElement {
|
||||
page.className = 'page';
|
||||
const appbar = document.createElement('header');
|
||||
appbar.className = 'appbar';
|
||||
appbar.setAttribute('role', 'toolbar');
|
||||
const toolbar = document.createElement('div');
|
||||
toolbar.className = 'toolbar';
|
||||
toolbar.setAttribute('role', 'toolbar');
|
||||
|
||||
const menu = document.createElement('button');
|
||||
menu.className = 'menu';
|
||||
@@ -159,7 +168,8 @@ export class HouseplanPanel extends HTMLElement {
|
||||
title.setAttribute('role', 'heading');
|
||||
title.setAttribute('aria-level', '1');
|
||||
title.innerHTML = '<ha-icon icon="mdi:floor-plan"></ha-icon><span>House Plan</span>';
|
||||
appbar.append(menu, title);
|
||||
toolbar.append(menu, title);
|
||||
appbar.append(toolbar);
|
||||
|
||||
const content = document.createElement('main');
|
||||
content.className = 'content';
|
||||
|
||||
@@ -21,6 +21,10 @@ test('#486 menu and container-owned panel layout have explicit accessibility and
|
||||
assert.match(panel, /new CustomEvent\('hass-toggle-menu', \{[\s\S]*bubbles: true,[\s\S]*composed: true/);
|
||||
assert.match(panel, /width: 44px;[\s\S]*height: 44px;/);
|
||||
assert.match(panel, /setAttribute\('aria-label', label\)/);
|
||||
assert.match(panel, /document\.createElement\('header'\)/);
|
||||
assert.match(panel, /toolbar\.setAttribute\('role', 'toolbar'\)/);
|
||||
assert.doesNotMatch(panel, /appbar\.setAttribute\('role', 'toolbar'\)/,
|
||||
'the toolbar may not replace the app bar header landmark');
|
||||
assert.match(panel, /grid-template-rows: auto minmax\(0, 1fr\)/);
|
||||
assert.match(panel, /\.content \{[\s\S]*min-width: 0;[\s\S]*min-height: 0;[\s\S]*overflow: hidden;/);
|
||||
assert.doesNotMatch(panel, /100dvh|100vh|safe-area-inset/,
|
||||
|
||||
@@ -56,7 +56,7 @@ test('every mutant explains itself', () => {
|
||||
assert.ok(MUTANTS.length >= 6, 'стартовый набор — шесть мутантов по дырам из #85');
|
||||
});
|
||||
|
||||
test('#486 panel registration and cleanup protections have mutation witnesses', () => {
|
||||
test('#486 panel registration, cleanup and read-only protections have mutation witnesses', () => {
|
||||
const ids = new Set(MUTANTS.map(({ id }) => id));
|
||||
for (const id of [
|
||||
'panel-registers-wrong-route',
|
||||
@@ -69,6 +69,7 @@ test('#486 panel registration and cleanup protections have mutation witnesses',
|
||||
'panel-cleanup-drops-identity-guard',
|
||||
'panel-cleanup-uses-new-remove-keyword',
|
||||
'panel-accepts-unverifiable-ownership',
|
||||
'panel-readonly-empty-bypasses-write-capability',
|
||||
]) {
|
||||
assert.ok(ids.has(id), `${id}: отсутствует защитный свидетель #486`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user