@matter-server/dashboard 0.3.3 → 0.3.5-alpha.0-20260203-66f5d74
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 +76 -0
- package/dist/esm/components/dialogs/binding/node-binding-dialog.d.ts.map +1 -1
- package/dist/esm/components/dialogs/binding/node-binding-dialog.js +44 -17
- package/dist/esm/components/dialogs/binding/node-binding-dialog.js.map +1 -1
- package/dist/esm/entrypoint/main.js +1 -1
- package/dist/esm/entrypoint/main.js.map +1 -1
- package/dist/esm/pages/components/node-details.js +1 -1
- package/dist/esm/pages/components/node-details.js.map +1 -1
- package/dist/esm/pages/matter-cluster-view.d.ts.map +1 -1
- package/dist/esm/pages/matter-cluster-view.js +9 -4
- package/dist/esm/pages/matter-cluster-view.js.map +1 -1
- package/dist/esm/pages/matter-endpoint-view.d.ts.map +1 -1
- package/dist/esm/pages/matter-endpoint-view.js +8 -2
- package/dist/esm/pages/matter-endpoint-view.js.map +1 -1
- package/dist/esm/pages/matter-network-view.d.ts +5 -0
- package/dist/esm/pages/matter-network-view.d.ts.map +1 -1
- package/dist/esm/pages/matter-network-view.js +96 -13
- package/dist/esm/pages/matter-network-view.js.map +1 -1
- package/dist/esm/pages/matter-node-view.d.ts.map +1 -1
- package/dist/esm/pages/matter-node-view.js +17 -3
- package/dist/esm/pages/matter-node-view.js.map +1 -1
- package/dist/esm/pages/network/base-network-graph.d.ts +34 -0
- package/dist/esm/pages/network/base-network-graph.d.ts.map +1 -1
- package/dist/esm/pages/network/base-network-graph.js +116 -25
- package/dist/esm/pages/network/base-network-graph.js.map +1 -1
- package/dist/esm/pages/network/device-icons.js +1 -1
- package/dist/esm/pages/network/network-details.d.ts +31 -1
- package/dist/esm/pages/network/network-details.d.ts.map +1 -1
- package/dist/esm/pages/network/network-details.js +233 -15
- package/dist/esm/pages/network/network-details.js.map +1 -1
- package/dist/esm/pages/network/network-types.d.ts +6 -0
- package/dist/esm/pages/network/network-types.d.ts.map +1 -1
- package/dist/esm/pages/network/network-utils.d.ts +26 -0
- package/dist/esm/pages/network/network-utils.d.ts.map +1 -1
- package/dist/esm/pages/network/network-utils.js +71 -3
- package/dist/esm/pages/network/network-utils.js.map +1 -1
- package/dist/esm/pages/network/thread-graph.d.ts.map +1 -1
- package/dist/esm/pages/network/thread-graph.js +5 -2
- package/dist/esm/pages/network/thread-graph.js.map +1 -1
- package/dist/esm/pages/network/update-connections-dialog.d.ts +55 -0
- package/dist/esm/pages/network/update-connections-dialog.d.ts.map +1 -0
- package/dist/esm/pages/network/update-connections-dialog.js +284 -0
- package/dist/esm/pages/network/update-connections-dialog.js.map +6 -0
- package/dist/esm/pages/network/wifi-graph.d.ts.map +1 -1
- package/dist/esm/pages/network/wifi-graph.js +5 -3
- package/dist/esm/pages/network/wifi-graph.js.map +1 -1
- package/dist/esm/util/format_hex.d.ts +18 -0
- package/dist/esm/util/format_hex.d.ts.map +1 -1
- package/dist/esm/util/format_hex.js +21 -1
- package/dist/esm/util/format_hex.js.map +1 -1
- package/dist/esm/util/matter-status.d.ts +49 -0
- package/dist/esm/util/matter-status.d.ts.map +1 -0
- package/dist/esm/util/matter-status.js +110 -0
- package/dist/esm/util/matter-status.js.map +6 -0
- package/dist/web/js/{commission-node-dialog-B1_khzZb.js → commission-node-dialog-DBugVQOl.js} +5 -5
- package/dist/web/js/{commission-node-existing-RpdajrwF.js → commission-node-existing-ts2MN2bQ.js} +2 -2
- package/dist/web/js/{commission-node-thread-5f2itkTG.js → commission-node-thread-CixfNuM3.js} +2 -2
- package/dist/web/js/{commission-node-wifi-DZ_pWqsa.js → commission-node-wifi-CWC30EYn.js} +2 -2
- package/dist/web/js/{dialog-box-DEUxM4B1.js → dialog-box-SeMuFiWx.js} +2 -2
- package/dist/web/js/{fire_event-BczBMT8E.js → fire_event-B63oGTcK.js} +1 -1
- package/dist/web/js/{log-level-dialog-Cr3PfX1X.js → log-level-dialog-J0gFiLLM.js} +2 -2
- package/dist/web/js/main.js +2 -2
- package/dist/web/js/{matter-dashboard-app-BuCe_Jxf.js → matter-dashboard-app-D7YWrgXj.js} +2041 -246
- package/dist/web/js/{node-binding-dialog-DMiHNDLA.js → node-binding-dialog-DSBwIJcQ.js} +147 -19
- package/dist/web/js/prevent_default-D-ohDGsN.js +8 -0
- package/package.json +4 -4
- package/src/components/dialogs/binding/node-binding-dialog.ts +45 -21
- package/src/entrypoint/main.ts +2 -0
- package/src/pages/components/node-details.ts +1 -1
- package/src/pages/matter-cluster-view.ts +11 -4
- package/src/pages/matter-endpoint-view.ts +10 -3
- package/src/pages/matter-network-view.ts +102 -13
- package/src/pages/matter-node-view.ts +19 -4
- package/src/pages/network/base-network-graph.ts +147 -33
- package/src/pages/network/device-icons.ts +1 -1
- package/src/pages/network/network-details.ts +281 -16
- package/src/pages/network/network-types.ts +6 -0
- package/src/pages/network/network-utils.ts +109 -0
- package/src/pages/network/thread-graph.ts +7 -1
- package/src/pages/network/update-connections-dialog.ts +327 -0
- package/src/pages/network/wifi-graph.ts +4 -3
- package/src/util/format_hex.ts +39 -0
- package/src/util/matter-status.ts +165 -0
- package/dist/web/js/prevent_default-D4FX_PIh.js +0 -774
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025-2026 Open Home Foundation
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
const MatterStatusNames = {
|
|
7
|
+
0: "Success",
|
|
8
|
+
1: "Failure",
|
|
9
|
+
125: "InvalidSubscription",
|
|
10
|
+
126: "UnsupportedAccess",
|
|
11
|
+
127: "UnsupportedEndpoint",
|
|
12
|
+
128: "InvalidAction",
|
|
13
|
+
129: "UnsupportedCommand",
|
|
14
|
+
133: "InvalidCommand",
|
|
15
|
+
134: "UnsupportedAttribute",
|
|
16
|
+
135: "ConstraintError",
|
|
17
|
+
136: "UnsupportedWrite",
|
|
18
|
+
137: "ResourceExhausted",
|
|
19
|
+
139: "NotFound",
|
|
20
|
+
140: "UnreportableAttribute",
|
|
21
|
+
141: "InvalidDataType",
|
|
22
|
+
143: "UnsupportedRead",
|
|
23
|
+
146: "DataVersionMismatch",
|
|
24
|
+
148: "Timeout",
|
|
25
|
+
155: "UnsupportedNode",
|
|
26
|
+
156: "Busy",
|
|
27
|
+
157: "AccessRestricted",
|
|
28
|
+
195: "UnsupportedCluster",
|
|
29
|
+
197: "NoUpstreamSubscription",
|
|
30
|
+
198: "NeedsTimedInteraction",
|
|
31
|
+
199: "UnsupportedEvent",
|
|
32
|
+
200: "PathsExhausted",
|
|
33
|
+
201: "TimedRequestMismatch",
|
|
34
|
+
202: "FailsafeRequired",
|
|
35
|
+
203: "InvalidInState",
|
|
36
|
+
204: "NoCommandResponse",
|
|
37
|
+
205: "TermsAndConditionsChanged",
|
|
38
|
+
206: "MaintenanceRequired",
|
|
39
|
+
207: "DynamicConstraintError",
|
|
40
|
+
208: "AlreadyExists",
|
|
41
|
+
209: "InvalidTransportType"
|
|
42
|
+
};
|
|
43
|
+
function getMatterStatusName(status) {
|
|
44
|
+
return MatterStatusNames[status] ?? `Unknown(${status})`;
|
|
45
|
+
}
|
|
46
|
+
function successResult() {
|
|
47
|
+
return { success: true, status: 0, statusName: "Success" };
|
|
48
|
+
}
|
|
49
|
+
function failureResult(status) {
|
|
50
|
+
return { success: false, status, statusName: getMatterStatusName(status) };
|
|
51
|
+
}
|
|
52
|
+
function resultFromStatus(status) {
|
|
53
|
+
const statusName = getMatterStatusName(status);
|
|
54
|
+
return { success: status === 0, status, statusName };
|
|
55
|
+
}
|
|
56
|
+
function analyzeBatchResults(results) {
|
|
57
|
+
if (!results || results.length === 0) {
|
|
58
|
+
return {
|
|
59
|
+
outcome: "all_failed",
|
|
60
|
+
successCount: 0,
|
|
61
|
+
failureCount: 0,
|
|
62
|
+
errorCounts: {},
|
|
63
|
+
message: "No response/results returned"
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
let successCount = 0;
|
|
67
|
+
let failureCount = 0;
|
|
68
|
+
const errorCounts = {};
|
|
69
|
+
for (const result of results) {
|
|
70
|
+
if (result.status === 0) {
|
|
71
|
+
successCount++;
|
|
72
|
+
} else {
|
|
73
|
+
failureCount++;
|
|
74
|
+
errorCounts[result.status] = (errorCounts[result.status] ?? 0) + 1;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
let outcome;
|
|
78
|
+
if (failureCount === 0) {
|
|
79
|
+
outcome = "all_success";
|
|
80
|
+
} else if (successCount === 0) {
|
|
81
|
+
outcome = "all_failed";
|
|
82
|
+
} else {
|
|
83
|
+
outcome = "partial";
|
|
84
|
+
}
|
|
85
|
+
const message = formatBatchMessage(outcome, successCount, failureCount, errorCounts);
|
|
86
|
+
return { outcome, successCount, failureCount, errorCounts, message };
|
|
87
|
+
}
|
|
88
|
+
function formatBatchMessage(outcome, successCount, failureCount, errorCounts) {
|
|
89
|
+
const entryWord = (count) => count === 1 ? "entry" : "entries";
|
|
90
|
+
if (outcome === "all_success") {
|
|
91
|
+
return "Write successful";
|
|
92
|
+
}
|
|
93
|
+
const errorParts = Object.entries(errorCounts).map(([code, count]) => {
|
|
94
|
+
const statusCode = parseInt(code, 10);
|
|
95
|
+
return `${count}x ${getMatterStatusName(statusCode)} (${code})`;
|
|
96
|
+
}).join(", ");
|
|
97
|
+
if (outcome === "all_failed") {
|
|
98
|
+
return `All ${failureCount} ${entryWord(failureCount)} failed: ${errorParts}`;
|
|
99
|
+
}
|
|
100
|
+
return `Partial failure: ${successCount} ${entryWord(successCount)} succeeded, ${failureCount} failed (${errorParts}). Please verify.`;
|
|
101
|
+
}
|
|
102
|
+
export {
|
|
103
|
+
MatterStatusNames,
|
|
104
|
+
analyzeBatchResults,
|
|
105
|
+
failureResult,
|
|
106
|
+
getMatterStatusName,
|
|
107
|
+
resultFromStatus,
|
|
108
|
+
successResult
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=matter-status.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/util/matter-status.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAUO,MAAM,oBAA4C;AAAA,EACrD,GAAG;AAAA,EACH,GAAG;AAAA,EACH,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACT;AAGO,SAAS,oBAAoB,QAAwB;AACxD,SAAO,kBAAkB,MAAM,KAAK,WAAW,MAAM;AACzD;AA2BO,SAAS,gBAAuC;AACnD,SAAO,EAAE,SAAS,MAAM,QAAQ,GAAG,YAAY,UAAU;AAC7D;AAGO,SAAS,cAAc,QAAuC;AACjE,SAAO,EAAE,SAAS,OAAO,QAAQ,YAAY,oBAAoB,MAAM,EAAE;AAC7E;AAGO,SAAS,iBAAiB,QAAuC;AACpE,QAAM,aAAa,oBAAoB,MAAM;AAC7C,SAAO,EAAE,SAAS,WAAW,GAAG,QAAQ,WAAW;AACvD;AAQO,SAAS,oBAAoB,SAA0E;AAC1G,MAAI,CAAC,WAAW,QAAQ,WAAW,GAAG;AAClC,WAAO;AAAA,MACH,SAAS;AAAA,MACT,cAAc;AAAA,MACd,cAAc;AAAA,MACd,aAAa,CAAC;AAAA,MACd,SAAS;AAAA,IACb;AAAA,EACJ;AAEA,MAAI,eAAe;AACnB,MAAI,eAAe;AACnB,QAAM,cAAsC,CAAC;AAE7C,aAAW,UAAU,SAAS;AAC1B,QAAI,OAAO,WAAW,GAAG;AACrB;AAAA,IACJ,OAAO;AACH;AACA,kBAAY,OAAO,MAAM,KAAK,YAAY,OAAO,MAAM,KAAK,KAAK;AAAA,IACrE;AAAA,EACJ;AAEA,MAAI;AACJ,MAAI,iBAAiB,GAAG;AACpB,cAAU;AAAA,EACd,WAAW,iBAAiB,GAAG;AAC3B,cAAU;AAAA,EACd,OAAO;AACH,cAAU;AAAA,EACd;AAEA,QAAM,UAAU,mBAAmB,SAAS,cAAc,cAAc,WAAW;AAEnF,SAAO,EAAE,SAAS,cAAc,cAAc,aAAa,QAAQ;AACvE;AAGA,SAAS,mBACL,SACA,cACA,cACA,aACM;AACN,QAAM,YAAY,CAAC,UAAmB,UAAU,IAAI,UAAU;AAE9D,MAAI,YAAY,eAAe;AAC3B,WAAO;AAAA,EACX;AAGA,QAAM,aAAa,OAAO,QAAQ,WAAW,EACxC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;AACpB,UAAM,aAAa,SAAS,MAAM,EAAE;AACpC,WAAO,GAAG,KAAK,KAAK,oBAAoB,UAAU,CAAC,KAAK,IAAI;AAAA,EAChE,CAAC,EACA,KAAK,IAAI;AAEd,MAAI,YAAY,cAAc;AAC1B,WAAO,OAAO,YAAY,IAAI,UAAU,YAAY,CAAC,YAAY,UAAU;AAAA,EAC/E;AAGA,SAAO,oBAAoB,YAAY,IAAI,UAAU,YAAY,CAAC,eAAe,YAAY,YAAY,UAAU;AACvH;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
package/dist/web/js/{commission-node-dialog-B1_khzZb.js → commission-node-dialog-DBugVQOl.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r, n, t, i, j as b } from './matter-dashboard-app-
|
|
2
|
-
import { p as preventDefault } from './prevent_default-
|
|
1
|
+
import { r, n, t, i, j as b } from './matter-dashboard-app-D7YWrgXj.js';
|
|
2
|
+
import { p as preventDefault } from './prevent_default-D-ohDGsN.js';
|
|
3
3
|
import './main.js';
|
|
4
4
|
|
|
5
5
|
var __defProp = Object.defineProperty;
|
|
@@ -44,18 +44,18 @@ let ComissionNodeDialog = class extends i {
|
|
|
44
44
|
if (!this.client.serverInfo.bluetooth_enabled) {
|
|
45
45
|
return;
|
|
46
46
|
}
|
|
47
|
-
import('./commission-node-wifi-
|
|
47
|
+
import('./commission-node-wifi-CWC30EYn.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-CixfNuM3.js');
|
|
55
55
|
this._mode = "thread";
|
|
56
56
|
}
|
|
57
57
|
_commissionExisting() {
|
|
58
|
-
import('./commission-node-existing-
|
|
58
|
+
import('./commission-node-existing-ts2MN2bQ.js');
|
|
59
59
|
this._mode = "existing";
|
|
60
60
|
}
|
|
61
61
|
_nodeCommissioned(ev) {
|
package/dist/web/js/{commission-node-existing-RpdajrwF.js → commission-node-existing-ts2MN2bQ.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r, G as c, H as clientContext, n, a as e, t, i, A, F as handleAsync, j as b } from './matter-dashboard-app-
|
|
2
|
-
import { f as fireEvent } from './fire_event-
|
|
1
|
+
import { r, G as c, H as clientContext, n, a as e, t, i, A, F as handleAsync, j as b } from './matter-dashboard-app-D7YWrgXj.js';
|
|
2
|
+
import { f as fireEvent } from './fire_event-B63oGTcK.js';
|
|
3
3
|
import './main.js';
|
|
4
4
|
|
|
5
5
|
var __defProp = Object.defineProperty;
|
package/dist/web/js/{commission-node-thread-5f2itkTG.js → commission-node-thread-CixfNuM3.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r, G as c, H as clientContext, n, a as e, t, i, A, F as handleAsync, j as b } from './matter-dashboard-app-
|
|
2
|
-
import { f as fireEvent } from './fire_event-
|
|
1
|
+
import { r, G as c, H as clientContext, n, a as e, t, i, A, F as handleAsync, j as b } from './matter-dashboard-app-D7YWrgXj.js';
|
|
2
|
+
import { f as fireEvent } from './fire_event-B63oGTcK.js';
|
|
3
3
|
import './main.js';
|
|
4
4
|
|
|
5
5
|
var __defProp = Object.defineProperty;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r, G as c, H as clientContext, n, a as e, t, i, A, F as handleAsync, j as b } from './matter-dashboard-app-
|
|
2
|
-
import { f as fireEvent } from './fire_event-
|
|
1
|
+
import { r, G as c, H as clientContext, n, a as e, t, i, A, F as handleAsync, j as b } from './matter-dashboard-app-D7YWrgXj.js';
|
|
2
|
+
import { f as fireEvent } from './fire_event-B63oGTcK.js';
|
|
3
3
|
import './main.js';
|
|
4
4
|
|
|
5
5
|
var __defProp = Object.defineProperty;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n, t, i, j as b } from './matter-dashboard-app-
|
|
2
|
-
import { p as preventDefault } from './prevent_default-
|
|
1
|
+
import { n, t, i, j as b } from './matter-dashboard-app-D7YWrgXj.js';
|
|
2
|
+
import { p as preventDefault } from './prevent_default-D-ohDGsN.js';
|
|
3
3
|
import './main.js';
|
|
4
4
|
|
|
5
5
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { m as mixinDelegatesAria, i, _ as __decorate, n, A, f as e, j as b, k as i$1, t } from './matter-dashboard-app-
|
|
1
|
+
import { m as mixinDelegatesAria, i, _ as __decorate, n, A, f as e, j as b, k as i$1, t } from './matter-dashboard-app-D7YWrgXj.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @license
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { e, N as NavigableKeys, _ as __decorate, a as e$1, n as n$1, o, r, i, c as createAnimationSignal, L as ListController, g as getActiveItem, b as getLastActivatableItem, d as getFirstActivatableItem, A, f as e$2, h as o$1, j as b, E as EASING, k as i$1, t, V as Validator, D, m as mixinDelegatesAria, l as mixinOnReportValidity, p as mixinConstraintValidation, q as mixinFormAssociated, s as mixinElementInternals, u as onReportValidity, v as u, w as redispatchEvent, x as getFormValue, y as createValidator, z as getValidityAnchor, B as i$2, C as fireAndForget, F as handleAsync } from './matter-dashboard-app-
|
|
2
|
-
import { p as preventDefault } from './prevent_default-
|
|
1
|
+
import { e, N as NavigableKeys, _ as __decorate, a as e$1, n as n$1, o, r, i, c as createAnimationSignal, L as ListController, g as getActiveItem, b as getLastActivatableItem, d as getFirstActivatableItem, A, f as e$2, h as o$1, j as b, E as EASING, k as i$1, t, V as Validator, D, m as mixinDelegatesAria, l as mixinOnReportValidity, p as mixinConstraintValidation, q as mixinFormAssociated, s as mixinElementInternals, u as onReportValidity, v as u, w as redispatchEvent, x as getFormValue, y as createValidator, z as getValidityAnchor, B as i$2, C as fireAndForget, F as handleAsync } from './matter-dashboard-app-D7YWrgXj.js';
|
|
2
|
+
import { p as preventDefault } from './prevent_default-D-ohDGsN.js';
|
|
3
3
|
import './main.js';
|
|
4
4
|
|
|
5
5
|
/**
|
package/dist/web/js/main.js
CHANGED
|
@@ -748,9 +748,9 @@ const ThemeService = new ThemeServiceImpl();
|
|
|
748
748
|
* SPDX-License-Identifier: Apache-2.0
|
|
749
749
|
*/
|
|
750
750
|
async function main() {
|
|
751
|
-
import('./matter-dashboard-app-
|
|
751
|
+
import('./matter-dashboard-app-D7YWrgXj.js').then(function (n) { return n.I; });
|
|
752
752
|
let url = "";
|
|
753
|
-
const isProductionServer = location.origin.includes(":5580") || location.href.includes("hassio_ingress") || location.href.includes("/api/ingress/");
|
|
753
|
+
const isProductionServer = window.__MATTERJS_PRODUCTION_MODE__ === true || location.origin.includes(":5580") || location.href.includes("hassio_ingress") || location.href.includes("/api/ingress/");
|
|
754
754
|
if (!isProductionServer) {
|
|
755
755
|
let storageUrl = localStorage.getItem("matterURL");
|
|
756
756
|
if (!storageUrl) {
|