@matter-server/dashboard 0.3.2 → 0.3.4

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 (124) hide show
  1. package/README.md +76 -0
  2. package/dist/esm/pages/cluster-commands/base-cluster-commands.d.ts +2 -2
  3. package/dist/esm/pages/cluster-commands/base-cluster-commands.d.ts.map +1 -1
  4. package/dist/esm/pages/cluster-commands/base-cluster-commands.js.map +1 -1
  5. package/dist/esm/pages/cluster-commands/clusters/basic-information-commands.d.ts +36 -0
  6. package/dist/esm/pages/cluster-commands/clusters/basic-information-commands.d.ts.map +1 -0
  7. package/dist/esm/pages/cluster-commands/clusters/basic-information-commands.js +159 -0
  8. package/dist/esm/pages/cluster-commands/clusters/basic-information-commands.js.map +6 -0
  9. package/dist/esm/pages/cluster-commands/index.d.ts +1 -0
  10. package/dist/esm/pages/cluster-commands/index.d.ts.map +1 -1
  11. package/dist/esm/pages/cluster-commands/index.js +1 -0
  12. package/dist/esm/pages/cluster-commands/index.js.map +1 -1
  13. package/dist/esm/pages/components/footer.d.ts.map +1 -1
  14. package/dist/esm/pages/components/footer.js +4 -7
  15. package/dist/esm/pages/components/footer.js.map +1 -1
  16. package/dist/esm/pages/components/header.d.ts +5 -0
  17. package/dist/esm/pages/components/header.d.ts.map +1 -1
  18. package/dist/esm/pages/components/header.js +75 -0
  19. package/dist/esm/pages/components/header.js.map +1 -1
  20. package/dist/esm/pages/components/node-details.js +2 -2
  21. package/dist/esm/pages/components/node-details.js.map +1 -1
  22. package/dist/esm/pages/components/server-details.d.ts.map +1 -1
  23. package/dist/esm/pages/components/server-details.js +0 -1
  24. package/dist/esm/pages/components/server-details.js.map +1 -1
  25. package/dist/esm/pages/matter-cluster-view.d.ts.map +1 -1
  26. package/dist/esm/pages/matter-cluster-view.js +9 -4
  27. package/dist/esm/pages/matter-cluster-view.js.map +1 -1
  28. package/dist/esm/pages/matter-dashboard-app.d.ts +12 -0
  29. package/dist/esm/pages/matter-dashboard-app.d.ts.map +1 -1
  30. package/dist/esm/pages/matter-dashboard-app.js +84 -4
  31. package/dist/esm/pages/matter-dashboard-app.js.map +1 -1
  32. package/dist/esm/pages/matter-endpoint-view.d.ts.map +1 -1
  33. package/dist/esm/pages/matter-endpoint-view.js +8 -2
  34. package/dist/esm/pages/matter-endpoint-view.js.map +1 -1
  35. package/dist/esm/pages/matter-network-view.d.ts +52 -0
  36. package/dist/esm/pages/matter-network-view.d.ts.map +1 -0
  37. package/dist/esm/pages/matter-network-view.js +309 -0
  38. package/dist/esm/pages/matter-network-view.js.map +6 -0
  39. package/dist/esm/pages/matter-node-view.d.ts.map +1 -1
  40. package/dist/esm/pages/matter-node-view.js +86 -3
  41. package/dist/esm/pages/matter-node-view.js.map +1 -1
  42. package/dist/esm/pages/matter-server-view.d.ts +4 -0
  43. package/dist/esm/pages/matter-server-view.d.ts.map +1 -1
  44. package/dist/esm/pages/matter-server-view.js +16 -1
  45. package/dist/esm/pages/matter-server-view.js.map +1 -1
  46. package/dist/esm/pages/network/base-network-graph.d.ts +74 -0
  47. package/dist/esm/pages/network/base-network-graph.d.ts.map +1 -0
  48. package/dist/esm/pages/network/base-network-graph.js +411 -0
  49. package/dist/esm/pages/network/base-network-graph.js.map +6 -0
  50. package/dist/esm/pages/network/device-icons.d.ts +52 -0
  51. package/dist/esm/pages/network/device-icons.d.ts.map +1 -0
  52. package/dist/esm/pages/network/device-icons.js +197 -0
  53. package/dist/esm/pages/network/device-icons.js.map +6 -0
  54. package/dist/esm/pages/network/device-panel.d.ts +31 -0
  55. package/dist/esm/pages/network/device-panel.d.ts.map +1 -0
  56. package/dist/esm/pages/network/device-panel.js +183 -0
  57. package/dist/esm/pages/network/device-panel.js.map +6 -0
  58. package/dist/esm/pages/network/network-details.d.ts +77 -0
  59. package/dist/esm/pages/network/network-details.d.ts.map +1 -0
  60. package/dist/esm/pages/network/network-details.js +904 -0
  61. package/dist/esm/pages/network/network-details.js.map +6 -0
  62. package/dist/esm/pages/network/network-types.d.ts +159 -0
  63. package/dist/esm/pages/network/network-types.d.ts.map +1 -0
  64. package/dist/esm/pages/network/network-types.js +19 -0
  65. package/dist/esm/pages/network/network-types.js.map +6 -0
  66. package/dist/esm/pages/network/network-utils.d.ts +196 -0
  67. package/dist/esm/pages/network/network-utils.d.ts.map +1 -0
  68. package/dist/esm/pages/network/network-utils.js +540 -0
  69. package/dist/esm/pages/network/network-utils.js.map +6 -0
  70. package/dist/esm/pages/network/thread-graph.d.ts +27 -0
  71. package/dist/esm/pages/network/thread-graph.d.ts.map +1 -0
  72. package/dist/esm/pages/network/thread-graph.js +137 -0
  73. package/dist/esm/pages/network/thread-graph.js.map +6 -0
  74. package/dist/esm/pages/network/update-connections-dialog.d.ts +55 -0
  75. package/dist/esm/pages/network/update-connections-dialog.d.ts.map +1 -0
  76. package/dist/esm/pages/network/update-connections-dialog.js +284 -0
  77. package/dist/esm/pages/network/update-connections-dialog.js.map +6 -0
  78. package/dist/esm/pages/network/wifi-graph.d.ts +27 -0
  79. package/dist/esm/pages/network/wifi-graph.d.ts.map +1 -0
  80. package/dist/esm/pages/network/wifi-graph.js +169 -0
  81. package/dist/esm/pages/network/wifi-graph.js.map +6 -0
  82. package/dist/esm/util/format_hex.d.ts +18 -0
  83. package/dist/esm/util/format_hex.d.ts.map +1 -1
  84. package/dist/esm/util/format_hex.js +21 -1
  85. package/dist/esm/util/format_hex.js.map +1 -1
  86. package/dist/web/js/{commission-node-dialog-CBSDiqRW.js → commission-node-dialog-CcMuttYO.js} +5 -5
  87. package/dist/web/js/{commission-node-existing-TP6s8Tez.js → commission-node-existing-CqTRDMAr.js} +2 -5
  88. package/dist/web/js/{commission-node-thread-DOB8pu6x.js → commission-node-thread-DgwtTVwK.js} +2 -5
  89. package/dist/web/js/{commission-node-wifi-tzavmk1j.js → commission-node-wifi-XaN2SEnE.js} +2 -5
  90. package/dist/web/js/{dialog-box-Dknil_Be.js → dialog-box-COpDD8i7.js} +2 -2
  91. package/dist/web/js/{fire_event-DRpOSjJR.js → fire_event-mDYWi2sw.js} +1 -1
  92. package/dist/web/js/{log-level-dialog-TXkma-7Z.js → log-level-dialog-Bc32kZVw.js} +2 -3
  93. package/dist/web/js/main.js +1 -1
  94. package/dist/web/js/matter-dashboard-app-CrBHT4fT.js +31606 -0
  95. package/dist/web/js/{node-binding-dialog-D52FCBFP.js → node-binding-dialog-C8fqOJiB.js} +2 -4
  96. package/dist/web/js/prevent_default-D-ohDGsN.js +8 -0
  97. package/package.json +6 -5
  98. package/src/pages/cluster-commands/base-cluster-commands.ts +2 -2
  99. package/src/pages/cluster-commands/clusters/basic-information-commands.ts +171 -0
  100. package/src/pages/cluster-commands/index.ts +1 -0
  101. package/src/pages/components/footer.ts +4 -7
  102. package/src/pages/components/header.ts +81 -0
  103. package/src/pages/components/node-details.ts +3 -3
  104. package/src/pages/components/server-details.ts +0 -1
  105. package/src/pages/matter-cluster-view.ts +11 -4
  106. package/src/pages/matter-dashboard-app.ts +105 -5
  107. package/src/pages/matter-endpoint-view.ts +10 -3
  108. package/src/pages/matter-network-view.ts +325 -0
  109. package/src/pages/matter-node-view.ts +93 -4
  110. package/src/pages/matter-server-view.ts +17 -1
  111. package/src/pages/network/base-network-graph.ts +477 -0
  112. package/src/pages/network/device-icons.ts +283 -0
  113. package/src/pages/network/device-panel.ts +180 -0
  114. package/src/pages/network/network-details.ts +1015 -0
  115. package/src/pages/network/network-types.ts +167 -0
  116. package/src/pages/network/network-utils.ts +861 -0
  117. package/src/pages/network/thread-graph.ts +170 -0
  118. package/src/pages/network/update-connections-dialog.ts +327 -0
  119. package/src/pages/network/wifi-graph.ts +193 -0
  120. package/src/util/format_hex.ts +39 -0
  121. package/dist/web/js/matter-dashboard-app-B7GUghkC.js +0 -17254
  122. package/dist/web/js/outlined-text-field-D1DyKQY-.js +0 -968
  123. package/dist/web/js/prevent_default-BPgSQsuY.js +0 -814
  124. package/dist/web/js/validator-C735j770.js +0 -1122
@@ -0,0 +1,169 @@
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 { html } from "lit";
17
+ import { customElement } from "lit/decorators.js";
18
+ import { BaseNetworkGraph } from "./base-network-graph.js";
19
+ import { createNodeIconDataUrl, createWiFiRouterIconDataUrl } from "./device-icons.js";
20
+ import {
21
+ categorizeDevices,
22
+ getDeviceName,
23
+ getNetworkType,
24
+ getSignalColorFromRssi,
25
+ getWiFiDiagnostics
26
+ } from "./network-utils.js";
27
+ let WiFiGraph = class extends BaseNetworkGraph {
28
+ constructor() {
29
+ super(...arguments);
30
+ /** Cache of access points for the current render */
31
+ this._accessPoints = /* @__PURE__ */ new Map();
32
+ }
33
+ /** Get access points map for use by details panel */
34
+ get wifiAccessPointsMap() {
35
+ return this._accessPoints;
36
+ }
37
+ /**
38
+ * Override physics for WiFi star topology - needs stronger cluster separation.
39
+ */
40
+ _getPhysicsOptions() {
41
+ return {
42
+ enabled: true,
43
+ solver: "forceAtlas2Based",
44
+ forceAtlas2Based: {
45
+ gravitationalConstant: -120,
46
+ // Stronger repulsion for star topology
47
+ centralGravity: 3e-3,
48
+ // Weaker central pull
49
+ springLength: 100,
50
+ // Shorter springs keep devices close to their AP
51
+ springConstant: 0.12,
52
+ // Stronger springs
53
+ damping: 0.4,
54
+ avoidOverlap: 0.8
55
+ },
56
+ stabilization: {
57
+ enabled: true,
58
+ iterations: 300,
59
+ updateInterval: 25
60
+ }
61
+ };
62
+ }
63
+ _updateGraph() {
64
+ if (!this._nodesDataSet || !this._edgesDataSet) return;
65
+ this._clearOriginalEdgeColors();
66
+ const categorized = categorizeDevices(this.nodes);
67
+ const wifiNodeIds = categorized.wifi;
68
+ if (wifiNodeIds.length === 0) {
69
+ this._nodesDataSet.clear();
70
+ this._edgesDataSet.clear();
71
+ this._accessPoints.clear();
72
+ return;
73
+ }
74
+ this._accessPoints.clear();
75
+ for (const nodeId of wifiNodeIds) {
76
+ const node = this.nodes[nodeId];
77
+ if (!node) continue;
78
+ const wifiDiag = getWiFiDiagnostics(node);
79
+ if (wifiDiag.bssid) {
80
+ const apId = `ap_${wifiDiag.bssid.replace(/:/g, "")}`;
81
+ if (!this._accessPoints.has(apId)) {
82
+ this._accessPoints.set(apId, {
83
+ bssid: wifiDiag.bssid,
84
+ connectedNodes: []
85
+ });
86
+ }
87
+ this._accessPoints.get(apId).connectedNodes.push(nodeId);
88
+ }
89
+ }
90
+ const graphNodes = [];
91
+ const graphEdges = [];
92
+ for (const [apId, ap] of this._accessPoints) {
93
+ const bssid = ap.bssid;
94
+ const isSelected = String(apId) === String(this._selectedNodeId);
95
+ graphNodes.push({
96
+ id: apId,
97
+ label: `AP ${bssid.slice(-8)}`,
98
+ image: createWiFiRouterIconDataUrl(isSelected),
99
+ shape: "image",
100
+ networkType: "wifi",
101
+ isUnknown: true
102
+ // Mark as infrastructure
103
+ });
104
+ }
105
+ let edgeIndex = 0;
106
+ for (const nodeId of wifiNodeIds) {
107
+ const node = this.nodes[nodeId];
108
+ if (!node) continue;
109
+ const isSelected = nodeId === String(this._selectedNodeId);
110
+ const isOffline = node.available === false;
111
+ const networkType = getNetworkType(node);
112
+ const wifiDiag = getWiFiDiagnostics(node);
113
+ graphNodes.push({
114
+ id: nodeId,
115
+ label: getDeviceName(node),
116
+ image: createNodeIconDataUrl(node, void 0, isSelected, isOffline),
117
+ shape: "image",
118
+ networkType,
119
+ offline: isOffline
120
+ });
121
+ if (wifiDiag.bssid) {
122
+ const apId = `ap_${wifiDiag.bssid.replace(/:/g, "")}`;
123
+ const signalColor = getSignalColorFromRssi(wifiDiag.rssi);
124
+ graphEdges.push({
125
+ id: `edge_${edgeIndex++}`,
126
+ from: nodeId,
127
+ to: apId,
128
+ color: {
129
+ color: signalColor,
130
+ highlight: signalColor
131
+ },
132
+ width: 2,
133
+ title: wifiDiag.rssi !== null ? `RSSI: ${wifiDiag.rssi} dBm` : "RSSI: Unknown",
134
+ dashes: isOffline
135
+ // Dashed lines for offline devices
136
+ });
137
+ }
138
+ }
139
+ const existingNodeIds = this._nodesDataSet.getIds();
140
+ const newNodeIds = new Set(graphNodes.map((n) => n.id));
141
+ const nodesToRemove = existingNodeIds.filter((id) => !newNodeIds.has(id));
142
+ if (nodesToRemove.length > 0) {
143
+ this._nodesDataSet.remove(nodesToRemove);
144
+ }
145
+ this._nodesDataSet.update(graphNodes);
146
+ this._edgesDataSet.clear();
147
+ this._edgesDataSet.add(graphEdges);
148
+ }
149
+ render() {
150
+ const categorized = categorizeDevices(this.nodes);
151
+ const wifiCount = categorized.wifi.length;
152
+ if (wifiCount === 0) {
153
+ return html`
154
+ <div class="empty-state">
155
+ <p>No WiFi devices found</p>
156
+ <p class="hint">WiFi devices will appear here once commissioned</p>
157
+ </div>
158
+ `;
159
+ }
160
+ return html`<div class="graph-container"></div>`;
161
+ }
162
+ };
163
+ WiFiGraph = __decorateClass([
164
+ customElement("wifi-graph")
165
+ ], WiFiGraph);
166
+ export {
167
+ WiFiGraph
168
+ };
169
+ //# sourceMappingURL=wifi-graph.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/pages/network/wifi-graph.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -25,4 +25,22 @@ export declare function formatHex(value: number | bigint): string;
25
25
  * (undefined, 2) -> "@?:2"
26
26
  */
27
27
  export declare function formatNodeAddress(fabricIndex: number | undefined, nodeId: number | bigint): string;
28
+ /**
29
+ * Get the effective fabric index for formatting a node address.
30
+ * Returns undefined for test nodes or when fabric index is not available,
31
+ * which will result in "?" being displayed.
32
+ *
33
+ * @param serverFabricIndex - The fabric_index from client.serverInfo
34
+ * @param isTestNode - Whether this is a test node (from isTestNodeId())
35
+ */
36
+ export declare function getEffectiveFabricIndex(serverFabricIndex: number | undefined, isTestNode: boolean): number | undefined;
37
+ /**
38
+ * Format a node address, handling string node IDs.
39
+ * Useful when node IDs come from various sources (string keys, numbers, bigints).
40
+ *
41
+ * @param fabricIndex - The fabric index (or undefined for "?")
42
+ * @param nodeId - The node ID as string, number, or bigint
43
+ * @returns Formatted address like "@1:7b" or empty string if nodeId is invalid
44
+ */
45
+ export declare function formatNodeAddressFromAny(fabricIndex: number | undefined, nodeId: number | bigint | string): string;
28
46
  //# sourceMappingURL=format_hex.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"format_hex.d.ts","sourceRoot":"","sources":["../../../src/util/format_hex.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAaxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAGlG"}
1
+ {"version":3,"file":"format_hex.d.ts","sourceRoot":"","sources":["../../../src/util/format_hex.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAaxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAGlG;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACnC,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,UAAU,EAAE,OAAO,GACpB,MAAM,GAAG,SAAS,CAEpB;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAclH"}
@@ -16,8 +16,28 @@ function formatNodeAddress(fabricIndex, nodeId) {
16
16
  const fabricPart = fabricIndex !== void 0 ? fabricIndex : "?";
17
17
  return `@${fabricPart}:${nodeId.toString(16)}`;
18
18
  }
19
+ function getEffectiveFabricIndex(serverFabricIndex, isTestNode) {
20
+ return isTestNode || serverFabricIndex === void 0 ? void 0 : serverFabricIndex;
21
+ }
22
+ function formatNodeAddressFromAny(fabricIndex, nodeId) {
23
+ let numericId;
24
+ if (typeof nodeId === "bigint") {
25
+ numericId = nodeId;
26
+ } else if (typeof nodeId === "number") {
27
+ numericId = BigInt(nodeId);
28
+ } else {
29
+ try {
30
+ numericId = BigInt(nodeId);
31
+ } catch {
32
+ return "";
33
+ }
34
+ }
35
+ return formatNodeAddress(fabricIndex, numericId);
36
+ }
19
37
  export {
20
38
  formatHex,
21
- formatNodeAddress
39
+ formatNodeAddress,
40
+ formatNodeAddressFromAny,
41
+ getEffectiveFabricIndex
22
42
  };
23
43
  //# sourceMappingURL=format_hex.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/format_hex.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAgBO,SAAS,UAAU,OAAgC;AACtD,MAAI,MAAM,MAAM,SAAS,EAAE,EAAE,YAAY;AAGzC,MAAI,IAAI,SAAS,GAAG;AAChB,UAAM,IAAI,SAAS,GAAG,GAAG;AAAA,EAC7B,WAES,IAAI,SAAS,MAAM,GAAG;AAC3B,UAAM,MAAM;AAAA,EAChB;AAEA,SAAO,KAAK,GAAG;AACnB;AAYO,SAAS,kBAAkB,aAAiC,QAAiC;AAChG,QAAM,aAAa,gBAAgB,SAAY,cAAc;AAC7D,SAAO,IAAI,UAAU,IAAI,OAAO,SAAS,EAAE,CAAC;AAChD;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAgBO,SAAS,UAAU,OAAgC;AACtD,MAAI,MAAM,MAAM,SAAS,EAAE,EAAE,YAAY;AAGzC,MAAI,IAAI,SAAS,GAAG;AAChB,UAAM,IAAI,SAAS,GAAG,GAAG;AAAA,EAC7B,WAES,IAAI,SAAS,MAAM,GAAG;AAC3B,UAAM,MAAM;AAAA,EAChB;AAEA,SAAO,KAAK,GAAG;AACnB;AAYO,SAAS,kBAAkB,aAAiC,QAAiC;AAChG,QAAM,aAAa,gBAAgB,SAAY,cAAc;AAC7D,SAAO,IAAI,UAAU,IAAI,OAAO,SAAS,EAAE,CAAC;AAChD;AAUO,SAAS,wBACZ,mBACA,YACkB;AAClB,SAAO,cAAc,sBAAsB,SAAY,SAAY;AACvE;AAUO,SAAS,yBAAyB,aAAiC,QAA0C;AAChH,MAAI;AACJ,MAAI,OAAO,WAAW,UAAU;AAC5B,gBAAY;AAAA,EAChB,WAAW,OAAO,WAAW,UAAU;AACnC,gBAAY,OAAO,MAAM;AAAA,EAC7B,OAAO;AACH,QAAI;AACA,kBAAY,OAAO,MAAM;AAAA,IAC7B,QAAQ;AACJ,aAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO,kBAAkB,aAAa,SAAS;AACnD;",
5
5
  "names": []
6
6
  }
@@ -1,5 +1,5 @@
1
- import { r, n, t, i, h as b } from './matter-dashboard-app-B7GUghkC.js';
2
- import { p as preventDefault } from './prevent_default-BPgSQsuY.js';
1
+ import { r, n, t, i, j as b } from './matter-dashboard-app-CrBHT4fT.js';
2
+ import { p as preventDefault } from './prevent_default-D-ohDGsN.js';
3
3
  import './main.js';
4
4
 
5
5
  var __defProp = Object.defineProperty;
@@ -44,18 +44,18 @@ let ComissionNodeDialog = class extends i {
44
44
  if (!this.client.serverInfo.bluetooth_enabled) {
45
45
  return;
46
46
  }
47
- import('./commission-node-wifi-tzavmk1j.js');
47
+ import('./commission-node-wifi-XaN2SEnE.js');
48
48
  this._mode = "wifi";
49
49
  }
50
50
  _commissionThread() {
51
51
  if (!this.client.serverInfo.bluetooth_enabled) {
52
52
  return;
53
53
  }
54
- import('./commission-node-thread-DOB8pu6x.js');
54
+ import('./commission-node-thread-DgwtTVwK.js');
55
55
  this._mode = "thread";
56
56
  }
57
57
  _commissionExisting() {
58
- import('./commission-node-existing-TP6s8Tez.js');
58
+ import('./commission-node-existing-CqTRDMAr.js');
59
59
  this._mode = "existing";
60
60
  }
61
61
  _nodeCommissioned(ev) {
@@ -1,9 +1,6 @@
1
- import { r, s as c, v as clientContext, n, a as e, t, i, A, q as handleAsync, h as b } from './matter-dashboard-app-B7GUghkC.js';
2
- import { f as fireEvent } from './fire_event-DRpOSjJR.js';
3
- import './outlined-text-field-D1DyKQY-.js';
1
+ import { r, G as c, H as clientContext, n, a as e, t, i, A, F as handleAsync, j as b } from './matter-dashboard-app-CrBHT4fT.js';
2
+ import { f as fireEvent } from './fire_event-mDYWi2sw.js';
4
3
  import './main.js';
5
- import './validator-C735j770.js';
6
- import './prevent_default-BPgSQsuY.js';
7
4
 
8
5
  var __defProp = Object.defineProperty;
9
6
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -1,9 +1,6 @@
1
- import { r, s as c, v as clientContext, n, a as e, t, i, A, q as handleAsync, h as b } from './matter-dashboard-app-B7GUghkC.js';
2
- import { f as fireEvent } from './fire_event-DRpOSjJR.js';
3
- import './outlined-text-field-D1DyKQY-.js';
1
+ import { r, G as c, H as clientContext, n, a as e, t, i, A, F as handleAsync, j as b } from './matter-dashboard-app-CrBHT4fT.js';
2
+ import { f as fireEvent } from './fire_event-mDYWi2sw.js';
4
3
  import './main.js';
5
- import './validator-C735j770.js';
6
- import './prevent_default-BPgSQsuY.js';
7
4
 
8
5
  var __defProp = Object.defineProperty;
9
6
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -1,9 +1,6 @@
1
- import { r, s as c, v as clientContext, n, a as e, t, i, A, q as handleAsync, h as b } from './matter-dashboard-app-B7GUghkC.js';
2
- import { f as fireEvent } from './fire_event-DRpOSjJR.js';
3
- import './outlined-text-field-D1DyKQY-.js';
1
+ import { r, G as c, H as clientContext, n, a as e, t, i, A, F as handleAsync, j as b } from './matter-dashboard-app-CrBHT4fT.js';
2
+ import { f as fireEvent } from './fire_event-mDYWi2sw.js';
4
3
  import './main.js';
5
- import './validator-C735j770.js';
6
- import './prevent_default-BPgSQsuY.js';
7
4
 
8
5
  var __defProp = Object.defineProperty;
9
6
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -1,5 +1,5 @@
1
- import { n, t, i, h as b } from './matter-dashboard-app-B7GUghkC.js';
2
- import { p as preventDefault } from './prevent_default-BPgSQsuY.js';
1
+ import { n, t, i, j as b } from './matter-dashboard-app-CrBHT4fT.js';
2
+ import { p as preventDefault } from './prevent_default-D-ohDGsN.js';
3
3
  import './main.js';
4
4
 
5
5
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- import { m as mixinDelegatesAria, i, _ as __decorate, n, A, f as e, h as b, j as i$1, t } from './matter-dashboard-app-B7GUghkC.js';
1
+ import { m as mixinDelegatesAria, i, _ as __decorate, n, A, f as e, j as b, k as i$1, t } from './matter-dashboard-app-CrBHT4fT.js';
2
2
 
3
3
  /**
4
4
  * @license
@@ -1,6 +1,5 @@
1
- import { e, N as NavigableKeys, _ as __decorate, a as e$1, n as n$1, o, r, i, c as createAnimationSignal, L as ListController, g as getActiveItem, b as getLastActivatableItem, d as getFirstActivatableItem, A, f as e$2, h as b, E as EASING, j as i$1, t, D, m as mixinDelegatesAria, k as mixinElementInternals, u, l as i$2, p as fireAndForget, q as handleAsync } from './matter-dashboard-app-B7GUghkC.js';
2
- import { r as redispatchEvent, p as preventDefault } from './prevent_default-BPgSQsuY.js';
3
- import { o as o$1, V as Validator, m as mixinOnReportValidity, a as mixinConstraintValidation, b as mixinFormAssociated, c as onReportValidity, g as getFormValue, d as createValidator, e as getValidityAnchor } from './validator-C735j770.js';
1
+ import { e, N as NavigableKeys, _ as __decorate, a as e$1, n as n$1, o, r, i, c as createAnimationSignal, L as ListController, g as getActiveItem, b as getLastActivatableItem, d as getFirstActivatableItem, A, f as e$2, h as o$1, j as b, E as EASING, k as i$1, t, V as Validator, D, m as mixinDelegatesAria, l as mixinOnReportValidity, p as mixinConstraintValidation, q as mixinFormAssociated, s as mixinElementInternals, u as onReportValidity, v as u, w as redispatchEvent, x as getFormValue, y as createValidator, z as getValidityAnchor, B as i$2, C as fireAndForget, F as handleAsync } from './matter-dashboard-app-CrBHT4fT.js';
2
+ import { p as preventDefault } from './prevent_default-D-ohDGsN.js';
4
3
  import './main.js';
5
4
 
6
5
  /**
@@ -748,7 +748,7 @@ const ThemeService = new ThemeServiceImpl();
748
748
  * SPDX-License-Identifier: Apache-2.0
749
749
  */
750
750
  async function main() {
751
- import('./matter-dashboard-app-B7GUghkC.js').then(function (n) { return n.C; });
751
+ import('./matter-dashboard-app-CrBHT4fT.js').then(function (n) { return n.I; });
752
752
  let url = "";
753
753
  const isProductionServer = location.origin.includes(":5580") || location.href.includes("hassio_ingress") || location.href.includes("/api/ingress/");
754
754
  if (!isProductionServer) {