@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
package/README.md CHANGED
@@ -25,3 +25,79 @@ You can also set the theme via URL query parameter:
25
25
  - `?theme=system` - Switch to system auto-detect
26
26
 
27
27
  The query parameter will override and save the preference to localStorage.
28
+
29
+ ## Network Visualization
30
+
31
+ The Network page displays a visual graph of your Matter network topology, showing Thread and WiFi connections between devices.
32
+
33
+ ### Understanding Node Colors
34
+
35
+ Node colors indicate device status:
36
+
37
+ - **Grey**: Online device (commissioned to this fabric)
38
+ - **Blue**: Currently selected node
39
+ - **Red**: Offline device (not responding)
40
+ - **Orange**: Unknown/external device (not commissioned to this fabric, detected in neighbor tables)
41
+
42
+ ### Understanding Connection Lines
43
+
44
+ Connection lines represent the communication links between devices:
45
+
46
+ - **Solid lines**: Connections to online devices
47
+ - **Dashed lines**: Connections to offline or unknown devices (based on last known data)
48
+ - **Line colors** indicate signal quality:
49
+ - **Green**: Strong signal (RSSI > -60 dBm or LQI > 200)
50
+ - **Yellow/Orange**: Medium signal (RSSI > -75 dBm or LQI > 100)
51
+ - **Red**: Weak signal
52
+
53
+ ### Thread Network Details
54
+
55
+ When you click on a Thread device, the details panel shows network information:
56
+
57
+ - **Thread Role**: The device's role in the Thread network (Router, End Device, etc.)
58
+ - **Direct neighbors**: Number of devices in the neighbor table (direct RF neighbors)
59
+ - **Routable destinations**: Number of destinations in the route table (routers only)
60
+
61
+ #### Connection Details
62
+
63
+ Each connection shows:
64
+
65
+ - **LQI (Link Quality Indicator)**: 0-255, higher is better. Derived from RF signal quality.
66
+ - **RSSI (Received Signal Strength)**: In dBm, closer to 0 is stronger (e.g., -50 dBm is better than -80 dBm).
67
+ - **Bidir (Bidirectional LQI)**: Average of inbound and outbound LQI from the route table. Only available for router connections.
68
+ - **Cost (Path Cost)**: Number of hops to reach the destination. 1 = direct link, higher = multi-hop route.
69
+
70
+ #### Data Sources
71
+
72
+ Thread devices maintain two tables:
73
+
74
+ 1. **Neighbor Table** (0/53/7): Direct RF neighbors visible to the device. All Thread devices have this.
75
+ 2. **Route Table** (0/53/8): Routing paths to other nodes. Only routers maintain this table.
76
+
77
+ The visualization combines both tables directly from the devices to provide the most complete picture of your network.
78
+
79
+ ### Update Connections
80
+
81
+ Click the refresh button in the device details panel to update network data:
82
+
83
+ - **Online devices**: Refreshes neighbor and route tables from the selected device
84
+ - **Include neighbors**: Optionally refresh data from connected online neighbors too
85
+ - **Offline devices**: Updates data from online neighbors that can see the offline device
86
+
87
+ This is useful when network topology changes or when you want the latest signal quality readings.
88
+
89
+ ### Unknown Devices
90
+
91
+ Devices that appear in neighbor tables but are not commissioned to your fabric are shown as "Unknown" with an orange icon. These could be:
92
+
93
+ - Devices commissioned to a different fabric (e.g., Home Assistant's Thread Border Router)
94
+ - Border routers from other Thread networks
95
+ - Thread devices in pairing mode
96
+
97
+ Unknown devices show as "Router (external)" or "End Device (external)" based on their radio behavior (rxOnWhenIdle). Since they're not commissioned to this fabric, we cannot query their actual Thread role (Leader, Router, etc.).
98
+
99
+ ### Limitations
100
+
101
+ **Thread roles for external devices**: The Thread role (Leader, Router, End Device) can only be determined for devices commissioned to this fabric. External devices like Home Assistant's Thread Border Router will show as "Router (external)" even if they are the current Thread Leader. This is a fundamental Matter limitation - we cannot query attributes from devices on other fabrics.
102
+
103
+ **Leader role is dynamic**: In Thread networks, the Leader role can change via leader election. Any router can potentially become the Leader, so this status may change over time.
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { MatterClient, MatterNode } from "@matter-server/ws-client";
7
- import { LitElement } from "lit";
7
+ import { LitElement, type CSSResultGroup } from "lit";
8
8
  /**
9
9
  * Base class for cluster-specific command panels.
10
10
  * Provides shared properties, styling, and helper methods for sending commands.
@@ -20,6 +20,6 @@ export declare abstract class BaseClusterCommands extends LitElement {
20
20
  * @param payload - Optional command payload
21
21
  */
22
22
  protected sendCommand(command: string, payload?: Record<string, unknown>): Promise<void>;
23
- static styles: import("lit").CSSResult;
23
+ static styles: CSSResultGroup;
24
24
  }
25
25
  //# sourceMappingURL=base-cluster-commands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-cluster-commands.d.ts","sourceRoot":"","sources":["../../../../src/pages/cluster-commands/base-cluster-commands.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAO,MAAM,KAAK,CAAC;AAGtC;;;GAGG;AACH,8BAAsB,mBAAoB,SAAQ,UAAU;IAEjD,MAAM,EAAG,YAAY,CAAC;IAGtB,IAAI,EAAG,UAAU,CAAC;IAGlB,QAAQ,EAAG,MAAM,CAAC;IAGlB,OAAO,EAAG,MAAM,CAAC;IAExB;;;;OAIG;cACa,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9F,OAAgB,MAAM,0BA+EpB;CACL"}
1
+ {"version":3,"file":"base-cluster-commands.d.ts","sourceRoot":"","sources":["../../../../src/pages/cluster-commands/base-cluster-commands.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAO,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAG3D;;;GAGG;AACH,8BAAsB,mBAAoB,SAAQ,UAAU;IAEjD,MAAM,EAAG,YAAY,CAAC;IAGtB,IAAI,EAAG,UAAU,CAAC;IAGlB,QAAQ,EAAG,MAAM,CAAC;IAGlB,OAAO,EAAG,MAAM,CAAC;IAExB;;;;OAIG;cACa,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9F,OAAgB,MAAM,EAAE,cAAc,CA+EpC;CACL"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/pages/cluster-commands/base-cluster-commands.ts"],
4
- "mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,YAAY,WAAW;AAChC,SAAS,gBAAgB;AAMlB,MAAe,4BAA4B,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBzD,MAAgB,YAAY,SAAiB,SAAkD;AAC3F,QAAI;AACA,YAAM,KAAK,OAAO,cAAc,KAAK,KAAK,SAAS,KAAK,UAAU,KAAK,SAAS,SAAS,WAAW,CAAC,CAAC;AAAA,IAC1G,SAAS,OAAO;AACZ,cAAQ,MAAM,0BAA0B,OAAO,KAAK,KAAK;AAAA,IAE7D;AAAA,EACJ;AAAA,EAEA;AAAA,SAAgB,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;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgF7B;AAzGW;AAAA,EADN,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,GADZ,oBAEX;AAGA;AAAA,EADN,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,GAJZ,oBAKX;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAPR,oBAQX;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAVR,oBAWX;",
4
+ "mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,YAAY,WAAgC;AACrD,SAAS,gBAAgB;AAMlB,MAAe,4BAA4B,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBzD,MAAgB,YAAY,SAAiB,SAAkD;AAC3F,QAAI;AACA,YAAM,KAAK,OAAO,cAAc,KAAK,KAAK,SAAS,KAAK,UAAU,KAAK,SAAS,SAAS,WAAW,CAAC,CAAC;AAAA,IAC1G,SAAS,OAAO;AACZ,cAAQ,MAAM,0BAA0B,OAAO,KAAK,KAAK;AAAA,IAE7D;AAAA,EACJ;AAAA,EAEA;AAAA,SAAgB,SAAyB;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;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgF7C;AAzGW;AAAA,EADN,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,GADZ,oBAEX;AAGA;AAAA,EADN,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,GAJZ,oBAKX;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAPR,oBAQX;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAVR,oBAWX;",
5
5
  "names": []
6
6
  }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025-2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import "@material/web/button/filled-button";
7
+ import "@material/web/textfield/outlined-text-field";
8
+ import { type CSSResultGroup } from "lit";
9
+ import { BaseClusterCommands } from "../base-cluster-commands.js";
10
+ /**
11
+ * Command panel for BasicInformation cluster (ID: 0x28 / 40).
12
+ * Provides ability to edit the NodeLabel attribute.
13
+ */
14
+ export declare class BasicInformationClusterCommands extends BaseClusterCommands {
15
+ private _nodeLabel;
16
+ private _saving;
17
+ updated(changedProperties: Map<string, unknown>): void;
18
+ /**
19
+ * Load the current NodeLabel from the node's cached attributes.
20
+ */
21
+ private _loadCurrentNodeLabel;
22
+ /**
23
+ * Check if the node is available (not offline).
24
+ */
25
+ private get _isNodeAvailable();
26
+ render(): import("lit-html").TemplateResult<1>;
27
+ private _handleInput;
28
+ private _handleSave;
29
+ static styles: CSSResultGroup;
30
+ }
31
+ declare global {
32
+ interface HTMLElementTagNameMap {
33
+ "basic-information-cluster-commands": BasicInformationClusterCommands;
34
+ }
35
+ }
36
+ //# sourceMappingURL=basic-information-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic-information-commands.d.ts","sourceRoot":"","sources":["../../../../../src/pages/cluster-commands/clusters/basic-information-commands.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,oCAAoC,CAAC;AAC5C,OAAO,6CAA6C,CAAC;AACrD,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAI9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAOlE;;;GAGG;AACH,qBACa,+BAAgC,SAAQ,mBAAmB;IAEpE,OAAO,CAAC,UAAU,CAAc;IAGhC,OAAO,CAAC,OAAO,CAAkB;IAExB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAQxD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsB7B;;OAEG;IACH,OAAO,KAAK,gBAAgB,GAE3B;IAEQ,MAAM;IA6Bf,OAAO,CAAC,YAAY;YAKN,WAAW;IA+BzB,OAAgB,MAAM,EAAE,cAAc,CAwBpC;CACL;AAKD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,oCAAoC,EAAE,+BAA+B,CAAC;KACzE;CACJ"}
@@ -0,0 +1,159 @@
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/textfield/outlined-text-field";
18
+ import { css, html, nothing } from "lit";
19
+ import { customElement, state } from "lit/decorators.js";
20
+ import { showAlertDialog } from "../../../components/dialog-box/show-dialog-box.js";
21
+ import { handleAsync } from "../../../util/async-handler.js";
22
+ import { BaseClusterCommands } from "../base-cluster-commands.js";
23
+ import { registerClusterCommands } from "../registry.js";
24
+ const CLUSTER_ID = 40;
25
+ const NODE_LABEL_ATTRIBUTE_ID = 5;
26
+ const MAX_NODE_LABEL_LENGTH = 32;
27
+ let BasicInformationClusterCommands = class extends BaseClusterCommands {
28
+ constructor() {
29
+ super(...arguments);
30
+ this._nodeLabel = "";
31
+ this._saving = false;
32
+ }
33
+ updated(changedProperties) {
34
+ super.updated(changedProperties);
35
+ if (changedProperties.has("node") && this.node) {
36
+ this._loadCurrentNodeLabel();
37
+ }
38
+ }
39
+ /**
40
+ * Load the current NodeLabel from the node's cached attributes.
41
+ */
42
+ _loadCurrentNodeLabel() {
43
+ if (!this.node) {
44
+ return;
45
+ }
46
+ if (this.node.nodeLabel) {
47
+ this._nodeLabel = this.node.nodeLabel;
48
+ return;
49
+ }
50
+ const attributePath = `0/${CLUSTER_ID}/${NODE_LABEL_ATTRIBUTE_ID}`;
51
+ const currentValue = this.node.attributes[attributePath];
52
+ if (typeof currentValue === "string") {
53
+ this._nodeLabel = currentValue;
54
+ } else {
55
+ this._nodeLabel = "";
56
+ }
57
+ }
58
+ /**
59
+ * Check if the node is available (not offline).
60
+ */
61
+ get _isNodeAvailable() {
62
+ return this.node.available;
63
+ }
64
+ render() {
65
+ return html`
66
+ <details class="command-panel">
67
+ <summary>Node Label</summary>
68
+ <div class="command-content">
69
+ ${!this._isNodeAvailable ? html`<div class="offline-warning">Node is offline - cannot edit label</div>` : nothing}
70
+ <div class="command-row">
71
+ <md-outlined-text-field
72
+ label="Node Label"
73
+ .value=${this._nodeLabel}
74
+ @input=${this._handleInput}
75
+ maxlength=${MAX_NODE_LABEL_LENGTH}
76
+ ?disabled=${!this._isNodeAvailable || this._saving}
77
+ supporting-text="Max ${MAX_NODE_LABEL_LENGTH} characters"
78
+ ></md-outlined-text-field>
79
+ <md-filled-button
80
+ @click=${handleAsync(() => this._handleSave())}
81
+ ?disabled=${!this._isNodeAvailable || this._saving}
82
+ >
83
+ ${this._saving ? "Saving..." : "Save"}
84
+ </md-filled-button>
85
+ </div>
86
+ </div>
87
+ </details>
88
+ `;
89
+ }
90
+ _handleInput(e) {
91
+ const input = e.target;
92
+ this._nodeLabel = input.value;
93
+ }
94
+ async _handleSave() {
95
+ if (!this._isNodeAvailable) {
96
+ showAlertDialog({
97
+ title: "Cannot Save",
98
+ text: "Node is offline. Please wait until the node is available."
99
+ });
100
+ return;
101
+ }
102
+ this._saving = true;
103
+ try {
104
+ const attributePath = `0/${CLUSTER_ID}/${NODE_LABEL_ATTRIBUTE_ID}`;
105
+ await this.client.writeAttribute(this.node.node_id, attributePath, this._nodeLabel);
106
+ showAlertDialog({
107
+ title: "Success",
108
+ text: `Node label set to "${this._nodeLabel}"`
109
+ });
110
+ } catch (error) {
111
+ const errorMessage = error instanceof Error ? error.message : String(error);
112
+ showAlertDialog({
113
+ title: "Failed to set node label",
114
+ text: errorMessage
115
+ });
116
+ } finally {
117
+ this._saving = false;
118
+ }
119
+ }
120
+ };
121
+ BasicInformationClusterCommands.styles = [
122
+ BaseClusterCommands.styles,
123
+ css`
124
+ .command-row {
125
+ align-items: flex-start;
126
+ }
127
+
128
+ md-outlined-text-field {
129
+ width: 36ch; /* 32 chars + some padding for field chrome */
130
+ }
131
+
132
+ md-filled-button {
133
+ margin-top: 8px; /* Align with text field input area, accounting for label */
134
+ }
135
+
136
+ .offline-warning {
137
+ color: var(--danger-color, #d32f2f);
138
+ font-size: 14px;
139
+ margin-bottom: 12px;
140
+ padding: 8px 12px;
141
+ background-color: var(--md-sys-color-error-container, #fdecea);
142
+ border-radius: 4px;
143
+ }
144
+ `
145
+ ];
146
+ __decorateClass([
147
+ state()
148
+ ], BasicInformationClusterCommands.prototype, "_nodeLabel", 2);
149
+ __decorateClass([
150
+ state()
151
+ ], BasicInformationClusterCommands.prototype, "_saving", 2);
152
+ BasicInformationClusterCommands = __decorateClass([
153
+ customElement("basic-information-cluster-commands")
154
+ ], BasicInformationClusterCommands);
155
+ registerClusterCommands(CLUSTER_ID, "basic-information-cluster-commands");
156
+ export {
157
+ BasicInformationClusterCommands
158
+ };
159
+ //# sourceMappingURL=basic-information-commands.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/pages/cluster-commands/clusters/basic-information-commands.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -9,6 +9,7 @@
9
9
  */
10
10
  export { getClusterCommandsTag, hasClusterCommands, registerClusterCommands } from "./registry.js";
11
11
  export { BaseClusterCommands } from "./base-cluster-commands.js";
12
+ import "./clusters/basic-information-commands.js";
12
13
  import "./clusters/level-control-commands.js";
13
14
  import "./clusters/on-off-commands.js";
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/pages/cluster-commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AAGH,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAGnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,sCAAsC,CAAC;AAC9C,OAAO,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/pages/cluster-commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AAGH,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAGnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,0CAA0C,CAAC;AAClD,OAAO,sCAAsC,CAAC;AAC9C,OAAO,+BAA+B,CAAC"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { getClusterCommandsTag, hasClusterCommands, registerClusterCommands } from "./registry.js";
7
7
  import { BaseClusterCommands } from "./base-cluster-commands.js";
8
+ import "./clusters/basic-information-commands.js";
8
9
  import "./clusters/level-control-commands.js";
9
10
  import "./clusters/on-off-commands.js";
10
11
  export {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/pages/cluster-commands/index.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAYA,SAAS,uBAAuB,oBAAoB,+BAA+B;AAGnF,SAAS,2BAA2B;AAGpC,OAAO;AACP,OAAO;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAYA,SAAS,uBAAuB,oBAAoB,+BAA+B;AAGnF,SAAS,2BAA2B;AAGpC,OAAO;AACP,OAAO;AACP,OAAO;",
5
5
  "names": []
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../../../../src/pages/components/footer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,qBACa,eAAgB,SAAQ,UAAU;cACxB,MAAM;IAWzB,OAAgB,MAAM,0BAepB;CACL"}
1
+ {"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../../../../src/pages/components/footer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,qBACa,eAAgB,SAAQ,UAAU;cACxB,MAAM;IAWzB,OAAgB,MAAM,0BAYpB;CACL"}
@@ -29,14 +29,11 @@ let DashboardFooter = class extends LitElement {
29
29
  };
30
30
  DashboardFooter.styles = css`
31
31
  .footer {
32
- padding: 16px;
32
+ padding: 4px 16px;
33
33
  text-align: center;
34
- font-size: 0.8em;
35
- color: var(--md-sys-color-on-surface);
36
- display: flex;
37
- flex-direction: column;
38
- position: relative;
39
- clear: both;
34
+ font-size: 0.75em;
35
+ color: var(--md-sys-color-on-surface-variant);
36
+ flex-shrink: 0;
40
37
  }
41
38
 
42
39
  .footer a {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/pages/components/footer.ts"],
4
- "mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,YAAY,KAAK,YAAY;AACtC,SAAS,qBAAqB;AAGvB,IAAM,kBAAN,cAA8B,WAAW;AAAA,EACzB,SAAS;AACxB,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQX;AAkBJ;AA5Ba,gBAYO,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAZhB,kBAAN;AAAA,EADN,cAAc,kBAAkB;AAAA,GACpB;",
4
+ "mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,YAAY,KAAK,YAAY;AACtC,SAAS,qBAAqB;AAGvB,IAAM,kBAAN,cAA8B,WAAW;AAAA,EACzB,SAAS;AACxB,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQX;AAeJ;AAzBa,gBAYO,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAZhB,kBAAN;AAAA,EADN,cAAc,kBAAkB;AAAA,GACpB;",
5
5
  "names": []
6
6
  }
@@ -16,9 +16,13 @@ interface HeaderAction {
16
16
  icon: string;
17
17
  action: void;
18
18
  }
19
+ export type ActiveView = "nodes" | "thread" | "wifi";
19
20
  export declare class DashboardHeader extends LitElement {
20
21
  backButton?: string;
21
22
  actions?: HeaderAction[];
23
+ activeView?: ActiveView;
24
+ hasThreadDevices?: boolean;
25
+ hasWifiDevices?: boolean;
22
26
  client?: MatterClient;
23
27
  private _themePreference;
24
28
  private _effectiveTheme;
@@ -29,6 +33,7 @@ export declare class DashboardHeader extends LitElement {
29
33
  private _openSettings;
30
34
  private _getThemeIcon;
31
35
  private _getThemeTooltip;
36
+ private _renderNavTabs;
32
37
  protected render(): import("lit-html").TemplateResult<1>;
33
38
  static styles: import("lit").CSSResult;
34
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../../src/pages/components/header.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,sCAAsC,CAAC;AAC9C,OAAO,+BAA+B,CAAC;AACvC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAGrD,OAAO,8BAA8B,CAAC;AAGtC,UAAU,YAAY;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,CAAC;CAChB;AAED,qBACa,eAAgB,SAAQ,UAAU;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IAErC,MAAM,CAAC,EAAE,YAAY,CAAC;IAEpB,OAAO,CAAC,gBAAgB,CAA4C;IACpE,OAAO,CAAC,eAAe,CAA+C;IAE/E,OAAO,CAAC,iBAAiB,CAAC,CAAa;IAE9B,iBAAiB;IAQjB,oBAAoB;IAK7B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,gBAAgB;cAWL,MAAM;IA8CzB,OAAgB,MAAM,0BA8BpB;CACL"}
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../../src/pages/components/header.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,sCAAsC,CAAC;AAC9C,OAAO,+BAA+B,CAAC;AACvC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAGrD,OAAO,8BAA8B,CAAC;AAGtC,UAAU,YAAY;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErD,qBACa,eAAgB,SAAQ,UAAU;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,UAAU,CAAC;IACP,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IAEtD,MAAM,CAAC,EAAE,YAAY,CAAC;IAEpB,OAAO,CAAC,gBAAgB,CAA4C;IACpE,OAAO,CAAC,eAAe,CAA+C;IAE/E,OAAO,CAAC,iBAAiB,CAAC,CAAa;IAE9B,iBAAiB;IAQjB,oBAAoB;IAK7B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,cAAc;cA0CH,MAAM;IA+CzB,OAAgB,MAAM,0BA+DpB;CACL"}
@@ -69,6 +69,38 @@ let DashboardHeader = class extends LitElement {
69
69
  return `Theme: System (${this._effectiveTheme})`;
70
70
  }
71
71
  }
72
+ _renderNavTabs() {
73
+ if (this.activeView === void 0) {
74
+ return nothing;
75
+ }
76
+ const showThreadTab = this.hasThreadDevices === true;
77
+ const showWifiTab = this.hasWifiDevices === true;
78
+ if (!showThreadTab && !showWifiTab) {
79
+ return nothing;
80
+ }
81
+ return html`
82
+ <nav class="nav-tabs" aria-label="View navigation">
83
+ <a
84
+ href="#nodes"
85
+ class="nav-tab ${this.activeView === "nodes" ? "active" : ""}"
86
+ aria-current=${this.activeView === "nodes" ? "page" : nothing}
87
+ >Nodes</a
88
+ >
89
+ ${showThreadTab ? html`<a
90
+ href="#thread"
91
+ class="nav-tab ${this.activeView === "thread" ? "active" : ""}"
92
+ aria-current=${this.activeView === "thread" ? "page" : nothing}
93
+ >Thread</a
94
+ >` : nothing}
95
+ ${showWifiTab ? html`<a
96
+ href="#wifi"
97
+ class="nav-tab ${this.activeView === "wifi" ? "active" : ""}"
98
+ aria-current=${this.activeView === "wifi" ? "page" : nothing}
99
+ >WiFi</a
100
+ >` : nothing}
101
+ </nav>
102
+ `;
103
+ }
72
104
  render() {
73
105
  return html`
74
106
  <div class="header">
@@ -80,6 +112,7 @@ let DashboardHeader = class extends LitElement {
80
112
  </a>` : ""}
81
113
 
82
114
  <div class="title">${this.title ?? ""}</div>
115
+ ${this._renderNavTabs()}
83
116
  <div class="actions">
84
117
  ${this.actions?.map((action) => {
85
118
  return html`
@@ -139,6 +172,39 @@ DashboardHeader.styles = css`
139
172
  max-width: 100%;
140
173
  align-items: center;
141
174
  }
175
+
176
+ .nav-tabs {
177
+ display: flex;
178
+ margin-left: 24px;
179
+ gap: 4px;
180
+ }
181
+
182
+ .nav-tab {
183
+ padding: 8px 16px;
184
+ color: var(--md-sys-color-on-primary);
185
+ text-decoration: none;
186
+ font-size: 0.875rem;
187
+ font-weight: 500;
188
+ border-radius: 4px 4px 0 0;
189
+ opacity: 0.7;
190
+ transition: opacity 0.2s;
191
+ }
192
+
193
+ .nav-tab:hover {
194
+ opacity: 0.9;
195
+ }
196
+
197
+ .nav-tab.active {
198
+ opacity: 1;
199
+ background-color: rgba(255, 255, 255, 0.15);
200
+ border-bottom: 2px solid var(--md-sys-color-on-primary);
201
+ }
202
+
203
+ @media (max-width: 768px) {
204
+ .nav-tabs {
205
+ display: none;
206
+ }
207
+ }
142
208
  `;
143
209
  __decorateClass([
144
210
  property()
@@ -146,6 +212,15 @@ __decorateClass([
146
212
  __decorateClass([
147
213
  property()
148
214
  ], DashboardHeader.prototype, "actions", 2);
215
+ __decorateClass([
216
+ property()
217
+ ], DashboardHeader.prototype, "activeView", 2);
218
+ __decorateClass([
219
+ property({ type: Boolean })
220
+ ], DashboardHeader.prototype, "hasThreadDevices", 2);
221
+ __decorateClass([
222
+ property({ type: Boolean })
223
+ ], DashboardHeader.prototype, "hasWifiDevices", 2);
149
224
  __decorateClass([
150
225
  state()
151
226
  ], DashboardHeader.prototype, "_themePreference", 2);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/pages/components/header.ts"],
4
- "mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AAEP,SAAS,cAAc,mBAAmB,QAAQ,WAAW,iBAAiB,uBAAuB;AACrG,SAAS,YAAY,KAAK,MAAM,eAAe;AAC/C,SAAS,eAAe,UAAU,aAAa;AAC/C,SAAS,0BAA0B;AACnC,OAAO;AACP,SAA0C,oBAAoB;AASvD,IAAM,kBAAN,cAA8B,WAAW;AAAA,EAAzC;AAAA;AAMM,SAAQ,mBAAoC,aAAa;AACzD,SAAQ,kBAAkC,aAAa;AAAA;AAAA,EAIvD,oBAAoB;AACzB,UAAM,kBAAkB;AACxB,SAAK,oBAAoB,aAAa,UAAU,WAAS;AACrD,WAAK,kBAAkB;AACvB,WAAK,mBAAmB,aAAa;AAAA,IACzC,CAAC;AAAA,EACL;AAAA,EAES,uBAAuB;AAC5B,UAAM,qBAAqB;AAC3B,SAAK,oBAAoB;AAAA,EAC7B;AAAA,EAEQ,cAAc;AAClB,iBAAa,WAAW;AAAA,EAC5B;AAAA,EAEQ,gBAAgB;AACpB,QAAI,KAAK,QAAQ;AACb,yBAAmB,KAAK,MAAM;AAAA,IAClC;AAAA,EACJ;AAAA,EAEQ,gBAAwB;AAC5B,YAAQ,KAAK,kBAAkB;AAAA,MAC3B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,IACf;AAAA,EACJ;AAAA,EAEQ,mBAA2B;AAC/B,YAAQ,KAAK,kBAAkB;AAAA,MAC3B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,kBAAkB,KAAK,eAAe;AAAA,IACrD;AAAA,EACJ;AAAA,EAEmB,SAAS;AACxB,WAAO;AAAA;AAAA;AAAA,kBAGG,KAAK,aACD,iBAAiB,KAAK,UAAU;AAAA;AAAA,mDAEH,YAAY;AAAA;AAAA,8BAGzC,EAAE;AAAA;AAAA,qCAEa,KAAK,SAAS,EAAE;AAAA;AAAA,sBAE/B,KAAK,SAAS,IAAI,YAAU;AAC1B,aAAO;AAAA,qDACsB,OAAO,MAAM,WAAW,OAAO,KAAK;AAAA,qDACpC,OAAO,IAAI;AAAA;AAAA;AAAA,IAG5C,CAAC,CAAC;AAAA;AAAA,sBAEA,KAAK,SACD;AAAA,uDAC6B,KAAK,aAAa;AAAA,uDAClB,MAAM;AAAA;AAAA,8BAGnC,OAAO;AAAA;AAAA,6CAEY,KAAK,WAAW,WAAW,KAAK,iBAAiB,CAAC;AAAA,6CAClD,KAAK,cAAc,CAAC;AAAA;AAAA;AAAA,sBAG3C,KAAK,UAAU,CAAC,KAAK,OAAO,eACxB;AAAA,uDAC6B,KAAK,OAAO,UAAU;AAAA,uDACtB,SAAS;AAAA;AAAA,8BAGtC,OAAO;AAAA;AAAA;AAAA;AAAA,EAI7B;AAiCJ;AArIa,gBAsGO,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;AArGN;AAAA,EAAlB,SAAS;AAAA,GADD,gBACU;AACA;AAAA,EAAlB,SAAS;AAAA,GAFD,gBAEU;AAIF;AAAA,EAAhB,MAAM;AAAA,GANE,gBAMQ;AACA;AAAA,EAAhB,MAAM;AAAA,GAPE,gBAOQ;AAPR,kBAAN;AAAA,EADN,cAAc,kBAAkB;AAAA,GACpB;",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -69,7 +69,7 @@ let NodeDetails = class extends LitElement {
69
69
  <md-list>
70
70
  <md-list-item>
71
71
  <div slot="headline">
72
- <b>Node ${this.node.node_id} ${this.node.nodeLabel}</b>
72
+ <b>${this.node.nodeLabel || "Node Info"}</b>
73
73
  ${this.node.available ? nothing : html`<span class="status">OFFLINE</span>`}
74
74
  </div>
75
75
  </md-list-item>
@@ -170,7 +170,7 @@ let NodeDetails = class extends LitElement {
170
170
  try {
171
171
  showNodeBindingDialog(this.client, this.node, this.endpoint);
172
172
  } catch (err) {
173
- console.log(err);
173
+ console.error("Binding error:", err);
174
174
  }
175
175
  }
176
176
  async _searchUpdate() {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/pages/components/node-details.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["state"]
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server-details.d.ts","sourceRoot":"","sources":["../../../../src/pages/components/server-details.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,oCAAoC,CAAC;AAC5C,OAAO,sCAAsC,CAAC;AAC9C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,+BAA+B,CAAC;AACvC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD,OAAO,8BAA8B,CAAC;AAGtC,qBACa,aAAc,SAAQ,UAAU;IAClC,MAAM,CAAC,EAAE,YAAY,CAAC;cAEV,MAAM;IA8CzB,OAAO,CAAC,eAAe;YAKT,0BAA0B;IAcxC,OAAO,CAAC,YAAY,CAkBlB;IAEF,OAAgB,MAAM,0BAgCpB;CACL"}
1
+ {"version":3,"file":"server-details.d.ts","sourceRoot":"","sources":["../../../../src/pages/components/server-details.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,oCAAoC,CAAC;AAC5C,OAAO,sCAAsC,CAAC;AAC9C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,+BAA+B,CAAC;AACvC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD,OAAO,8BAA8B,CAAC;AAGtC,qBACa,aAAc,SAAQ,UAAU;IAClC,MAAM,CAAC,EAAE,YAAY,CAAC;cAEV,MAAM;IA8CzB,OAAO,CAAC,eAAe;YAIT,0BAA0B;IAcxC,OAAO,CAAC,YAAY,CAkBlB;IAEF,OAAgB,MAAM,0BAgCpB;CACL"}
@@ -95,7 +95,6 @@ let ServerDetails = class extends LitElement {
95
95
  `;
96
96
  }
97
97
  _commissionNode() {
98
- console.log(this.client);
99
98
  showCommissionNodeDialog(this.client);
100
99
  }
101
100
  async _uploadDiagnosticsDumpFile() {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
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;AACP,SAAS,mBAAmB;AAGrB,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,yCAK9C,KAAK,eAAe,kDAAkD,OAAO;AAAA,yCAC7E,YAAY,MAAM,KAAK,2BAA2B,CAAC,CAAC,8CAA8C,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAMhI,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;AACA,UAAM,WAAW,KAAK,WAAY,eAAe,UAAU;AAC3D,aAAS,MAAM;AAAA,EACnB;AAuDJ;AAzHa,cAwFO,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;AAxFhB,gBAAN;AAAA,EADN,cAAc,gBAAgB;AAAA,GAClB;",
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;AACP,SAAS,mBAAmB;AAGrB,IAAM,gBAAN,cAA4B,WAAW;AAAA,EAAvC;AAAA;AAmEH,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,EAlFmB,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,yCAK9C,KAAK,eAAe,kDAAkD,OAAO;AAAA,yCAC7E,YAAY,MAAM,KAAK,2BAA2B,CAAC,CAAC,8CAA8C,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAMhI,KAAK,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO/B;AAAA,EAEQ,kBAAkB;AACtB,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;AACA,UAAM,WAAW,KAAK,WAAY,eAAe,UAAU;AAC3D,aAAS,MAAM;AAAA,EACnB;AAuDJ;AAxHa,cAuFO,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;AAvFhB,gBAAN;AAAA,EADN,cAAc,gBAAgB;AAAA,GAClB;",
5
5
  "names": []
6
6
  }
@@ -1 +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;AAK5C,OAAO,2BAA2B,CAAC;AACnC,OAAO,kCAAkC,CAAC;AAM1C,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,qBAAqB,EAAE,iBAAiB,CAAC;KAC5C;CACJ;AA+BD,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;YAkED,mBAAmB;IAQjC,OAAO,CAAC,sBAAsB;IAkBrB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAgBxD,OAAO,CAAC,OAAO;IAIf,OAAgB,MAAM,0BAwCpB;CACL"}
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,EAAgB,YAAY,EAAE,UAAU,EAAqB,MAAM,0BAA0B,CAAC;AACrG,OAAO,EAAa,UAAU,EAAE,MAAM,KAAK,CAAC;AAK5C,OAAO,2BAA2B,CAAC;AACnC,OAAO,kCAAkC,CAAC;AAM1C,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,qBAAqB,EAAE,iBAAiB,CAAC;KAC5C;CACJ;AA+BD,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;YAyED,mBAAmB;IAQjC,OAAO,CAAC,sBAAsB;IAkBrB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAgBxD,OAAO,CAAC,OAAO;IAIf,OAAgB,MAAM,0BAwCpB;CACL"}