@matter-server/dashboard 0.6.7 → 0.7.0-alpha.0-20260512-b404bea

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 (42) hide show
  1. package/dist/esm/client/models/descriptions.d.ts.map +1 -1
  2. package/dist/esm/client/models/descriptions.js +2485 -415
  3. package/dist/esm/client/models/descriptions.js.map +1 -1
  4. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-dialog.d.ts +2 -0
  5. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-dialog.d.ts.map +1 -1
  6. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-dialog.js +11 -1
  7. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-dialog.js.map +1 -1
  8. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.d.ts +7 -0
  9. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.d.ts.map +1 -1
  10. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.js +43 -2
  11. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.js.map +1 -1
  12. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.d.ts +7 -0
  13. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.d.ts.map +1 -1
  14. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.js +43 -2
  15. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.js.map +1 -1
  16. package/dist/esm/components/dialogs/settings/settings-dialog.d.ts +19 -0
  17. package/dist/esm/components/dialogs/settings/settings-dialog.d.ts.map +1 -1
  18. package/dist/esm/components/dialogs/settings/settings-dialog.js +287 -2
  19. package/dist/esm/components/dialogs/settings/settings-dialog.js.map +1 -1
  20. package/dist/esm/components/dialogs/settings/show-settings-dialog.d.ts +1 -1
  21. package/dist/esm/components/dialogs/settings/show-settings-dialog.d.ts.map +1 -1
  22. package/dist/esm/components/dialogs/settings/show-settings-dialog.js +2 -1
  23. package/dist/esm/components/dialogs/settings/show-settings-dialog.js.map +1 -1
  24. package/dist/web/js/{attribute-write-dialog-DvCdBC5h.js → attribute-write-dialog-DzMWN_T3.js} +1 -1
  25. package/dist/web/js/{command-invoke-dialog-wg-tTS3n.js → command-invoke-dialog-BhAOXzjX.js} +1 -1
  26. package/dist/web/js/{commission-node-dialog-DrlOw53q.js → commission-node-dialog-DF87YIqR.js} +17 -5
  27. package/dist/web/js/{commission-node-existing-BujgZH95.js → commission-node-existing-DLcWvJTL.js} +2 -2
  28. package/dist/web/js/{commission-node-thread-C8FyqV6l.js → commission-node-thread-m2fqED-2.js} +43 -4
  29. package/dist/web/js/{commission-node-wifi-DiaG9EmR.js → commission-node-wifi-PCsot-CX.js} +43 -4
  30. package/dist/web/js/{dialog-box-QK2bjCAa.js → dialog-box-DiqYXM8c.js} +1 -1
  31. package/dist/web/js/{fire_event-CfuDUSb7.js → fire_event-BnpND_gK.js} +1 -1
  32. package/dist/web/js/main.js +7 -1
  33. package/dist/web/js/{matter-dashboard-app-Dh-6FL-7.js → matter-dashboard-app-BZOhBELR.js} +2345 -335
  34. package/dist/web/js/{node-binding-dialog-DbsGaTS6.js → node-binding-dialog-B3lVN-FU.js} +1 -1
  35. package/dist/web/js/{settings-dialog-BZwpJ82T.js → settings-dialog-D75IAPKe.js} +289 -1
  36. package/package.json +4 -4
  37. package/src/client/models/descriptions.ts +2485 -415
  38. package/src/components/dialogs/commission-node-dialog/commission-node-dialog.ts +13 -1
  39. package/src/components/dialogs/commission-node-dialog/commission-node-thread.ts +49 -2
  40. package/src/components/dialogs/commission-node-dialog/commission-node-wifi.ts +49 -2
  41. package/src/components/dialogs/settings/settings-dialog.ts +294 -2
  42. package/src/components/dialogs/settings/show-settings-dialog.ts +2 -1
@@ -13,19 +13,29 @@ var __decorateClass = (decorators, target, key, kind) => {
13
13
  * Copyright 2025-2026 Open Home Foundation
14
14
  * SPDX-License-Identifier: Apache-2.0
15
15
  */
16
+ import "@material/web/button/filled-button";
16
17
  import "@material/web/button/text-button";
17
18
  import "@material/web/dialog/dialog";
18
19
  import "@material/web/divider/divider";
20
+ import "@material/web/iconbutton/icon-button";
19
21
  import "@material/web/switch/switch";
20
- import { css, html, LitElement } from "lit";
21
- import { customElement, property, state } from "lit/decorators.js";
22
+ import "@material/web/textfield/outlined-text-field";
23
+ import { mdiAccessPoint, mdiEye, mdiEyeOff, mdiWifi } from "@mdi/js";
24
+ import { css, html, LitElement, nothing } from "lit";
25
+ import { customElement, property, query, state } from "lit/decorators.js";
26
+ import { handleAsync } from "../../../util/async-handler.js";
22
27
  import { DevModeService } from "../../../util/dev-mode-service.js";
23
28
  import { preventDefault } from "../../../util/prevent_default.js";
29
+ import "../../../components/ha-svg-icon.js";
30
+ import { showAlertDialog } from "../../dialog-box/show-dialog-box.js";
24
31
  import "./log-level-section.js";
25
32
  let SettingsDialog = class extends LitElement {
26
33
  constructor() {
27
34
  super(...arguments);
28
35
  this._devMode = DevModeService.active;
36
+ this._expandedRow = null;
37
+ this._credLoading = false;
38
+ this._showPassword = false;
29
39
  }
30
40
  connectedCallback() {
31
41
  super.connectedCallback();
@@ -37,6 +47,17 @@ let SettingsDialog = class extends LitElement {
37
47
  super.disconnectedCallback();
38
48
  this._unsubscribeDev?.();
39
49
  }
50
+ firstUpdated() {
51
+ const knownSections = /* @__PURE__ */ new Set(["network-credentials"]);
52
+ if (this.scrollToSection && knownSections.has(this.scrollToSection)) {
53
+ requestAnimationFrame(() => {
54
+ this.renderRoot.querySelector(`#${this.scrollToSection}`)?.scrollIntoView({
55
+ behavior: "smooth",
56
+ block: "start"
57
+ });
58
+ });
59
+ }
60
+ }
40
61
  _close() {
41
62
  this.shadowRoot.querySelector("md-dialog").close();
42
63
  }
@@ -53,6 +74,86 @@ let SettingsDialog = class extends LitElement {
53
74
  navigator.clipboard?.writeText(url.toString()).catch(() => {
54
75
  });
55
76
  }
77
+ _toggleExpand(row) {
78
+ this._expandedRow = this._expandedRow === row ? null : row;
79
+ this._showPassword = false;
80
+ }
81
+ _cancelCred() {
82
+ this._expandedRow = null;
83
+ this._showPassword = false;
84
+ }
85
+ _togglePassword() {
86
+ this._showPassword = !this._showPassword;
87
+ }
88
+ async _saveWifi() {
89
+ const ssid = this._wifiSsidField.value.trim();
90
+ if (!ssid) {
91
+ showAlertDialog({ title: "Validation error", text: "SSID is required" });
92
+ return;
93
+ }
94
+ const password = this._wifiPasswordField.value;
95
+ if (!password) {
96
+ showAlertDialog({ title: "Validation error", text: "Password is required" });
97
+ return;
98
+ }
99
+ this._credLoading = true;
100
+ try {
101
+ await this.client.setWifiCredentials(ssid, password);
102
+ this._expandedRow = null;
103
+ this._showPassword = false;
104
+ } catch (err) {
105
+ showAlertDialog({ title: "Error saving WiFi credentials", text: err.message });
106
+ } finally {
107
+ this._credLoading = false;
108
+ }
109
+ }
110
+ async _removeWifi() {
111
+ this._credLoading = true;
112
+ try {
113
+ await this.client.removeWifiCredentials();
114
+ this._expandedRow = null;
115
+ this._showPassword = false;
116
+ } catch (err) {
117
+ showAlertDialog({ title: "Error removing WiFi credentials", text: err.message });
118
+ } finally {
119
+ this._credLoading = false;
120
+ }
121
+ }
122
+ async _saveThread() {
123
+ const dataset = this._threadDatasetField.value.trim();
124
+ if (!dataset) {
125
+ showAlertDialog({ title: "Validation error", text: "Thread dataset is required" });
126
+ return;
127
+ }
128
+ if (!/^[0-9a-fA-F]*$/.test(dataset) || dataset.length % 2 !== 0) {
129
+ showAlertDialog({
130
+ title: "Invalid Thread dataset",
131
+ text: "Must be a hex string with even length (each byte is two hex characters)"
132
+ });
133
+ return;
134
+ }
135
+ this._credLoading = true;
136
+ try {
137
+ await this.client.setThreadOperationalDataset(dataset);
138
+ this._expandedRow = null;
139
+ } catch (err) {
140
+ showAlertDialog({ title: "Error saving Thread dataset", text: err.message });
141
+ } finally {
142
+ this._credLoading = false;
143
+ }
144
+ }
145
+ async _removeThread() {
146
+ this._credLoading = true;
147
+ try {
148
+ await this.client.removeThreadDataset();
149
+ this._expandedRow = null;
150
+ this._showPassword = false;
151
+ } catch (err) {
152
+ showAlertDialog({ title: "Error removing Thread dataset", text: err.message });
153
+ } finally {
154
+ this._credLoading = false;
155
+ }
156
+ }
56
157
  render() {
57
158
  return html`
58
159
  <md-dialog open @cancel=${preventDefault} @closed=${this._handleClosed}>
@@ -85,6 +186,95 @@ let SettingsDialog = class extends LitElement {
85
186
  <h3 class="section-title">Server log levels</h3>
86
187
  <log-level-section .client=${this.client}></log-level-section>
87
188
  </section>
189
+
190
+ <md-divider></md-divider>
191
+
192
+ <section id="network-credentials" class="section">
193
+ <h3 class="section-title">Network credentials</h3>
194
+
195
+ <div class="cred-row">
196
+ <div class="cred-info">
197
+ <ha-svg-icon .path=${mdiWifi}></ha-svg-icon>
198
+ <span class="cred-label">WiFi</span>
199
+ ${this.client.serverInfo.wifi_credentials_set ? html`<span class="cred-value">${this.client.serverInfo.wifi_ssid}</span>` : html`<span class="cred-unset">Not configured</span>`}
200
+ </div>
201
+ <md-text-button @click=${() => this._toggleExpand("wifi")} .disabled=${this._credLoading}
202
+ >Edit</md-text-button
203
+ >
204
+ </div>
205
+
206
+ ${this._expandedRow === "wifi" ? html` <div class="cred-form">
207
+ <md-outlined-text-field
208
+ id="cred-wifi-ssid"
209
+ label="SSID"
210
+ .value=${this.client.serverInfo.wifi_ssid ?? ""}
211
+ .disabled=${this._credLoading}
212
+ ></md-outlined-text-field>
213
+ <div class="password-row">
214
+ <md-outlined-text-field
215
+ id="cred-wifi-password"
216
+ label="Password"
217
+ .type=${this._showPassword ? "text" : "password"}
218
+ .disabled=${this._credLoading}
219
+ ></md-outlined-text-field>
220
+ <md-icon-button @click=${this._togglePassword}>
221
+ <ha-svg-icon .path=${this._showPassword ? mdiEyeOff : mdiEye}></ha-svg-icon>
222
+ </md-icon-button>
223
+ </div>
224
+ <div class="form-actions">
225
+ <md-text-button @click=${this._cancelCred} .disabled=${this._credLoading}
226
+ >Cancel</md-text-button
227
+ >
228
+ ${this.client.serverInfo.wifi_credentials_set ? html`<md-text-button
229
+ @click=${handleAsync(() => this._removeWifi())}
230
+ .disabled=${this._credLoading}
231
+ >Remove</md-text-button
232
+ >` : nothing}
233
+ <md-filled-button
234
+ @click=${handleAsync(() => this._saveWifi())}
235
+ .disabled=${this._credLoading}
236
+ >Save</md-filled-button
237
+ >
238
+ </div>
239
+ </div>` : nothing}
240
+
241
+ <div class="cred-row cred-row-thread">
242
+ <div class="cred-info">
243
+ <ha-svg-icon .path=${mdiAccessPoint}></ha-svg-icon>
244
+ <span class="cred-label">Thread</span>
245
+ ${this.client.serverInfo.thread_credentials_set ? html`<span class="cred-value">Thread network set</span>` : html`<span class="cred-unset">Not configured</span>`}
246
+ </div>
247
+ <md-text-button @click=${() => this._toggleExpand("thread")} .disabled=${this._credLoading}
248
+ >Edit</md-text-button
249
+ >
250
+ </div>
251
+
252
+ ${this._expandedRow === "thread" ? html` <div class="cred-form">
253
+ <md-outlined-text-field
254
+ id="cred-thread-dataset"
255
+ label="Thread dataset"
256
+ supporting-text="Hex string (e.g. 0E080000...)"
257
+ .disabled=${this._credLoading}
258
+ ></md-outlined-text-field>
259
+ <div class="form-actions">
260
+ <md-text-button @click=${this._cancelCred} .disabled=${this._credLoading}
261
+ >Cancel</md-text-button
262
+ >
263
+ ${this.client.serverInfo.thread_credentials_set ? html`<md-text-button
264
+ @click=${handleAsync(() => this._removeThread())}
265
+ .disabled=${this._credLoading}
266
+ >Remove</md-text-button
267
+ >` : nothing}
268
+ <md-filled-button
269
+ @click=${handleAsync(() => this._saveThread())}
270
+ .disabled=${this._credLoading}
271
+ >Save</md-filled-button
272
+ >
273
+ </div>
274
+ </div>` : nothing}
275
+
276
+ <p class="cred-hint">Used when commissioning new devices. Existing devices are not affected.</p>
277
+ </section>
88
278
  </div>
89
279
  <div slot="actions">
90
280
  <md-text-button @click=${this._close}>Close</md-text-button>
@@ -149,6 +339,80 @@ SettingsDialog.styles = css`
149
339
  md-divider {
150
340
  margin: 12px 0;
151
341
  }
342
+
343
+ .cred-row {
344
+ display: flex;
345
+ align-items: center;
346
+ justify-content: space-between;
347
+ padding: 4px 0;
348
+ }
349
+
350
+ .cred-row-thread {
351
+ margin-top: 8px;
352
+ }
353
+
354
+ .cred-info {
355
+ display: flex;
356
+ align-items: center;
357
+ gap: 10px;
358
+ font-size: 0.9rem;
359
+ color: var(--md-sys-color-on-surface);
360
+ }
361
+
362
+ .cred-label {
363
+ font-weight: 500;
364
+ min-width: 52px;
365
+ }
366
+
367
+ .cred-value {
368
+ color: var(--md-sys-color-on-surface-variant);
369
+ }
370
+
371
+ .cred-unset {
372
+ color: var(--md-sys-color-on-surface-variant);
373
+ font-style: italic;
374
+ }
375
+
376
+ .cred-form {
377
+ display: flex;
378
+ flex-direction: column;
379
+ gap: 10px;
380
+ padding: 8px 0 4px 0;
381
+ }
382
+
383
+ .password-row {
384
+ display: flex;
385
+ align-items: center;
386
+ gap: 4px;
387
+ }
388
+
389
+ .password-row md-outlined-text-field {
390
+ flex: 1;
391
+ }
392
+
393
+ .form-actions {
394
+ display: flex;
395
+ gap: 4px;
396
+ justify-content: flex-end;
397
+ }
398
+
399
+ .cred-hint {
400
+ margin: 10px 0 0 0;
401
+ font-size: 0.8rem;
402
+ color: var(--md-sys-color-on-surface-variant);
403
+ }
404
+
405
+ .cred-info ha-svg-icon {
406
+ width: 18px;
407
+ height: 18px;
408
+ color: var(--md-sys-color-on-surface-variant);
409
+ }
410
+
411
+ .password-row ha-svg-icon {
412
+ width: 18px;
413
+ height: 18px;
414
+ color: var(--md-sys-color-on-surface-variant);
415
+ }
152
416
  `;
153
417
  __decorateClass([
154
418
  property({ attribute: false })
@@ -156,6 +420,27 @@ __decorateClass([
156
420
  __decorateClass([
157
421
  state()
158
422
  ], SettingsDialog.prototype, "_devMode", 2);
423
+ __decorateClass([
424
+ property({ attribute: false })
425
+ ], SettingsDialog.prototype, "scrollToSection", 2);
426
+ __decorateClass([
427
+ state()
428
+ ], SettingsDialog.prototype, "_expandedRow", 2);
429
+ __decorateClass([
430
+ state()
431
+ ], SettingsDialog.prototype, "_credLoading", 2);
432
+ __decorateClass([
433
+ state()
434
+ ], SettingsDialog.prototype, "_showPassword", 2);
435
+ __decorateClass([
436
+ query("#cred-wifi-ssid")
437
+ ], SettingsDialog.prototype, "_wifiSsidField", 2);
438
+ __decorateClass([
439
+ query("#cred-wifi-password")
440
+ ], SettingsDialog.prototype, "_wifiPasswordField", 2);
441
+ __decorateClass([
442
+ query("#cred-thread-dataset")
443
+ ], SettingsDialog.prototype, "_threadDatasetField", 2);
159
444
  SettingsDialog = __decorateClass([
160
445
  customElement("settings-dialog")
161
446
  ], SettingsDialog);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/dialogs/settings/settings-dialog.ts"],
4
- "mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO;AACP,OAAO;AAEP,OAAO;AACP,OAAO;AAGP,SAAS,KAAK,MAAM,kBAAkB;AACtC,SAAS,eAAe,UAAU,aAAa;AAC/C,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AAC/B,OAAO;AAGA,IAAM,iBAAN,cAA6B,WAAW;AAAA,EAAxC;AAAA;AAIM,SAAQ,WAAW,eAAe;AAAA;AAAA,EAIlC,oBAAoB;AACzB,UAAM,kBAAkB;AACxB,SAAK,kBAAkB,eAAe,UAAU,YAAU;AACtD,WAAK,WAAW;AAAA,IACpB,CAAC;AAAA,EACL;AAAA,EAES,uBAAuB;AAC5B,UAAM,qBAAqB;AAC3B,SAAK,kBAAkB;AAAA,EAC3B;AAAA,EAEQ,SAAS;AACb,SAAK,WAAY,cAAwB,WAAW,EAAG,MAAM;AAAA,EACjE;AAAA,EAEQ,gBAAgB;AACpB,SAAK,WAAY,YAAY,IAAI;AAAA,EACrC;AAAA,EAEQ,aAAa,OAAc;AAC/B,UAAM,SAAS,MAAM;AACrB,mBAAe,UAAU,OAAO,QAAQ;AAAA,EAC5C;AAAA,EAEQ,eAAe;AACnB,UAAM,MAAM,IAAI,IAAI,OAAO,SAAS,IAAI;AACxC,QAAI,aAAa,IAAI,OAAO,IAAI;AAChC,cAAU,WAAW,UAAU,IAAI,SAAS,CAAC,EAAE,MAAM,MAAM;AAAA,IAE3D,CAAC;AAAA,EACL;AAAA,EAEmB,SAAS;AACxB,WAAO;AAAA,sCACuB,cAAc,YAAY,KAAK,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4CAetC,KAAK,QAAQ;AAAA,0CACf,KAAK,YAAY;AAAA;AAAA;AAAA;AAAA,qDAIN,KAAK,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qDAQjB,KAAK,MAAM;AAAA;AAAA;AAAA;AAAA,6CAInB,KAAK,MAAM;AAAA;AAAA;AAAA;AAAA,EAIpD;AA2DJ;AA1Ia,eAiFO,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;AA/ElB;AAAA,EADN,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,GADrB,eAEF;AAEU;AAAA,EAAhB,MAAM;AAAA,GAJE,eAIQ;AAJR,iBAAN;AAAA,EADN,cAAc,iBAAiB;AAAA,GACnB;",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -4,5 +4,5 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { MatterClient } from "@matter-server/ws-client";
7
- export declare const showSettingsDialog: (client: MatterClient) => Promise<void>;
7
+ export declare const showSettingsDialog: (client: MatterClient, section?: string) => Promise<void>;
8
8
  //# sourceMappingURL=show-settings-dialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"show-settings-dialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/dialogs/settings/show-settings-dialog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,eAAO,MAAM,kBAAkB,WAAkB,YAAY,kBAK5D,CAAC"}
1
+ {"version":3,"file":"show-settings-dialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/dialogs/settings/show-settings-dialog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,eAAO,MAAM,kBAAkB,WAAkB,YAAY,YAAY,MAAM,kBAM9E,CAAC"}
@@ -3,10 +3,11 @@
3
3
  * Copyright 2025-2026 Open Home Foundation
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- const showSettingsDialog = async (client) => {
6
+ const showSettingsDialog = async (client, section) => {
7
7
  await import("./settings-dialog.js");
8
8
  const dialog = document.createElement("settings-dialog");
9
9
  dialog.client = client;
10
+ if (section) dialog.scrollToSection = section;
10
11
  document.querySelector("matter-dashboard-app")?.renderRoot.appendChild(dialog);
11
12
  };
12
13
  export {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/dialogs/settings/show-settings-dialog.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAQO,MAAM,qBAAqB,OAAO,WAAyB;AAC9D,QAAM,OAAO,sBAAsB;AACnC,QAAM,SAAS,SAAS,cAAc,iBAAiB;AACvD,SAAO,SAAS;AAChB,WAAS,cAAc,sBAAsB,GAAG,WAAW,YAAY,MAAM;AACjF;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAQO,MAAM,qBAAqB,OAAO,QAAsB,YAAqB;AAChF,QAAM,OAAO,sBAAsB;AACnC,QAAM,SAAS,SAAS,cAAc,iBAAiB;AACvD,SAAO,SAAS;AAChB,MAAI,QAAS,QAAO,kBAAkB;AACtC,WAAS,cAAc,sBAAsB,GAAG,WAAW,YAAY,MAAM;AACjF;",
5
5
  "names": []
6
6
  }
@@ -1,4 +1,4 @@
1
- import { q as i, n, u as r, d as e, i as i$1, A, O as formatHex, j as b, K as handleAsync, t } from './matter-dashboard-app-Dh-6FL-7.js';
1
+ import { q as i, n, u as r, d as e, i as i$1, A, S as formatHex, j as b, K as handleAsync, t } from './matter-dashboard-app-BZOhBELR.js';
2
2
  import { t as toBigIntAwareJson } from './main.js';
3
3
  import { p as preventDefault } from './prevent_default-D-ohDGsN.js';
4
4
  import { p as parseJsonPayload } from './parse-json-payload-DU9TWKdu.js';
@@ -1,4 +1,4 @@
1
- import { q as i, n, u as r, d as e, i as i$1, A, O as formatHex, j as b, K as handleAsync, t } from './matter-dashboard-app-Dh-6FL-7.js';
1
+ import { q as i, n, u as r, d as e, i as i$1, A, S as formatHex, j as b, K as handleAsync, t } from './matter-dashboard-app-BZOhBELR.js';
2
2
  import { t as toBigIntAwareJson } from './main.js';
3
3
  import { p as preventDefault } from './prevent_default-D-ohDGsN.js';
4
4
  import { p as parseJsonPayload, i as isPlainObject } from './parse-json-payload-DU9TWKdu.js';
@@ -1,4 +1,4 @@
1
- import { u as r, n, t, i, j as b } from './matter-dashboard-app-Dh-6FL-7.js';
1
+ import { u as r, n, t, i, j as b } from './matter-dashboard-app-BZOhBELR.js';
2
2
  import { p as preventDefault } from './prevent_default-D-ohDGsN.js';
3
3
  import './main.js';
4
4
 
@@ -15,7 +15,11 @@ let ComissionNodeDialog = class extends i {
15
15
  return b`
16
16
  <md-dialog open @cancel=${preventDefault} @closed=${this._handleClosed}>
17
17
  <div slot="headline">Commission node</div>
18
- <div slot="content" @node-commissioned=${this._nodeCommissioned}>
18
+ <div
19
+ slot="content"
20
+ @node-commissioned=${this._nodeCommissioned}
21
+ @request-settings=${this._requestSettings}
22
+ >
19
23
  ${!this._mode ? b`<md-list>
20
24
  <md-list-item
21
25
  type="button"
@@ -44,24 +48,32 @@ let ComissionNodeDialog = class extends i {
44
48
  if (!this.client.serverInfo.bluetooth_enabled) {
45
49
  return;
46
50
  }
47
- import('./commission-node-wifi-DiaG9EmR.js');
51
+ import('./commission-node-wifi-PCsot-CX.js');
48
52
  this._mode = "wifi";
49
53
  }
50
54
  _commissionThread() {
51
55
  if (!this.client.serverInfo.bluetooth_enabled) {
52
56
  return;
53
57
  }
54
- import('./commission-node-thread-C8FyqV6l.js');
58
+ import('./commission-node-thread-m2fqED-2.js');
55
59
  this._mode = "thread";
56
60
  }
57
61
  _commissionExisting() {
58
- import('./commission-node-existing-BujgZH95.js');
62
+ import('./commission-node-existing-DLcWvJTL.js');
59
63
  this._mode = "existing";
60
64
  }
61
65
  _nodeCommissioned(ev) {
62
66
  window.location.href = `#node/${ev.detail.node_id}`;
63
67
  this._close();
64
68
  }
69
+ _requestSettings() {
70
+ import('./matter-dashboard-app-BZOhBELR.js').then(function (n) { return n.X; }).then(({
71
+ showSettingsDialog
72
+ }) => {
73
+ showSettingsDialog(this.client, "network-credentials");
74
+ });
75
+ this._close();
76
+ }
65
77
  _close() {
66
78
  this.shadowRoot.querySelector("md-dialog").close();
67
79
  }
@@ -1,5 +1,5 @@
1
- import { u as r, P as c, Q as clientContext, n, d as e, t, i, A, K as handleAsync, j as b, J as showAlertDialog } from './matter-dashboard-app-Dh-6FL-7.js';
2
- import { f as fireEvent } from './fire_event-CfuDUSb7.js';
1
+ import { u as r, T as c, U as clientContext, n, d as e, t, i, A, K as handleAsync, j as b, J as showAlertDialog } from './matter-dashboard-app-BZOhBELR.js';
2
+ import { f as fireEvent } from './fire_event-BnpND_gK.js';
3
3
  import './main.js';
4
4
 
5
5
  var __defProp = Object.defineProperty;
@@ -1,5 +1,5 @@
1
- import { u as r, P as c, Q as clientContext, n, d as e, t, i, A, K as handleAsync, j as b, J as showAlertDialog } from './matter-dashboard-app-Dh-6FL-7.js';
2
- import { f as fireEvent } from './fire_event-CfuDUSb7.js';
1
+ import { q as i, T as c, U as clientContext, n, u as r, d as e, i as i$1, A, K as handleAsync, j as b, P as mdiAccessPoint, J as showAlertDialog, t } from './matter-dashboard-app-BZOhBELR.js';
2
+ import { f as fireEvent } from './fire_event-BnpND_gK.js';
3
3
  import './main.js';
4
4
 
5
5
  var __defProp = Object.defineProperty;
@@ -10,7 +10,7 @@ var __decorateClass = (decorators, target, key, kind) => {
10
10
  if (kind && result) __defProp(target, key, result);
11
11
  return result;
12
12
  };
13
- let CommissionNodeThread = class extends i {
13
+ let CommissionNodeThread = class extends i$1 {
14
14
  constructor() {
15
15
  super(...arguments);
16
16
  this._loading = false;
@@ -29,7 +29,15 @@ let CommissionNodeThread = class extends i {
29
29
  >Set Thread Dataset</md-outlined-button
30
30
  >${this._loading ? b` <md-circular-progress indeterminate></md-circular-progress> ` : A}`;
31
31
  }
32
- return b`<md-outlined-text-field label="Pairing code" .disabled="${this._loading}"> </md-outlined-text-field>
32
+ return b`<div class="cred-chip">
33
+ <ha-svg-icon .path=${mdiAccessPoint}></ha-svg-icon>
34
+ <span>Thread network set</span>
35
+ <span class="sep">·</span>
36
+ <button class="edit-link" @click=${() => fireEvent(this, "request-settings", {})}>
37
+ Edit in Settings
38
+ </button>
39
+ </div>
40
+ <md-outlined-text-field label="Pairing code" .disabled="${this._loading}"> </md-outlined-text-field>
33
41
  <br />
34
42
  <br />
35
43
  <md-outlined-button @click=${handleAsync(() => this._commissionNode())} .disabled="${this._loading}"
@@ -79,6 +87,37 @@ let CommissionNodeThread = class extends i {
79
87
  }
80
88
  }
81
89
  };
90
+ CommissionNodeThread.styles = i`
91
+ .cred-chip {
92
+ display: flex;
93
+ width: fit-content;
94
+ align-items: center;
95
+ gap: 6px;
96
+ background: var(--md-sys-color-surface-container);
97
+ color: var(--md-sys-color-on-surface-variant);
98
+ border-radius: 16px;
99
+ padding: 4px 10px 4px 6px;
100
+ font-size: 0.85em;
101
+ margin-bottom: 12px;
102
+ }
103
+ .cred-chip ha-svg-icon {
104
+ width: 18px;
105
+ height: 18px;
106
+ flex-shrink: 0;
107
+ }
108
+ .cred-chip .sep {
109
+ opacity: 0.5;
110
+ }
111
+ .cred-chip .edit-link {
112
+ cursor: pointer;
113
+ color: var(--md-sys-color-primary);
114
+ background: none;
115
+ border: none;
116
+ padding: 0;
117
+ font: inherit;
118
+ font-size: inherit;
119
+ }
120
+ `;
82
121
  __decorateClass([c({
83
122
  context: clientContext,
84
123
  subscribe: true
@@ -1,5 +1,5 @@
1
- import { u as r, P as c, Q as clientContext, n, d as e, t, i, A, K as handleAsync, j as b, J as showAlertDialog } from './matter-dashboard-app-Dh-6FL-7.js';
2
- import { f as fireEvent } from './fire_event-CfuDUSb7.js';
1
+ import { q as i, T as c, U as clientContext, n, u as r, d as e, i as i$1, A, K as handleAsync, j as b, O as mdiWifi, J as showAlertDialog, t } from './matter-dashboard-app-BZOhBELR.js';
2
+ import { f as fireEvent } from './fire_event-BnpND_gK.js';
3
3
  import './main.js';
4
4
 
5
5
  var __defProp = Object.defineProperty;
@@ -10,7 +10,7 @@ var __decorateClass = (decorators, target, key, kind) => {
10
10
  if (kind && result) __defProp(target, key, result);
11
11
  return result;
12
12
  };
13
- let CommissionNodeWifi = class extends i {
13
+ let CommissionNodeWifi = class extends i$1 {
14
14
  constructor() {
15
15
  super(...arguments);
16
16
  this._loading = false;
@@ -31,7 +31,15 @@ let CommissionNodeWifi = class extends i {
31
31
  >Set WiFi Credentials</md-outlined-button
32
32
  >${this._loading ? b`<md-circular-progress indeterminate></md-circular-progress>` : A}`;
33
33
  }
34
- return b`<md-outlined-text-field label="Pairing code" .disabled="${this._loading}"> </md-outlined-text-field>
34
+ return b`<div class="cred-chip">
35
+ <ha-svg-icon .path=${mdiWifi}></ha-svg-icon>
36
+ <span>WiFi: ${this.client.serverInfo.wifi_ssid ?? "network set"}</span>
37
+ <span class="sep">·</span>
38
+ <button class="edit-link" @click=${() => fireEvent(this, "request-settings", {})}>
39
+ Edit in Settings
40
+ </button>
41
+ </div>
42
+ <md-outlined-text-field label="Pairing code" .disabled="${this._loading}"> </md-outlined-text-field>
35
43
  <br />
36
44
  <br />
37
45
  <md-outlined-button @click=${handleAsync(() => this._commissionNode())} .disabled="${this._loading}"
@@ -89,6 +97,37 @@ let CommissionNodeWifi = class extends i {
89
97
  }
90
98
  }
91
99
  };
100
+ CommissionNodeWifi.styles = i`
101
+ .cred-chip {
102
+ display: flex;
103
+ width: fit-content;
104
+ align-items: center;
105
+ gap: 6px;
106
+ background: var(--md-sys-color-surface-container);
107
+ color: var(--md-sys-color-on-surface-variant);
108
+ border-radius: 16px;
109
+ padding: 4px 10px 4px 6px;
110
+ font-size: 0.85em;
111
+ margin-bottom: 12px;
112
+ }
113
+ .cred-chip ha-svg-icon {
114
+ width: 18px;
115
+ height: 18px;
116
+ flex-shrink: 0;
117
+ }
118
+ .cred-chip .sep {
119
+ opacity: 0.5;
120
+ }
121
+ .cred-chip .edit-link {
122
+ cursor: pointer;
123
+ color: var(--md-sys-color-primary);
124
+ background: none;
125
+ border: none;
126
+ padding: 0;
127
+ font: inherit;
128
+ font-size: inherit;
129
+ }
130
+ `;
92
131
  __decorateClass([c({
93
132
  context: clientContext,
94
133
  subscribe: true
@@ -1,4 +1,4 @@
1
- import { q as i, n, i as i$1, j as b, t } from './matter-dashboard-app-Dh-6FL-7.js';
1
+ import { q as i, n, i as i$1, j as b, t } from './matter-dashboard-app-BZOhBELR.js';
2
2
  import { p as preventDefault } from './prevent_default-D-ohDGsN.js';
3
3
  import './main.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { m as mixinDelegatesAria, i, _ as __decorate, n, A, h as e, j as b, q as i$1, t } from './matter-dashboard-app-Dh-6FL-7.js';
1
+ import { m as mixinDelegatesAria, i, _ as __decorate, n, A, h as e, j as b, q as i$1, t } from './matter-dashboard-app-BZOhBELR.js';
2
2
 
3
3
  /**
4
4
  * @license
@@ -341,6 +341,12 @@ class MatterClient {
341
341
  dataset
342
342
  }, timeout);
343
343
  }
344
+ async removeWifiCredentials(timeout) {
345
+ await this.sendCommand("remove_wifi_credentials", 0, {}, timeout);
346
+ }
347
+ async removeThreadDataset(timeout) {
348
+ await this.sendCommand("remove_thread_dataset", 0, {}, timeout);
349
+ }
344
350
  async openCommissioningWindow(nodeId, windowTimeout, iteration, option, discriminator, timeout) {
345
351
  return await this.sendCommand("open_commissioning_window", 0, {
346
352
  node_id: nodeId,
@@ -757,7 +763,7 @@ const ThemeService = new ThemeServiceImpl();
757
763
  * SPDX-License-Identifier: Apache-2.0
758
764
  */
759
765
  async function main() {
760
- import('./matter-dashboard-app-Dh-6FL-7.js').then(function (n) { return n.S; });
766
+ import('./matter-dashboard-app-BZOhBELR.js').then(function (n) { return n.Y; });
761
767
  let url = "";
762
768
  const isProductionServer = window.__MATTERJS_PRODUCTION_MODE__ === true || location.origin.includes(":5580") || location.href.includes("hassio_ingress") || location.href.includes("/api/ingress/");
763
769
  if (!isProductionServer) {