perf: reuse clean room areas in PDF

Issue: #53
User-Visible: no
This commit is contained in:
Matysh
2026-09-07 04:46:20 +03:00
parent 008efbe920
commit 137616fa62
41 changed files with 330 additions and 303 deletions
@@ -1,251 +1,251 @@
{
"schema": 1,
"fingerprint": "7121e2de5173f312895dbfc34e36c4a023158cfe12aa3da9b2bf9dc32745b08d",
"fingerprint": "3a0492fa9202bb2bf9044de0474fdaebd5f994e8ae254e6b84237e395f038752",
"entry": "houseplan-card.js",
"initialViewFiles": [
"houseplan-assets/houseplan-card-CD6ogmzP.js",
"houseplan-assets/houseplan-card-CuVMw7Vn.js",
"houseplan-card.js"
],
"initialViewGzipBytes": 289621,
"initialViewGzipBytes": 289685,
"lazyFiles": [
"houseplan-assets/backdrop-pick-BVprf77o.js",
"houseplan-assets/de-CUxe_Wr8.js",
"houseplan-assets/editor-DS48qPea.js",
"houseplan-assets/fr-BvUz0PcT.js",
"houseplan-assets/furniture-plan-art.generated-C9Z0GrAQ.js",
"houseplan-assets/guard-BCTQPvjL.js",
"houseplan-assets/houseplan-editor-runtime-5WfQhhMX.js",
"houseplan-assets/houseplan-onboarding-runtime-CVSDbLQS.js",
"houseplan-assets/hp-zigbee-topology-overlay-TDoUjpkK.js",
"houseplan-assets/iso-scene-render-CcGPrfMA.js",
"houseplan-assets/live-interaction-runtime-CWs4Wo4p.js",
"houseplan-assets/pdf-export-c6heqTJW.js",
"houseplan-assets/zigbee-topology-Dc-X8RS-.js",
"houseplan-assets/zigbee-topology-runtime-Df4_JV18.js"
"houseplan-assets/backdrop-pick-DY-qRXwf.js",
"houseplan-assets/de-Bc7ErBgR.js",
"houseplan-assets/editor-Dw09avhX.js",
"houseplan-assets/fr-DddpdcK7.js",
"houseplan-assets/furniture-plan-art.generated-CtQ9RgwF.js",
"houseplan-assets/guard-BvR4QlYm.js",
"houseplan-assets/houseplan-editor-runtime-DmGy2NXj.js",
"houseplan-assets/houseplan-onboarding-runtime-Ue9O8DjD.js",
"houseplan-assets/hp-zigbee-topology-overlay-DZPs2WXf.js",
"houseplan-assets/iso-scene-render-wd0ZrKJ7.js",
"houseplan-assets/live-interaction-runtime-NKvSpfbq.js",
"houseplan-assets/pdf-export-D5_Jy-bA.js",
"houseplan-assets/zigbee-topology-D-txRQR2.js",
"houseplan-assets/zigbee-topology-runtime-pJ7stNkr.js"
],
"lazyGzipBytes": 377423,
"lazyGzipBytes": 377477,
"lazyEditorFiles": [
"houseplan-assets/backdrop-pick-BVprf77o.js",
"houseplan-assets/editor-DS48qPea.js",
"houseplan-assets/furniture-plan-art.generated-C9Z0GrAQ.js",
"houseplan-assets/guard-BCTQPvjL.js",
"houseplan-assets/houseplan-editor-runtime-5WfQhhMX.js",
"houseplan-assets/zigbee-topology-Dc-X8RS-.js"
"houseplan-assets/backdrop-pick-DY-qRXwf.js",
"houseplan-assets/editor-Dw09avhX.js",
"houseplan-assets/furniture-plan-art.generated-CtQ9RgwF.js",
"houseplan-assets/guard-BvR4QlYm.js",
"houseplan-assets/houseplan-editor-runtime-DmGy2NXj.js",
"houseplan-assets/zigbee-topology-D-txRQR2.js"
],
"lazyEditorGzipBytes": 195222,
"lazyEditorGzipBytes": 195227,
"lazyOnboardingFiles": [
"houseplan-assets/backdrop-pick-BVprf77o.js",
"houseplan-assets/houseplan-onboarding-runtime-CVSDbLQS.js"
"houseplan-assets/backdrop-pick-DY-qRXwf.js",
"houseplan-assets/houseplan-onboarding-runtime-Ue9O8DjD.js"
],
"lazyOnboardingGzipBytes": 14324,
"lazyOnboardingGzipBytes": 14327,
"lazyLocaleFiles": [
"houseplan-assets/de-CUxe_Wr8.js",
"houseplan-assets/fr-BvUz0PcT.js"
"houseplan-assets/de-Bc7ErBgR.js",
"houseplan-assets/fr-DddpdcK7.js"
],
"lazyLocaleGzipBytes": 50264,
"lazyLocaleGzipBytes": 50269,
"lazyIsometricFiles": [
"houseplan-assets/guard-BCTQPvjL.js",
"houseplan-assets/iso-scene-render-CcGPrfMA.js"
"houseplan-assets/guard-BvR4QlYm.js",
"houseplan-assets/iso-scene-render-wd0ZrKJ7.js"
],
"lazyIsometricGzipBytes": 13456,
"lazyIsometricGzipBytes": 13454,
"lazyFurnitureArtFiles": [
"houseplan-assets/furniture-plan-art.generated-C9Z0GrAQ.js"
"houseplan-assets/furniture-plan-art.generated-CtQ9RgwF.js"
],
"lazyFurnitureArtGzipBytes": 10253,
"lazyFurnitureArtGzipBytes": 10254,
"lazyPdfFiles": [
"houseplan-assets/furniture-plan-art.generated-C9Z0GrAQ.js",
"houseplan-assets/pdf-export-c6heqTJW.js"
"houseplan-assets/furniture-plan-art.generated-CtQ9RgwF.js",
"houseplan-assets/pdf-export-D5_Jy-bA.js"
],
"lazyPdfGzipBytes": 114513,
"lazyPdfGzipBytes": 114554,
"files": [
{
"path": "houseplan-assets/backdrop-pick-BVprf77o.js",
"sha256": "109a93c71c255fb3f11d8f53c5e41434cc46c41ecf52d93a7ea7eda9c2efe961",
"path": "houseplan-assets/backdrop-pick-DY-qRXwf.js",
"sha256": "c7665847068d4619f5a13a0eced53a1065b553e6d12e1f682da00bb46eb56b12",
"rawBytes": 21592,
"gzipBytes": 7356,
"gzipBytes": 7357,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-CD6ogmzP.js"
"houseplan-assets/houseplan-card-CuVMw7Vn.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/de-CUxe_Wr8.js",
"sha256": "3e8245ba8a345de74a8cae2728328b06460d165eaa6e62a8ed7e461a5b4b705e",
"path": "houseplan-assets/de-Bc7ErBgR.js",
"sha256": "bf12b279a47df5212552c7132655f3969c77992224164d7007024853eb6d71f2",
"rawBytes": 84320,
"gzipBytes": 25375,
"gzipBytes": 25377,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/editor-DS48qPea.js",
"sha256": "bb942e99d8304affb21fdc240c40d1a477a38b75ac3d4a6019cc25fc43c9a941",
"path": "houseplan-assets/editor-Dw09avhX.js",
"sha256": "20f56cdf95698a97a8ea48c4d24e10d950a51c35bae59fe2a7c5193ee4281f3f",
"rawBytes": 3837,
"gzipBytes": 1588,
"gzipBytes": 1589,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-CD6ogmzP.js"
"houseplan-assets/houseplan-card-CuVMw7Vn.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/fr-BvUz0PcT.js",
"sha256": "70b831f48fb74bcff54807abd61de908c00a95b50b58a1ad1d8479dd377ace1d",
"path": "houseplan-assets/fr-DddpdcK7.js",
"sha256": "69e5844cd31c51b30672d71e3169435755b2901fe093246c29e324abe84bd867",
"rawBytes": 86352,
"gzipBytes": 24889,
"gzipBytes": 24892,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/furniture-plan-art.generated-C9Z0GrAQ.js",
"sha256": "d38356900bf356e04ccd54dd24cc107e5158975223e628470d4c02dea6df9301",
"path": "houseplan-assets/furniture-plan-art.generated-CtQ9RgwF.js",
"sha256": "962a1ab2d07caaa6f7e29e70d364260b92b85135eb0eae829334ccf52628be71",
"rawBytes": 33655,
"gzipBytes": 10253,
"gzipBytes": 10254,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/guard-BCTQPvjL.js",
"sha256": "c093baa3fa7d4637bc4327e69e28bbac6bbb4b55bf6d4fa1457f1acb425ab2ee",
"path": "houseplan-assets/guard-BvR4QlYm.js",
"sha256": "79411d6bb6b08b3949d7320a62fc1077c929d650a7725912ebfdb5c221e6a827",
"rawBytes": 518,
"gzipBytes": 370,
"gzipBytes": 368,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-CD6ogmzP.js"
"houseplan-assets/houseplan-card-CuVMw7Vn.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-card-CD6ogmzP.js",
"sha256": "244aaba108eda419305e5ef2c36814f7825b4fd8c6caa5d41ce09805ff425847",
"rawBytes": 1041059,
"gzipBytes": 288826,
"path": "houseplan-assets/houseplan-card-CuVMw7Vn.js",
"sha256": "e619c9c4340bb5d3a3ecbe3c9e0857540860559aa5b0b2097b00208b24f6e8bb",
"rawBytes": 1041196,
"gzipBytes": 288889,
"isEntry": false,
"imports": [],
"dynamicImports": [
"houseplan-assets/de-CUxe_Wr8.js",
"houseplan-assets/editor-DS48qPea.js",
"houseplan-assets/fr-BvUz0PcT.js",
"houseplan-assets/furniture-plan-art.generated-C9Z0GrAQ.js",
"houseplan-assets/houseplan-editor-runtime-5WfQhhMX.js",
"houseplan-assets/houseplan-onboarding-runtime-CVSDbLQS.js",
"houseplan-assets/hp-zigbee-topology-overlay-TDoUjpkK.js",
"houseplan-assets/iso-scene-render-CcGPrfMA.js",
"houseplan-assets/live-interaction-runtime-CWs4Wo4p.js",
"houseplan-assets/pdf-export-c6heqTJW.js"
"houseplan-assets/de-Bc7ErBgR.js",
"houseplan-assets/editor-Dw09avhX.js",
"houseplan-assets/fr-DddpdcK7.js",
"houseplan-assets/furniture-plan-art.generated-CtQ9RgwF.js",
"houseplan-assets/houseplan-editor-runtime-DmGy2NXj.js",
"houseplan-assets/houseplan-onboarding-runtime-Ue9O8DjD.js",
"houseplan-assets/hp-zigbee-topology-overlay-DZPs2WXf.js",
"houseplan-assets/iso-scene-render-wd0ZrKJ7.js",
"houseplan-assets/live-interaction-runtime-NKvSpfbq.js",
"houseplan-assets/pdf-export-D5_Jy-bA.js"
]
},
{
"path": "houseplan-assets/houseplan-editor-runtime-5WfQhhMX.js",
"sha256": "e3f73b3ba26282703e377f234132da39565f6f844db2db61b11c3c0576bb2e06",
"path": "houseplan-assets/houseplan-editor-runtime-DmGy2NXj.js",
"sha256": "e8d90b0fde28be61f22ec48567f8bb83ad22ff9359761fc31256276faed7599f",
"rawBytes": 631884,
"gzipBytes": 168230,
"gzipBytes": 168233,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-BVprf77o.js",
"houseplan-assets/furniture-plan-art.generated-C9Z0GrAQ.js",
"houseplan-assets/guard-BCTQPvjL.js",
"houseplan-assets/houseplan-card-CD6ogmzP.js",
"houseplan-assets/zigbee-topology-Dc-X8RS-.js"
"houseplan-assets/backdrop-pick-DY-qRXwf.js",
"houseplan-assets/furniture-plan-art.generated-CtQ9RgwF.js",
"houseplan-assets/guard-BvR4QlYm.js",
"houseplan-assets/houseplan-card-CuVMw7Vn.js",
"houseplan-assets/zigbee-topology-D-txRQR2.js"
],
"dynamicImports": [
"houseplan-assets/zigbee-topology-runtime-Df4_JV18.js"
"houseplan-assets/zigbee-topology-runtime-pJ7stNkr.js"
]
},
{
"path": "houseplan-assets/houseplan-onboarding-runtime-CVSDbLQS.js",
"sha256": "30cf8e28f045e1b0ada0ff9d59741189069a23acc88207097fd3c3cd4bc5350b",
"path": "houseplan-assets/houseplan-onboarding-runtime-Ue9O8DjD.js",
"sha256": "73a01da4d744736725f9bb838b8bd596405d463c568a2719225394239ba24fd3",
"rawBytes": 28071,
"gzipBytes": 6968,
"gzipBytes": 6970,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-BVprf77o.js",
"houseplan-assets/houseplan-card-CD6ogmzP.js"
"houseplan-assets/backdrop-pick-DY-qRXwf.js",
"houseplan-assets/houseplan-card-CuVMw7Vn.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/hp-zigbee-topology-overlay-TDoUjpkK.js",
"sha256": "ad7660503f5a5102ca082b610a9e632d8ccacd8f778ca562092cea3a20e60883",
"path": "houseplan-assets/hp-zigbee-topology-overlay-DZPs2WXf.js",
"sha256": "24ae099c337079e7ede517721cabd0fd3a45bc4ed4769edf00fd37f41f64442b",
"rawBytes": 11034,
"gzipBytes": 3732,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-CD6ogmzP.js",
"houseplan-assets/zigbee-topology-Dc-X8RS-.js",
"houseplan-assets/zigbee-topology-runtime-Df4_JV18.js"
"houseplan-assets/houseplan-card-CuVMw7Vn.js",
"houseplan-assets/zigbee-topology-D-txRQR2.js",
"houseplan-assets/zigbee-topology-runtime-pJ7stNkr.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/iso-scene-render-CcGPrfMA.js",
"sha256": "fdc0c66b18645fcf610b800765a5a8dadbfa5c87788f317f0066667b705fe113",
"path": "houseplan-assets/iso-scene-render-wd0ZrKJ7.js",
"sha256": "4a586751d18d284c8b9712f55f43b1e2b44c99f9ad7c17b782719e3fad84a0e2",
"rawBytes": 38562,
"gzipBytes": 13086,
"isEntry": false,
"imports": [
"houseplan-assets/guard-BCTQPvjL.js",
"houseplan-assets/houseplan-card-CD6ogmzP.js"
"houseplan-assets/guard-BvR4QlYm.js",
"houseplan-assets/houseplan-card-CuVMw7Vn.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/live-interaction-runtime-CWs4Wo4p.js",
"sha256": "0a48794048f8c42ab9da796f3fd6587508ce33124997a55c769983672266f477",
"path": "houseplan-assets/live-interaction-runtime-NKvSpfbq.js",
"sha256": "f93bea4b19b5b17a1a3dc191b163e039706a641afbb2db426e9a911dda7ccb67",
"rawBytes": 5196,
"gzipBytes": 2128,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-CD6ogmzP.js"
"houseplan-assets/houseplan-card-CuVMw7Vn.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/pdf-export-c6heqTJW.js",
"sha256": "34b29083a7a29208cda45cb6cdb256e878d3ac376f2a612c4e5bf0cef9ebd8b4",
"rawBytes": 220566,
"gzipBytes": 104260,
"path": "houseplan-assets/pdf-export-D5_Jy-bA.js",
"sha256": "16a055c401c84583a528440e083525dba3409e290eafc22095e0c86a38b07ddf",
"rawBytes": 220678,
"gzipBytes": 104300,
"isEntry": false,
"imports": [
"houseplan-assets/furniture-plan-art.generated-C9Z0GrAQ.js",
"houseplan-assets/houseplan-card-CD6ogmzP.js"
"houseplan-assets/furniture-plan-art.generated-CtQ9RgwF.js",
"houseplan-assets/houseplan-card-CuVMw7Vn.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/zigbee-topology-Dc-X8RS-.js",
"sha256": "8acbd5e69e8acc3de608f541b9b1e08204acf58491a435a67055a69a94ec6501",
"path": "houseplan-assets/zigbee-topology-D-txRQR2.js",
"sha256": "edd6b1b96296664350d84ec12166db38a5dbab7db02ad5e8a4e3b9f68a8b1cd3",
"rawBytes": 18961,
"gzipBytes": 7425,
"gzipBytes": 7426,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-CD6ogmzP.js"
"houseplan-assets/houseplan-card-CuVMw7Vn.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/zigbee-topology-runtime-Df4_JV18.js",
"sha256": "a58455e8dd97fbcb375c43fa6686d87e62cd66c9d8a5e00a43c788d12f4d350b",
"path": "houseplan-assets/zigbee-topology-runtime-pJ7stNkr.js",
"sha256": "024e37a60c706965fa9ec55833e5458c83648e24bd7b8be5400e2ad53d2ced00",
"rawBytes": 3941,
"gzipBytes": 1763,
"gzipBytes": 1765,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-CD6ogmzP.js",
"houseplan-assets/zigbee-topology-Dc-X8RS-.js"
"houseplan-assets/houseplan-card-CuVMw7Vn.js",
"houseplan-assets/zigbee-topology-D-txRQR2.js"
],
"dynamicImports": []
},
{
"path": "houseplan-card.js",
"sha256": "23848ec210ec0b24d702fd39e5292435ad1ac2a2070a9d968435886d09444327",
"sha256": "046c4f4f2309964615fa7129cc95eaf7a8924451ebdc18cc34e83841435fbbdb",
"rawBytes": 1183,
"gzipBytes": 795,
"gzipBytes": 796,
"isEntry": true,
"imports": [
"houseplan-assets/houseplan-card-CD6ogmzP.js"
"houseplan-assets/houseplan-card-CuVMw7Vn.js"
],
"dynamicImports": []
}
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7121e2de5173f312895dbfc34e36c4a023158cfe12aa3da9b2bf9dc32745b08d";import{t as e,l as o,x as t,dV as s,A as a,dW as i,dX as l,dY as n,dM as r,b as c}from"./houseplan-card-CD6ogmzP.js";class h extends e{constructor(){super(...arguments),this._spaces=null,this._spacesLoading=!1,this._spacesAuthoritative=!1}setConfig(e){this._config=e}async _loadSpaces(){if(!this._spaces&&!this._spacesLoading&&this.hass){this._spacesLoading=!0;try{const e=await this.hass.callWS({type:"houseplan/config/get"});this._spaces=(e?.config?.spaces||[]).map(e=>({value:e.id,label:e.title||e.id})),this._spacesAuthoritative=!0}catch{this._spaces=[],this._spacesAuthoritative=!1}finally{this._spacesLoading=!1}}}get _lang(){return o(this.hass,this._config?.language)}get _floorToken(){const e=this._config?.floor;return"number"==typeof e?`__houseplan_yaml_floor_index__:${String(e)}`:null}get _formData(){const e={...this._config},o=this._floorToken;return o?e.floor=o:Object.prototype.hasOwnProperty.call(e,"floor")||(e.floor=""),e}get _schema(){const e=this._spaces||[],o=this._lang,a=[{value:"",label:t(o,"editor.floor_none")}],i=this._floorToken;i&&a.push({value:i,label:t(o,"editor.floor_index",{index:String(this._config?.floor)})});const l="string"==typeof this._config?.floor?this._config.floor:"";l&&!e.some(e=>e.value===l)&&a.push({value:l,label:l}),a.push(...e);const n="string"==typeof this._config?.default_floor?this._config.default_floor:"",r=[...e];return n&&!e.some(e=>e.value===n)&&r.unshift({value:n,label:n}),[{name:"title",selector:{text:{}}},{name:"floor",selector:{select:{mode:"dropdown",options:a}}},e.length?{name:"default_floor",selector:{select:{mode:"dropdown",options:r}}}:{name:"default_floor",selector:{text:{}}},{name:"language",selector:{select:{mode:"dropdown",options:s(t(o,"editor.lang_auto"),this._config?.language)}}},{name:"icon_size",selector:{number:{min:1,max:6,step:.1,mode:"box"}}},{name:"show_temperature",selector:{boolean:{}}},{name:"live_states",selector:{boolean:{}}},{name:"show_signal",selector:{boolean:{}}},{name:"kiosk",selector:{boolean:{}}},{name:"cycle",selector:{number:{min:0,max:3600,step:5,mode:"box"}}}]}render(){if(!this.hass||!this._config)return a;const e=i(this,l,o(this.hass,this._config.language));if("cold"===e)return n();if("warm"===e)return r;this._loadSpaces();const s=this._lang,h={title:t(s,"editor.title"),floor:t(s,"editor.floor"),default_floor:t(s,"editor.default_floor"),language:t(s,"editor.language"),icon_size:t(s,"editor.icon_size"),show_temperature:t(s,"editor.show_temperature"),live_states:t(s,"editor.live_states"),show_signal:t(s,"editor.show_signal"),kiosk:t(s,"editor.kiosk"),cycle:t(s,"editor.cycle")},f=this._schema,_=function(e,o,t){if(!t||null===o)return null;const s="string"==typeof e?.default_floor?e.default_floor:"";return!s||o.some(e=>e.value===s)?null:s}(this._config,this._spaces,this._spacesAuthoritative),d=e=>c`<ha-form
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="3a0492fa9202bb2bf9044de0474fdaebd5f994e8ae254e6b84237e395f038752";import{t as e,l as o,x as t,dV as s,A as a,dW as i,dX as l,dY as n,dM as r,b as c}from"./houseplan-card-CuVMw7Vn.js";class h extends e{constructor(){super(...arguments),this._spaces=null,this._spacesLoading=!1,this._spacesAuthoritative=!1}setConfig(e){this._config=e}async _loadSpaces(){if(!this._spaces&&!this._spacesLoading&&this.hass){this._spacesLoading=!0;try{const e=await this.hass.callWS({type:"houseplan/config/get"});this._spaces=(e?.config?.spaces||[]).map(e=>({value:e.id,label:e.title||e.id})),this._spacesAuthoritative=!0}catch{this._spaces=[],this._spacesAuthoritative=!1}finally{this._spacesLoading=!1}}}get _lang(){return o(this.hass,this._config?.language)}get _floorToken(){const e=this._config?.floor;return"number"==typeof e?`__houseplan_yaml_floor_index__:${String(e)}`:null}get _formData(){const e={...this._config},o=this._floorToken;return o?e.floor=o:Object.prototype.hasOwnProperty.call(e,"floor")||(e.floor=""),e}get _schema(){const e=this._spaces||[],o=this._lang,a=[{value:"",label:t(o,"editor.floor_none")}],i=this._floorToken;i&&a.push({value:i,label:t(o,"editor.floor_index",{index:String(this._config?.floor)})});const l="string"==typeof this._config?.floor?this._config.floor:"";l&&!e.some(e=>e.value===l)&&a.push({value:l,label:l}),a.push(...e);const n="string"==typeof this._config?.default_floor?this._config.default_floor:"",r=[...e];return n&&!e.some(e=>e.value===n)&&r.unshift({value:n,label:n}),[{name:"title",selector:{text:{}}},{name:"floor",selector:{select:{mode:"dropdown",options:a}}},e.length?{name:"default_floor",selector:{select:{mode:"dropdown",options:r}}}:{name:"default_floor",selector:{text:{}}},{name:"language",selector:{select:{mode:"dropdown",options:s(t(o,"editor.lang_auto"),this._config?.language)}}},{name:"icon_size",selector:{number:{min:1,max:6,step:.1,mode:"box"}}},{name:"show_temperature",selector:{boolean:{}}},{name:"live_states",selector:{boolean:{}}},{name:"show_signal",selector:{boolean:{}}},{name:"kiosk",selector:{boolean:{}}},{name:"cycle",selector:{number:{min:0,max:3600,step:5,mode:"box"}}}]}render(){if(!this.hass||!this._config)return a;const e=i(this,l,o(this.hass,this._config.language));if("cold"===e)return n();if("warm"===e)return r;this._loadSpaces();const s=this._lang,h={title:t(s,"editor.title"),floor:t(s,"editor.floor"),default_floor:t(s,"editor.default_floor"),language:t(s,"editor.language"),icon_size:t(s,"editor.icon_size"),show_temperature:t(s,"editor.show_temperature"),live_states:t(s,"editor.live_states"),show_signal:t(s,"editor.show_signal"),kiosk:t(s,"editor.kiosk"),cycle:t(s,"editor.cycle")},f=this._schema,_=function(e,o,t){if(!t||null===o)return null;const s="string"==typeof e?.default_floor?e.default_floor:"";return!s||o.some(e=>e.value===s)?null:s}(this._config,this._spaces,this._spacesAuthoritative),d=e=>c`<ha-form
.hass=${this.hass}
.data=${this._formData}
.schema=${e}
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7121e2de5173f312895dbfc34e36c4a023158cfe12aa3da9b2bf9dc32745b08d";import{dK as r,dL as t,dM as e}from"./houseplan-card-CD6ogmzP.js";const s={},a=r(class extends t{constructor(){super(...arguments),this.ot=s}render(r,t){return t()}update(r,[t,s]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every((r,t)=>r===this.ot[t]))return e}else if(this.ot===t)return e;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,s)}});export{a as i};
@@ -0,0 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="3a0492fa9202bb2bf9044de0474fdaebd5f994e8ae254e6b84237e395f038752";import{dK as r,dL as e,dM as t}from"./houseplan-card-CuVMw7Vn.js";const s={},a=r(class extends e{constructor(){super(...arguments),this.ot=s}render(r,e){return e()}update(r,[e,s]){if(Array.isArray(e)){if(Array.isArray(this.ot)&&this.ot.length===e.length&&e.every((r,e)=>r===this.ot[e]))return t}else if(this.ot===e)return t;return this.ot=Array.isArray(e)?Array.from(e):e,this.render(e,s)}});export{a as i};
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7121e2de5173f312895dbfc34e36c4a023158cfe12aa3da9b2bf9dc32745b08d";import{n as t,b as n}from"./zigbee-topology-Dc-X8RS-.js";import{F as e}from"./houseplan-card-CD6ogmzP.js";const o=new WeakMap;function i(t){const n=function(t){const n=t?.connection||t;return!n||"object"!=typeof n&&"function"!=typeof n?null:n}(t);if(!n)return null;let e=o.get(n);return e||(e={revision:0,topologies:[],states:{},listeners:new Set,inflight:new Map},o.set(n,e)),e}function r(t,n,e){t.states={...t.states,[n]:e},function(t){t.revision++;for(const n of t.listeners)n()}(t)}function s(t){const n=t?.code;if("permission"===n||"unsupported"===n||"timeout"===n||"invalid_topic"===n||"invalid_payload"===n)return n;const e=String(t?.message||"").toLowerCase();return e.includes("unauthor")||e.includes("permission")?"permission":e.includes("unknown_command")||e.includes("not found")?"unsupported":"provider"}function a(t){return Object.assign(new Error(t),{code:t})}function c(t,n,e){const o=t.inflight.get(n);if(o)return o;r(t,n,{phase:"loading"});const i=e().then(n=>{if(!n.nodes.length&&n.warnings.some(t=>"invalid_payload"===t.code))throw a("invalid_payload");!function(t,n){t.topologies=[...t.topologies.filter(t=>!(t.provider===n.provider&&t.instanceId===n.instanceId)),n],r(t,"zha"===n.provider?"zha":`z2m:${n.instanceId}`,{phase:"ready",obtainedAt:n.obtainedAt,partial:n.warnings.length>0})}(t,n)}).catch(e=>{r(t,n,{phase:"error",error:s(e)})}).finally(()=>t.inflight.delete(n));return t.inflight.set(n,i),i}function l(t){const n=i(t);return n?{revision:n.revision,topologies:n.topologies,states:n.states}:{revision:0,topologies:[],states:{}}}function u(t,n){const e=i(t);return e?(e.listeners.add(n),()=>e.listeners.delete(n)):()=>{}}function f(t){if(!0!==t?.user?.is_admin)throw a("permission")}function p(n){const e=i(n);return e?c(e,"zha",async()=>{if(f(n),"function"!=typeof n?.callWS)throw a("unsupported");return t(await n.callWS({type:"zha/devices"}))}):Promise.resolve()}function d(t){return null!==t&&"object"==typeof t?t:null}function h(t){const n=d(t),e=n?.payload??t;if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}}async function m(t,n){let e;try{return await Promise.race([t,new Promise((t,o)=>{e=globalThis.setTimeout(()=>o(a("timeout")),Math.max(1,n))})])}finally{void 0!==e&&globalThis.clearTimeout(e)}}function g(t,o,r=15e4){const s=i(t);if(!s)return Promise.resolve();const l=e(o);return c(s,`z2m:${l||String(o)}`,async()=>{if(f(t),!l)throw a("invalid_topic");const e=t.connection,o=e?.subscribeMessage;if("function"!=typeof o||"function"!=typeof t?.callService)throw a("unsupported");const i=function(){const t=globalThis.crypto;return"function"==typeof t?.randomUUID?`houseplan-${t.randomUUID()}`:`houseplan-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}(),s=Date.now()+Math.max(1,r);let c=!1,u=null,p=null,g=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{p=t,g=n}),b=[];try{const r=await o.call(e,t=>{!0===d(t)?.retain&&h(t)&&u?.()},{type:"mqtt/subscribe",topic:`${l}/bridge/info`});"function"==typeof r&&b.push(r);const f=await o.call(e,t=>{if(!0===d(t)?.retain)return;const n=h(t);null!==n?n&&function(t){const n=d(t),e=n?.transaction??d(n?.data)?.transaction;return"string"==typeof e||"number"==typeof e?String(e):null}(n)===i&&p?.(n):c&&g?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof f&&b.push(f),await m(y,Math.min(4e3,Math.max(1,s-Date.now()))),c=!0,await t.callService("mqtt","publish",{topic:`${l}/bridge/request/networkmap`,payload:JSON.stringify({type:"raw",routes:!1,transaction:i}),qos:0,retain:!1});const v=await m(w,s-Date.now()),_=d(v)?.status;if(_&&"ok"!==_)throw a("provider");return n(v,l)}finally{for(const t of b)try{t()}catch{}}})}export{p as readZhaTopology,g as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot};
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="3a0492fa9202bb2bf9044de0474fdaebd5f994e8ae254e6b84237e395f038752";import{n as t,b as n}from"./zigbee-topology-D-txRQR2.js";import{F as e}from"./houseplan-card-CuVMw7Vn.js";const o=new WeakMap;function i(t){const n=function(t){const n=t?.connection||t;return!n||"object"!=typeof n&&"function"!=typeof n?null:n}(t);if(!n)return null;let e=o.get(n);return e||(e={revision:0,topologies:[],states:{},listeners:new Set,inflight:new Map},o.set(n,e)),e}function r(t,n,e){t.states={...t.states,[n]:e},function(t){t.revision++;for(const n of t.listeners)n()}(t)}function s(t){const n=t?.code;if("permission"===n||"unsupported"===n||"timeout"===n||"invalid_topic"===n||"invalid_payload"===n)return n;const e=String(t?.message||"").toLowerCase();return e.includes("unauthor")||e.includes("permission")?"permission":e.includes("unknown_command")||e.includes("not found")?"unsupported":"provider"}function a(t){return Object.assign(new Error(t),{code:t})}function c(t,n,e){const o=t.inflight.get(n);if(o)return o;r(t,n,{phase:"loading"});const i=e().then(n=>{if(!n.nodes.length&&n.warnings.some(t=>"invalid_payload"===t.code))throw a("invalid_payload");!function(t,n){t.topologies=[...t.topologies.filter(t=>!(t.provider===n.provider&&t.instanceId===n.instanceId)),n],r(t,"zha"===n.provider?"zha":`z2m:${n.instanceId}`,{phase:"ready",obtainedAt:n.obtainedAt,partial:n.warnings.length>0})}(t,n)}).catch(e=>{r(t,n,{phase:"error",error:s(e)})}).finally(()=>t.inflight.delete(n));return t.inflight.set(n,i),i}function l(t){const n=i(t);return n?{revision:n.revision,topologies:n.topologies,states:n.states}:{revision:0,topologies:[],states:{}}}function u(t,n){const e=i(t);return e?(e.listeners.add(n),()=>e.listeners.delete(n)):()=>{}}function f(t){if(!0!==t?.user?.is_admin)throw a("permission")}function p(n){const e=i(n);return e?c(e,"zha",async()=>{if(f(n),"function"!=typeof n?.callWS)throw a("unsupported");return t(await n.callWS({type:"zha/devices"}))}):Promise.resolve()}function d(t){return null!==t&&"object"==typeof t?t:null}function h(t){const n=d(t),e=n?.payload??t;if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}}async function m(t,n){let e;try{return await Promise.race([t,new Promise((t,o)=>{e=globalThis.setTimeout(()=>o(a("timeout")),Math.max(1,n))})])}finally{void 0!==e&&globalThis.clearTimeout(e)}}function g(t,o,r=15e4){const s=i(t);if(!s)return Promise.resolve();const l=e(o);return c(s,`z2m:${l||String(o)}`,async()=>{if(f(t),!l)throw a("invalid_topic");const e=t.connection,o=e?.subscribeMessage;if("function"!=typeof o||"function"!=typeof t?.callService)throw a("unsupported");const i=function(){const t=globalThis.crypto;return"function"==typeof t?.randomUUID?`houseplan-${t.randomUUID()}`:`houseplan-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}(),s=Date.now()+Math.max(1,r);let c=!1,u=null,p=null,g=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{p=t,g=n}),b=[];try{const r=await o.call(e,t=>{!0===d(t)?.retain&&h(t)&&u?.()},{type:"mqtt/subscribe",topic:`${l}/bridge/info`});"function"==typeof r&&b.push(r);const f=await o.call(e,t=>{if(!0===d(t)?.retain)return;const n=h(t);null!==n?n&&function(t){const n=d(t),e=n?.transaction??d(n?.data)?.transaction;return"string"==typeof e||"number"==typeof e?String(e):null}(n)===i&&p?.(n):c&&g?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof f&&b.push(f),await m(y,Math.min(4e3,Math.max(1,s-Date.now()))),c=!0,await t.callService("mqtt","publish",{topic:`${l}/bridge/request/networkmap`,payload:JSON.stringify({type:"raw",routes:!1,transaction:i}),qos:0,retain:!1});const v=await m(w,s-Date.now()),_=d(v)?.status;if(_&&"ok"!==_)throw a("provider");return n(v,l)}finally{for(const t of b)try{t()}catch{}}})}export{p as readZhaTopology,g as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot};
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7121e2de5173f312895dbfc34e36c4a023158cfe12aa3da9b2bf9dc32745b08d";try{await import("./houseplan-assets/houseplan-card-CD6ogmzP.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 entry: the main chunk is unavailable",e)}
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="3a0492fa9202bb2bf9044de0474fdaebd5f994e8ae254e6b84237e395f038752";try{await import("./houseplan-assets/houseplan-card-CuVMw7Vn.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 entry: the main chunk is unavailable",e)}
+118 -118
View File
@@ -1,251 +1,251 @@
{
"schema": 1,
"fingerprint": "7121e2de5173f312895dbfc34e36c4a023158cfe12aa3da9b2bf9dc32745b08d",
"fingerprint": "3a0492fa9202bb2bf9044de0474fdaebd5f994e8ae254e6b84237e395f038752",
"entry": "houseplan-card.js",
"initialViewFiles": [
"houseplan-assets/houseplan-card-CD6ogmzP.js",
"houseplan-assets/houseplan-card-CuVMw7Vn.js",
"houseplan-card.js"
],
"initialViewGzipBytes": 289621,
"initialViewGzipBytes": 289685,
"lazyFiles": [
"houseplan-assets/backdrop-pick-BVprf77o.js",
"houseplan-assets/de-CUxe_Wr8.js",
"houseplan-assets/editor-DS48qPea.js",
"houseplan-assets/fr-BvUz0PcT.js",
"houseplan-assets/furniture-plan-art.generated-C9Z0GrAQ.js",
"houseplan-assets/guard-BCTQPvjL.js",
"houseplan-assets/houseplan-editor-runtime-5WfQhhMX.js",
"houseplan-assets/houseplan-onboarding-runtime-CVSDbLQS.js",
"houseplan-assets/hp-zigbee-topology-overlay-TDoUjpkK.js",
"houseplan-assets/iso-scene-render-CcGPrfMA.js",
"houseplan-assets/live-interaction-runtime-CWs4Wo4p.js",
"houseplan-assets/pdf-export-c6heqTJW.js",
"houseplan-assets/zigbee-topology-Dc-X8RS-.js",
"houseplan-assets/zigbee-topology-runtime-Df4_JV18.js"
"houseplan-assets/backdrop-pick-DY-qRXwf.js",
"houseplan-assets/de-Bc7ErBgR.js",
"houseplan-assets/editor-Dw09avhX.js",
"houseplan-assets/fr-DddpdcK7.js",
"houseplan-assets/furniture-plan-art.generated-CtQ9RgwF.js",
"houseplan-assets/guard-BvR4QlYm.js",
"houseplan-assets/houseplan-editor-runtime-DmGy2NXj.js",
"houseplan-assets/houseplan-onboarding-runtime-Ue9O8DjD.js",
"houseplan-assets/hp-zigbee-topology-overlay-DZPs2WXf.js",
"houseplan-assets/iso-scene-render-wd0ZrKJ7.js",
"houseplan-assets/live-interaction-runtime-NKvSpfbq.js",
"houseplan-assets/pdf-export-D5_Jy-bA.js",
"houseplan-assets/zigbee-topology-D-txRQR2.js",
"houseplan-assets/zigbee-topology-runtime-pJ7stNkr.js"
],
"lazyGzipBytes": 377423,
"lazyGzipBytes": 377477,
"lazyEditorFiles": [
"houseplan-assets/backdrop-pick-BVprf77o.js",
"houseplan-assets/editor-DS48qPea.js",
"houseplan-assets/furniture-plan-art.generated-C9Z0GrAQ.js",
"houseplan-assets/guard-BCTQPvjL.js",
"houseplan-assets/houseplan-editor-runtime-5WfQhhMX.js",
"houseplan-assets/zigbee-topology-Dc-X8RS-.js"
"houseplan-assets/backdrop-pick-DY-qRXwf.js",
"houseplan-assets/editor-Dw09avhX.js",
"houseplan-assets/furniture-plan-art.generated-CtQ9RgwF.js",
"houseplan-assets/guard-BvR4QlYm.js",
"houseplan-assets/houseplan-editor-runtime-DmGy2NXj.js",
"houseplan-assets/zigbee-topology-D-txRQR2.js"
],
"lazyEditorGzipBytes": 195222,
"lazyEditorGzipBytes": 195227,
"lazyOnboardingFiles": [
"houseplan-assets/backdrop-pick-BVprf77o.js",
"houseplan-assets/houseplan-onboarding-runtime-CVSDbLQS.js"
"houseplan-assets/backdrop-pick-DY-qRXwf.js",
"houseplan-assets/houseplan-onboarding-runtime-Ue9O8DjD.js"
],
"lazyOnboardingGzipBytes": 14324,
"lazyOnboardingGzipBytes": 14327,
"lazyLocaleFiles": [
"houseplan-assets/de-CUxe_Wr8.js",
"houseplan-assets/fr-BvUz0PcT.js"
"houseplan-assets/de-Bc7ErBgR.js",
"houseplan-assets/fr-DddpdcK7.js"
],
"lazyLocaleGzipBytes": 50264,
"lazyLocaleGzipBytes": 50269,
"lazyIsometricFiles": [
"houseplan-assets/guard-BCTQPvjL.js",
"houseplan-assets/iso-scene-render-CcGPrfMA.js"
"houseplan-assets/guard-BvR4QlYm.js",
"houseplan-assets/iso-scene-render-wd0ZrKJ7.js"
],
"lazyIsometricGzipBytes": 13456,
"lazyIsometricGzipBytes": 13454,
"lazyFurnitureArtFiles": [
"houseplan-assets/furniture-plan-art.generated-C9Z0GrAQ.js"
"houseplan-assets/furniture-plan-art.generated-CtQ9RgwF.js"
],
"lazyFurnitureArtGzipBytes": 10253,
"lazyFurnitureArtGzipBytes": 10254,
"lazyPdfFiles": [
"houseplan-assets/furniture-plan-art.generated-C9Z0GrAQ.js",
"houseplan-assets/pdf-export-c6heqTJW.js"
"houseplan-assets/furniture-plan-art.generated-CtQ9RgwF.js",
"houseplan-assets/pdf-export-D5_Jy-bA.js"
],
"lazyPdfGzipBytes": 114513,
"lazyPdfGzipBytes": 114554,
"files": [
{
"path": "houseplan-assets/backdrop-pick-BVprf77o.js",
"sha256": "109a93c71c255fb3f11d8f53c5e41434cc46c41ecf52d93a7ea7eda9c2efe961",
"path": "houseplan-assets/backdrop-pick-DY-qRXwf.js",
"sha256": "c7665847068d4619f5a13a0eced53a1065b553e6d12e1f682da00bb46eb56b12",
"rawBytes": 21592,
"gzipBytes": 7356,
"gzipBytes": 7357,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-CD6ogmzP.js"
"houseplan-assets/houseplan-card-CuVMw7Vn.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/de-CUxe_Wr8.js",
"sha256": "3e8245ba8a345de74a8cae2728328b06460d165eaa6e62a8ed7e461a5b4b705e",
"path": "houseplan-assets/de-Bc7ErBgR.js",
"sha256": "bf12b279a47df5212552c7132655f3969c77992224164d7007024853eb6d71f2",
"rawBytes": 84320,
"gzipBytes": 25375,
"gzipBytes": 25377,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/editor-DS48qPea.js",
"sha256": "bb942e99d8304affb21fdc240c40d1a477a38b75ac3d4a6019cc25fc43c9a941",
"path": "houseplan-assets/editor-Dw09avhX.js",
"sha256": "20f56cdf95698a97a8ea48c4d24e10d950a51c35bae59fe2a7c5193ee4281f3f",
"rawBytes": 3837,
"gzipBytes": 1588,
"gzipBytes": 1589,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-CD6ogmzP.js"
"houseplan-assets/houseplan-card-CuVMw7Vn.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/fr-BvUz0PcT.js",
"sha256": "70b831f48fb74bcff54807abd61de908c00a95b50b58a1ad1d8479dd377ace1d",
"path": "houseplan-assets/fr-DddpdcK7.js",
"sha256": "69e5844cd31c51b30672d71e3169435755b2901fe093246c29e324abe84bd867",
"rawBytes": 86352,
"gzipBytes": 24889,
"gzipBytes": 24892,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/furniture-plan-art.generated-C9Z0GrAQ.js",
"sha256": "d38356900bf356e04ccd54dd24cc107e5158975223e628470d4c02dea6df9301",
"path": "houseplan-assets/furniture-plan-art.generated-CtQ9RgwF.js",
"sha256": "962a1ab2d07caaa6f7e29e70d364260b92b85135eb0eae829334ccf52628be71",
"rawBytes": 33655,
"gzipBytes": 10253,
"gzipBytes": 10254,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/guard-BCTQPvjL.js",
"sha256": "c093baa3fa7d4637bc4327e69e28bbac6bbb4b55bf6d4fa1457f1acb425ab2ee",
"path": "houseplan-assets/guard-BvR4QlYm.js",
"sha256": "79411d6bb6b08b3949d7320a62fc1077c929d650a7725912ebfdb5c221e6a827",
"rawBytes": 518,
"gzipBytes": 370,
"gzipBytes": 368,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-CD6ogmzP.js"
"houseplan-assets/houseplan-card-CuVMw7Vn.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-card-CD6ogmzP.js",
"sha256": "244aaba108eda419305e5ef2c36814f7825b4fd8c6caa5d41ce09805ff425847",
"rawBytes": 1041059,
"gzipBytes": 288826,
"path": "houseplan-assets/houseplan-card-CuVMw7Vn.js",
"sha256": "e619c9c4340bb5d3a3ecbe3c9e0857540860559aa5b0b2097b00208b24f6e8bb",
"rawBytes": 1041196,
"gzipBytes": 288889,
"isEntry": false,
"imports": [],
"dynamicImports": [
"houseplan-assets/de-CUxe_Wr8.js",
"houseplan-assets/editor-DS48qPea.js",
"houseplan-assets/fr-BvUz0PcT.js",
"houseplan-assets/furniture-plan-art.generated-C9Z0GrAQ.js",
"houseplan-assets/houseplan-editor-runtime-5WfQhhMX.js",
"houseplan-assets/houseplan-onboarding-runtime-CVSDbLQS.js",
"houseplan-assets/hp-zigbee-topology-overlay-TDoUjpkK.js",
"houseplan-assets/iso-scene-render-CcGPrfMA.js",
"houseplan-assets/live-interaction-runtime-CWs4Wo4p.js",
"houseplan-assets/pdf-export-c6heqTJW.js"
"houseplan-assets/de-Bc7ErBgR.js",
"houseplan-assets/editor-Dw09avhX.js",
"houseplan-assets/fr-DddpdcK7.js",
"houseplan-assets/furniture-plan-art.generated-CtQ9RgwF.js",
"houseplan-assets/houseplan-editor-runtime-DmGy2NXj.js",
"houseplan-assets/houseplan-onboarding-runtime-Ue9O8DjD.js",
"houseplan-assets/hp-zigbee-topology-overlay-DZPs2WXf.js",
"houseplan-assets/iso-scene-render-wd0ZrKJ7.js",
"houseplan-assets/live-interaction-runtime-NKvSpfbq.js",
"houseplan-assets/pdf-export-D5_Jy-bA.js"
]
},
{
"path": "houseplan-assets/houseplan-editor-runtime-5WfQhhMX.js",
"sha256": "e3f73b3ba26282703e377f234132da39565f6f844db2db61b11c3c0576bb2e06",
"path": "houseplan-assets/houseplan-editor-runtime-DmGy2NXj.js",
"sha256": "e8d90b0fde28be61f22ec48567f8bb83ad22ff9359761fc31256276faed7599f",
"rawBytes": 631884,
"gzipBytes": 168230,
"gzipBytes": 168233,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-BVprf77o.js",
"houseplan-assets/furniture-plan-art.generated-C9Z0GrAQ.js",
"houseplan-assets/guard-BCTQPvjL.js",
"houseplan-assets/houseplan-card-CD6ogmzP.js",
"houseplan-assets/zigbee-topology-Dc-X8RS-.js"
"houseplan-assets/backdrop-pick-DY-qRXwf.js",
"houseplan-assets/furniture-plan-art.generated-CtQ9RgwF.js",
"houseplan-assets/guard-BvR4QlYm.js",
"houseplan-assets/houseplan-card-CuVMw7Vn.js",
"houseplan-assets/zigbee-topology-D-txRQR2.js"
],
"dynamicImports": [
"houseplan-assets/zigbee-topology-runtime-Df4_JV18.js"
"houseplan-assets/zigbee-topology-runtime-pJ7stNkr.js"
]
},
{
"path": "houseplan-assets/houseplan-onboarding-runtime-CVSDbLQS.js",
"sha256": "30cf8e28f045e1b0ada0ff9d59741189069a23acc88207097fd3c3cd4bc5350b",
"path": "houseplan-assets/houseplan-onboarding-runtime-Ue9O8DjD.js",
"sha256": "73a01da4d744736725f9bb838b8bd596405d463c568a2719225394239ba24fd3",
"rawBytes": 28071,
"gzipBytes": 6968,
"gzipBytes": 6970,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-BVprf77o.js",
"houseplan-assets/houseplan-card-CD6ogmzP.js"
"houseplan-assets/backdrop-pick-DY-qRXwf.js",
"houseplan-assets/houseplan-card-CuVMw7Vn.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/hp-zigbee-topology-overlay-TDoUjpkK.js",
"sha256": "ad7660503f5a5102ca082b610a9e632d8ccacd8f778ca562092cea3a20e60883",
"path": "houseplan-assets/hp-zigbee-topology-overlay-DZPs2WXf.js",
"sha256": "24ae099c337079e7ede517721cabd0fd3a45bc4ed4769edf00fd37f41f64442b",
"rawBytes": 11034,
"gzipBytes": 3732,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-CD6ogmzP.js",
"houseplan-assets/zigbee-topology-Dc-X8RS-.js",
"houseplan-assets/zigbee-topology-runtime-Df4_JV18.js"
"houseplan-assets/houseplan-card-CuVMw7Vn.js",
"houseplan-assets/zigbee-topology-D-txRQR2.js",
"houseplan-assets/zigbee-topology-runtime-pJ7stNkr.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/iso-scene-render-CcGPrfMA.js",
"sha256": "fdc0c66b18645fcf610b800765a5a8dadbfa5c87788f317f0066667b705fe113",
"path": "houseplan-assets/iso-scene-render-wd0ZrKJ7.js",
"sha256": "4a586751d18d284c8b9712f55f43b1e2b44c99f9ad7c17b782719e3fad84a0e2",
"rawBytes": 38562,
"gzipBytes": 13086,
"isEntry": false,
"imports": [
"houseplan-assets/guard-BCTQPvjL.js",
"houseplan-assets/houseplan-card-CD6ogmzP.js"
"houseplan-assets/guard-BvR4QlYm.js",
"houseplan-assets/houseplan-card-CuVMw7Vn.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/live-interaction-runtime-CWs4Wo4p.js",
"sha256": "0a48794048f8c42ab9da796f3fd6587508ce33124997a55c769983672266f477",
"path": "houseplan-assets/live-interaction-runtime-NKvSpfbq.js",
"sha256": "f93bea4b19b5b17a1a3dc191b163e039706a641afbb2db426e9a911dda7ccb67",
"rawBytes": 5196,
"gzipBytes": 2128,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-CD6ogmzP.js"
"houseplan-assets/houseplan-card-CuVMw7Vn.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/pdf-export-c6heqTJW.js",
"sha256": "34b29083a7a29208cda45cb6cdb256e878d3ac376f2a612c4e5bf0cef9ebd8b4",
"rawBytes": 220566,
"gzipBytes": 104260,
"path": "houseplan-assets/pdf-export-D5_Jy-bA.js",
"sha256": "16a055c401c84583a528440e083525dba3409e290eafc22095e0c86a38b07ddf",
"rawBytes": 220678,
"gzipBytes": 104300,
"isEntry": false,
"imports": [
"houseplan-assets/furniture-plan-art.generated-C9Z0GrAQ.js",
"houseplan-assets/houseplan-card-CD6ogmzP.js"
"houseplan-assets/furniture-plan-art.generated-CtQ9RgwF.js",
"houseplan-assets/houseplan-card-CuVMw7Vn.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/zigbee-topology-Dc-X8RS-.js",
"sha256": "8acbd5e69e8acc3de608f541b9b1e08204acf58491a435a67055a69a94ec6501",
"path": "houseplan-assets/zigbee-topology-D-txRQR2.js",
"sha256": "edd6b1b96296664350d84ec12166db38a5dbab7db02ad5e8a4e3b9f68a8b1cd3",
"rawBytes": 18961,
"gzipBytes": 7425,
"gzipBytes": 7426,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-CD6ogmzP.js"
"houseplan-assets/houseplan-card-CuVMw7Vn.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/zigbee-topology-runtime-Df4_JV18.js",
"sha256": "a58455e8dd97fbcb375c43fa6686d87e62cd66c9d8a5e00a43c788d12f4d350b",
"path": "houseplan-assets/zigbee-topology-runtime-pJ7stNkr.js",
"sha256": "024e37a60c706965fa9ec55833e5458c83648e24bd7b8be5400e2ad53d2ced00",
"rawBytes": 3941,
"gzipBytes": 1763,
"gzipBytes": 1765,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-CD6ogmzP.js",
"houseplan-assets/zigbee-topology-Dc-X8RS-.js"
"houseplan-assets/houseplan-card-CuVMw7Vn.js",
"houseplan-assets/zigbee-topology-D-txRQR2.js"
],
"dynamicImports": []
},
{
"path": "houseplan-card.js",
"sha256": "23848ec210ec0b24d702fd39e5292435ad1ac2a2070a9d968435886d09444327",
"sha256": "046c4f4f2309964615fa7129cc95eaf7a8924451ebdc18cc34e83841435fbbdb",
"rawBytes": 1183,
"gzipBytes": 795,
"gzipBytes": 796,
"isEntry": true,
"imports": [
"houseplan-assets/houseplan-card-CD6ogmzP.js"
"houseplan-assets/houseplan-card-CuVMw7Vn.js"
],
"dynamicImports": []
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7121e2de5173f312895dbfc34e36c4a023158cfe12aa3da9b2bf9dc32745b08d";import{t as e,l as o,x as t,dV as s,A as a,dW as i,dX as l,dY as n,dM as r,b as c}from"./houseplan-card-CD6ogmzP.js";class h extends e{constructor(){super(...arguments),this._spaces=null,this._spacesLoading=!1,this._spacesAuthoritative=!1}setConfig(e){this._config=e}async _loadSpaces(){if(!this._spaces&&!this._spacesLoading&&this.hass){this._spacesLoading=!0;try{const e=await this.hass.callWS({type:"houseplan/config/get"});this._spaces=(e?.config?.spaces||[]).map(e=>({value:e.id,label:e.title||e.id})),this._spacesAuthoritative=!0}catch{this._spaces=[],this._spacesAuthoritative=!1}finally{this._spacesLoading=!1}}}get _lang(){return o(this.hass,this._config?.language)}get _floorToken(){const e=this._config?.floor;return"number"==typeof e?`__houseplan_yaml_floor_index__:${String(e)}`:null}get _formData(){const e={...this._config},o=this._floorToken;return o?e.floor=o:Object.prototype.hasOwnProperty.call(e,"floor")||(e.floor=""),e}get _schema(){const e=this._spaces||[],o=this._lang,a=[{value:"",label:t(o,"editor.floor_none")}],i=this._floorToken;i&&a.push({value:i,label:t(o,"editor.floor_index",{index:String(this._config?.floor)})});const l="string"==typeof this._config?.floor?this._config.floor:"";l&&!e.some(e=>e.value===l)&&a.push({value:l,label:l}),a.push(...e);const n="string"==typeof this._config?.default_floor?this._config.default_floor:"",r=[...e];return n&&!e.some(e=>e.value===n)&&r.unshift({value:n,label:n}),[{name:"title",selector:{text:{}}},{name:"floor",selector:{select:{mode:"dropdown",options:a}}},e.length?{name:"default_floor",selector:{select:{mode:"dropdown",options:r}}}:{name:"default_floor",selector:{text:{}}},{name:"language",selector:{select:{mode:"dropdown",options:s(t(o,"editor.lang_auto"),this._config?.language)}}},{name:"icon_size",selector:{number:{min:1,max:6,step:.1,mode:"box"}}},{name:"show_temperature",selector:{boolean:{}}},{name:"live_states",selector:{boolean:{}}},{name:"show_signal",selector:{boolean:{}}},{name:"kiosk",selector:{boolean:{}}},{name:"cycle",selector:{number:{min:0,max:3600,step:5,mode:"box"}}}]}render(){if(!this.hass||!this._config)return a;const e=i(this,l,o(this.hass,this._config.language));if("cold"===e)return n();if("warm"===e)return r;this._loadSpaces();const s=this._lang,h={title:t(s,"editor.title"),floor:t(s,"editor.floor"),default_floor:t(s,"editor.default_floor"),language:t(s,"editor.language"),icon_size:t(s,"editor.icon_size"),show_temperature:t(s,"editor.show_temperature"),live_states:t(s,"editor.live_states"),show_signal:t(s,"editor.show_signal"),kiosk:t(s,"editor.kiosk"),cycle:t(s,"editor.cycle")},f=this._schema,_=function(e,o,t){if(!t||null===o)return null;const s="string"==typeof e?.default_floor?e.default_floor:"";return!s||o.some(e=>e.value===s)?null:s}(this._config,this._spaces,this._spacesAuthoritative),d=e=>c`<ha-form
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="3a0492fa9202bb2bf9044de0474fdaebd5f994e8ae254e6b84237e395f038752";import{t as e,l as o,x as t,dV as s,A as a,dW as i,dX as l,dY as n,dM as r,b as c}from"./houseplan-card-CuVMw7Vn.js";class h extends e{constructor(){super(...arguments),this._spaces=null,this._spacesLoading=!1,this._spacesAuthoritative=!1}setConfig(e){this._config=e}async _loadSpaces(){if(!this._spaces&&!this._spacesLoading&&this.hass){this._spacesLoading=!0;try{const e=await this.hass.callWS({type:"houseplan/config/get"});this._spaces=(e?.config?.spaces||[]).map(e=>({value:e.id,label:e.title||e.id})),this._spacesAuthoritative=!0}catch{this._spaces=[],this._spacesAuthoritative=!1}finally{this._spacesLoading=!1}}}get _lang(){return o(this.hass,this._config?.language)}get _floorToken(){const e=this._config?.floor;return"number"==typeof e?`__houseplan_yaml_floor_index__:${String(e)}`:null}get _formData(){const e={...this._config},o=this._floorToken;return o?e.floor=o:Object.prototype.hasOwnProperty.call(e,"floor")||(e.floor=""),e}get _schema(){const e=this._spaces||[],o=this._lang,a=[{value:"",label:t(o,"editor.floor_none")}],i=this._floorToken;i&&a.push({value:i,label:t(o,"editor.floor_index",{index:String(this._config?.floor)})});const l="string"==typeof this._config?.floor?this._config.floor:"";l&&!e.some(e=>e.value===l)&&a.push({value:l,label:l}),a.push(...e);const n="string"==typeof this._config?.default_floor?this._config.default_floor:"",r=[...e];return n&&!e.some(e=>e.value===n)&&r.unshift({value:n,label:n}),[{name:"title",selector:{text:{}}},{name:"floor",selector:{select:{mode:"dropdown",options:a}}},e.length?{name:"default_floor",selector:{select:{mode:"dropdown",options:r}}}:{name:"default_floor",selector:{text:{}}},{name:"language",selector:{select:{mode:"dropdown",options:s(t(o,"editor.lang_auto"),this._config?.language)}}},{name:"icon_size",selector:{number:{min:1,max:6,step:.1,mode:"box"}}},{name:"show_temperature",selector:{boolean:{}}},{name:"live_states",selector:{boolean:{}}},{name:"show_signal",selector:{boolean:{}}},{name:"kiosk",selector:{boolean:{}}},{name:"cycle",selector:{number:{min:0,max:3600,step:5,mode:"box"}}}]}render(){if(!this.hass||!this._config)return a;const e=i(this,l,o(this.hass,this._config.language));if("cold"===e)return n();if("warm"===e)return r;this._loadSpaces();const s=this._lang,h={title:t(s,"editor.title"),floor:t(s,"editor.floor"),default_floor:t(s,"editor.default_floor"),language:t(s,"editor.language"),icon_size:t(s,"editor.icon_size"),show_temperature:t(s,"editor.show_temperature"),live_states:t(s,"editor.live_states"),show_signal:t(s,"editor.show_signal"),kiosk:t(s,"editor.kiosk"),cycle:t(s,"editor.cycle")},f=this._schema,_=function(e,o,t){if(!t||null===o)return null;const s="string"==typeof e?.default_floor?e.default_floor:"";return!s||o.some(e=>e.value===s)?null:s}(this._config,this._spaces,this._spacesAuthoritative),d=e=>c`<ha-form
.hass=${this.hass}
.data=${this._formData}
.schema=${e}
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7121e2de5173f312895dbfc34e36c4a023158cfe12aa3da9b2bf9dc32745b08d";import{dK as r,dL as t,dM as e}from"./houseplan-card-CD6ogmzP.js";const s={},a=r(class extends t{constructor(){super(...arguments),this.ot=s}render(r,t){return t()}update(r,[t,s]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every((r,t)=>r===this.ot[t]))return e}else if(this.ot===t)return e;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,s)}});export{a as i};
+1
View File
@@ -0,0 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="3a0492fa9202bb2bf9044de0474fdaebd5f994e8ae254e6b84237e395f038752";import{dK as r,dL as e,dM as t}from"./houseplan-card-CuVMw7Vn.js";const s={},a=r(class extends e{constructor(){super(...arguments),this.ot=s}render(r,e){return e()}update(r,[e,s]){if(Array.isArray(e)){if(Array.isArray(this.ot)&&this.ot.length===e.length&&e.every((r,e)=>r===this.ot[e]))return t}else if(this.ot===e)return t;return this.ot=Array.isArray(e)?Array.from(e):e,this.render(e,s)}});export{a as i};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7121e2de5173f312895dbfc34e36c4a023158cfe12aa3da9b2bf9dc32745b08d";import{n as t,b as n}from"./zigbee-topology-Dc-X8RS-.js";import{F as e}from"./houseplan-card-CD6ogmzP.js";const o=new WeakMap;function i(t){const n=function(t){const n=t?.connection||t;return!n||"object"!=typeof n&&"function"!=typeof n?null:n}(t);if(!n)return null;let e=o.get(n);return e||(e={revision:0,topologies:[],states:{},listeners:new Set,inflight:new Map},o.set(n,e)),e}function r(t,n,e){t.states={...t.states,[n]:e},function(t){t.revision++;for(const n of t.listeners)n()}(t)}function s(t){const n=t?.code;if("permission"===n||"unsupported"===n||"timeout"===n||"invalid_topic"===n||"invalid_payload"===n)return n;const e=String(t?.message||"").toLowerCase();return e.includes("unauthor")||e.includes("permission")?"permission":e.includes("unknown_command")||e.includes("not found")?"unsupported":"provider"}function a(t){return Object.assign(new Error(t),{code:t})}function c(t,n,e){const o=t.inflight.get(n);if(o)return o;r(t,n,{phase:"loading"});const i=e().then(n=>{if(!n.nodes.length&&n.warnings.some(t=>"invalid_payload"===t.code))throw a("invalid_payload");!function(t,n){t.topologies=[...t.topologies.filter(t=>!(t.provider===n.provider&&t.instanceId===n.instanceId)),n],r(t,"zha"===n.provider?"zha":`z2m:${n.instanceId}`,{phase:"ready",obtainedAt:n.obtainedAt,partial:n.warnings.length>0})}(t,n)}).catch(e=>{r(t,n,{phase:"error",error:s(e)})}).finally(()=>t.inflight.delete(n));return t.inflight.set(n,i),i}function l(t){const n=i(t);return n?{revision:n.revision,topologies:n.topologies,states:n.states}:{revision:0,topologies:[],states:{}}}function u(t,n){const e=i(t);return e?(e.listeners.add(n),()=>e.listeners.delete(n)):()=>{}}function f(t){if(!0!==t?.user?.is_admin)throw a("permission")}function p(n){const e=i(n);return e?c(e,"zha",async()=>{if(f(n),"function"!=typeof n?.callWS)throw a("unsupported");return t(await n.callWS({type:"zha/devices"}))}):Promise.resolve()}function d(t){return null!==t&&"object"==typeof t?t:null}function h(t){const n=d(t),e=n?.payload??t;if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}}async function m(t,n){let e;try{return await Promise.race([t,new Promise((t,o)=>{e=globalThis.setTimeout(()=>o(a("timeout")),Math.max(1,n))})])}finally{void 0!==e&&globalThis.clearTimeout(e)}}function g(t,o,r=15e4){const s=i(t);if(!s)return Promise.resolve();const l=e(o);return c(s,`z2m:${l||String(o)}`,async()=>{if(f(t),!l)throw a("invalid_topic");const e=t.connection,o=e?.subscribeMessage;if("function"!=typeof o||"function"!=typeof t?.callService)throw a("unsupported");const i=function(){const t=globalThis.crypto;return"function"==typeof t?.randomUUID?`houseplan-${t.randomUUID()}`:`houseplan-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}(),s=Date.now()+Math.max(1,r);let c=!1,u=null,p=null,g=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{p=t,g=n}),b=[];try{const r=await o.call(e,t=>{!0===d(t)?.retain&&h(t)&&u?.()},{type:"mqtt/subscribe",topic:`${l}/bridge/info`});"function"==typeof r&&b.push(r);const f=await o.call(e,t=>{if(!0===d(t)?.retain)return;const n=h(t);null!==n?n&&function(t){const n=d(t),e=n?.transaction??d(n?.data)?.transaction;return"string"==typeof e||"number"==typeof e?String(e):null}(n)===i&&p?.(n):c&&g?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof f&&b.push(f),await m(y,Math.min(4e3,Math.max(1,s-Date.now()))),c=!0,await t.callService("mqtt","publish",{topic:`${l}/bridge/request/networkmap`,payload:JSON.stringify({type:"raw",routes:!1,transaction:i}),qos:0,retain:!1});const v=await m(w,s-Date.now()),_=d(v)?.status;if(_&&"ok"!==_)throw a("provider");return n(v,l)}finally{for(const t of b)try{t()}catch{}}})}export{p as readZhaTopology,g as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot};
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="3a0492fa9202bb2bf9044de0474fdaebd5f994e8ae254e6b84237e395f038752";import{n as t,b as n}from"./zigbee-topology-D-txRQR2.js";import{F as e}from"./houseplan-card-CuVMw7Vn.js";const o=new WeakMap;function i(t){const n=function(t){const n=t?.connection||t;return!n||"object"!=typeof n&&"function"!=typeof n?null:n}(t);if(!n)return null;let e=o.get(n);return e||(e={revision:0,topologies:[],states:{},listeners:new Set,inflight:new Map},o.set(n,e)),e}function r(t,n,e){t.states={...t.states,[n]:e},function(t){t.revision++;for(const n of t.listeners)n()}(t)}function s(t){const n=t?.code;if("permission"===n||"unsupported"===n||"timeout"===n||"invalid_topic"===n||"invalid_payload"===n)return n;const e=String(t?.message||"").toLowerCase();return e.includes("unauthor")||e.includes("permission")?"permission":e.includes("unknown_command")||e.includes("not found")?"unsupported":"provider"}function a(t){return Object.assign(new Error(t),{code:t})}function c(t,n,e){const o=t.inflight.get(n);if(o)return o;r(t,n,{phase:"loading"});const i=e().then(n=>{if(!n.nodes.length&&n.warnings.some(t=>"invalid_payload"===t.code))throw a("invalid_payload");!function(t,n){t.topologies=[...t.topologies.filter(t=>!(t.provider===n.provider&&t.instanceId===n.instanceId)),n],r(t,"zha"===n.provider?"zha":`z2m:${n.instanceId}`,{phase:"ready",obtainedAt:n.obtainedAt,partial:n.warnings.length>0})}(t,n)}).catch(e=>{r(t,n,{phase:"error",error:s(e)})}).finally(()=>t.inflight.delete(n));return t.inflight.set(n,i),i}function l(t){const n=i(t);return n?{revision:n.revision,topologies:n.topologies,states:n.states}:{revision:0,topologies:[],states:{}}}function u(t,n){const e=i(t);return e?(e.listeners.add(n),()=>e.listeners.delete(n)):()=>{}}function f(t){if(!0!==t?.user?.is_admin)throw a("permission")}function p(n){const e=i(n);return e?c(e,"zha",async()=>{if(f(n),"function"!=typeof n?.callWS)throw a("unsupported");return t(await n.callWS({type:"zha/devices"}))}):Promise.resolve()}function d(t){return null!==t&&"object"==typeof t?t:null}function h(t){const n=d(t),e=n?.payload??t;if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}}async function m(t,n){let e;try{return await Promise.race([t,new Promise((t,o)=>{e=globalThis.setTimeout(()=>o(a("timeout")),Math.max(1,n))})])}finally{void 0!==e&&globalThis.clearTimeout(e)}}function g(t,o,r=15e4){const s=i(t);if(!s)return Promise.resolve();const l=e(o);return c(s,`z2m:${l||String(o)}`,async()=>{if(f(t),!l)throw a("invalid_topic");const e=t.connection,o=e?.subscribeMessage;if("function"!=typeof o||"function"!=typeof t?.callService)throw a("unsupported");const i=function(){const t=globalThis.crypto;return"function"==typeof t?.randomUUID?`houseplan-${t.randomUUID()}`:`houseplan-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}(),s=Date.now()+Math.max(1,r);let c=!1,u=null,p=null,g=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{p=t,g=n}),b=[];try{const r=await o.call(e,t=>{!0===d(t)?.retain&&h(t)&&u?.()},{type:"mqtt/subscribe",topic:`${l}/bridge/info`});"function"==typeof r&&b.push(r);const f=await o.call(e,t=>{if(!0===d(t)?.retain)return;const n=h(t);null!==n?n&&function(t){const n=d(t),e=n?.transaction??d(n?.data)?.transaction;return"string"==typeof e||"number"==typeof e?String(e):null}(n)===i&&p?.(n):c&&g?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof f&&b.push(f),await m(y,Math.min(4e3,Math.max(1,s-Date.now()))),c=!0,await t.callService("mqtt","publish",{topic:`${l}/bridge/request/networkmap`,payload:JSON.stringify({type:"raw",routes:!1,transaction:i}),qos:0,retain:!1});const v=await m(w,s-Date.now()),_=d(v)?.status;if(_&&"ok"!==_)throw a("provider");return n(v,l)}finally{for(const t of b)try{t()}catch{}}})}export{p as readZhaTopology,g as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot};
+1 -1
View File
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="7121e2de5173f312895dbfc34e36c4a023158cfe12aa3da9b2bf9dc32745b08d";try{await import("./houseplan-assets/houseplan-card-CD6ogmzP.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 entry: the main chunk is unavailable",e)}
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="3a0492fa9202bb2bf9044de0474fdaebd5f994e8ae254e6b84237e395f038752";try{await import("./houseplan-assets/houseplan-card-CuVMw7Vn.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 entry: the main chunk is unavailable",e)}
+1 -1
View File
@@ -357,7 +357,7 @@ View. `localStorage` — единственное новое состояние,
## 15. Производительность и безопасность
Генерация — синхронный расчёт сцены из уже построенных видимой карточкой
кэшей стен и чистых контуров комнат (< 200 мс CPU для одного текущего
кэшей стен, чистых контуров и чистых площадей комнат (< 200 мс CPU для одного текущего
пространства `large-house`: 20 комнат и относящиеся к этому пространству
перегородки, колонны и декор; проверяется в unit как порог) плюс асинхронная
растеризация подложки. Ничего не уходит в сеть, кроме загрузки чанка и
+5
View File
@@ -10690,6 +10690,7 @@ export class HouseplanCard extends LitElement {
}
const sharedWallGeometry = this._wallUnionGeometry();
const openCuts = this._openCuts();
const roomsById = new Map(space.rooms.flatMap((room) => room.id ? [[room.id, room]] : []));
return runtime.render({
config: this._serverCfg,
rawSpace,
@@ -10705,6 +10706,10 @@ export class HouseplanCard extends LitElement {
resolveInnerContour: (roomId) => this._innerRoomContour(
space, roomId, openCuts, sharedWallGeometry?.roomGeom, sharedWallGeometry?.multiWallNodes,
),
resolveRoomArea: (roomId, contour) => {
const room = roomsById.get(roomId);
return room ? this._cleanFloor(room, contour, space).area : undefined;
},
t: (key, vars) => this._t(key as I18nKey, vars),
toast: (message) => this._showToast(message),
close: () => { this._pdfDialog = false; this.requestUpdate(); },
+1
View File
@@ -19,6 +19,7 @@ export interface PdfDialogContext {
decorAssets: ReadonlyMap<string, PdfAssetReference>;
sharedWallGeometry?: PdfSharedWallGeometry | null;
resolveInnerContour?: (roomId: string) => number[][] | null | undefined;
resolveRoomArea?: (roomId: string, contour: number[][]) => number | undefined;
t: (key: string, vars?: Record<string, string | number>) => string;
toast: (message: string) => void;
close: () => void;
+9 -3
View File
@@ -70,6 +70,8 @@ export interface PdfSceneInput {
sharedWallGeometry?: PdfSharedWallGeometry | null;
/** The visible card's per-room clean-floor cache, resolved only when dimensions are requested. */
resolveInnerContour?: (roomId: string) => number[][] | null | undefined;
/** Area in render units from the same clean-floor cache used by the visible card. */
resolveRoomArea?: (roomId: string, contour: number[][]) => number | undefined;
}
const MM = 72 / 25.4;
@@ -383,11 +385,15 @@ export function buildPdfPage(input: PdfSceneInput): PdfPage & { scale: number }
const original = roomPoly(room);
if (!original) continue;
const contour = dimensionContours.get(room) || original;
const localBodies = input.options.dimensions
const cachedArea = input.options.dimensions && room.id
? input.resolveRoomArea?.(room.id, contour) : undefined;
const localBodies = input.options.dimensions && !Number.isFinite(cachedArea)
? bodiesOverlappingRing(contour, built.extras) : [];
const candidates = localBodies.length ? floorMinusBodies(contour, localBodies) : null;
const areaUnits = candidates ? geometryArea(candidates) : Math.abs(
contour.reduce((sum, p, i) => { const q = contour[(i + 1) % contour.length]; return sum + p[0] * q[1] - q[0] * p[1]; }, 0) / 2);
const areaUnits = Number.isFinite(cachedArea) && (cachedArea as number) >= 0
? cachedArea as number
: candidates ? geometryArea(candidates) : Math.abs(
contour.reduce((sum, p, i) => { const q = contour[(i + 1) % contour.length]; return sum + p[0] * q[1] - q[0] * p[1]; }, 0) / 2);
const label = labelPos(room, input.space.id, input.layout, input.config);
const [labelX, labelY] = pt([label.x, label.y]);
const pageContour = contour.map(pt);
+16 -1
View File
@@ -4,7 +4,7 @@ import { buildPdfPage } from '../test-build/pdf/pdf-scene.js';
import { stableDimensionEdges } from '../test-build/pdf/pdf-dimensions.js';
import { makeLargeHouseFixture } from '../demo/fixtures/large-house.mjs';
import { fixtureWallKey } from '../demo/fixtures/wall-key.mjs';
import { physicalBodyParts } from '../test-build/physical-geometry.js';
import { floorMinusBodies, geometryArea, physicalBodyParts } from '../test-build/physical-geometry.js';
import {
geometryOpenings, geometryPartitionOpeningCuts, geometryRoomOpeningInputs,
} from '../test-build/plan-geometry-preflight.js';
@@ -211,11 +211,21 @@ test('current 20-room large-house space builds from the visible geometry cache u
largeSpace.rooms, room.id, largeRaw.walls, zero.contour, GRID_STEP_N,
cellCm, GRID_PITCH, NORM_W, sharedWallGeometry.roomGeom, sharedWallGeometry.multiWallNodes,
)]));
const roomAreas = new Map(largeSpace.rooms.map((room) => {
const contour = innerContours.get(room.id);
const cleaned = extras.length ? floorMinusBodies(contour, extras) : null;
const area = cleaned ? geometryArea(cleaned) : Math.abs(contour.reduce((sum, point, index) => {
const next = contour[(index + 1) % contour.length];
return sum + point[0] * next[1] - next[0] * point[1];
}, 0) / 2);
return [room.id, area];
}));
// The full suite runs test files concurrently on CI. Measuring wall time here would
// count periods when this worker is descheduled, so use the CPU consumed by the
// scene build itself while keeping the agreed 200 ms product budget unchanged.
const started = process.cpuUsage();
let contourCacheReads = 0;
let areaCacheReads = 0;
buildPdfPage({
config: largeConfig, rawSpace: largeRaw, space: largeSpace, layout: fixture.layout,
sharedWallGeometry,
@@ -223,6 +233,10 @@ test('current 20-room large-house space builds from the visible geometry cache u
contourCacheReads++;
return innerContours.get(roomId);
},
resolveRoomArea: (roomId) => {
areaCacheReads++;
return roomAreas.get(roomId);
},
options: { dimensions: true, roomNames: true, decor: true, backdrop: false },
imperial: false, cardTitle: 'House', version: 'test',
now: new Date('2026-09-07T00:00:00Z'), t,
@@ -230,5 +244,6 @@ test('current 20-room large-house space builds from the visible geometry cache u
const elapsed = process.cpuUsage(started);
const elapsedMs = (elapsed.user + elapsed.system) / 1000;
assert.equal(contourCacheReads, largeSpace.rooms.length);
assert.equal(areaCacheReads, largeSpace.rooms.length);
assert.ok(elapsedMs < 200, `PDF scene build used ${elapsedMs.toFixed(1)} ms of CPU`);
});