@matter-server/dashboard 0.2.6 → 0.2.7-alpha.0-20260118-45c7af0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -0
- package/dist/esm/client/models/descriptions.js +1754 -1754
- package/dist/esm/components/dialogs/binding/node-binding-dialog.d.ts.map +1 -1
- package/dist/esm/components/dialogs/binding/node-binding-dialog.js +8 -4
- package/dist/esm/components/dialogs/binding/node-binding-dialog.js.map +1 -1
- package/dist/esm/components/dialogs/settings/log-level-dialog.d.ts +33 -0
- package/dist/esm/components/dialogs/settings/log-level-dialog.d.ts.map +1 -0
- package/dist/esm/components/dialogs/settings/log-level-dialog.js +185 -0
- package/dist/esm/components/dialogs/settings/log-level-dialog.js.map +6 -0
- package/dist/esm/components/dialogs/settings/show-log-level-dialog.d.ts +8 -0
- package/dist/esm/components/dialogs/settings/show-log-level-dialog.d.ts.map +1 -0
- package/dist/esm/components/dialogs/settings/show-log-level-dialog.js +15 -0
- package/dist/esm/components/dialogs/settings/show-log-level-dialog.js.map +6 -0
- package/dist/esm/entrypoint/main.d.ts +1 -1
- package/dist/esm/entrypoint/main.d.ts.map +1 -1
- package/dist/esm/entrypoint/main.js +1 -0
- package/dist/esm/entrypoint/main.js.map +1 -1
- package/dist/esm/pages/components/header.d.ts +9 -0
- package/dist/esm/pages/components/header.d.ts.map +1 -1
- package/dist/esm/pages/components/header.js +68 -6
- package/dist/esm/pages/components/header.js.map +1 -1
- package/dist/esm/pages/matter-dashboard-app.d.ts +6 -1
- package/dist/esm/pages/matter-dashboard-app.d.ts.map +1 -1
- package/dist/esm/pages/matter-dashboard-app.js +119 -24
- package/dist/esm/pages/matter-dashboard-app.js.map +1 -1
- package/dist/esm/util/theme-service.d.ts +27 -0
- package/dist/esm/util/theme-service.d.ts.map +1 -0
- package/dist/esm/util/theme-service.js +71 -0
- package/dist/esm/util/theme-service.js.map +6 -0
- package/dist/web/index.html +35 -0
- package/dist/web/js/{commission-node-dialog--19-sX9D.js → commission-node-dialog-CoaDIV2Y.js} +5 -5
- package/dist/web/js/{commission-node-existing-DY6SnsHb.js → commission-node-existing-DEU_mJjO.js} +5 -4
- package/dist/web/js/{commission-node-thread-CXquVvK5.js → commission-node-thread-DZ6DghSs.js} +5 -4
- package/dist/web/js/{commission-node-wifi-VQGVOrr7.js → commission-node-wifi-DOyin0q3.js} +5 -4
- package/dist/web/js/{dialog-box-qX-alVZJ.js → dialog-box-B5sunUPv.js} +2 -2
- package/dist/web/js/{fire_event-B13DcOc9.js → fire_event-C9Duc1j-.js} +1 -1
- package/dist/web/js/log-level-dialog-B7LsZYUL.js +3232 -0
- package/dist/web/js/main.js +163 -8
- package/dist/web/js/{matter-dashboard-app-CU3-L2nl.js → matter-dashboard-app-DlHSE_Qh.js} +13253 -13039
- package/dist/web/js/{node-binding-dialog-D4rr_G9I.js → node-binding-dialog-BifZsigR.js} +12 -7
- package/dist/web/js/outlined-text-field-D2BOt1yD.js +968 -0
- package/dist/web/js/{prevent_default-Dw7ifAL-.js → prevent_default-CuW2EnKR.js} +1 -1
- package/dist/web/js/validator-MOJiFndw.js +1122 -0
- package/package.json +4 -4
- package/src/client/models/descriptions.ts +1754 -1754
- package/src/components/dialogs/binding/node-binding-dialog.ts +8 -4
- package/src/components/dialogs/settings/log-level-dialog.ts +179 -0
- package/src/components/dialogs/settings/show-log-level-dialog.ts +14 -0
- package/src/entrypoint/main.ts +1 -0
- package/src/pages/components/header.ts +72 -8
- package/src/pages/matter-dashboard-app.ts +123 -26
- package/src/util/theme-service.ts +98 -0
- package/dist/web/js/outlined-text-field-CtlEkpbk.js +0 -2086
|
@@ -14,10 +14,13 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
14
14
|
* SPDX-License-Identifier: Apache-2.0
|
|
15
15
|
*/
|
|
16
16
|
import { ContextProvider } from "@lit/context";
|
|
17
|
-
import {
|
|
17
|
+
import { mdiRefresh } from "@mdi/js";
|
|
18
|
+
import { LitElement, css, html } from "lit";
|
|
18
19
|
import { customElement, state } from "lit/decorators.js";
|
|
19
20
|
import { clientContext } from "../client/client-context.js";
|
|
21
|
+
import "../components/ha-svg-icon";
|
|
20
22
|
import { clone } from "../util/clone_class.js";
|
|
23
|
+
import "./components/header";
|
|
21
24
|
import "./matter-cluster-view";
|
|
22
25
|
import "./matter-endpoint-view";
|
|
23
26
|
import "./matter-node-view";
|
|
@@ -31,28 +34,14 @@ let MatterDashboardApp = class extends LitElement {
|
|
|
31
34
|
};
|
|
32
35
|
this._state = "connecting";
|
|
33
36
|
this.provider = new ContextProvider(this, { context: clientContext, initialValue: this.client });
|
|
37
|
+
this._reconnect = () => {
|
|
38
|
+
this._state = "connecting";
|
|
39
|
+
this._connect();
|
|
40
|
+
};
|
|
34
41
|
}
|
|
35
42
|
firstUpdated(_changedProperties) {
|
|
36
43
|
super.firstUpdated(_changedProperties);
|
|
37
|
-
this.
|
|
38
|
-
() => {
|
|
39
|
-
this._state = "connected";
|
|
40
|
-
this.client.addEventListener("nodes_changed", () => {
|
|
41
|
-
this.requestUpdate();
|
|
42
|
-
this.provider.setValue(clone(this.client));
|
|
43
|
-
});
|
|
44
|
-
this.client.addEventListener("server_info_updated", () => {
|
|
45
|
-
this.provider.setValue(clone(this.client));
|
|
46
|
-
});
|
|
47
|
-
this.client.addEventListener("connection_lost", () => {
|
|
48
|
-
this._state = "disconnected";
|
|
49
|
-
});
|
|
50
|
-
},
|
|
51
|
-
(err) => {
|
|
52
|
-
this._state = "error";
|
|
53
|
-
this._error = err.message;
|
|
54
|
-
}
|
|
55
|
-
);
|
|
44
|
+
this._connect();
|
|
56
45
|
const updateRoute = () => {
|
|
57
46
|
const pathParts = location.hash.substring(1).split("/");
|
|
58
47
|
this._route = {
|
|
@@ -63,17 +52,66 @@ let MatterDashboardApp = class extends LitElement {
|
|
|
63
52
|
window.addEventListener("hashchange", updateRoute);
|
|
64
53
|
updateRoute();
|
|
65
54
|
}
|
|
55
|
+
_connect() {
|
|
56
|
+
this.client.startListening().then(
|
|
57
|
+
() => {
|
|
58
|
+
this._state = "connected";
|
|
59
|
+
this._setupEventListeners();
|
|
60
|
+
},
|
|
61
|
+
(_err) => {
|
|
62
|
+
this._state = "error";
|
|
63
|
+
}
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
_setupEventListeners() {
|
|
67
|
+
this.client.addEventListener("nodes_changed", () => {
|
|
68
|
+
this.requestUpdate();
|
|
69
|
+
this.provider.setValue(clone(this.client));
|
|
70
|
+
});
|
|
71
|
+
this.client.addEventListener("server_info_updated", () => {
|
|
72
|
+
this.provider.setValue(clone(this.client));
|
|
73
|
+
});
|
|
74
|
+
this.client.addEventListener("connection_lost", () => {
|
|
75
|
+
this._state = "disconnected";
|
|
76
|
+
});
|
|
77
|
+
}
|
|
66
78
|
render() {
|
|
67
79
|
if (this._state === "connecting") {
|
|
68
|
-
return html
|
|
80
|
+
return html`
|
|
81
|
+
<dashboard-header title="Matter Server"></dashboard-header>
|
|
82
|
+
<div class="status-page">
|
|
83
|
+
<p class="status-message">Connecting...</p>
|
|
84
|
+
</div>
|
|
85
|
+
`;
|
|
69
86
|
}
|
|
70
87
|
if (this._state === "disconnected") {
|
|
71
|
-
return html
|
|
88
|
+
return html`
|
|
89
|
+
<dashboard-header title="Matter Server"></dashboard-header>
|
|
90
|
+
<div class="status-page">
|
|
91
|
+
<p class="status-message error">Connection lost</p>
|
|
92
|
+
<p class="status-hint">
|
|
93
|
+
The connection to the Matter Server was lost. Please check if the server is running.
|
|
94
|
+
</p>
|
|
95
|
+
<button class="retry-button" @click=${this._reconnect}>
|
|
96
|
+
<ha-svg-icon .path=${mdiRefresh}></ha-svg-icon>
|
|
97
|
+
Reconnect
|
|
98
|
+
</button>
|
|
99
|
+
</div>
|
|
100
|
+
`;
|
|
72
101
|
}
|
|
73
102
|
if (this._state === "error") {
|
|
74
103
|
return html`
|
|
75
|
-
<
|
|
76
|
-
<
|
|
104
|
+
<dashboard-header title="Matter Server"></dashboard-header>
|
|
105
|
+
<div class="status-page">
|
|
106
|
+
<p class="status-message error">No connection</p>
|
|
107
|
+
<p class="status-hint">
|
|
108
|
+
Unable to connect to the Matter Server. Please check if the server is running.
|
|
109
|
+
</p>
|
|
110
|
+
<button class="retry-button" @click=${this._reconnect}>
|
|
111
|
+
<ha-svg-icon .path=${mdiRefresh}></ha-svg-icon>
|
|
112
|
+
Reconnect
|
|
113
|
+
</button>
|
|
114
|
+
</div>
|
|
77
115
|
`;
|
|
78
116
|
}
|
|
79
117
|
if (this._route.prefix === "node" && this._route.path.length == 3) {
|
|
@@ -110,6 +148,63 @@ let MatterDashboardApp = class extends LitElement {
|
|
|
110
148
|
></matter-server-view>`;
|
|
111
149
|
}
|
|
112
150
|
};
|
|
151
|
+
MatterDashboardApp.styles = css`
|
|
152
|
+
:host {
|
|
153
|
+
display: block;
|
|
154
|
+
min-height: 100vh;
|
|
155
|
+
background-color: var(--md-sys-color-background);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.status-page {
|
|
159
|
+
display: flex;
|
|
160
|
+
flex-direction: column;
|
|
161
|
+
align-items: center;
|
|
162
|
+
justify-content: center;
|
|
163
|
+
padding: 48px 24px;
|
|
164
|
+
text-align: center;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.status-message {
|
|
168
|
+
font-size: 1.5rem;
|
|
169
|
+
color: var(--md-sys-color-on-background);
|
|
170
|
+
margin: 0 0 16px 0;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.status-message.error {
|
|
174
|
+
color: var(--danger-color);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.status-hint {
|
|
178
|
+
font-size: 1rem;
|
|
179
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
180
|
+
margin: 0;
|
|
181
|
+
max-width: 400px;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.retry-button {
|
|
185
|
+
display: inline-flex;
|
|
186
|
+
align-items: center;
|
|
187
|
+
gap: 8px;
|
|
188
|
+
margin-top: 24px;
|
|
189
|
+
padding: 12px 24px;
|
|
190
|
+
font-size: 1rem;
|
|
191
|
+
background-color: var(--md-sys-color-primary);
|
|
192
|
+
color: var(--md-sys-color-on-primary);
|
|
193
|
+
--icon-primary-color: var(--md-sys-color-on-primary);
|
|
194
|
+
border: none;
|
|
195
|
+
border-radius: 4px;
|
|
196
|
+
cursor: pointer;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.retry-button:hover {
|
|
200
|
+
opacity: 0.9;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.retry-button ha-svg-icon {
|
|
204
|
+
width: 20px;
|
|
205
|
+
height: 20px;
|
|
206
|
+
}
|
|
207
|
+
`;
|
|
113
208
|
__decorateClass([
|
|
114
209
|
state()
|
|
115
210
|
], MatterDashboardApp.prototype, "_route", 2);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/pages/matter-dashboard-app.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,uBAAuB;AAEhC,SAAS,YAA8B,YAAY;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025-2026 Open Home Foundation
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Theme service for managing dark/light mode preferences.
|
|
8
|
+
* Supports three modes: light, dark, and system (auto-detect from OS).
|
|
9
|
+
*/
|
|
10
|
+
export type ThemePreference = "light" | "dark" | "system";
|
|
11
|
+
export type EffectiveTheme = "light" | "dark";
|
|
12
|
+
declare class ThemeServiceImpl {
|
|
13
|
+
private _preference;
|
|
14
|
+
private _mediaQuery;
|
|
15
|
+
private _listeners;
|
|
16
|
+
constructor();
|
|
17
|
+
get preference(): ThemePreference;
|
|
18
|
+
get effectiveTheme(): EffectiveTheme;
|
|
19
|
+
setPreference(pref: ThemePreference): void;
|
|
20
|
+
cycleTheme(): ThemePreference;
|
|
21
|
+
subscribe(callback: (theme: EffectiveTheme) => void): () => void;
|
|
22
|
+
private _loadPreference;
|
|
23
|
+
private _applyTheme;
|
|
24
|
+
}
|
|
25
|
+
export declare const ThemeService: ThemeServiceImpl;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=theme-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-service.d.ts","sourceRoot":"","sources":["../../../src/util/theme-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AAEH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,CAAC;AAI9C,cAAM,gBAAgB;IAClB,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,UAAU,CAAmD;;IASrE,IAAI,UAAU,IAAI,eAAe,CAEhC;IAED,IAAI,cAAc,IAAI,cAAc,CAKnC;IAED,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAM1C,UAAU,IAAI,eAAe;IAQ7B,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,MAAM,IAAI;IAKhE,OAAO,CAAC,eAAe;IAyBvB,OAAO,CAAC,WAAW;CAYtB;AAED,eAAO,MAAM,YAAY,kBAAyB,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025-2026 Open Home Foundation
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
const STORAGE_KEY = "matterTheme";
|
|
7
|
+
class ThemeServiceImpl {
|
|
8
|
+
constructor() {
|
|
9
|
+
this._preference = "system";
|
|
10
|
+
this._listeners = /* @__PURE__ */ new Set();
|
|
11
|
+
this._mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
|
|
12
|
+
this._mediaQuery.addEventListener("change", () => this._applyTheme());
|
|
13
|
+
this._loadPreference();
|
|
14
|
+
this._applyTheme();
|
|
15
|
+
}
|
|
16
|
+
get preference() {
|
|
17
|
+
return this._preference;
|
|
18
|
+
}
|
|
19
|
+
get effectiveTheme() {
|
|
20
|
+
if (this._preference === "system") {
|
|
21
|
+
return this._mediaQuery.matches ? "dark" : "light";
|
|
22
|
+
}
|
|
23
|
+
return this._preference;
|
|
24
|
+
}
|
|
25
|
+
setPreference(pref) {
|
|
26
|
+
this._preference = pref;
|
|
27
|
+
localStorage.setItem(STORAGE_KEY, pref);
|
|
28
|
+
this._applyTheme();
|
|
29
|
+
}
|
|
30
|
+
cycleTheme() {
|
|
31
|
+
const cycle = ["light", "dark", "system"];
|
|
32
|
+
const currentIndex = cycle.indexOf(this._preference);
|
|
33
|
+
const nextIndex = (currentIndex + 1) % cycle.length;
|
|
34
|
+
this.setPreference(cycle[nextIndex]);
|
|
35
|
+
return this._preference;
|
|
36
|
+
}
|
|
37
|
+
subscribe(callback) {
|
|
38
|
+
this._listeners.add(callback);
|
|
39
|
+
return () => this._listeners.delete(callback);
|
|
40
|
+
}
|
|
41
|
+
_loadPreference() {
|
|
42
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
43
|
+
const themeParam = urlParams.get("theme");
|
|
44
|
+
if (themeParam && ["light", "dark", "system"].includes(themeParam)) {
|
|
45
|
+
this._preference = themeParam;
|
|
46
|
+
localStorage.setItem(STORAGE_KEY, themeParam);
|
|
47
|
+
urlParams.delete("theme");
|
|
48
|
+
const newUrl = urlParams.toString() ? `${window.location.pathname}?${urlParams.toString()}${window.location.hash}` : `${window.location.pathname}${window.location.hash}`;
|
|
49
|
+
history.replaceState({}, "", newUrl);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const stored = localStorage.getItem(STORAGE_KEY);
|
|
53
|
+
if (stored && ["light", "dark", "system"].includes(stored)) {
|
|
54
|
+
this._preference = stored;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
_applyTheme() {
|
|
58
|
+
const effective = this.effectiveTheme;
|
|
59
|
+
document.documentElement.classList.toggle("dark-theme", effective === "dark");
|
|
60
|
+
const metaThemeColor = document.querySelector('meta[name="theme-color"]');
|
|
61
|
+
if (metaThemeColor) {
|
|
62
|
+
metaThemeColor.setAttribute("content", effective === "dark" ? "#1e1e1e" : "#03a9f4");
|
|
63
|
+
}
|
|
64
|
+
this._listeners.forEach((cb) => cb(effective));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const ThemeService = new ThemeServiceImpl();
|
|
68
|
+
export {
|
|
69
|
+
ThemeService
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=theme-service.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/util/theme-service.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAcA,MAAM,cAAc;AAEpB,MAAM,iBAAiB;AAAA,EAKnB,cAAc;AAJd,SAAQ,cAA+B;AAEvC,SAAQ,aAAmD,oBAAI,IAAI;AAG/D,SAAK,cAAc,OAAO,WAAW,8BAA8B;AACnE,SAAK,YAAY,iBAAiB,UAAU,MAAM,KAAK,YAAY,CAAC;AACpE,SAAK,gBAAgB;AACrB,SAAK,YAAY;AAAA,EACrB;AAAA,EAEA,IAAI,aAA8B;AAC9B,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,iBAAiC;AACjC,QAAI,KAAK,gBAAgB,UAAU;AAC/B,aAAO,KAAK,YAAY,UAAU,SAAS;AAAA,IAC/C;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,cAAc,MAA6B;AACvC,SAAK,cAAc;AACnB,iBAAa,QAAQ,aAAa,IAAI;AACtC,SAAK,YAAY;AAAA,EACrB;AAAA,EAEA,aAA8B;AAC1B,UAAM,QAA2B,CAAC,SAAS,QAAQ,QAAQ;AAC3D,UAAM,eAAe,MAAM,QAAQ,KAAK,WAAW;AACnD,UAAM,aAAa,eAAe,KAAK,MAAM;AAC7C,SAAK,cAAc,MAAM,SAAS,CAAC;AACnC,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,UAAU,UAAuD;AAC7D,SAAK,WAAW,IAAI,QAAQ;AAC5B,WAAO,MAAM,KAAK,WAAW,OAAO,QAAQ;AAAA,EAChD;AAAA,EAEQ,kBAAwB;AAE5B,UAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,UAAM,aAAa,UAAU,IAAI,OAAO;AACxC,QAAI,cAAc,CAAC,SAAS,QAAQ,QAAQ,EAAE,SAAS,UAAU,GAAG;AAEhE,WAAK,cAAc;AACnB,mBAAa,QAAQ,aAAa,UAAU;AAE5C,gBAAU,OAAO,OAAO;AACxB,YAAM,SAAS,UAAU,SAAS,IAC5B,GAAG,OAAO,SAAS,QAAQ,IAAI,UAAU,SAAS,CAAC,GAAG,OAAO,SAAS,IAAI,KAC1E,GAAG,OAAO,SAAS,QAAQ,GAAG,OAAO,SAAS,IAAI;AACxD,cAAQ,aAAa,CAAC,GAAG,IAAI,MAAM;AACnC;AAAA,IACJ;AAGA,UAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,QAAI,UAAU,CAAC,SAAS,QAAQ,QAAQ,EAAE,SAAS,MAAM,GAAG;AACxD,WAAK,cAAc;AAAA,IACvB;AAAA,EAEJ;AAAA,EAEQ,cAAoB;AACxB,UAAM,YAAY,KAAK;AACvB,aAAS,gBAAgB,UAAU,OAAO,cAAc,cAAc,MAAM;AAG5E,UAAM,iBAAiB,SAAS,cAAc,0BAA0B;AACxE,QAAI,gBAAgB;AAChB,qBAAe,aAAa,WAAW,cAAc,SAAS,YAAY,SAAS;AAAA,IACvF;AAEA,SAAK,WAAW,QAAQ,QAAM,GAAG,SAAS,CAAC;AAAA,EAC/C;AACJ;AAEO,MAAM,eAAe,IAAI,iBAAiB;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
package/dist/web/index.html
CHANGED
|
@@ -17,11 +17,18 @@
|
|
|
17
17
|
--md-ref-typeface-plain: var(--roboto-font);
|
|
18
18
|
|
|
19
19
|
--md-sys-color-background: #f5f5f5;
|
|
20
|
+
--md-sys-color-on-background: #1c1b1f;
|
|
20
21
|
--md-sys-color-surface: #fff;
|
|
22
|
+
--md-sys-color-on-surface: #1c1b1f;
|
|
23
|
+
--md-sys-color-on-surface-variant: #49454f;
|
|
24
|
+
--md-sys-color-surface-variant: #e7e0ec;
|
|
21
25
|
--md-sys-color-surface-container: #fff;
|
|
26
|
+
--md-sys-color-surface-container-low: #f7f2fa;
|
|
22
27
|
--md-sys-color-surface-container-high: #fff;
|
|
23
28
|
--md-sys-color-surface-container-highest: #f5f5f5;
|
|
24
29
|
--md-sys-color-secondary-container: #e0e0e0;
|
|
30
|
+
--md-sys-color-outline: #79747e;
|
|
31
|
+
--md-sys-color-outline-variant: #cac4d0;
|
|
25
32
|
|
|
26
33
|
--md-sys-typescale-headline-font: var(--roboto-font);
|
|
27
34
|
--md-sys-typescale-title-font: var(--roboto-font);
|
|
@@ -31,9 +38,37 @@
|
|
|
31
38
|
font-family: var(--roboto-font);
|
|
32
39
|
}
|
|
33
40
|
|
|
41
|
+
body {
|
|
42
|
+
--primary-color: var(--md-sys-color-primary);
|
|
43
|
+
}
|
|
44
|
+
|
|
34
45
|
a {
|
|
35
46
|
color: var(--primary-color);
|
|
36
47
|
}
|
|
48
|
+
|
|
49
|
+
/* Dark theme overrides */
|
|
50
|
+
html.dark-theme body {
|
|
51
|
+
--md-sys-color-primary: #4fc3f7;
|
|
52
|
+
--md-sys-color-on-primary: #003544;
|
|
53
|
+
--md-sys-color-background: #121212;
|
|
54
|
+
--md-sys-color-on-background: #e6e1e5;
|
|
55
|
+
--md-sys-color-surface: #1e1e1e;
|
|
56
|
+
--md-sys-color-on-surface: #e6e1e5;
|
|
57
|
+
--md-sys-color-on-surface-variant: #cac4d0;
|
|
58
|
+
--md-sys-color-surface-variant: #49454f;
|
|
59
|
+
--md-sys-color-surface-container: #1e1e1e;
|
|
60
|
+
--md-sys-color-surface-container-low: #1a1a1a;
|
|
61
|
+
--md-sys-color-surface-container-high: #2b2b2b;
|
|
62
|
+
--md-sys-color-surface-container-highest: #363636;
|
|
63
|
+
--md-sys-color-secondary-container: #4a4458;
|
|
64
|
+
--md-sys-color-on-secondary-container: #e8def8;
|
|
65
|
+
--md-sys-color-outline: #938f99;
|
|
66
|
+
--md-sys-color-outline-variant: #49454f;
|
|
67
|
+
--text-color: rgba(255, 255, 255, 0.6);
|
|
68
|
+
--danger-color: #ff7961;
|
|
69
|
+
--primary-color: #4fc3f7;
|
|
70
|
+
color-scheme: dark;
|
|
71
|
+
}
|
|
37
72
|
</style>
|
|
38
73
|
</head>
|
|
39
74
|
<body></body>
|
package/dist/web/js/{commission-node-dialog--19-sX9D.js → commission-node-dialog-CoaDIV2Y.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r, n, t, i, b } from './matter-dashboard-app-
|
|
2
|
-
import { p as preventDefault } from './prevent_default-
|
|
1
|
+
import { r, n, t, i, h as b } from './matter-dashboard-app-DlHSE_Qh.js';
|
|
2
|
+
import { p as preventDefault } from './prevent_default-CuW2EnKR.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-
|
|
47
|
+
import('./commission-node-wifi-DOyin0q3.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-
|
|
54
|
+
import('./commission-node-thread-DZ6DghSs.js');
|
|
55
55
|
this._mode = "thread";
|
|
56
56
|
}
|
|
57
57
|
_commissionExisting() {
|
|
58
|
-
import('./commission-node-existing-
|
|
58
|
+
import('./commission-node-existing-DEU_mJjO.js');
|
|
59
59
|
this._mode = "existing";
|
|
60
60
|
}
|
|
61
61
|
_nodeCommissioned(ev) {
|
package/dist/web/js/{commission-node-existing-DY6SnsHb.js → commission-node-existing-DEU_mJjO.js}
RENAMED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { r, c, n,
|
|
2
|
-
import { f as fireEvent } from './fire_event-
|
|
3
|
-
import './outlined-text-field-
|
|
1
|
+
import { r, p as c, n, q as clientContext, a as e, t, i, A, h as b } from './matter-dashboard-app-DlHSE_Qh.js';
|
|
2
|
+
import { f as fireEvent } from './fire_event-C9Duc1j-.js';
|
|
3
|
+
import './outlined-text-field-D2BOt1yD.js';
|
|
4
4
|
import './main.js';
|
|
5
|
-
import './
|
|
5
|
+
import './validator-MOJiFndw.js';
|
|
6
|
+
import './prevent_default-CuW2EnKR.js';
|
|
6
7
|
|
|
7
8
|
var __defProp = Object.defineProperty;
|
|
8
9
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
package/dist/web/js/{commission-node-thread-CXquVvK5.js → commission-node-thread-DZ6DghSs.js}
RENAMED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { r, c, n,
|
|
2
|
-
import { f as fireEvent } from './fire_event-
|
|
3
|
-
import './outlined-text-field-
|
|
1
|
+
import { r, p as c, n, q as clientContext, a as e, t, i, A, h as b } from './matter-dashboard-app-DlHSE_Qh.js';
|
|
2
|
+
import { f as fireEvent } from './fire_event-C9Duc1j-.js';
|
|
3
|
+
import './outlined-text-field-D2BOt1yD.js';
|
|
4
4
|
import './main.js';
|
|
5
|
-
import './
|
|
5
|
+
import './validator-MOJiFndw.js';
|
|
6
|
+
import './prevent_default-CuW2EnKR.js';
|
|
6
7
|
|
|
7
8
|
var __defProp = Object.defineProperty;
|
|
8
9
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { r, c, n,
|
|
2
|
-
import { f as fireEvent } from './fire_event-
|
|
3
|
-
import './outlined-text-field-
|
|
1
|
+
import { r, p as c, n, q as clientContext, a as e, t, i, A, h as b } from './matter-dashboard-app-DlHSE_Qh.js';
|
|
2
|
+
import { f as fireEvent } from './fire_event-C9Duc1j-.js';
|
|
3
|
+
import './outlined-text-field-D2BOt1yD.js';
|
|
4
4
|
import './main.js';
|
|
5
|
-
import './
|
|
5
|
+
import './validator-MOJiFndw.js';
|
|
6
|
+
import './prevent_default-CuW2EnKR.js';
|
|
6
7
|
|
|
7
8
|
var __defProp = Object.defineProperty;
|
|
8
9
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n, t, i, b } from './matter-dashboard-app-
|
|
2
|
-
import { p as preventDefault } from './prevent_default-
|
|
1
|
+
import { n, t, i, h as b } from './matter-dashboard-app-DlHSE_Qh.js';
|
|
2
|
+
import { p as preventDefault } from './prevent_default-CuW2EnKR.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, f as e, A, b,
|
|
1
|
+
import { m as mixinDelegatesAria, i, _ as __decorate, n, f as e, A, h as b, j as i$1, t } from './matter-dashboard-app-DlHSE_Qh.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @license
|