@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.
Files changed (172) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +11 -0
  3. package/dist/esm/client/client-context.d.ts +10 -0
  4. package/dist/esm/client/client-context.d.ts.map +1 -0
  5. package/dist/esm/client/client-context.js +11 -0
  6. package/dist/esm/client/client-context.js.map +6 -0
  7. package/dist/esm/client/models/descriptions.d.ts +20 -0
  8. package/dist/esm/client/models/descriptions.d.ts.map +1 -0
  9. package/dist/esm/client/models/descriptions.js +10929 -0
  10. package/dist/esm/client/models/descriptions.js.map +6 -0
  11. package/dist/esm/components/dialog-box/dialog-box.d.ts +25 -0
  12. package/dist/esm/components/dialog-box/dialog-box.d.ts.map +1 -0
  13. package/dist/esm/components/dialog-box/dialog-box.js +66 -0
  14. package/dist/esm/components/dialog-box/dialog-box.js.map +6 -0
  15. package/dist/esm/components/dialog-box/show-dialog-box.d.ts +18 -0
  16. package/dist/esm/components/dialog-box/show-dialog-box.d.ts.map +1 -0
  17. package/dist/esm/components/dialog-box/show-dialog-box.js +22 -0
  18. package/dist/esm/components/dialog-box/show-dialog-box.js.map +6 -0
  19. package/dist/esm/components/dialogs/acl/model.d.ts +33 -0
  20. package/dist/esm/components/dialogs/acl/model.d.ts.map +1 -0
  21. package/dist/esm/components/dialogs/acl/model.js +79 -0
  22. package/dist/esm/components/dialogs/acl/model.js.map +6 -0
  23. package/dist/esm/components/dialogs/binding/model.d.ts +20 -0
  24. package/dist/esm/components/dialogs/binding/model.d.ts.map +1 -0
  25. package/dist/esm/components/dialogs/binding/model.js +45 -0
  26. package/dist/esm/components/dialogs/binding/model.js.map +6 -0
  27. package/dist/esm/components/dialogs/binding/node-binding-dialog.d.ts +49 -0
  28. package/dist/esm/components/dialogs/binding/node-binding-dialog.d.ts.map +1 -0
  29. package/dist/esm/components/dialogs/binding/node-binding-dialog.js +357 -0
  30. package/dist/esm/components/dialogs/binding/node-binding-dialog.js.map +6 -0
  31. package/dist/esm/components/dialogs/binding/show-node-binding-dialog.d.ts +8 -0
  32. package/dist/esm/components/dialogs/binding/show-node-binding-dialog.d.ts.map +1 -0
  33. package/dist/esm/components/dialogs/binding/show-node-binding-dialog.js +17 -0
  34. package/dist/esm/components/dialogs/binding/show-node-binding-dialog.js.map +6 -0
  35. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-dialog.d.ts +31 -0
  36. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-dialog.d.ts.map +1 -0
  37. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-dialog.js +94 -0
  38. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-dialog.js.map +6 -0
  39. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-existing.d.ts +17 -0
  40. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-existing.d.ts.map +1 -0
  41. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-existing.js +64 -0
  42. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-existing.js.map +6 -0
  43. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.d.ts +19 -0
  44. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.d.ts.map +1 -0
  45. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.js +91 -0
  46. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.js.map +6 -0
  47. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.d.ts +20 -0
  48. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.d.ts.map +1 -0
  49. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.js +106 -0
  50. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.js.map +6 -0
  51. package/dist/esm/components/dialogs/commission-node-dialog/show-commission-node-dialog.d.ts +8 -0
  52. package/dist/esm/components/dialogs/commission-node-dialog/show-commission-node-dialog.d.ts.map +1 -0
  53. package/dist/esm/components/dialogs/commission-node-dialog/show-commission-node-dialog.js +15 -0
  54. package/dist/esm/components/dialogs/commission-node-dialog/show-commission-node-dialog.js.map +6 -0
  55. package/dist/esm/components/ha-svg-icon.d.ts +19 -0
  56. package/dist/esm/components/ha-svg-icon.d.ts.map +1 -0
  57. package/dist/esm/components/ha-svg-icon.js +77 -0
  58. package/dist/esm/components/ha-svg-icon.js.map +6 -0
  59. package/dist/esm/entrypoint/main.d.ts +7 -0
  60. package/dist/esm/entrypoint/main.d.ts.map +1 -0
  61. package/dist/esm/entrypoint/main.js +45 -0
  62. package/dist/esm/entrypoint/main.js.map +6 -0
  63. package/dist/esm/package.json +3 -0
  64. package/dist/esm/pages/components/context.d.ts +9 -0
  65. package/dist/esm/pages/components/context.d.ts.map +1 -0
  66. package/dist/esm/pages/components/context.js +11 -0
  67. package/dist/esm/pages/components/context.js.map +6 -0
  68. package/dist/esm/pages/components/footer.d.ts +11 -0
  69. package/dist/esm/pages/components/footer.d.ts.map +1 -0
  70. package/dist/esm/pages/components/footer.js +52 -0
  71. package/dist/esm/pages/components/footer.js.map +6 -0
  72. package/dist/esm/pages/components/header.d.ts +27 -0
  73. package/dist/esm/pages/components/header.d.ts.map +1 -0
  74. package/dist/esm/pages/components/header.js +90 -0
  75. package/dist/esm/pages/components/header.js.map +6 -0
  76. package/dist/esm/pages/components/node-details.d.ts +29 -0
  77. package/dist/esm/pages/components/node-details.d.ts.map +1 -0
  78. package/dist/esm/pages/components/node-details.js +241 -0
  79. package/dist/esm/pages/components/node-details.js.map +6 -0
  80. package/dist/esm/pages/components/server-details.d.ts +24 -0
  81. package/dist/esm/pages/components/server-details.d.ts.map +1 -0
  82. package/dist/esm/pages/components/server-details.js +130 -0
  83. package/dist/esm/pages/components/server-details.js.map +6 -0
  84. package/dist/esm/pages/matter-cluster-view.d.ts +30 -0
  85. package/dist/esm/pages/matter-cluster-view.d.ts.map +1 -0
  86. package/dist/esm/pages/matter-cluster-view.js +154 -0
  87. package/dist/esm/pages/matter-cluster-view.js.map +6 -0
  88. package/dist/esm/pages/matter-dashboard-app.d.ts +27 -0
  89. package/dist/esm/pages/matter-dashboard-app.d.ts.map +1 -0
  90. package/dist/esm/pages/matter-dashboard-app.js +122 -0
  91. package/dist/esm/pages/matter-dashboard-app.js.map +6 -0
  92. package/dist/esm/pages/matter-endpoint-view.d.ts +29 -0
  93. package/dist/esm/pages/matter-endpoint-view.d.ts.map +1 -0
  94. package/dist/esm/pages/matter-endpoint-view.js +149 -0
  95. package/dist/esm/pages/matter-endpoint-view.js.map +6 -0
  96. package/dist/esm/pages/matter-node-view.d.ts +28 -0
  97. package/dist/esm/pages/matter-node-view.d.ts.map +1 -0
  98. package/dist/esm/pages/matter-node-view.js +122 -0
  99. package/dist/esm/pages/matter-node-view.js.map +6 -0
  100. package/dist/esm/pages/matter-server-view.d.ts +31 -0
  101. package/dist/esm/pages/matter-server-view.d.ts.map +1 -0
  102. package/dist/esm/pages/matter-server-view.js +113 -0
  103. package/dist/esm/pages/matter-server-view.js.map +6 -0
  104. package/dist/esm/util/clone_class.d.ts +7 -0
  105. package/dist/esm/util/clone_class.d.ts.map +1 -0
  106. package/dist/esm/util/clone_class.js +10 -0
  107. package/dist/esm/util/clone_class.js.map +6 -0
  108. package/dist/esm/util/fire_event.d.ts +34 -0
  109. package/dist/esm/util/fire_event.d.ts.map +1 -0
  110. package/dist/esm/util/fire_event.js +21 -0
  111. package/dist/esm/util/fire_event.js.map +6 -0
  112. package/dist/esm/util/prevent_default.d.ts +7 -0
  113. package/dist/esm/util/prevent_default.d.ts.map +1 -0
  114. package/dist/esm/util/prevent_default.js +10 -0
  115. package/dist/esm/util/prevent_default.js.map +6 -0
  116. package/dist/esm/util/routing.d.ts +10 -0
  117. package/dist/esm/util/routing.d.ts.map +1 -0
  118. package/dist/esm/util/routing.js +6 -0
  119. package/dist/esm/util/routing.js.map +6 -0
  120. package/dist/web/index.html +40 -0
  121. package/dist/web/js/commission-node-dialog-BJsfA4IV.js +78 -0
  122. package/dist/web/js/commission-node-dialog-DEZ3EqYO.js +78 -0
  123. package/dist/web/js/commission-node-existing-CzRtUgBm.js +50 -0
  124. package/dist/web/js/commission-node-existing-OK1ybPFI.js +50 -0
  125. package/dist/web/js/commission-node-thread-DLmclivF.js +75 -0
  126. package/dist/web/js/commission-node-thread-FcLFz84I.js +75 -0
  127. package/dist/web/js/commission-node-wifi-C8ho-UYb.js +88 -0
  128. package/dist/web/js/commission-node-wifi-C8iGfy7c.js +88 -0
  129. package/dist/web/js/dialog-box-BPz-oO3d.js +52 -0
  130. package/dist/web/js/dialog-box-DN32sjfR.js +52 -0
  131. package/dist/web/js/fire_event-BERTqZpV.js +169 -0
  132. package/dist/web/js/fire_event-BlsbXpOL.js +169 -0
  133. package/dist/web/js/main.js +547 -0
  134. package/dist/web/js/matter-dashboard-app-5UjO1Ik8.js +16068 -0
  135. package/dist/web/js/matter-dashboard-app-BazvuIIi.js +16068 -0
  136. package/dist/web/js/node-binding-dialog-2yitVn0R.js +443 -0
  137. package/dist/web/js/node-binding-dialog-Cw6QEmL3.js +443 -0
  138. package/dist/web/js/outlined-text-field-BMLYwwlc.js +2086 -0
  139. package/dist/web/js/outlined-text-field-Sqd4JHxo.js +2086 -0
  140. package/dist/web/js/prevent_default-BsT53c0u.js +814 -0
  141. package/dist/web/js/prevent_default-D4GG_QeD.js +814 -0
  142. package/package.json +54 -0
  143. package/src/client/client-context.ts +10 -0
  144. package/src/client/models/descriptions.ts +10948 -0
  145. package/src/components/dialog-box/dialog-box.ts +62 -0
  146. package/src/components/dialog-box/show-dialog-box.ts +32 -0
  147. package/src/components/dialogs/acl/model.ts +105 -0
  148. package/src/components/dialogs/binding/model.ts +58 -0
  149. package/src/components/dialogs/binding/node-binding-dialog.ts +419 -0
  150. package/src/components/dialogs/binding/show-node-binding-dialog.ts +16 -0
  151. package/src/components/dialogs/commission-node-dialog/commission-node-dialog.ts +102 -0
  152. package/src/components/dialogs/commission-node-dialog/commission-node-existing.ts +49 -0
  153. package/src/components/dialogs/commission-node-dialog/commission-node-thread.ts +76 -0
  154. package/src/components/dialogs/commission-node-dialog/commission-node-wifi.ts +90 -0
  155. package/src/components/dialogs/commission-node-dialog/show-commission-node-dialog.ts +14 -0
  156. package/src/components/ha-svg-icon.ts +66 -0
  157. package/src/entrypoint/main.ts +60 -0
  158. package/src/pages/components/context.ts +10 -0
  159. package/src/pages/components/footer.ts +39 -0
  160. package/src/pages/components/header.ts +87 -0
  161. package/src/pages/components/node-details.ts +252 -0
  162. package/src/pages/components/server-details.ts +124 -0
  163. package/src/pages/matter-cluster-view.ts +162 -0
  164. package/src/pages/matter-dashboard-app.ts +125 -0
  165. package/src/pages/matter-endpoint-view.ts +152 -0
  166. package/src/pages/matter-node-view.ts +126 -0
  167. package/src/pages/matter-server-view.ts +117 -0
  168. package/src/tsconfig.json +16 -0
  169. package/src/util/clone_class.ts +7 -0
  170. package/src/util/fire_event.ts +83 -0
  171. package/src/util/prevent_default.ts +7 -0
  172. package/src/util/routing.ts +10 -0
@@ -0,0 +1,130 @@
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/button/filled-button";
17
+ import "@material/web/button/outlined-button";
18
+ import "@material/web/button/text-button";
19
+ import "@material/web/divider/divider";
20
+ import "@material/web/iconbutton/icon-button";
21
+ import "@material/web/list/list";
22
+ import "@material/web/list/list-item";
23
+ import { mdiFile, mdiPlus } from "@mdi/js";
24
+ import { LitElement, css, html, nothing } from "lit";
25
+ import { customElement } from "lit/decorators.js";
26
+ import { showAlertDialog, showPromptDialog } from "../../components/dialog-box/show-dialog-box.js";
27
+ import { showCommissionNodeDialog } from "../../components/dialogs/commission-node-dialog/show-commission-node-dialog.js";
28
+ import "../../components/ha-svg-icon";
29
+ let ServerDetails = class extends LitElement {
30
+ constructor() {
31
+ super(...arguments);
32
+ this._onFileInput = (event) => {
33
+ const fileElem = event.target;
34
+ if (fileElem.files.length > 0) {
35
+ const selectedFile = fileElem.files[0];
36
+ const reader = new FileReader();
37
+ reader.readAsText(selectedFile, "UTF-8");
38
+ reader.onload = async () => {
39
+ try {
40
+ await this.client.importTestNode(reader.result?.toString() || "");
41
+ } catch (err) {
42
+ showAlertDialog({
43
+ title: "Failed to import test node",
44
+ text: err.message
45
+ });
46
+ }
47
+ };
48
+ }
49
+ event.preventDefault();
50
+ };
51
+ }
52
+ render() {
53
+ if (!this.client) return html``;
54
+ return html`
55
+ <md-list>
56
+ <md-list-item>
57
+ <div slot="headline">
58
+ <b>Open Home Foundation Matter Server ${this.client.isProduction ? "" : `(${this.client.serverBaseAddress})`}</b>
59
+ ${this.client.connection.connected ? nothing : html`<span class="status">OFFLINE</span>`}
60
+ </div>
61
+ </md-list-item>
62
+ <md-list-item>
63
+ <div slot="supporting-text">
64
+ <div class="left">FabricId: </div>${this.client.serverInfo.fabric_id}
65
+ </div>
66
+ <div slot="supporting-text">
67
+ <div class="left">Compressed FabricId: </div>${this.client.serverInfo.compressed_fabric_id}
68
+ </div>
69
+ <div slot="supporting-text">
70
+ <div class="left">SDK Wheels Version: </div>${this.client.serverInfo.sdk_version}
71
+ </div>
72
+ <div slot="supporting-text">
73
+ <div class="left">Schema Version: </div>${this.client.serverInfo.schema_version}
74
+ </div>
75
+ <div slot="supporting-text">
76
+ <div class="left">Node count: </div>${Object.keys(this.client.nodes).length}
77
+ </div>
78
+ </md-list-item>
79
+ <md-list-item class="btn">
80
+ <span>
81
+ <md-outlined-button @click=${this._commissionNode}>Commission node<ha-svg-icon slot="icon" .path=${mdiPlus}></ha-svg-icon></md-outlined-button>
82
+ <md-outlined-button @click=${this._uploadDiagnosticsDumpFile}>Import node<ha-svg-icon slot="icon" .path=${mdiFile}></ha-svg-icon></md-outlined-button>
83
+ </md-list-item>
84
+ </md-list>
85
+ <!-- hidden file element for the upload diagnostics -->
86
+ <input
87
+ @change=${this._onFileInput}
88
+ type="file"
89
+ id="fileElem"
90
+ accept=".json"
91
+ style="display:none" />
92
+ </div>
93
+ `;
94
+ }
95
+ _commissionNode() {
96
+ console.log(this.client);
97
+ showCommissionNodeDialog(this.client);
98
+ }
99
+ async _uploadDiagnosticsDumpFile() {
100
+ if (!await showPromptDialog({
101
+ title: "Add test node",
102
+ text: "Do you want to add a test node from a diagnostics dump ?",
103
+ confirmText: "Select file"
104
+ })) {
105
+ return;
106
+ }
107
+ const fileElem = this.renderRoot.getElementById("fileElem");
108
+ fileElem.click();
109
+ }
110
+ };
111
+ ServerDetails.styles = css`
112
+ .btn {
113
+ --md-outlined-button-container-shape: 0px;
114
+ }
115
+
116
+ .left {
117
+ width: 30%;
118
+ display: inline-table;
119
+ }
120
+ .whitespace {
121
+ height: 15px;
122
+ }
123
+ `;
124
+ ServerDetails = __decorateClass([
125
+ customElement("server-details")
126
+ ], ServerDetails);
127
+ export {
128
+ ServerDetails
129
+ };
130
+ //# sourceMappingURL=server-details.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/pages/components/server-details.ts"],
4
+ "mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AAEP,SAAS,SAAS,eAAe;AACjC,SAAS,YAAY,KAAK,MAAM,eAAe;AAC/C,SAAS,qBAAqB;AAC9B,SAAS,iBAAiB,wBAAwB;AAClD,SAAS,gCAAgC;AACzC,OAAO;AAGA,IAAM,gBAAN,cAA4B,WAAW;AAAA,EAAvC;AAAA;AAoEH,SAAQ,eAAe,CAAC,UAAiB;AACrC,YAAM,WAAW,MAAM;AACvB,UAAI,SAAS,MAAO,SAAS,GAAG;AAC5B,cAAM,eAAe,SAAS,MAAO,CAAC;AACtC,cAAM,SAAS,IAAI,WAAW;AAC9B,eAAO,WAAW,cAAc,OAAO;AACvC,eAAO,SAAS,YAAY;AACxB,cAAI;AACA,kBAAM,KAAK,OAAQ,eAAe,OAAO,QAAQ,SAAS,KAAK,EAAE;AAAA,UACrE,SAAS,KAAU;AACf,4BAAgB;AAAA,cACZ,OAAO;AAAA,cACP,MAAM,IAAI;AAAA,YACd,CAAC;AAAA,UACL;AAAA,QACJ;AAAA,MACJ;AACA,YAAM,eAAe;AAAA,IACzB;AAAA;AAAA,EAnFmB,SAAS;AACxB,QAAI,CAAC,KAAK,OAAQ,QAAO;AAEzB,WAAO;AAAA;AAAA;AAAA;AAAA,wDAIyC,KAAK,OAAO,eAAe,KAAK,IAAI,KAAK,OAAO,iBAAiB,GAAG;AAAA,kBAC1G,KAAK,OAAO,WAAW,YAAY,UAAU,yCAAyC;AAAA;AAAA;AAAA;AAAA;AAAA,gDAKxD,KAAK,OAAO,WAAW,SAAS;AAAA;AAAA;AAAA,2DAGrB,KAAK,OAAO,WAAW,oBAAoB;AAAA;AAAA;AAAA,0DAG5C,KAAK,OAAO,WAAW,WAAW;AAAA;AAAA;AAAA,sDAGtC,KAAK,OAAO,WAAW,cAAc;AAAA;AAAA;AAAA,kDAGzC,OAAO,KAAK,KAAK,OAAO,KAAK,EAAE,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,uCAKhD,KAAK,eAAe,kDAAkD,OAAO;AAAA,uCAC7E,KAAK,0BAA0B,8CAA8C,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,kBAKzG,KAAK,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO/B;AAAA,EAEQ,kBAAkB;AACtB,YAAQ,IAAI,KAAK,MAAM;AACvB,6BAAyB,KAAK,MAAO;AAAA,EACzC;AAAA,EAEA,MAAc,6BAA6B;AACvC,QACI,CAAE,MAAM,iBAAiB;AAAA,MACrB,OAAO;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,IACjB,CAAC,GACH;AACE;AAAA,IACJ;AAEA,UAAM,WAAW,KAAK,WAAW,eAAe,UAAU;AAC1D,aAAS,MAAM;AAAA,EACnB;AAmCJ;AArGa,cAwFO,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAxFhB,gBAAN;AAAA,EADN,cAAc,gBAAgB;AAAA,GAClB;",
5
+ "names": []
6
+ }
@@ -0,0 +1,30 @@
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 "../pages/components/node-details";
14
+ declare global {
15
+ interface HTMLElementTagNameMap {
16
+ "matter-cluster-view": MatterClusterView;
17
+ }
18
+ }
19
+ declare class MatterClusterView extends LitElement {
20
+ client: MatterClient;
21
+ node?: MatterNode;
22
+ endpoint: number;
23
+ cluster?: number;
24
+ render(): import("lit-html").TemplateResult<1>;
25
+ private _showAttributeValue;
26
+ private _goBack;
27
+ static styles: import("lit").CSSResult;
28
+ }
29
+ export {};
30
+ //# sourceMappingURL=matter-cluster-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matter-cluster-view.d.ts","sourceRoot":"","sources":["../../../src/pages/matter-cluster-view.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,+BAA+B,CAAC;AACvC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAqB,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C,OAAO,2BAA2B,CAAC;AACnC,OAAO,kCAAkC,CAAC;AAG1C,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,qBAAqB,EAAE,iBAAiB,CAAC;KAC5C;CACJ;AAYD,cACM,iBAAkB,SAAQ,UAAU;IAC/B,MAAM,EAAG,YAAY,CAAC;IAGtB,IAAI,CAAC,EAAE,UAAU,CAAC;IAIlB,QAAQ,EAAG,MAAM,CAAC;IAGlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEf,MAAM;YA+DD,mBAAmB;IAOjC,OAAO,CAAC,OAAO;IAIf,OAAgB,MAAM,0BAoCpB;CACL"}
@@ -0,0 +1,154 @@
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 { provide } from "@lit/context";
17
+ import "@material/web/divider/divider";
18
+ import "@material/web/iconbutton/icon-button";
19
+ import "@material/web/list/list";
20
+ import "@material/web/list/list-item";
21
+ import { toBigIntAwareJson } from "@matter-server/ws-client";
22
+ import { LitElement, css, html } from "lit";
23
+ import { customElement, property } from "lit/decorators.js";
24
+ import { clusters } from "../client/models/descriptions.js";
25
+ import { showAlertDialog } from "../components/dialog-box/show-dialog-box.js";
26
+ import "../components/ha-svg-icon";
27
+ import "../pages/components/node-details";
28
+ import { bindingContext } from "./components/context.js";
29
+ function clusterAttributes(attributes, endpoint, cluster) {
30
+ return Object.keys(attributes).filter((key) => key.startsWith(`${endpoint}/${cluster}`)).map((key) => {
31
+ const attributeKey = Number(key.split("/")[2]);
32
+ return { key: attributeKey, value: attributes[key] };
33
+ }, []);
34
+ }
35
+ let MatterClusterView = class extends LitElement {
36
+ render() {
37
+ if (!this.node || this.endpoint == void 0 || this.cluster == void 0) {
38
+ return html`
39
+ <p>Node, endpoint or cluster not found!</p>
40
+ <button @click=${this._goBack}>Back</button>
41
+ `;
42
+ }
43
+ return html`
44
+ <dashboard-header
45
+ .title=${`Node ${this.node.node_id} | Endpoint ${this.endpoint} | Cluster ${this.cluster}`}
46
+ .backButton=${`#node/${this.node.node_id}/${this.endpoint}`}
47
+ .client=${this.client}
48
+ ></dashboard-header>
49
+
50
+ <!-- node details section -->
51
+ <div class="container">
52
+ <node-details .node=${this.node} .client=${this.client}></node-details>
53
+ </div>
54
+
55
+ <!-- Cluster attributes listing -->
56
+ <div class="container">
57
+ <md-list>
58
+ <md-list-item>
59
+ <div slot="headline">
60
+ <b
61
+ >Attributes of ${clusters[this.cluster]?.label || "Custom/Unknown Cluster"} Cluster on
62
+ Endpoint ${this.endpoint}</b
63
+ >
64
+ </div>
65
+ <div slot="supporting-text">ClusterId ${this.cluster} (0x00${this.cluster.toString(16)})</div>
66
+ </md-list-item>
67
+ ${clusterAttributes(this.node.attributes, this.endpoint, this.cluster).map((attribute) => {
68
+ return html`
69
+ <md-list-item>
70
+ <div slot="headline">
71
+ ${clusters[this.cluster]?.attributes[attribute.key]?.label || "Custom/Unknown Attribute"}
72
+ </div>
73
+ <div slot="supporting-text">
74
+ AttributeId: ${attribute.key} (0x00${attribute.key.toString(16)}) - Value type:
75
+ ${clusters[this.cluster]?.attributes[attribute.key]?.type || "unknown"}
76
+ </div>
77
+ <div slot="end">
78
+ ${toBigIntAwareJson(attribute.value).length > 20 ? html`<button
79
+ @click=${() => {
80
+ this._showAttributeValue(attribute.value);
81
+ }}
82
+ >
83
+ Show value
84
+ </button>` : toBigIntAwareJson(attribute.value)}
85
+ </div>
86
+ </md-list-item>
87
+ <md-divider />
88
+ `;
89
+ })}
90
+ </md-list>
91
+ </div>
92
+ `;
93
+ }
94
+ async _showAttributeValue(value) {
95
+ showAlertDialog({
96
+ title: "Attribute value",
97
+ text: toBigIntAwareJson(value)
98
+ });
99
+ }
100
+ _goBack() {
101
+ history.back();
102
+ }
103
+ };
104
+ MatterClusterView.styles = css`
105
+ :host {
106
+ display: block;
107
+ background-color: var(--md-sys-color-background);
108
+ }
109
+
110
+ .header {
111
+ background-color: var(--md-sys-color-primary);
112
+ color: var(--md-sys-color-on-primary);
113
+ --icon-primary-color: var(--md-sys-color-on-primary);
114
+ font-weight: 400;
115
+ display: flex;
116
+ align-items: center;
117
+ padding-right: 8px;
118
+ height: 48px;
119
+ }
120
+
121
+ md-icon-button {
122
+ margin-right: 8px;
123
+ }
124
+
125
+ .flex {
126
+ flex: 1;
127
+ }
128
+
129
+ .container {
130
+ padding: 16px;
131
+ max-width: 95%;
132
+ margin: 0 auto;
133
+ }
134
+
135
+ .status {
136
+ color: var(--danger-color);
137
+ font-weight: bold;
138
+ font-size: 0.8em;
139
+ }
140
+ `;
141
+ __decorateClass([
142
+ property()
143
+ ], MatterClusterView.prototype, "node", 2);
144
+ __decorateClass([
145
+ provide({ context: bindingContext }),
146
+ property()
147
+ ], MatterClusterView.prototype, "endpoint", 2);
148
+ __decorateClass([
149
+ property()
150
+ ], MatterClusterView.prototype, "cluster", 2);
151
+ MatterClusterView = __decorateClass([
152
+ customElement("matter-cluster-view")
153
+ ], MatterClusterView);
154
+ //# sourceMappingURL=matter-cluster-view.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/pages/matter-cluster-view.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025-2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { MatterClient } from "@matter-server/ws-client";
7
+ import { LitElement, PropertyValueMap } from "lit";
8
+ import "./matter-cluster-view";
9
+ import "./matter-endpoint-view";
10
+ import "./matter-node-view";
11
+ import "./matter-server-view";
12
+ declare global {
13
+ interface HTMLElementTagNameMap {
14
+ "matter-dashboard-app": MatterDashboardApp;
15
+ }
16
+ }
17
+ declare class MatterDashboardApp extends LitElement {
18
+ private _route;
19
+ client: MatterClient;
20
+ private _state;
21
+ private _error;
22
+ private provider;
23
+ protected firstUpdated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
24
+ render(): import("lit-html").TemplateResult<1>;
25
+ }
26
+ export {};
27
+ //# sourceMappingURL=matter-dashboard-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matter-dashboard-app.d.ts","sourceRoot":"","sources":["../../../src/pages/matter-dashboard-app.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAe,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAQ,MAAM,KAAK,CAAC;AAKzD,OAAO,uBAAuB,CAAC;AAC/B,OAAO,wBAAwB,CAAC;AAChC,OAAO,oBAAoB,CAAC;AAC5B,OAAO,sBAAsB,CAAC;AAE9B,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,sBAAsB,EAAE,kBAAkB,CAAC;KAC9C;CACJ;AAED,cACM,kBAAmB,SAAQ,UAAU;IAC9B,OAAO,CAAC,MAAM,CAGrB;IAEK,MAAM,EAAG,YAAY,CAAC;IAG7B,OAAO,CAAC,MAAM,CAAuE;IAErF,OAAO,CAAC,MAAM,CAAqB;IAEnC,OAAO,CAAC,QAAQ,CAAoF;cAEjF,YAAY,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,IAAI;IAkCnG,MAAM;CAkDlB"}
@@ -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 { ContextProvider } from "@lit/context";
17
+ import { LitElement, html } from "lit";
18
+ import { customElement, state } from "lit/decorators.js";
19
+ import { clientContext } from "../client/client-context.js";
20
+ import { clone } from "../util/clone_class.js";
21
+ import "./matter-cluster-view";
22
+ import "./matter-endpoint-view";
23
+ import "./matter-node-view";
24
+ import "./matter-server-view";
25
+ let MatterDashboardApp = class extends LitElement {
26
+ constructor() {
27
+ super(...arguments);
28
+ this._route = {
29
+ prefix: "",
30
+ path: []
31
+ };
32
+ this._state = "connecting";
33
+ this.provider = new ContextProvider(this, { context: clientContext, initialValue: this.client });
34
+ }
35
+ firstUpdated(_changedProperties) {
36
+ super.firstUpdated(_changedProperties);
37
+ this.client.startListening().then(
38
+ () => {
39
+ this._state = "connected";
40
+ this.client.addEventListener("nodes_changed", () => {
41
+ this.requestUpdate();
42
+ this.provider.setValue(clone(this.client));
43
+ });
44
+ this.client.addEventListener("server_info_updated", () => {
45
+ this.provider.setValue(clone(this.client));
46
+ });
47
+ this.client.addEventListener("connection_lost", () => {
48
+ this._state = "disconnected";
49
+ });
50
+ },
51
+ (err) => {
52
+ this._state = "error";
53
+ this._error = err.message;
54
+ }
55
+ );
56
+ const updateRoute = () => {
57
+ const pathParts = location.hash.substring(1).split("/");
58
+ this._route = {
59
+ prefix: pathParts.length == 1 ? "" : pathParts[0],
60
+ path: pathParts.length == 1 ? pathParts : pathParts.slice(1)
61
+ };
62
+ };
63
+ window.addEventListener("hashchange", updateRoute);
64
+ updateRoute();
65
+ }
66
+ render() {
67
+ if (this._state === "connecting") {
68
+ return html`<p>Connecting...</p>`;
69
+ }
70
+ if (this._state === "disconnected") {
71
+ return html`<p>Connection lost</p>`;
72
+ }
73
+ if (this._state === "error") {
74
+ return html`
75
+ <p>Error: ${this._error}</p>
76
+ <button @click=${this.client.disconnect}>Clear stored URL</button>
77
+ `;
78
+ }
79
+ if (this._route.prefix === "node" && this._route.path.length == 3) {
80
+ return html`
81
+ <matter-cluster-view
82
+ .client=${this.client}
83
+ .node=${this.client.nodes[this._route.path[0]]}
84
+ .endpoint=${parseInt(this._route.path[1], 10)}
85
+ .cluster=${parseInt(this._route.path[2], 10)}
86
+ ></matter-cluster-view>
87
+ `;
88
+ }
89
+ if (this._route.prefix === "node" && this._route.path.length == 2) {
90
+ return html`
91
+ <matter-endpoint-view
92
+ .client=${this.client}
93
+ .node=${this.client.nodes[this._route.path[0]]}
94
+ .endpoint=${parseInt(this._route.path[1], 10)}
95
+ ></matter-endpoint-view>
96
+ `;
97
+ }
98
+ if (this._route.prefix === "node") {
99
+ return html`
100
+ <matter-node-view
101
+ .client=${this.client}
102
+ .node=${this.client.nodes[this._route.path[0]]}
103
+ ></matter-node-view>
104
+ `;
105
+ }
106
+ return html`<matter-server-view
107
+ .client=${this.client}
108
+ .nodes=${this.client.nodes}
109
+ .route=${this._route}
110
+ ></matter-server-view>`;
111
+ }
112
+ };
113
+ __decorateClass([
114
+ state()
115
+ ], MatterDashboardApp.prototype, "_route", 2);
116
+ __decorateClass([
117
+ state()
118
+ ], MatterDashboardApp.prototype, "_state", 2);
119
+ MatterDashboardApp = __decorateClass([
120
+ customElement("matter-dashboard-app")
121
+ ], MatterDashboardApp);
122
+ //# sourceMappingURL=matter-dashboard-app.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/pages/matter-dashboard-app.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -0,0 +1,29 @@
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 { DeviceType } from "../client/models/descriptions.js";
13
+ import "../components/ha-svg-icon";
14
+ declare global {
15
+ interface HTMLElementTagNameMap {
16
+ "matter-endpoint-view": MatterEndpointView;
17
+ }
18
+ }
19
+ export declare function getEndpointDeviceTypes(node: MatterNode, endpoint: number): DeviceType[];
20
+ declare class MatterEndpointView extends LitElement {
21
+ client: MatterClient;
22
+ node?: MatterNode;
23
+ endpoint?: number;
24
+ render(): import("lit-html").TemplateResult<1>;
25
+ private _goBack;
26
+ static styles: import("lit").CSSResult;
27
+ }
28
+ export {};
29
+ //# sourceMappingURL=matter-endpoint-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matter-endpoint-view.d.ts","sourceRoot":"","sources":["../../../src/pages/matter-endpoint-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,EAAE,UAAU,EAA0B,MAAM,kCAAkC,CAAC;AACtF,OAAO,2BAA2B,CAAC;AAEnC,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,sBAAsB,EAAE,kBAAkB,CAAC;KAC9C;CACJ;AAcD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CAOvF;AAED,cACM,kBAAmB,SAAQ,UAAU;IAChC,MAAM,EAAG,YAAY,CAAC;IAGtB,IAAI,CAAC,EAAE,UAAU,CAAC;IAGlB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAEhB,MAAM;IAuDf,OAAO,CAAC,OAAO;IAIf,OAAgB,MAAM,0BAoCpB;CACL"}