@matter-server/dashboard 0.2.0-alpha.0-00000000-000000000
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +11 -0
- package/dist/esm/client/client-context.d.ts +10 -0
- package/dist/esm/client/client-context.d.ts.map +1 -0
- package/dist/esm/client/client-context.js +11 -0
- package/dist/esm/client/client-context.js.map +6 -0
- package/dist/esm/client/models/descriptions.d.ts +20 -0
- package/dist/esm/client/models/descriptions.d.ts.map +1 -0
- package/dist/esm/client/models/descriptions.js +10929 -0
- package/dist/esm/client/models/descriptions.js.map +6 -0
- package/dist/esm/components/dialog-box/dialog-box.d.ts +25 -0
- package/dist/esm/components/dialog-box/dialog-box.d.ts.map +1 -0
- package/dist/esm/components/dialog-box/dialog-box.js +66 -0
- package/dist/esm/components/dialog-box/dialog-box.js.map +6 -0
- package/dist/esm/components/dialog-box/show-dialog-box.d.ts +18 -0
- package/dist/esm/components/dialog-box/show-dialog-box.d.ts.map +1 -0
- package/dist/esm/components/dialog-box/show-dialog-box.js +22 -0
- package/dist/esm/components/dialog-box/show-dialog-box.js.map +6 -0
- package/dist/esm/components/dialogs/acl/model.d.ts +33 -0
- package/dist/esm/components/dialogs/acl/model.d.ts.map +1 -0
- package/dist/esm/components/dialogs/acl/model.js +79 -0
- package/dist/esm/components/dialogs/acl/model.js.map +6 -0
- package/dist/esm/components/dialogs/binding/model.d.ts +20 -0
- package/dist/esm/components/dialogs/binding/model.d.ts.map +1 -0
- package/dist/esm/components/dialogs/binding/model.js +45 -0
- package/dist/esm/components/dialogs/binding/model.js.map +6 -0
- package/dist/esm/components/dialogs/binding/node-binding-dialog.d.ts +49 -0
- package/dist/esm/components/dialogs/binding/node-binding-dialog.d.ts.map +1 -0
- package/dist/esm/components/dialogs/binding/node-binding-dialog.js +357 -0
- package/dist/esm/components/dialogs/binding/node-binding-dialog.js.map +6 -0
- package/dist/esm/components/dialogs/binding/show-node-binding-dialog.d.ts +8 -0
- package/dist/esm/components/dialogs/binding/show-node-binding-dialog.d.ts.map +1 -0
- package/dist/esm/components/dialogs/binding/show-node-binding-dialog.js +17 -0
- package/dist/esm/components/dialogs/binding/show-node-binding-dialog.js.map +6 -0
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-dialog.d.ts +31 -0
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-dialog.d.ts.map +1 -0
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-dialog.js +94 -0
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-dialog.js.map +6 -0
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-existing.d.ts +17 -0
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-existing.d.ts.map +1 -0
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-existing.js +64 -0
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-existing.js.map +6 -0
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.d.ts +19 -0
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.d.ts.map +1 -0
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.js +91 -0
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.js.map +6 -0
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.d.ts +20 -0
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.d.ts.map +1 -0
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.js +106 -0
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.js.map +6 -0
- package/dist/esm/components/dialogs/commission-node-dialog/show-commission-node-dialog.d.ts +8 -0
- package/dist/esm/components/dialogs/commission-node-dialog/show-commission-node-dialog.d.ts.map +1 -0
- package/dist/esm/components/dialogs/commission-node-dialog/show-commission-node-dialog.js +15 -0
- package/dist/esm/components/dialogs/commission-node-dialog/show-commission-node-dialog.js.map +6 -0
- package/dist/esm/components/ha-svg-icon.d.ts +19 -0
- package/dist/esm/components/ha-svg-icon.d.ts.map +1 -0
- package/dist/esm/components/ha-svg-icon.js +77 -0
- package/dist/esm/components/ha-svg-icon.js.map +6 -0
- package/dist/esm/entrypoint/main.d.ts +7 -0
- package/dist/esm/entrypoint/main.d.ts.map +1 -0
- package/dist/esm/entrypoint/main.js +45 -0
- package/dist/esm/entrypoint/main.js.map +6 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/pages/components/context.d.ts +9 -0
- package/dist/esm/pages/components/context.d.ts.map +1 -0
- package/dist/esm/pages/components/context.js +11 -0
- package/dist/esm/pages/components/context.js.map +6 -0
- package/dist/esm/pages/components/footer.d.ts +11 -0
- package/dist/esm/pages/components/footer.d.ts.map +1 -0
- package/dist/esm/pages/components/footer.js +52 -0
- package/dist/esm/pages/components/footer.js.map +6 -0
- package/dist/esm/pages/components/header.d.ts +27 -0
- package/dist/esm/pages/components/header.d.ts.map +1 -0
- package/dist/esm/pages/components/header.js +90 -0
- package/dist/esm/pages/components/header.js.map +6 -0
- package/dist/esm/pages/components/node-details.d.ts +29 -0
- package/dist/esm/pages/components/node-details.d.ts.map +1 -0
- package/dist/esm/pages/components/node-details.js +241 -0
- package/dist/esm/pages/components/node-details.js.map +6 -0
- package/dist/esm/pages/components/server-details.d.ts +24 -0
- package/dist/esm/pages/components/server-details.d.ts.map +1 -0
- package/dist/esm/pages/components/server-details.js +130 -0
- package/dist/esm/pages/components/server-details.js.map +6 -0
- package/dist/esm/pages/matter-cluster-view.d.ts +30 -0
- package/dist/esm/pages/matter-cluster-view.d.ts.map +1 -0
- package/dist/esm/pages/matter-cluster-view.js +154 -0
- package/dist/esm/pages/matter-cluster-view.js.map +6 -0
- package/dist/esm/pages/matter-dashboard-app.d.ts +27 -0
- package/dist/esm/pages/matter-dashboard-app.d.ts.map +1 -0
- package/dist/esm/pages/matter-dashboard-app.js +122 -0
- package/dist/esm/pages/matter-dashboard-app.js.map +6 -0
- package/dist/esm/pages/matter-endpoint-view.d.ts +29 -0
- package/dist/esm/pages/matter-endpoint-view.d.ts.map +1 -0
- package/dist/esm/pages/matter-endpoint-view.js +149 -0
- package/dist/esm/pages/matter-endpoint-view.js.map +6 -0
- package/dist/esm/pages/matter-node-view.d.ts +28 -0
- package/dist/esm/pages/matter-node-view.d.ts.map +1 -0
- package/dist/esm/pages/matter-node-view.js +122 -0
- package/dist/esm/pages/matter-node-view.js.map +6 -0
- package/dist/esm/pages/matter-server-view.d.ts +31 -0
- package/dist/esm/pages/matter-server-view.d.ts.map +1 -0
- package/dist/esm/pages/matter-server-view.js +113 -0
- package/dist/esm/pages/matter-server-view.js.map +6 -0
- package/dist/esm/util/clone_class.d.ts +7 -0
- package/dist/esm/util/clone_class.d.ts.map +1 -0
- package/dist/esm/util/clone_class.js +10 -0
- package/dist/esm/util/clone_class.js.map +6 -0
- package/dist/esm/util/fire_event.d.ts +34 -0
- package/dist/esm/util/fire_event.d.ts.map +1 -0
- package/dist/esm/util/fire_event.js +21 -0
- package/dist/esm/util/fire_event.js.map +6 -0
- package/dist/esm/util/prevent_default.d.ts +7 -0
- package/dist/esm/util/prevent_default.d.ts.map +1 -0
- package/dist/esm/util/prevent_default.js +10 -0
- package/dist/esm/util/prevent_default.js.map +6 -0
- package/dist/esm/util/routing.d.ts +10 -0
- package/dist/esm/util/routing.d.ts.map +1 -0
- package/dist/esm/util/routing.js +6 -0
- package/dist/esm/util/routing.js.map +6 -0
- package/dist/web/index.html +40 -0
- package/dist/web/js/commission-node-dialog-BJsfA4IV.js +78 -0
- package/dist/web/js/commission-node-dialog-DEZ3EqYO.js +78 -0
- package/dist/web/js/commission-node-existing-CzRtUgBm.js +50 -0
- package/dist/web/js/commission-node-existing-OK1ybPFI.js +50 -0
- package/dist/web/js/commission-node-thread-DLmclivF.js +75 -0
- package/dist/web/js/commission-node-thread-FcLFz84I.js +75 -0
- package/dist/web/js/commission-node-wifi-C8ho-UYb.js +88 -0
- package/dist/web/js/commission-node-wifi-C8iGfy7c.js +88 -0
- package/dist/web/js/dialog-box-BPz-oO3d.js +52 -0
- package/dist/web/js/dialog-box-DN32sjfR.js +52 -0
- package/dist/web/js/fire_event-BERTqZpV.js +169 -0
- package/dist/web/js/fire_event-BlsbXpOL.js +169 -0
- package/dist/web/js/main.js +547 -0
- package/dist/web/js/matter-dashboard-app-5UjO1Ik8.js +16068 -0
- package/dist/web/js/matter-dashboard-app-BazvuIIi.js +16068 -0
- package/dist/web/js/node-binding-dialog-2yitVn0R.js +443 -0
- package/dist/web/js/node-binding-dialog-Cw6QEmL3.js +443 -0
- package/dist/web/js/outlined-text-field-BMLYwwlc.js +2086 -0
- package/dist/web/js/outlined-text-field-Sqd4JHxo.js +2086 -0
- package/dist/web/js/prevent_default-BsT53c0u.js +814 -0
- package/dist/web/js/prevent_default-D4GG_QeD.js +814 -0
- package/package.json +54 -0
- package/src/client/client-context.ts +10 -0
- package/src/client/models/descriptions.ts +10948 -0
- package/src/components/dialog-box/dialog-box.ts +62 -0
- package/src/components/dialog-box/show-dialog-box.ts +32 -0
- package/src/components/dialogs/acl/model.ts +105 -0
- package/src/components/dialogs/binding/model.ts +58 -0
- package/src/components/dialogs/binding/node-binding-dialog.ts +419 -0
- package/src/components/dialogs/binding/show-node-binding-dialog.ts +16 -0
- package/src/components/dialogs/commission-node-dialog/commission-node-dialog.ts +102 -0
- package/src/components/dialogs/commission-node-dialog/commission-node-existing.ts +49 -0
- package/src/components/dialogs/commission-node-dialog/commission-node-thread.ts +76 -0
- package/src/components/dialogs/commission-node-dialog/commission-node-wifi.ts +90 -0
- package/src/components/dialogs/commission-node-dialog/show-commission-node-dialog.ts +14 -0
- package/src/components/ha-svg-icon.ts +66 -0
- package/src/entrypoint/main.ts +60 -0
- package/src/pages/components/context.ts +10 -0
- package/src/pages/components/footer.ts +39 -0
- package/src/pages/components/header.ts +87 -0
- package/src/pages/components/node-details.ts +252 -0
- package/src/pages/components/server-details.ts +124 -0
- package/src/pages/matter-cluster-view.ts +162 -0
- package/src/pages/matter-dashboard-app.ts +125 -0
- package/src/pages/matter-endpoint-view.ts +152 -0
- package/src/pages/matter-node-view.ts +126 -0
- package/src/pages/matter-server-view.ts +117 -0
- package/src/tsconfig.json +16 -0
- package/src/util/clone_class.ts +7 -0
- package/src/util/fire_event.ts +83 -0
- package/src/util/prevent_default.ts +7 -0
- package/src/util/routing.ts +10 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
4
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
5
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
6
|
+
if (decorator = decorators[i])
|
|
7
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
8
|
+
if (kind && result) __defProp(target, key, result);
|
|
9
|
+
return result;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* @license
|
|
13
|
+
* Copyright 2025-2026 Open Home Foundation
|
|
14
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
15
|
+
*/
|
|
16
|
+
import "@material/web/divider/divider";
|
|
17
|
+
import "@material/web/iconbutton/icon-button";
|
|
18
|
+
import "@material/web/list/list";
|
|
19
|
+
import "@material/web/list/list-item";
|
|
20
|
+
import { mdiChevronRight } from "@mdi/js";
|
|
21
|
+
import { LitElement, css, html } from "lit";
|
|
22
|
+
import { customElement, property } from "lit/decorators.js";
|
|
23
|
+
import { guard } from "lit/directives/guard.js";
|
|
24
|
+
import { clusters, device_types } from "../client/models/descriptions.js";
|
|
25
|
+
import "../components/ha-svg-icon";
|
|
26
|
+
function getUniqueClusters(node, endpoint) {
|
|
27
|
+
return Array.from(
|
|
28
|
+
new Set(
|
|
29
|
+
Object.keys(node.attributes).filter((key) => key.startsWith(`${endpoint.toString()}/`)).map((key) => Number(key.split("/")[1]))
|
|
30
|
+
)
|
|
31
|
+
).sort((a, b) => {
|
|
32
|
+
return a - b;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function getEndpointDeviceTypes(node, endpoint) {
|
|
36
|
+
const rawValues = node.attributes[`${endpoint}/29/0`];
|
|
37
|
+
if (!rawValues) return [];
|
|
38
|
+
return rawValues.map((rawValue) => {
|
|
39
|
+
const id = rawValue["0"] ?? rawValue["deviceType"];
|
|
40
|
+
return device_types[id] || { id: id ?? -1, label: `Unknown Device Type (${id})`, clusters: [] };
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
let MatterEndpointView = class extends LitElement {
|
|
44
|
+
render() {
|
|
45
|
+
if (!this.node || this.endpoint == void 0) {
|
|
46
|
+
return html`
|
|
47
|
+
<p>Node or endpoint not found!</p>
|
|
48
|
+
<button @click=${this._goBack}>Back</button>
|
|
49
|
+
`;
|
|
50
|
+
}
|
|
51
|
+
return html`
|
|
52
|
+
<dashboard-header
|
|
53
|
+
.title=${`Node ${this.node.node_id} | Endpoint ${this.endpoint}`}
|
|
54
|
+
.backButton=${`#node/${this.node.node_id}`}
|
|
55
|
+
.client=${this.client}
|
|
56
|
+
></dashboard-header>
|
|
57
|
+
|
|
58
|
+
<!-- node details section -->
|
|
59
|
+
<div class="container">
|
|
60
|
+
<node-details .node=${this.node} .client=${this.client}></node-details>
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
<!-- Endpoint clusters listing -->
|
|
64
|
+
<div class="container">
|
|
65
|
+
<md-list>
|
|
66
|
+
<md-list-item>
|
|
67
|
+
<div slot="headline">
|
|
68
|
+
<b>Clusters on Endpoint ${this.endpoint}</b>
|
|
69
|
+
</div>
|
|
70
|
+
<div slot="supporting-text">
|
|
71
|
+
Device Type(s):
|
|
72
|
+
${getEndpointDeviceTypes(this.node, this.endpoint).map((deviceType) => {
|
|
73
|
+
return deviceType.label;
|
|
74
|
+
}).join(" / ")}
|
|
75
|
+
</div>
|
|
76
|
+
</md-list-item>
|
|
77
|
+
${guard(
|
|
78
|
+
[this.node?.attributes.length],
|
|
79
|
+
() => getUniqueClusters(this.node, this.endpoint).map((cluster) => {
|
|
80
|
+
return html`
|
|
81
|
+
<md-list-item
|
|
82
|
+
type="link"
|
|
83
|
+
href=${`#node/${this.node.node_id}/${this.endpoint}/${cluster}`}
|
|
84
|
+
>
|
|
85
|
+
<div slot="headline">${clusters[cluster]?.label || "Custom/Unknown Cluster"}</div>
|
|
86
|
+
<div slot="supporting-text">ClusterId ${cluster} (0x00${cluster.toString(16)})</div>
|
|
87
|
+
<ha-svg-icon slot="end" .path=${mdiChevronRight}></ha-svg-icon>
|
|
88
|
+
</md-list-item>
|
|
89
|
+
`;
|
|
90
|
+
})
|
|
91
|
+
)}
|
|
92
|
+
</md-list>
|
|
93
|
+
</div>
|
|
94
|
+
`;
|
|
95
|
+
}
|
|
96
|
+
_goBack() {
|
|
97
|
+
history.back();
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
MatterEndpointView.styles = css`
|
|
101
|
+
:host {
|
|
102
|
+
display: block;
|
|
103
|
+
background-color: var(--md-sys-color-background);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.header {
|
|
107
|
+
background-color: var(--md-sys-color-primary);
|
|
108
|
+
color: var(--md-sys-color-on-primary);
|
|
109
|
+
--icon-primary-color: var(--md-sys-color-on-primary);
|
|
110
|
+
font-weight: 400;
|
|
111
|
+
display: flex;
|
|
112
|
+
align-items: center;
|
|
113
|
+
padding-right: 8px;
|
|
114
|
+
height: 48px;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
md-icon-button {
|
|
118
|
+
margin-right: 8px;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.flex {
|
|
122
|
+
flex: 1;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.container {
|
|
126
|
+
padding: 16px;
|
|
127
|
+
max-width: 95%;
|
|
128
|
+
margin: 0 auto;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.status {
|
|
132
|
+
color: var(--danger-color);
|
|
133
|
+
font-weight: bold;
|
|
134
|
+
font-size: 0.8em;
|
|
135
|
+
}
|
|
136
|
+
`;
|
|
137
|
+
__decorateClass([
|
|
138
|
+
property()
|
|
139
|
+
], MatterEndpointView.prototype, "node", 2);
|
|
140
|
+
__decorateClass([
|
|
141
|
+
property()
|
|
142
|
+
], MatterEndpointView.prototype, "endpoint", 2);
|
|
143
|
+
MatterEndpointView = __decorateClass([
|
|
144
|
+
customElement("matter-endpoint-view")
|
|
145
|
+
], MatterEndpointView);
|
|
146
|
+
export {
|
|
147
|
+
getEndpointDeviceTypes
|
|
148
|
+
};
|
|
149
|
+
//# sourceMappingURL=matter-endpoint-view.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/pages/matter-endpoint-view.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AAEP,SAAS,uBAAuB;AAChC,SAAS,YAAY,KAAK,YAAY;AACtC,SAAS,eAAe,gBAAgB;AACxC,SAAS,aAAa;AACtB,SAAqB,UAAU,oBAAoB;AACnD,OAAO;AAQP,SAAS,kBAAkB,MAAkB,UAAkB;AAC3D,SAAO,MAAM;AAAA,IACT,IAAI;AAAA,MACA,OAAO,KAAK,KAAK,UAAU,EACtB,OAAO,SAAO,IAAI,WAAW,GAAG,SAAS,SAAS,CAAC,GAAG,CAAC,EACvD,IAAI,SAAO,OAAO,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AAAA,IAC7C;AAAA,EACJ,EAAE,KAAK,CAAC,GAAG,MAAM;AACb,WAAO,IAAI;AAAA,EACf,CAAC;AACL;AAEO,SAAS,uBAAuB,MAAkB,UAAgC;AACrF,QAAM,YAAY,KAAK,WAAW,GAAG,QAAQ,OAAO;AACpD,MAAI,CAAC,UAAW,QAAO,CAAC;AACxB,SAAO,UAAU,IAAI,cAAY;AAC7B,UAAM,KAAK,SAAS,GAAG,KAAK,SAAS,YAAY;AACjD,WAAO,aAAa,EAAE,KAAK,EAAE,IAAI,MAAM,IAAI,OAAO,wBAAwB,EAAE,KAAK,UAAU,CAAC,EAAE;AAAA,EAClG,CAAC;AACL;AAGA,IAAM,qBAAN,cAAiC,WAAW;AAAA,EAS/B,SAAS;AACd,QAAI,CAAC,KAAK,QAAQ,KAAK,YAAY,QAAW;AAC1C,aAAO;AAAA;AAAA,iCAEc,KAAK,OAAO;AAAA;AAAA,IAErC;AAEA,WAAO;AAAA;AAAA,yBAEU,QAAQ,KAAK,KAAK,OAAO,iBAAiB,KAAK,QAAQ,EAAE;AAAA,8BACpD,SAAS,KAAK,KAAK,OAAO,EAAE;AAAA,0BAChC,KAAK,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,sCAKC,KAAK,IAAI,YAAY,KAAK,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sDAQhB,KAAK,QAAQ;AAAA;AAAA;AAAA;AAAA,8BAIrC,uBAAuB,KAAK,MAAM,KAAK,QAAQ,EAC5C,IAAI,gBAAc;AACf,aAAO,WAAW;AAAA,IACtB,CAAC,EACA,KAAK,KAAK,CAAC;AAAA;AAAA;AAAA,sBAGtB;AAAA,MAAM,CAAC,KAAK,MAAM,WAAW,MAAM;AAAA,MAAG,MACpC,kBAAkB,KAAK,MAAO,KAAK,QAAS,EAAE,IAAI,aAAW;AACzD,eAAO;AAAA;AAAA;AAAA,2CAGQ,SAAS,KAAK,KAAM,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,EAAE;AAAA;AAAA,2DAEzC,SAAS,OAAO,GAAG,SAAS,wBAAwB;AAAA,4EACnC,OAAO,SAAS,QAAQ,SAAS,EAAE,CAAC;AAAA,oEAC5C,eAAe;AAAA;AAAA;AAAA,MAG3D,CAAC;AAAA,IACL,CAAC;AAAA;AAAA;AAAA;AAAA,EAIjB;AAAA,EAEQ,UAAU;AACd,YAAQ,KAAK;AAAA,EACjB;AAuCJ;AAzGM,mBAoEc,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAhElB;AAAA,EADN,SAAS;AAAA,GAHR,mBAIK;AAGA;AAAA,EADN,SAAS;AAAA,GANR,mBAOK;AAPL,qBAAN;AAAA,EADC,cAAc,sBAAsB;AAAA,GAC/B;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025-2026 Open Home Foundation
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import "@material/web/divider/divider";
|
|
7
|
+
import "@material/web/iconbutton/icon-button";
|
|
8
|
+
import "@material/web/list/list";
|
|
9
|
+
import "@material/web/list/list-item";
|
|
10
|
+
import { MatterClient, MatterNode } from "@matter-server/ws-client";
|
|
11
|
+
import { LitElement } from "lit";
|
|
12
|
+
import "../components/ha-svg-icon";
|
|
13
|
+
import "./components/header";
|
|
14
|
+
import "./components/node-details";
|
|
15
|
+
declare global {
|
|
16
|
+
interface HTMLElementTagNameMap {
|
|
17
|
+
"matter-node-view": MatterNodeView;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
declare class MatterNodeView extends LitElement {
|
|
21
|
+
client: MatterClient;
|
|
22
|
+
node?: MatterNode;
|
|
23
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
24
|
+
private _goBack;
|
|
25
|
+
static styles: import("lit").CSSResult;
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=matter-node-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matter-node-view.d.ts","sourceRoot":"","sources":["../../../src/pages/matter-node-view.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,+BAA+B,CAAC;AACvC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,OAAO,2BAA2B,CAAC;AACnC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,2BAA2B,CAAC;AAGnC,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,kBAAkB,EAAE,cAAc,CAAC;KACtC;CACJ;AASD,cACM,cAAe,SAAQ,UAAU;IAC5B,MAAM,EAAG,YAAY,CAAC;IAGtB,IAAI,CAAC,EAAE,UAAU,CAAC;IAEhB,MAAM;IAqDf,OAAO,CAAC,OAAO;IAIf,OAAgB,MAAM,0BA2BpB;CACL"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
4
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
5
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
6
|
+
if (decorator = decorators[i])
|
|
7
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
8
|
+
if (kind && result) __defProp(target, key, result);
|
|
9
|
+
return result;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* @license
|
|
13
|
+
* Copyright 2025-2026 Open Home Foundation
|
|
14
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
15
|
+
*/
|
|
16
|
+
import "@material/web/divider/divider";
|
|
17
|
+
import "@material/web/iconbutton/icon-button";
|
|
18
|
+
import "@material/web/list/list";
|
|
19
|
+
import "@material/web/list/list-item";
|
|
20
|
+
import { mdiChevronRight } from "@mdi/js";
|
|
21
|
+
import { LitElement, css, html } from "lit";
|
|
22
|
+
import { customElement, property } from "lit/decorators.js";
|
|
23
|
+
import { guard } from "lit/directives/guard.js";
|
|
24
|
+
import "../components/ha-svg-icon";
|
|
25
|
+
import "./components/header";
|
|
26
|
+
import "./components/node-details";
|
|
27
|
+
import { getEndpointDeviceTypes } from "./matter-endpoint-view.js";
|
|
28
|
+
function getUniqueEndpoints(node) {
|
|
29
|
+
return Array.from(new Set(Object.keys(node.attributes).map((key) => Number(key.split("/")[0])))).sort((a, b) => {
|
|
30
|
+
return a - b;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
let MatterNodeView = class extends LitElement {
|
|
34
|
+
render() {
|
|
35
|
+
if (!this.node) {
|
|
36
|
+
return html`
|
|
37
|
+
<p>Node not found!</p>
|
|
38
|
+
<button @click=${this._goBack}>Back</button>
|
|
39
|
+
`;
|
|
40
|
+
}
|
|
41
|
+
return html`
|
|
42
|
+
<dashboard-header
|
|
43
|
+
.title=${"Node " + this.node.node_id}
|
|
44
|
+
.client=${this.client}
|
|
45
|
+
backButton="#"
|
|
46
|
+
></dashboard-header>
|
|
47
|
+
|
|
48
|
+
<!-- node details section -->
|
|
49
|
+
<div class="container">
|
|
50
|
+
<node-details .node=${this.node} .client=${this.client}></node-details>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
<!-- Node Endpoints listing -->
|
|
54
|
+
<div class="container">
|
|
55
|
+
<md-list>
|
|
56
|
+
<md-list-item>
|
|
57
|
+
<div slot="headline">
|
|
58
|
+
<b>Endpoints</b>
|
|
59
|
+
</div>
|
|
60
|
+
</md-list-item>
|
|
61
|
+
${guard(
|
|
62
|
+
[this.node?.attributes.length],
|
|
63
|
+
() => getUniqueEndpoints(this.node).map((endPointId) => {
|
|
64
|
+
return html`
|
|
65
|
+
<md-list-item type="link" href=${`#node/${this.node.node_id}/${endPointId}`}>
|
|
66
|
+
<div slot="headline">Endpoint ${endPointId}</div>
|
|
67
|
+
<div slot="supporting-text">
|
|
68
|
+
Device Type(s):
|
|
69
|
+
${getEndpointDeviceTypes(this.node, endPointId).map((deviceType) => {
|
|
70
|
+
return deviceType.label;
|
|
71
|
+
}).join(" / ")}
|
|
72
|
+
</div>
|
|
73
|
+
<ha-svg-icon slot="end" .path=${mdiChevronRight}></ha-svg-icon>
|
|
74
|
+
</md-list-item>
|
|
75
|
+
`;
|
|
76
|
+
})
|
|
77
|
+
)}
|
|
78
|
+
</md-list>
|
|
79
|
+
</div>
|
|
80
|
+
|
|
81
|
+
<dashboard-footer />
|
|
82
|
+
`;
|
|
83
|
+
}
|
|
84
|
+
_goBack() {
|
|
85
|
+
history.back();
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
MatterNodeView.styles = css`
|
|
89
|
+
:host {
|
|
90
|
+
display: flex;
|
|
91
|
+
background-color: var(--md-sys-color-background);
|
|
92
|
+
box-sizing: border-box;
|
|
93
|
+
flex-direction: column;
|
|
94
|
+
min-height: 100vh;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.container {
|
|
98
|
+
padding: 16px;
|
|
99
|
+
max-width: 95%;
|
|
100
|
+
margin: 0 auto;
|
|
101
|
+
width: 100%;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
@media (max-width: 600px) {
|
|
105
|
+
.container {
|
|
106
|
+
padding: 16px 0;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.status {
|
|
111
|
+
color: var(--danger-color);
|
|
112
|
+
font-weight: bold;
|
|
113
|
+
font-size: 0.8em;
|
|
114
|
+
}
|
|
115
|
+
`;
|
|
116
|
+
__decorateClass([
|
|
117
|
+
property()
|
|
118
|
+
], MatterNodeView.prototype, "node", 2);
|
|
119
|
+
MatterNodeView = __decorateClass([
|
|
120
|
+
customElement("matter-node-view")
|
|
121
|
+
], MatterNodeView);
|
|
122
|
+
//# sourceMappingURL=matter-node-view.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/pages/matter-node-view.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AAEP,SAAS,uBAAuB;AAChC,SAAS,YAAY,KAAK,YAAY;AACtC,SAAS,eAAe,gBAAgB;AACxC,SAAS,aAAa;AACtB,OAAO;AACP,OAAO;AACP,OAAO;AACP,SAAS,8BAA8B;AAQvC,SAAS,mBAAmB,MAAkB;AAE1C,SAAO,MAAM,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,IAAI,SAAO,OAAO,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM;AAC1G,WAAO,IAAI;AAAA,EACf,CAAC;AACL;AAGA,IAAM,iBAAN,cAA6B,WAAW;AAAA,EAM3B,SAAS;AACd,QAAI,CAAC,KAAK,MAAM;AACZ,aAAO;AAAA;AAAA,iCAEc,KAAK,OAAO;AAAA;AAAA,IAErC;AAEA,WAAO;AAAA;AAAA,yBAEU,UAAU,KAAK,KAAK,OAAO;AAAA,0BAC1B,KAAK,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sCAMC,KAAK,IAAI,YAAY,KAAK,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAWhD;AAAA,MAAM,CAAC,KAAK,MAAM,WAAW,MAAM;AAAA,MAAG,MACpC,mBAAmB,KAAK,IAAK,EAAE,IAAI,gBAAc;AAC7C,eAAO;AAAA,iEAC8B,SAAS,KAAK,KAAM,OAAO,IAAI,UAAU,EAAE;AAAA,oEACxC,UAAU;AAAA;AAAA;AAAA,0CAGpC,uBAAuB,KAAK,MAAO,UAAU,EAC1C,IAAI,gBAAc;AACf,iBAAO,WAAW;AAAA,QACtB,CAAC,EACA,KAAK,KAAK,CAAC;AAAA;AAAA,oEAEY,eAAe;AAAA;AAAA;AAAA,MAG3D,CAAC;AAAA,IACL,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMjB;AAAA,EAEQ,UAAU;AACd,YAAQ,KAAK;AAAA,EACjB;AA8BJ;AA3FM,eA+Dc,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA3DlB;AAAA,EADN,SAAS;AAAA,GAHR,eAIK;AAJL,iBAAN;AAAA,EADC,cAAc,kBAAkB;AAAA,GAC3B;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025-2026 Open Home Foundation
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import "@material/web/divider/divider";
|
|
7
|
+
import "@material/web/iconbutton/icon-button";
|
|
8
|
+
import "@material/web/list/list";
|
|
9
|
+
import "@material/web/list/list-item";
|
|
10
|
+
import { MatterClient } from "@matter-server/ws-client";
|
|
11
|
+
import { LitElement } from "lit";
|
|
12
|
+
import "../components/ha-svg-icon";
|
|
13
|
+
import "./components/footer";
|
|
14
|
+
import "./components/header";
|
|
15
|
+
import "./components/server-details";
|
|
16
|
+
declare global {
|
|
17
|
+
interface HTMLElementTagNameMap {
|
|
18
|
+
"matter-server-view": MatterServerView;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
declare class MatterServerView extends LitElement {
|
|
22
|
+
client: MatterClient;
|
|
23
|
+
nodes: MatterClient["nodes"];
|
|
24
|
+
private _cachedNodes?;
|
|
25
|
+
private _cachedNodeEntries?;
|
|
26
|
+
private getNodeEntries;
|
|
27
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
28
|
+
static styles: import("lit").CSSResult;
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=matter-server-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matter-server-view.d.ts","sourceRoot":"","sources":["../../../src/pages/matter-server-view.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,+BAA+B,CAAC;AACvC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAc,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAErD,OAAO,2BAA2B,CAAC;AACnC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,6BAA6B,CAAC;AAErC,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,oBAAoB,EAAE,gBAAgB,CAAC;KAC1C;CACJ;AAED,cACM,gBAAiB,SAAQ,UAAU;IAC9B,MAAM,EAAG,YAAY,CAAC;IAGtB,KAAK,EAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAErC,OAAO,CAAC,YAAY,CAAC,CAAwB;IAC7C,OAAO,CAAC,kBAAkB,CAAC,CAAyB;IAEpD,OAAO,CAAC,cAAc;IAQb,MAAM;IAwCf,OAAgB,MAAM,0BAgCpB;CACL"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
4
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
5
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
6
|
+
if (decorator = decorators[i])
|
|
7
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
8
|
+
if (kind && result) __defProp(target, key, result);
|
|
9
|
+
return result;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* @license
|
|
13
|
+
* Copyright 2025-2026 Open Home Foundation
|
|
14
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
15
|
+
*/
|
|
16
|
+
import "@material/web/divider/divider";
|
|
17
|
+
import "@material/web/iconbutton/icon-button";
|
|
18
|
+
import "@material/web/list/list";
|
|
19
|
+
import "@material/web/list/list-item";
|
|
20
|
+
import { mdiChevronRight } from "@mdi/js";
|
|
21
|
+
import { LitElement, css, html, nothing } from "lit";
|
|
22
|
+
import { customElement, property } from "lit/decorators.js";
|
|
23
|
+
import "../components/ha-svg-icon";
|
|
24
|
+
import "./components/footer";
|
|
25
|
+
import "./components/header";
|
|
26
|
+
import "./components/server-details";
|
|
27
|
+
let MatterServerView = class extends LitElement {
|
|
28
|
+
getNodeEntries(nodes) {
|
|
29
|
+
if (nodes !== this._cachedNodes) {
|
|
30
|
+
this._cachedNodes = nodes;
|
|
31
|
+
this._cachedNodeEntries = Object.entries(nodes);
|
|
32
|
+
}
|
|
33
|
+
return this._cachedNodeEntries;
|
|
34
|
+
}
|
|
35
|
+
render() {
|
|
36
|
+
const nodes = this.getNodeEntries(this.nodes);
|
|
37
|
+
return html`
|
|
38
|
+
<dashboard-header title="Open Home Foundation Matter Server" .client=${this.client}></dashboard-header>
|
|
39
|
+
|
|
40
|
+
<!-- server details section -->
|
|
41
|
+
<div class="container">
|
|
42
|
+
<server-details .client=${this.client}></server-details>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
<!-- Nodes listing -->
|
|
46
|
+
<div class="container">
|
|
47
|
+
<md-list>
|
|
48
|
+
<md-list-item>
|
|
49
|
+
<div slot="headline">
|
|
50
|
+
<b>Nodes</b>
|
|
51
|
+
</div>
|
|
52
|
+
</md-list-item>
|
|
53
|
+
${nodes.map(([_id, node]) => {
|
|
54
|
+
return html`
|
|
55
|
+
<md-list-item type="link" href=${`#node/${node.node_id}`}>
|
|
56
|
+
<div slot="headline">
|
|
57
|
+
Node ${node.node_id}
|
|
58
|
+
${node.available ? "" : html`<span class="status">OFFLINE</span>`}
|
|
59
|
+
</div>
|
|
60
|
+
<div slot="supporting-text">
|
|
61
|
+
${node.nodeLabel ? `${node.nodeLabel} | ` : nothing} ${node.vendorName} |
|
|
62
|
+
${node.productName}
|
|
63
|
+
</div>
|
|
64
|
+
<ha-svg-icon slot="end" .path=${mdiChevronRight}></ha-svg-icon>
|
|
65
|
+
</md-list-item>
|
|
66
|
+
`;
|
|
67
|
+
})}
|
|
68
|
+
</md-list>
|
|
69
|
+
</div>
|
|
70
|
+
<dashboard-footer />
|
|
71
|
+
`;
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
MatterServerView.styles = css`
|
|
75
|
+
:host {
|
|
76
|
+
display: flex;
|
|
77
|
+
background-color: var(--md-sys-color-background);
|
|
78
|
+
box-sizing: border-box;
|
|
79
|
+
flex-direction: column;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.container {
|
|
83
|
+
padding: 16px;
|
|
84
|
+
max-width: 95%;
|
|
85
|
+
margin: 0 auto;
|
|
86
|
+
flex: 1;
|
|
87
|
+
width: 100%;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@media (max-width: 600px) {
|
|
91
|
+
.container {
|
|
92
|
+
padding: 16px 0;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
span[slot="start"] {
|
|
97
|
+
width: 40px;
|
|
98
|
+
text-align: center;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.status {
|
|
102
|
+
color: var(--danger-color);
|
|
103
|
+
font-weight: bold;
|
|
104
|
+
font-size: 0.8em;
|
|
105
|
+
}
|
|
106
|
+
`;
|
|
107
|
+
__decorateClass([
|
|
108
|
+
property()
|
|
109
|
+
], MatterServerView.prototype, "nodes", 2);
|
|
110
|
+
MatterServerView = __decorateClass([
|
|
111
|
+
customElement("matter-server-view")
|
|
112
|
+
], MatterServerView);
|
|
113
|
+
//# sourceMappingURL=matter-server-view.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/pages/matter-server-view.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AAEP,SAAS,uBAAuB;AAChC,SAAS,YAAY,KAAK,MAAM,eAAe;AAC/C,SAAS,eAAe,gBAAgB;AACxC,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AASP,IAAM,mBAAN,cAA+B,WAAW;AAAA,EAS9B,eAAe,OAAsD;AACzE,QAAI,UAAU,KAAK,cAAc;AAC7B,WAAK,eAAe;AACpB,WAAK,qBAAqB,OAAO,QAAQ,KAAK;AAAA,IAClD;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAES,SAAS;AACd,UAAM,QAAQ,KAAK,eAAe,KAAK,KAAK;AAE5C,WAAO;AAAA,mFACoE,KAAK,MAAM;AAAA;AAAA;AAAA;AAAA,0CAIpD,KAAK,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAW/B,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM;AACzB,aAAO;AAAA,6DAC8B,SAAS,KAAK,OAAO,EAAE;AAAA;AAAA,2CAEzC,KAAK,OAAO;AAAA,sCACjB,KAAK,YAAY,KAAK,yCAAyC;AAAA;AAAA;AAAA,sCAG/D,KAAK,YAAY,GAAG,KAAK,SAAS,QAAQ,OAAO,IAAI,KAAK,UAAU;AAAA,sCACpE,KAAK,WAAW;AAAA;AAAA,gEAEU,eAAe;AAAA;AAAA;AAAA,IAG3D,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKlB;AAmCJ;AA1FM,iBAyDc,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AArDlB;AAAA,EADN,SAAS;AAAA,GAHR,iBAIK;AAJL,mBAAN;AAAA,EADC,cAAc,oBAAoB;AAAA,GAC7B;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clone_class.d.ts","sourceRoot":"","sources":["../../../src/util/clone_class.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,KAAK,GAAI,MAAM,GAAG,QAAoE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025-2026 Open Home Foundation
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
const clone = (orig) => Object.assign(Object.create(Object.getPrototypeOf(orig)), orig);
|
|
7
|
+
export {
|
|
8
|
+
clone
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=clone_class.js.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025-2026 Open Home Foundation
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
declare global {
|
|
7
|
+
interface HASSDomEvents {
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export type ValidHassDomEvent = keyof HASSDomEvents;
|
|
11
|
+
export interface HASSDomEvent<T> extends Event {
|
|
12
|
+
detail: T;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Dispatches a custom event with an optional detail value.
|
|
16
|
+
*
|
|
17
|
+
* @param {string} type Name of event type.
|
|
18
|
+
* @param {*=} detail Detail value containing event-specific
|
|
19
|
+
* payload.
|
|
20
|
+
* @param {{ bubbles: (boolean|undefined),
|
|
21
|
+
* cancelable: (boolean|undefined),
|
|
22
|
+
* composed: (boolean|undefined) }=}
|
|
23
|
+
* options Object specifying options. These may include:
|
|
24
|
+
* `bubbles` (boolean, defaults to `true`),
|
|
25
|
+
* `cancelable` (boolean, defaults to false), and
|
|
26
|
+
* `node` on which to fire the event (HTMLElement, defaults to `this`).
|
|
27
|
+
* @return {Event} The new event that was fired.
|
|
28
|
+
*/
|
|
29
|
+
export declare const fireEvent: <HassEvent extends ValidHassDomEvent>(node: HTMLElement | Window, type: HassEvent, detail?: HASSDomEvents[HassEvent], options?: {
|
|
30
|
+
bubbles?: boolean;
|
|
31
|
+
cancelable?: boolean;
|
|
32
|
+
composed?: boolean;
|
|
33
|
+
}) => Event;
|
|
34
|
+
//# sourceMappingURL=fire_event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fire_event.d.ts","sourceRoot":"","sources":["../../../src/util/fire_event.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgCH,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,aAAa;KAAG;CAC7B;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,YAAY,CAAC,CAAC,CAAE,SAAQ,KAAK;IAC1C,MAAM,EAAE,CAAC,CAAC;CACb;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS,GAAI,SAAS,SAAS,iBAAiB,EACzD,MAAM,WAAW,GAAG,MAAM,EAC1B,MAAM,SAAS,EACf,SAAS,aAAa,CAAC,SAAS,CAAC,EACjC,UAAU;IACN,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,UAaJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025-2026 Open Home Foundation
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
const fireEvent = (node, type, detail, options) => {
|
|
7
|
+
options = options || {};
|
|
8
|
+
detail = detail === null || detail === void 0 ? {} : detail;
|
|
9
|
+
const event = new Event(type, {
|
|
10
|
+
bubbles: options.bubbles === void 0 ? true : options.bubbles,
|
|
11
|
+
cancelable: Boolean(options.cancelable),
|
|
12
|
+
composed: options.composed === void 0 ? true : options.composed
|
|
13
|
+
});
|
|
14
|
+
event.detail = detail;
|
|
15
|
+
node.dispatchEvent(event);
|
|
16
|
+
return event;
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
fireEvent
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=fire_event.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/util/fire_event.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AA6DO,MAAM,YAAY,CACrB,MACA,MACA,QACA,YAKC;AACD,YAAU,WAAW,CAAC;AAEtB,WAAS,WAAW,QAAQ,WAAW,SAAY,CAAC,IAAI;AACxD,QAAM,QAAQ,IAAI,MAAM,MAAM;AAAA,IAC1B,SAAS,QAAQ,YAAY,SAAY,OAAO,QAAQ;AAAA,IACxD,YAAY,QAAQ,QAAQ,UAAU;AAAA,IACtC,UAAU,QAAQ,aAAa,SAAY,OAAO,QAAQ;AAAA,EAC9D,CAAC;AACD,EAAC,MAAc,SAAS;AACxB,OAAK,cAAc,KAAK;AACxB,SAAO;AACX;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prevent_default.d.ts","sourceRoot":"","sources":["../../../src/util/prevent_default.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,cAAc,GAAI,IAAI,KAAK,SAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../src/util/routing.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,KAAK;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB"}
|