@matter-server/dashboard 1.1.8-alpha.0-20260707-c552b9d → 1.2.1
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 +30 -1
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.d.ts +6 -0
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.d.ts.map +1 -1
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.js +55 -2
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.js.map +1 -1
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.d.ts +6 -0
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.d.ts.map +1 -1
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.js +53 -3
- package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.js.map +1 -1
- package/dist/esm/components/dialogs/fabric-label-dialog/fabric-label-dialog.d.ts +29 -0
- package/dist/esm/components/dialogs/fabric-label-dialog/fabric-label-dialog.d.ts.map +1 -0
- package/dist/esm/components/dialogs/fabric-label-dialog/fabric-label-dialog.js +112 -0
- package/dist/esm/components/dialogs/fabric-label-dialog/fabric-label-dialog.js.map +6 -0
- package/dist/esm/components/dialogs/fabric-label-dialog/show-fabric-label-dialog.d.ts +8 -0
- package/dist/esm/components/dialogs/fabric-label-dialog/show-fabric-label-dialog.d.ts.map +1 -0
- package/dist/esm/components/dialogs/fabric-label-dialog/show-fabric-label-dialog.js +17 -0
- package/dist/esm/components/dialogs/fabric-label-dialog/show-fabric-label-dialog.js.map +6 -0
- package/dist/esm/components/dialogs/settings/settings-dialog.d.ts +28 -0
- package/dist/esm/components/dialogs/settings/settings-dialog.d.ts.map +1 -1
- package/dist/esm/components/dialogs/settings/settings-dialog.js +496 -105
- package/dist/esm/components/dialogs/settings/settings-dialog.js.map +1 -1
- package/dist/esm/pages/cluster-commands/base-cluster-commands.d.ts +6 -0
- package/dist/esm/pages/cluster-commands/base-cluster-commands.d.ts.map +1 -1
- package/dist/esm/pages/cluster-commands/base-cluster-commands.js +8 -0
- package/dist/esm/pages/cluster-commands/base-cluster-commands.js.map +1 -1
- package/dist/esm/pages/cluster-commands/clusters/access-control-commands.d.ts.map +1 -1
- package/dist/esm/pages/cluster-commands/clusters/access-control-commands.js +21 -7
- package/dist/esm/pages/cluster-commands/clusters/access-control-commands.js.map +1 -1
- package/dist/esm/pages/cluster-commands/clusters/avsum-commands.d.ts.map +1 -1
- package/dist/esm/pages/cluster-commands/clusters/avsum-commands.js +34 -13
- package/dist/esm/pages/cluster-commands/clusters/avsum-commands.js.map +1 -1
- package/dist/esm/pages/cluster-commands/clusters/basic-information-commands.d.ts.map +1 -1
- package/dist/esm/pages/cluster-commands/clusters/basic-information-commands.js +17 -11
- package/dist/esm/pages/cluster-commands/clusters/basic-information-commands.js.map +1 -1
- package/dist/esm/pages/cluster-commands/clusters/binding-commands.d.ts.map +1 -1
- package/dist/esm/pages/cluster-commands/clusters/binding-commands.js +24 -9
- package/dist/esm/pages/cluster-commands/clusters/binding-commands.js.map +1 -1
- package/dist/esm/pages/cluster-commands/clusters/icd-management-commands.d.ts +54 -0
- package/dist/esm/pages/cluster-commands/clusters/icd-management-commands.d.ts.map +1 -0
- package/dist/esm/pages/cluster-commands/clusters/icd-management-commands.js +514 -0
- package/dist/esm/pages/cluster-commands/clusters/icd-management-commands.js.map +6 -0
- package/dist/esm/pages/cluster-commands/index.d.ts +1 -0
- package/dist/esm/pages/cluster-commands/index.d.ts.map +1 -1
- package/dist/esm/pages/cluster-commands/index.js +1 -0
- package/dist/esm/pages/cluster-commands/index.js.map +1 -1
- package/dist/esm/pages/components/node-details.d.ts +2 -0
- package/dist/esm/pages/components/node-details.d.ts.map +1 -1
- package/dist/esm/pages/components/node-details.js +43 -2
- package/dist/esm/pages/components/node-details.js.map +1 -1
- package/dist/esm/pages/components/server-details.d.ts +4 -0
- package/dist/esm/pages/components/server-details.d.ts.map +1 -1
- package/dist/esm/pages/components/server-details.js +50 -2
- package/dist/esm/pages/components/server-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 +1 -1
- package/dist/esm/pages/matter-cluster-view.js.map +1 -1
- package/dist/esm/pages/matter-network-view.d.ts +2 -0
- package/dist/esm/pages/matter-network-view.d.ts.map +1 -1
- package/dist/esm/pages/matter-network-view.js +23 -0
- package/dist/esm/pages/matter-network-view.js.map +1 -1
- package/dist/esm/pages/matter-server-view.d.ts.map +1 -1
- package/dist/esm/pages/matter-server-view.js +35 -1
- package/dist/esm/pages/matter-server-view.js.map +1 -1
- package/dist/esm/pages/network/border-router-store.d.ts +11 -4
- package/dist/esm/pages/network/border-router-store.d.ts.map +1 -1
- package/dist/esm/pages/network/border-router-store.js +39 -0
- package/dist/esm/pages/network/border-router-store.js.map +1 -1
- package/dist/esm/pages/network/network-details.d.ts +11 -1
- package/dist/esm/pages/network/network-details.d.ts.map +1 -1
- package/dist/esm/pages/network/network-details.js +305 -3
- package/dist/esm/pages/network/network-details.js.map +1 -1
- package/dist/esm/pages/network/network-types.d.ts +3 -183
- package/dist/esm/pages/network/network-types.d.ts.map +1 -1
- package/dist/esm/pages/network/network-types.js +1 -10
- package/dist/esm/pages/network/network-types.js.map +2 -2
- package/dist/esm/pages/network/network-utils.d.ts +19 -171
- package/dist/esm/pages/network/network-utils.d.ts.map +1 -1
- package/dist/esm/pages/network/network-utils.js +118 -510
- package/dist/esm/pages/network/network-utils.js.map +2 -2
- package/dist/esm/pages/network/thread-graph.d.ts +23 -1
- package/dist/esm/pages/network/thread-graph.d.ts.map +1 -1
- package/dist/esm/pages/network/thread-graph.js +187 -10
- package/dist/esm/pages/network/thread-graph.js.map +1 -1
- package/dist/esm/util/duration.d.ts +8 -0
- package/dist/esm/util/duration.d.ts.map +1 -0
- package/dist/esm/util/duration.js +25 -0
- package/dist/esm/util/duration.js.map +6 -0
- package/dist/esm/util/icd.d.ts +54 -0
- package/dist/esm/util/icd.d.ts.map +1 -0
- package/dist/esm/util/icd.js +139 -0
- package/dist/esm/util/icd.js.map +6 -0
- package/dist/web/js/{attribute-write-dialog-Bk3AWMoZ.js → attribute-write-dialog-Bu7d1xMh.js} +1 -1
- package/dist/web/js/{command-invoke-dialog-H8A7dCFd.js → command-invoke-dialog-BK7MYWq-.js} +1 -1
- package/dist/web/js/{commission-node-dialog-GIvqBYGw.js → commission-node-dialog-BeRg7rEp.js} +5 -5
- package/dist/web/js/{commission-node-existing-DglV5NXP.js → commission-node-existing-ugSNvMcK.js} +2 -2
- package/dist/web/js/{commission-node-thread-DzrHWt8R.js → commission-node-thread-CT_Qbe1U.js} +53 -4
- package/dist/web/js/{commission-node-wifi-DWQ9mxqk.js → commission-node-wifi-Bx1nhWl4.js} +48 -5
- package/dist/web/js/{dialog-box-CsqgNzj2.js → dialog-box-DolVvXoK.js} +1 -1
- package/dist/web/js/fabric-label-dialog-D4NlfZS9.js +94 -0
- package/dist/web/js/fire_event-CJVsUQ4T.js +18 -0
- package/dist/web/js/main.js +101 -22
- package/dist/web/js/{matter-dashboard-app-BrbVPiqG.js → matter-dashboard-app-DMIDxj8f.js} +3118 -944
- package/dist/web/js/{node-acl-add-dialog-COL4myAw.js → node-acl-add-dialog-8qtV5Lx-.js} +1 -1
- package/dist/web/js/{node-binding-dialog-_Odw2AGk.js → node-binding-dialog-B75AcGPb.js} +1 -1
- package/dist/web/js/{node-label-dialog-D6hA1gVX.js → node-label-dialog-QxhxDvAP.js} +1 -1
- package/dist/web/js/settings-dialog-CeBkVje3.js +980 -0
- package/package.json +4 -4
- package/src/components/dialogs/commission-node-dialog/commission-node-thread.ts +64 -3
- package/src/components/dialogs/commission-node-dialog/commission-node-wifi.ts +62 -4
- package/src/components/dialogs/fabric-label-dialog/fabric-label-dialog.ts +109 -0
- package/src/components/dialogs/fabric-label-dialog/show-fabric-label-dialog.ts +16 -0
- package/src/components/dialogs/settings/settings-dialog.ts +526 -118
- package/src/pages/cluster-commands/base-cluster-commands.ts +11 -0
- package/src/pages/cluster-commands/clusters/access-control-commands.ts +21 -7
- package/src/pages/cluster-commands/clusters/avsum-commands.ts +34 -13
- package/src/pages/cluster-commands/clusters/basic-information-commands.ts +17 -12
- package/src/pages/cluster-commands/clusters/binding-commands.ts +26 -10
- package/src/pages/cluster-commands/clusters/icd-management-commands.ts +551 -0
- package/src/pages/cluster-commands/index.ts +1 -0
- package/src/pages/components/node-details.ts +46 -2
- package/src/pages/components/server-details.ts +55 -2
- package/src/pages/matter-cluster-view.ts +4 -3
- package/src/pages/matter-network-view.ts +25 -0
- package/src/pages/matter-server-view.ts +37 -1
- package/src/pages/network/border-router-store.ts +51 -4
- package/src/pages/network/network-details.ts +379 -3
- package/src/pages/network/network-types.ts +19 -193
- package/src/pages/network/network-utils.ts +125 -803
- package/src/pages/network/thread-graph.ts +241 -13
- package/src/util/duration.ts +24 -0
- package/src/util/icd.ts +197 -0
- package/dist/web/js/fire_event-BEdDUG4R.js +0 -168
- package/dist/web/js/settings-dialog-DUmZpfSq.js +0 -606
|
@@ -0,0 +1,514 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __typeError = (msg) => {
|
|
4
|
+
throw TypeError(msg);
|
|
5
|
+
};
|
|
6
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
7
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
8
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
9
|
+
if (decorator = decorators[i])
|
|
10
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
11
|
+
if (kind && result) __defProp(target, key, result);
|
|
12
|
+
return result;
|
|
13
|
+
};
|
|
14
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
15
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
16
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
17
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
18
|
+
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
19
|
+
var __privateWrapper = (obj, member, setter, getter) => ({
|
|
20
|
+
set _(value) {
|
|
21
|
+
__privateSet(obj, member, value, setter);
|
|
22
|
+
},
|
|
23
|
+
get _() {
|
|
24
|
+
return __privateGet(obj, member, getter);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
/**
|
|
28
|
+
* @license
|
|
29
|
+
* Copyright 2025-2026 Open Home Foundation
|
|
30
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
31
|
+
*/
|
|
32
|
+
var _loadedForNode, _flowGeneration, _refreshInFlight, _IcdManagementClusterCommands_instances, doRefreshServerState_fn;
|
|
33
|
+
import "@material/web/button/filled-button";
|
|
34
|
+
import "@material/web/button/outlined-button";
|
|
35
|
+
import "@material/web/progress/circular-progress";
|
|
36
|
+
import "@material/web/radio/radio";
|
|
37
|
+
import {
|
|
38
|
+
ICD_MULTI_ADMIN_ERROR_CODE,
|
|
39
|
+
ServerCommandError
|
|
40
|
+
} from "@matter-server/ws-client";
|
|
41
|
+
import { css, html, nothing } from "lit";
|
|
42
|
+
import { customElement, state } from "lit/decorators.js";
|
|
43
|
+
import { showAlertDialog, showPromptDialog } from "../../../components/dialog-box/show-dialog-box.js";
|
|
44
|
+
import { handleAsync } from "../../../util/async-handler.js";
|
|
45
|
+
import { formatDuration } from "../../../util/duration.js";
|
|
46
|
+
import {
|
|
47
|
+
decodeRegisteredClients,
|
|
48
|
+
ICD_CLUSTER_ID,
|
|
49
|
+
icdInfo,
|
|
50
|
+
isRegisteredByUs,
|
|
51
|
+
litSpecVersionOk,
|
|
52
|
+
otherFabricClientCount,
|
|
53
|
+
parseMultiAdminDetails,
|
|
54
|
+
wakeInstruction
|
|
55
|
+
} from "../../../util/icd.js";
|
|
56
|
+
import { BaseClusterCommands } from "../base-cluster-commands.js";
|
|
57
|
+
import { registerClusterCommands } from "../registry.js";
|
|
58
|
+
const COMMISSIONED_FABRICS_PATH = "0/62/3";
|
|
59
|
+
const CURRENT_FABRIC_INDEX_PATH = "0/62/5";
|
|
60
|
+
const REGISTERED_CLIENTS_PATH = `0/${ICD_CLUSTER_ID}/3`;
|
|
61
|
+
let IcdManagementClusterCommands = class extends BaseClusterCommands {
|
|
62
|
+
constructor() {
|
|
63
|
+
super(...arguments);
|
|
64
|
+
__privateAdd(this, _IcdManagementClusterCommands_instances);
|
|
65
|
+
this._busy = false;
|
|
66
|
+
this._busyLabel = "";
|
|
67
|
+
__privateAdd(this, _loadedForNode);
|
|
68
|
+
__privateAdd(this, _flowGeneration, 0);
|
|
69
|
+
__privateAdd(this, _refreshInFlight);
|
|
70
|
+
}
|
|
71
|
+
updated(changedProperties) {
|
|
72
|
+
super.updated(changedProperties);
|
|
73
|
+
if (!this.client || !this.node) return;
|
|
74
|
+
if (__privateGet(this, _loadedForNode) !== String(this.node.node_id)) {
|
|
75
|
+
__privateSet(this, _loadedForNode, String(this.node.node_id));
|
|
76
|
+
__privateWrapper(this, _flowGeneration)._++;
|
|
77
|
+
this._serverState = void 0;
|
|
78
|
+
this._selectedMode = void 0;
|
|
79
|
+
this._busy = false;
|
|
80
|
+
this._busyLabel = "";
|
|
81
|
+
handleAsync(() => this._ensureLoaded())();
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (!this._busy && changedProperties.has("node") && changedProperties.get("node") !== this.node) {
|
|
85
|
+
handleAsync(() => this._refreshServerState(this.node, this.endpoint))();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
get _info() {
|
|
89
|
+
return icdInfo(this.node.attributes);
|
|
90
|
+
}
|
|
91
|
+
get _actionTimeoutMs() {
|
|
92
|
+
return ((this._info.idleModeDuration ?? 60) + 30) * 1e3;
|
|
93
|
+
}
|
|
94
|
+
async _ensureLoaded() {
|
|
95
|
+
await this._refreshServerState(this.node, this.endpoint);
|
|
96
|
+
}
|
|
97
|
+
_refreshServerState(node, endpoint, options) {
|
|
98
|
+
const key = `${String(node.node_id)}:${endpoint}`;
|
|
99
|
+
const inFlight = __privateGet(this, _refreshInFlight);
|
|
100
|
+
if (inFlight?.key === key && !options?.force) return inFlight.promise;
|
|
101
|
+
const promise = (inFlight?.key === key ? inFlight.promise.then(() => __privateMethod(this, _IcdManagementClusterCommands_instances, doRefreshServerState_fn).call(this, node, endpoint)) : __privateMethod(this, _IcdManagementClusterCommands_instances, doRefreshServerState_fn).call(this, node, endpoint)).finally(() => {
|
|
102
|
+
if (__privateGet(this, _refreshInFlight)?.promise === promise) __privateSet(this, _refreshInFlight, void 0);
|
|
103
|
+
});
|
|
104
|
+
__privateSet(this, _refreshInFlight, { key, promise });
|
|
105
|
+
return promise;
|
|
106
|
+
}
|
|
107
|
+
get _idleText() {
|
|
108
|
+
const idle = this._info.idleModeDuration;
|
|
109
|
+
return idle !== void 0 ? formatDuration(idle) : "its idle interval";
|
|
110
|
+
}
|
|
111
|
+
get _commissionedFabrics() {
|
|
112
|
+
const value = this.node.attributes[COMMISSIONED_FABRICS_PATH];
|
|
113
|
+
return typeof value === "number" ? value : 1;
|
|
114
|
+
}
|
|
115
|
+
get _registered() {
|
|
116
|
+
if (this._serverState !== void 0) return this._serverState.registered;
|
|
117
|
+
return isRegisteredByUs(this._info.registeredClients, this.client.serverInfo?.controller_node_id);
|
|
118
|
+
}
|
|
119
|
+
/** matter.js only treats a peer as LIT-capable with LITS feature AND spec version >= 1.4.0. */
|
|
120
|
+
get _litSupported() {
|
|
121
|
+
return this._serverState?.lit_supported ?? (this._info.features.longIdleTimeSupport && litSpecVersionOk(this.node.attributes));
|
|
122
|
+
}
|
|
123
|
+
get _actualMode() {
|
|
124
|
+
return this._registered ? "batterySaver" : "standard";
|
|
125
|
+
}
|
|
126
|
+
_resetSelectedMode() {
|
|
127
|
+
this._selectedMode = this._actualMode;
|
|
128
|
+
}
|
|
129
|
+
render() {
|
|
130
|
+
if (!this.node || this.cluster !== ICD_CLUSTER_ID) return nothing;
|
|
131
|
+
const info = this._info;
|
|
132
|
+
if (!info.supported) return nothing;
|
|
133
|
+
return html`
|
|
134
|
+
<details class="command-panel" open>
|
|
135
|
+
<summary>Power & Sleep (ICD)</summary>
|
|
136
|
+
<div class="command-content">
|
|
137
|
+
<p>This device saves power by sleeping between short check-in windows.</p>
|
|
138
|
+
${info.operatingMode === "LIT" ? html`<p class="info-banner">
|
|
139
|
+
This device is currently in <b>Battery Saver Mode</b>: any action you trigger (commands,
|
|
140
|
+
reads, re-subscriptions) may take up to <b>${this._idleText}</b> while the device sleeps.
|
|
141
|
+
Updates reported by the device itself (e.g. sensor changes) are not delayed — the device
|
|
142
|
+
wakes up on its own to report them.
|
|
143
|
+
${this.node.available ? nothing : html`<br /><b class="offline-line"
|
|
144
|
+
>The device is currently offline — reconnecting on its own can take up to
|
|
145
|
+
${this._idleText}.</b
|
|
146
|
+
>`}
|
|
147
|
+
</p>` : html`<p>
|
|
148
|
+
Current mode: <b>Standard</b> — the device sleeps between short check-ins and typically
|
|
149
|
+
reacts within seconds to a few minutes.
|
|
150
|
+
</p>`}
|
|
151
|
+
${info.features.userActiveModeTrigger ? this._renderWakeHint(info) : nothing}
|
|
152
|
+
${info.features.longIdleTimeSupport || this._registered ? this._renderIcdManagement() : nothing}
|
|
153
|
+
</div>
|
|
154
|
+
</details>
|
|
155
|
+
`;
|
|
156
|
+
}
|
|
157
|
+
_renderWakeHint(info) {
|
|
158
|
+
const wake = wakeInstruction(info.userActiveModeTriggerHint, info.userActiveModeTriggerInstruction);
|
|
159
|
+
return wake.kind === "custom" ? html`<p>To wake the device immediately, follow the device's instructions: "${wake.text}".</p>` : html`<p>To wake the device immediately: ${wake.text}.</p>`;
|
|
160
|
+
}
|
|
161
|
+
_renderIcdManagement() {
|
|
162
|
+
const litUnsupported = this._info.features.longIdleTimeSupport && !this._litSupported;
|
|
163
|
+
const notice = litUnsupported ? html`<p class="info-banner">
|
|
164
|
+
ICD management is available but unreliable: the device reports a Matter version below 1.4. Mode
|
|
165
|
+
management is disabled.
|
|
166
|
+
</p>` : nothing;
|
|
167
|
+
if (litUnsupported && !this._registered) return html`${notice}`;
|
|
168
|
+
return html` ${notice}${this._renderModeChooser()} `;
|
|
169
|
+
}
|
|
170
|
+
_renderModeChooser() {
|
|
171
|
+
const actualMode = this._actualMode;
|
|
172
|
+
const selected = this._selectedMode ?? actualMode;
|
|
173
|
+
const single = this._commissionedFabrics <= 1;
|
|
174
|
+
return html`
|
|
175
|
+
<h4>Response speed vs. battery life</h4>
|
|
176
|
+
<div class="mode-options">
|
|
177
|
+
<label class="mode-option">
|
|
178
|
+
<md-radio
|
|
179
|
+
name="icd-mode"
|
|
180
|
+
value="standard"
|
|
181
|
+
.checked=${selected === "standard"}
|
|
182
|
+
@change=${() => this._selectedMode = "standard"}
|
|
183
|
+
></md-radio>
|
|
184
|
+
<div class="mode-option-text">
|
|
185
|
+
<b>Standard Mode</b>
|
|
186
|
+
<p>
|
|
187
|
+
Best for faster responses, with higher battery use. The device still sleeps between short
|
|
188
|
+
check-ins, but wakes much more often — commands and reads typically reach it within seconds
|
|
189
|
+
to a few minutes (its regular polling/subscription interval). It is not permanently
|
|
190
|
+
connected.
|
|
191
|
+
</p>
|
|
192
|
+
</div>
|
|
193
|
+
</label>
|
|
194
|
+
<label class="mode-option">
|
|
195
|
+
<md-radio
|
|
196
|
+
name="icd-mode"
|
|
197
|
+
value="batterySaver"
|
|
198
|
+
.checked=${selected === "batterySaver"}
|
|
199
|
+
@change=${() => this._selectedMode = "batterySaver"}
|
|
200
|
+
></md-radio>
|
|
201
|
+
<div class="mode-option-text">
|
|
202
|
+
<b>Battery Saver Mode (Long Idle)</b>
|
|
203
|
+
<p>
|
|
204
|
+
Best for longest battery life. The device sleeps most of the time and wakes on its own
|
|
205
|
+
schedule.
|
|
206
|
+
</p>
|
|
207
|
+
<ul>
|
|
208
|
+
<li>Commands may take up to <b>${this._idleText}</b> to be delivered while it sleeps.</li>
|
|
209
|
+
<li>
|
|
210
|
+
Updates reported by the device itself are <b>not</b> delayed (the device wakes itself to
|
|
211
|
+
report).
|
|
212
|
+
</li>
|
|
213
|
+
<li>
|
|
214
|
+
If the connection is lost (e.g. after a server restart, when no subscription is active),
|
|
215
|
+
reconnecting can also take up to <b>${this._idleText}</b>.
|
|
216
|
+
</li>
|
|
217
|
+
<li>
|
|
218
|
+
<b>Every</b> ecosystem (e.g. Apple, Google) this device is paired with must support
|
|
219
|
+
Battery Saver Mode (called Matter LIT (Long Idle Time) ICD), otherwise the device will
|
|
220
|
+
appear offline or unresponsive there.
|
|
221
|
+
</li>
|
|
222
|
+
</ul>
|
|
223
|
+
</div>
|
|
224
|
+
</label>
|
|
225
|
+
</div>
|
|
226
|
+
<p class="info-banner">
|
|
227
|
+
Every ecosystem (e.g. Apple, Google) this device is paired with must support Battery Saver Mode (called
|
|
228
|
+
Matter LIT (Long Idle Time) ICD). You can switch back to Standard Mode later as long as no other
|
|
229
|
+
ecosystem is registered for it.
|
|
230
|
+
${!single && !this._registered ? html` This device is already paired with <b>${this._commissionedFabrics - 1}</b> other
|
|
231
|
+
ecosystem(s).` : nothing}
|
|
232
|
+
</p>
|
|
233
|
+
<div class="command-row">
|
|
234
|
+
<md-filled-button
|
|
235
|
+
@click=${handleAsync(() => this._changeMode())}
|
|
236
|
+
?disabled=${this._busy || selected === actualMode}
|
|
237
|
+
>
|
|
238
|
+
Change mode
|
|
239
|
+
</md-filled-button>
|
|
240
|
+
<md-outlined-button
|
|
241
|
+
@click=${handleAsync(() => this._resync())}
|
|
242
|
+
?disabled=${this._busy || this.node.available}
|
|
243
|
+
title="Drops the local Battery Saver registration and reconnects from scratch. Use when the device appears stuck offline although it should be reachable."
|
|
244
|
+
>
|
|
245
|
+
Resync state
|
|
246
|
+
</md-outlined-button>
|
|
247
|
+
${this._busy ? html`<md-circular-progress indeterminate></md-circular-progress>
|
|
248
|
+
<span class="busy">${this._busyLabel}</span>` : nothing}
|
|
249
|
+
</div>
|
|
250
|
+
`;
|
|
251
|
+
}
|
|
252
|
+
async _changeMode() {
|
|
253
|
+
const target = this._selectedMode;
|
|
254
|
+
if (target === void 0 || target === this._actualMode) return;
|
|
255
|
+
if (target === "batterySaver") {
|
|
256
|
+
await this._enable();
|
|
257
|
+
} else {
|
|
258
|
+
await this._disable();
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
_enableConfirmText() {
|
|
262
|
+
const single = this._commissionedFabrics <= 1;
|
|
263
|
+
return html`
|
|
264
|
+
<p>
|
|
265
|
+
The device will sleep most of the time. Commands may take up to <b>${this._idleText}</b> to reach it;
|
|
266
|
+
updates from the device itself are not delayed.
|
|
267
|
+
</p>
|
|
268
|
+
<p>
|
|
269
|
+
<b>Important:</b>
|
|
270
|
+
${single ? html`every ecosystem (e.g. Apple, Google) you pair this device with later must support Battery
|
|
271
|
+
Saver Mode (called Matter LIT (Long Idle Time) ICD). In an ecosystem without support the device
|
|
272
|
+
will appear offline or unresponsive.` : html`this device is already paired with <b>${this._commissionedFabrics - 1}</b> other
|
|
273
|
+
ecosystem(s). All of them must support Battery Saver Mode (called Matter LIT (Long Idle Time)
|
|
274
|
+
ICD), otherwise the device will appear offline or unresponsive in those ecosystems.`}
|
|
275
|
+
</p>
|
|
276
|
+
<p>
|
|
277
|
+
You can switch back to Standard Mode later as long as no other ecosystem is registered for Battery Saver
|
|
278
|
+
Mode.
|
|
279
|
+
</p>
|
|
280
|
+
`;
|
|
281
|
+
}
|
|
282
|
+
async _enable() {
|
|
283
|
+
const node = this.node;
|
|
284
|
+
const endpoint = this.endpoint;
|
|
285
|
+
if (this._serverState !== void 0 && !this._serverState.lit_supported) {
|
|
286
|
+
await showAlertDialog({
|
|
287
|
+
title: "Battery Saver Mode not supported",
|
|
288
|
+
text: "This device advertises Battery Saver support but reports a Matter version below 1.4 \u2014 enabling is not safe and has been disabled."
|
|
289
|
+
});
|
|
290
|
+
if (this.isSameContext(node, endpoint)) this._resetSelectedMode();
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
const confirmed = await showPromptDialog({
|
|
294
|
+
title: "Enable Battery Saver Mode?",
|
|
295
|
+
text: this._enableConfirmText(),
|
|
296
|
+
confirmText: "Enable"
|
|
297
|
+
});
|
|
298
|
+
if (!confirmed) {
|
|
299
|
+
if (this.isSameContext(node, endpoint)) this._resetSelectedMode();
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
if (!this.isSameContext(node, endpoint)) return;
|
|
303
|
+
await this._runBusy(node, endpoint, "Enabling \u2014 waiting for the device to wake up\u2026", async () => {
|
|
304
|
+
try {
|
|
305
|
+
await this._register(node, false);
|
|
306
|
+
} catch (error) {
|
|
307
|
+
if (!await this._handleMultiAdmin(node, endpoint, error)) throw error;
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
/** Returns true when the error was a handled multi-admin rejection. */
|
|
312
|
+
async _handleMultiAdmin(node, endpoint, error) {
|
|
313
|
+
if (!(error instanceof ServerCommandError) || error.errorCode !== ICD_MULTI_ADMIN_ERROR_CODE) return false;
|
|
314
|
+
const vendorIds = parseMultiAdminDetails(error.message) ?? new Array();
|
|
315
|
+
let names;
|
|
316
|
+
if (vendorIds.length === 0) {
|
|
317
|
+
names = "unknown ecosystems";
|
|
318
|
+
} else {
|
|
319
|
+
try {
|
|
320
|
+
const lookup = await this.client.getVendorNames(vendorIds);
|
|
321
|
+
names = vendorIds.map((id) => lookup[String(id)] ?? `Vendor 0x${id.toString(16).padStart(4, "0")}`).join(", ");
|
|
322
|
+
} catch {
|
|
323
|
+
names = vendorIds.map((id) => `Vendor 0x${id.toString(16).padStart(4, "0")}`).join(", ");
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
if (!this.isSameContext(node, endpoint)) return true;
|
|
327
|
+
const retry = await showPromptDialog({
|
|
328
|
+
title: "Other ecosystems may not support Battery Saver Mode",
|
|
329
|
+
text: html`
|
|
330
|
+
<p>These connected ecosystems may not fully support Battery Saver Mode: <b>${names}</b>.</p>
|
|
331
|
+
<p>
|
|
332
|
+
Enabling it can make the device appear offline or unresponsive in those ecosystems. Enable anyway?
|
|
333
|
+
</p>
|
|
334
|
+
`,
|
|
335
|
+
confirmText: "Enable anyway"
|
|
336
|
+
});
|
|
337
|
+
if (!retry) {
|
|
338
|
+
if (this.isSameContext(node, endpoint)) this._resetSelectedMode();
|
|
339
|
+
return true;
|
|
340
|
+
}
|
|
341
|
+
if (!this.isSameContext(node, endpoint)) return true;
|
|
342
|
+
await this._register(node, true);
|
|
343
|
+
return true;
|
|
344
|
+
}
|
|
345
|
+
async _register(node, allowMultiAdmin) {
|
|
346
|
+
await this.client.registerIcd(node.node_id, { allowMultiAdmin }, this._actionTimeoutMs);
|
|
347
|
+
}
|
|
348
|
+
async _disable() {
|
|
349
|
+
const node = this.node;
|
|
350
|
+
const endpoint = this.endpoint;
|
|
351
|
+
const confirmed = await showPromptDialog({
|
|
352
|
+
title: "Switch to Standard Mode?",
|
|
353
|
+
text: "The device will wake much more often and respond faster, at the cost of higher battery use. It still sleeps briefly between check-ins \u2014 it does not become permanently connected.",
|
|
354
|
+
confirmText: "Switch"
|
|
355
|
+
});
|
|
356
|
+
if (!confirmed) {
|
|
357
|
+
if (this.isSameContext(node, endpoint)) this._resetSelectedMode();
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
if (!this.isSameContext(node, endpoint)) return;
|
|
361
|
+
await this._runBusy(node, endpoint, "Switching \u2014 waiting for the device to wake up\u2026", async () => {
|
|
362
|
+
const others = await this._otherClientCount(node, endpoint);
|
|
363
|
+
if (!this.isSameContext(node, endpoint)) return;
|
|
364
|
+
if (others > 0) {
|
|
365
|
+
await showAlertDialog({
|
|
366
|
+
title: "Cannot disable Battery Saver Mode",
|
|
367
|
+
text: `Battery Saver Mode cannot be disabled: ${others} other controller(s) are still registered with this device. Remove the device from those ecosystems (or disable Battery Saver Mode there) first.`
|
|
368
|
+
});
|
|
369
|
+
if (this.isSameContext(node, endpoint)) this._resetSelectedMode();
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
await this.client.unregisterIcd(node.node_id, false, this._actionTimeoutMs);
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
/** Non-fabric-filtered RegisteredClients read; counts clients on other fabrics. */
|
|
376
|
+
async _otherClientCount(node, endpoint) {
|
|
377
|
+
const ourFabricIndexRaw = node.attributes[CURRENT_FABRIC_INDEX_PATH];
|
|
378
|
+
const result = await this.client.readAttribute(
|
|
379
|
+
node.node_id,
|
|
380
|
+
[REGISTERED_CLIENTS_PATH, CURRENT_FABRIC_INDEX_PATH],
|
|
381
|
+
this._actionTimeoutMs
|
|
382
|
+
);
|
|
383
|
+
if (this.isSameContext(node, endpoint)) Object.assign(this.node.attributes, result);
|
|
384
|
+
const clients = decodeRegisteredClients(result[REGISTERED_CLIENTS_PATH]);
|
|
385
|
+
const ourFabricIndex = result[CURRENT_FABRIC_INDEX_PATH] ?? ourFabricIndexRaw;
|
|
386
|
+
return otherFabricClientCount(clients, typeof ourFabricIndex === "number" ? ourFabricIndex : void 0);
|
|
387
|
+
}
|
|
388
|
+
async _resync() {
|
|
389
|
+
const node = this.node;
|
|
390
|
+
const endpoint = this.endpoint;
|
|
391
|
+
const confirmed = await showPromptDialog({
|
|
392
|
+
title: "Resync Battery Saver state?",
|
|
393
|
+
text: "Drops the local Battery Saver registration and reconnects from scratch. Use when the device appears stuck offline although it should be reachable.",
|
|
394
|
+
confirmText: "Resync"
|
|
395
|
+
});
|
|
396
|
+
if (!confirmed || !this.isSameContext(node, endpoint)) return;
|
|
397
|
+
await this._runBusy(node, endpoint, "Resyncing\u2026", async () => {
|
|
398
|
+
await this.client.resyncIcd(node.node_id);
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
async _runBusy(node, endpoint, label, action) {
|
|
402
|
+
if (this._busy || !this.isSameContext(node, endpoint)) return;
|
|
403
|
+
const gen = ++__privateWrapper(this, _flowGeneration)._;
|
|
404
|
+
this._busy = true;
|
|
405
|
+
this._busyLabel = label;
|
|
406
|
+
try {
|
|
407
|
+
await action();
|
|
408
|
+
} catch (error) {
|
|
409
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
410
|
+
if (this.isSameContext(node, endpoint)) {
|
|
411
|
+
await showAlertDialog({ title: "ICD operation failed", text: message });
|
|
412
|
+
}
|
|
413
|
+
} finally {
|
|
414
|
+
if (gen === __privateGet(this, _flowGeneration)) {
|
|
415
|
+
this._busy = false;
|
|
416
|
+
await this._refreshServerState(node, endpoint, { force: true });
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
};
|
|
421
|
+
_loadedForNode = new WeakMap();
|
|
422
|
+
_flowGeneration = new WeakMap();
|
|
423
|
+
_refreshInFlight = new WeakMap();
|
|
424
|
+
_IcdManagementClusterCommands_instances = new WeakSet();
|
|
425
|
+
doRefreshServerState_fn = async function(node, endpoint) {
|
|
426
|
+
let state2;
|
|
427
|
+
try {
|
|
428
|
+
state2 = await this.client.getIcdState(node.node_id);
|
|
429
|
+
} catch {
|
|
430
|
+
state2 = void 0;
|
|
431
|
+
}
|
|
432
|
+
if (!this.isSameContext(node, endpoint)) return;
|
|
433
|
+
const previousMode = this._actualMode;
|
|
434
|
+
this._serverState = state2;
|
|
435
|
+
if (this._selectedMode === void 0 || previousMode !== this._actualMode) {
|
|
436
|
+
this._resetSelectedMode();
|
|
437
|
+
}
|
|
438
|
+
this.requestUpdate();
|
|
439
|
+
};
|
|
440
|
+
IcdManagementClusterCommands.styles = [
|
|
441
|
+
BaseClusterCommands.styles,
|
|
442
|
+
css`
|
|
443
|
+
.info-banner {
|
|
444
|
+
padding: 8px 12px;
|
|
445
|
+
border-radius: 4px;
|
|
446
|
+
font-size: 14px;
|
|
447
|
+
background-color: var(--md-sys-color-surface-variant);
|
|
448
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
449
|
+
}
|
|
450
|
+
.mode-options {
|
|
451
|
+
display: flex;
|
|
452
|
+
flex-direction: column;
|
|
453
|
+
gap: 8px;
|
|
454
|
+
}
|
|
455
|
+
.mode-option {
|
|
456
|
+
display: flex;
|
|
457
|
+
align-items: flex-start;
|
|
458
|
+
gap: 8px;
|
|
459
|
+
cursor: pointer;
|
|
460
|
+
}
|
|
461
|
+
.mode-option md-radio {
|
|
462
|
+
flex-shrink: 0;
|
|
463
|
+
margin-top: 2px;
|
|
464
|
+
}
|
|
465
|
+
.mode-option-text {
|
|
466
|
+
display: flex;
|
|
467
|
+
flex-direction: column;
|
|
468
|
+
gap: 2px;
|
|
469
|
+
font-size: 14px;
|
|
470
|
+
}
|
|
471
|
+
.mode-option-text p {
|
|
472
|
+
margin: 2px 0;
|
|
473
|
+
color: var(--text-color, rgba(0, 0, 0, 0.6));
|
|
474
|
+
}
|
|
475
|
+
.mode-option-text ul {
|
|
476
|
+
padding-left: 18px;
|
|
477
|
+
margin: 4px 0;
|
|
478
|
+
}
|
|
479
|
+
.busy {
|
|
480
|
+
color: var(--text-color, rgba(0, 0, 0, 0.6));
|
|
481
|
+
font-size: 14px;
|
|
482
|
+
align-self: center;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
md-circular-progress {
|
|
486
|
+
--md-circular-progress-size: 24px;
|
|
487
|
+
align-self: center;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
.offline-line {
|
|
491
|
+
color: var(--danger-color, #d32f2f);
|
|
492
|
+
}
|
|
493
|
+
`
|
|
494
|
+
];
|
|
495
|
+
__decorateClass([
|
|
496
|
+
state()
|
|
497
|
+
], IcdManagementClusterCommands.prototype, "_serverState", 2);
|
|
498
|
+
__decorateClass([
|
|
499
|
+
state()
|
|
500
|
+
], IcdManagementClusterCommands.prototype, "_selectedMode", 2);
|
|
501
|
+
__decorateClass([
|
|
502
|
+
state()
|
|
503
|
+
], IcdManagementClusterCommands.prototype, "_busy", 2);
|
|
504
|
+
__decorateClass([
|
|
505
|
+
state()
|
|
506
|
+
], IcdManagementClusterCommands.prototype, "_busyLabel", 2);
|
|
507
|
+
IcdManagementClusterCommands = __decorateClass([
|
|
508
|
+
customElement("icd-management-cluster-commands")
|
|
509
|
+
], IcdManagementClusterCommands);
|
|
510
|
+
registerClusterCommands(ICD_CLUSTER_ID, "icd-management-cluster-commands");
|
|
511
|
+
export {
|
|
512
|
+
IcdManagementClusterCommands
|
|
513
|
+
};
|
|
514
|
+
//# sourceMappingURL=icd-management-commands.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/pages/cluster-commands/clusters/icd-management-commands.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["state"]
|
|
6
|
+
}
|
|
@@ -14,6 +14,7 @@ import "./clusters/avsum-commands.js";
|
|
|
14
14
|
import "./clusters/basic-information-commands.js";
|
|
15
15
|
import "./clusters/binding-commands.js";
|
|
16
16
|
import "./clusters/chime-commands.js";
|
|
17
|
+
import "./clusters/icd-management-commands.js";
|
|
17
18
|
import "./clusters/level-control-commands.js";
|
|
18
19
|
import "./clusters/on-off-commands.js";
|
|
19
20
|
//# 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,uCAAuC,CAAC;AAC/C,OAAO,8BAA8B,CAAC;AACtC,OAAO,0CAA0C,CAAC;AAClD,OAAO,gCAAgC,CAAC;AACxC,OAAO,8BAA8B,CAAC;AACtC,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,uCAAuC,CAAC;AAC/C,OAAO,8BAA8B,CAAC;AACtC,OAAO,0CAA0C,CAAC;AAClD,OAAO,gCAAgC,CAAC;AACxC,OAAO,8BAA8B,CAAC;AACtC,OAAO,uCAAuC,CAAC;AAC/C,OAAO,sCAAsC,CAAC;AAC9C,OAAO,+BAA+B,CAAC"}
|
|
@@ -10,6 +10,7 @@ import "./clusters/avsum-commands.js";
|
|
|
10
10
|
import "./clusters/basic-information-commands.js";
|
|
11
11
|
import "./clusters/binding-commands.js";
|
|
12
12
|
import "./clusters/chime-commands.js";
|
|
13
|
+
import "./clusters/icd-management-commands.js";
|
|
13
14
|
import "./clusters/level-control-commands.js";
|
|
14
15
|
import "./clusters/on-off-commands.js";
|
|
15
16
|
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;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,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;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -25,6 +25,8 @@ export declare class NodeDetails extends LitElement {
|
|
|
25
25
|
private _reinterview;
|
|
26
26
|
private _remove;
|
|
27
27
|
private _openCameraOverlay;
|
|
28
|
+
/** "1.5 (1234)" from SoftwareVersionString (0/40/10) + SoftwareVersion (0/40/9); manufacturers mix these up, so show both. */
|
|
29
|
+
private _formatSoftwareVersion;
|
|
28
30
|
private _searchUpdate;
|
|
29
31
|
private _openCommissioningWindow;
|
|
30
32
|
static styles: import("lit").CSSResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-details.d.ts","sourceRoot":"","sources":["../../../../src/pages/components/node-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;AAEtC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAgB,MAAM,0BAA0B,CAAC;AAElF,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAOrD,OAAO,8BAA8B,CAAC;AACtC,OAAO,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"node-details.d.ts","sourceRoot":"","sources":["../../../../src/pages/components/node-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;AAEtC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAgB,MAAM,0BAA0B,CAAC;AAElF,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAOrD,OAAO,8BAA8B,CAAC;AACtC,OAAO,sBAAsB,CAAC;AAsC9B,qBACa,WAAY,SAAQ,UAAU;IAEhC,MAAM,EAAG,YAAY,CAAC;IAG7B,SAAS,CAAC,KAAK,SAAK;IAED,IAAI,CAAC,EAAE,UAAU,CAAC;IAGrC,OAAO,CAAC,gBAAgB,CAAkB;IAG1C,QAAQ,EAAG,MAAM,CAAC;IAElB,UAAmB,MAAM,yCAqGxB;IAED,OAAO,CAAC,cAAc;YAIR,YAAY;YAyBZ,OAAO;IAsBrB,OAAO,CAAC,kBAAkB;IAY1B,8HAA8H;IAC9H,OAAO,CAAC,sBAAsB;YAOhB,aAAa;YA2Db,wBAAwB;IAwBtC,OAAgB,MAAM,0BA0EpB;CACL"}
|