@matter-server/dashboard 1.2.2 → 1.2.3
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/dist/esm/components/webrtc-stream-view.d.ts +19 -0
- package/dist/esm/components/webrtc-stream-view.d.ts.map +1 -1
- package/dist/esm/components/webrtc-stream-view.js +107 -30
- package/dist/esm/components/webrtc-stream-view.js.map +1 -1
- package/dist/esm/pages/components/node-details.d.ts.map +1 -1
- package/dist/esm/pages/components/node-details.js +0 -1
- package/dist/esm/pages/components/node-details.js.map +1 -1
- package/dist/esm/util/camera-stream-budget.d.ts +51 -0
- package/dist/esm/util/camera-stream-budget.d.ts.map +1 -0
- package/dist/esm/util/camera-stream-budget.js +34 -0
- package/dist/esm/util/camera-stream-budget.js.map +6 -0
- package/dist/web/js/{attribute-write-dialog-CCOGtCsc.js → attribute-write-dialog-GOHez9ID.js} +1 -1
- package/dist/web/js/{command-invoke-dialog-DineKhxs.js → command-invoke-dialog-cN8yz0uL.js} +1 -1
- package/dist/web/js/{commission-node-dialog-BbyLvbCF.js → commission-node-dialog-DlTbsP25.js} +5 -5
- package/dist/web/js/{commission-node-existing-C0EQcHOJ.js → commission-node-existing-CObdE63L.js} +1 -1
- package/dist/web/js/{commission-node-thread-C_xYn78v.js → commission-node-thread-BUAmDLZC.js} +1 -1
- package/dist/web/js/{commission-node-wifi-mRvgT2Ws.js → commission-node-wifi-CNEBEc_C.js} +1 -1
- package/dist/web/js/{dialog-box-CcKXxq-S.js → dialog-box-V0om09Bd.js} +1 -1
- package/dist/web/js/{fabric-label-dialog-3xl50UuY.js → fabric-label-dialog-BKI2qEOw.js} +1 -1
- package/dist/web/js/main.js +1 -1
- package/dist/web/js/{matter-dashboard-app-DiMb3vGL.js → matter-dashboard-app-B3BC4HU2.js} +140 -31
- package/dist/web/js/{node-acl-add-dialog-SMiX8hhL.js → node-acl-add-dialog-DHEm34fQ.js} +1 -1
- package/dist/web/js/{node-binding-dialog-XRgshO0p.js → node-binding-dialog-NdTWDtWj.js} +1 -1
- package/dist/web/js/{node-label-dialog-hLkCmvNT.js → node-label-dialog-BElnoFMC.js} +1 -1
- package/dist/web/js/{settings-dialog-nBQaH_2q.js → settings-dialog-CmgvIfKt.js} +1 -1
- package/package.json +3 -3
- package/src/components/webrtc-stream-view.ts +159 -44
- package/src/pages/components/node-details.ts +0 -1
- package/src/util/camera-stream-budget.ts +74 -0
|
@@ -4557,7 +4557,7 @@ MdListItem = __decorate([t$1('md-list-item')], MdListItem);
|
|
|
4557
4557
|
* SPDX-License-Identifier: Apache-2.0
|
|
4558
4558
|
*/
|
|
4559
4559
|
const showSettingsDialog = async section => {
|
|
4560
|
-
await import('./settings-dialog-
|
|
4560
|
+
await import('./settings-dialog-CmgvIfKt.js');
|
|
4561
4561
|
const dialog = document.createElement("settings-dialog");
|
|
4562
4562
|
if (section) dialog.scrollToSection = section;
|
|
4563
4563
|
document.querySelector("matter-dashboard-app")?.renderRoot.appendChild(dialog);
|
|
@@ -22772,7 +22772,7 @@ const clusters = {
|
|
|
22772
22772
|
* SPDX-License-Identifier: Apache-2.0
|
|
22773
22773
|
*/
|
|
22774
22774
|
const showDialogBox = async (type, dialogParams) => {
|
|
22775
|
-
await import('./dialog-box-
|
|
22775
|
+
await import('./dialog-box-V0om09Bd.js');
|
|
22776
22776
|
return new Promise(resolve => {
|
|
22777
22777
|
const dialog = document.createElement("dialog-box");
|
|
22778
22778
|
dialog.params = dialogParams;
|
|
@@ -22790,7 +22790,7 @@ const showPromptDialog = dialogParams => showDialogBox("prompt", dialogParams);
|
|
|
22790
22790
|
* SPDX-License-Identifier: Apache-2.0
|
|
22791
22791
|
*/
|
|
22792
22792
|
const showAttributeWriteDialog = async options => {
|
|
22793
|
-
await import('./attribute-write-dialog-
|
|
22793
|
+
await import('./attribute-write-dialog-GOHez9ID.js');
|
|
22794
22794
|
const dialog = document.createElement("attribute-write-dialog");
|
|
22795
22795
|
dialog.client = options.client;
|
|
22796
22796
|
dialog.nodeId = options.nodeId;
|
|
@@ -22808,7 +22808,7 @@ const showAttributeWriteDialog = async options => {
|
|
|
22808
22808
|
* SPDX-License-Identifier: Apache-2.0
|
|
22809
22809
|
*/
|
|
22810
22810
|
const showCommandInvokeDialog = async options => {
|
|
22811
|
-
await import('./command-invoke-dialog-
|
|
22811
|
+
await import('./command-invoke-dialog-cN8yz0uL.js');
|
|
22812
22812
|
const dialog = document.createElement("command-invoke-dialog");
|
|
22813
22813
|
dialog.client = options.client;
|
|
22814
22814
|
dialog.nodeId = options.nodeId;
|
|
@@ -22980,7 +22980,7 @@ MdTextButton = __decorate([t$1('md-text-button')], MdTextButton);
|
|
|
22980
22980
|
* SPDX-License-Identifier: Apache-2.0
|
|
22981
22981
|
*/
|
|
22982
22982
|
const showNodeLabelDialog = async (client, node) => {
|
|
22983
|
-
await import('./node-label-dialog-
|
|
22983
|
+
await import('./node-label-dialog-BElnoFMC.js');
|
|
22984
22984
|
const dialog = document.createElement("node-label-dialog");
|
|
22985
22985
|
dialog.client = client;
|
|
22986
22986
|
dialog.node = node;
|
|
@@ -27325,6 +27325,42 @@ function pickString(obj, key) {
|
|
|
27325
27325
|
return typeof v === "string" ? v : null;
|
|
27326
27326
|
}
|
|
27327
27327
|
|
|
27328
|
+
/**
|
|
27329
|
+
* @license
|
|
27330
|
+
* Copyright 2025-2026 Open Home Foundation
|
|
27331
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
27332
|
+
*/
|
|
27333
|
+
const VIDEO_MAX_FRAME_RATE = 60;
|
|
27334
|
+
const VIDEO_MIN_FRAME_RATE = 30;
|
|
27335
|
+
function pixelRate(res, frameRate) {
|
|
27336
|
+
return res.width * res.height * frameRate;
|
|
27337
|
+
}
|
|
27338
|
+
function planVideoMaxFrameRate(plan) {
|
|
27339
|
+
const {
|
|
27340
|
+
maxEncodedPixelRate: budget,
|
|
27341
|
+
videoResolution,
|
|
27342
|
+
snapshotReservation
|
|
27343
|
+
} = plan;
|
|
27344
|
+
const videoPixels = videoResolution.width * videoResolution.height;
|
|
27345
|
+
if (!budget || budget <= 0 || videoPixels <= 0) return VIDEO_MAX_FRAME_RATE;
|
|
27346
|
+
const withSnapshot = Math.floor((budget - snapshotReservation) / videoPixels);
|
|
27347
|
+
if (withSnapshot >= VIDEO_MIN_FRAME_RATE) {
|
|
27348
|
+
return Math.min(withSnapshot, VIDEO_MAX_FRAME_RATE);
|
|
27349
|
+
}
|
|
27350
|
+
const videoOnly = Math.floor(budget / videoPixels);
|
|
27351
|
+
return Math.min(Math.max(videoOnly, 1), VIDEO_MAX_FRAME_RATE);
|
|
27352
|
+
}
|
|
27353
|
+
function videoStreamFitsSnapshotBudget(args) {
|
|
27354
|
+
const {
|
|
27355
|
+
maxEncodedPixelRate: budget,
|
|
27356
|
+
candidateResolution,
|
|
27357
|
+
candidateFrameRate,
|
|
27358
|
+
snapshotReservation
|
|
27359
|
+
} = args;
|
|
27360
|
+
if (!budget || budget <= 0 || snapshotReservation <= 0) return true;
|
|
27361
|
+
return pixelRate(candidateResolution, candidateFrameRate) + snapshotReservation <= budget;
|
|
27362
|
+
}
|
|
27363
|
+
|
|
27328
27364
|
var __defProp$n = Object.defineProperty;
|
|
27329
27365
|
var __getOwnPropDesc$o = Object.getOwnPropertyDescriptor;
|
|
27330
27366
|
var __decorateClass$q = (decorators, target, key, kind) => {
|
|
@@ -27337,9 +27373,11 @@ const STREAM_USAGE_LIVE_VIEW = 3;
|
|
|
27337
27373
|
const END_REASON_USER_HANGUP = 2;
|
|
27338
27374
|
const CAMERA_AV_STREAM_MANAGEMENT_CLUSTER_ID = 1361;
|
|
27339
27375
|
const WEBRTC_TRANSPORT_PROVIDER_CLUSTER_ID = 1363;
|
|
27376
|
+
const AVSM_FEAT_SNP = 1 << 2;
|
|
27340
27377
|
const AVSM_FEAT_WMARK = 1 << 6;
|
|
27341
27378
|
const AVSM_FEAT_OSD = 1 << 7;
|
|
27342
27379
|
const AVSM_FEATURE_MAP_ATTR_ID = 65532;
|
|
27380
|
+
const AVSM_MAX_ENCODED_PIXEL_RATE_ATTR_ID = 1;
|
|
27343
27381
|
const DEFAULT_MAX_RESOLUTION = {
|
|
27344
27382
|
width: 1920,
|
|
27345
27383
|
height: 1080
|
|
@@ -27364,10 +27402,17 @@ const SNAPSHOT_DEFAULTS = {
|
|
|
27364
27402
|
height: 1080
|
|
27365
27403
|
},
|
|
27366
27404
|
maxFrameRate: 30,
|
|
27367
|
-
imageCodec: 0
|
|
27405
|
+
imageCodec: 0,
|
|
27406
|
+
requiresEncodedPixels: true
|
|
27368
27407
|
};
|
|
27369
|
-
function
|
|
27370
|
-
|
|
27408
|
+
function clampToCapability(requested, cap) {
|
|
27409
|
+
return {
|
|
27410
|
+
width: Math.min(requested.width, cap.width),
|
|
27411
|
+
height: Math.min(requested.height, cap.height)
|
|
27412
|
+
};
|
|
27413
|
+
}
|
|
27414
|
+
function parseSnapshotCapabilitiesFromList(list, preferEncoderFree) {
|
|
27415
|
+
const candidates = list.map(asObject).filter(c => c !== null);
|
|
27371
27416
|
if (candidates.length === 0) return SNAPSHOT_DEFAULTS;
|
|
27372
27417
|
const parsed = candidates.map(cap => {
|
|
27373
27418
|
const res = asObject(cap["resolution"] ?? cap["0"]);
|
|
@@ -27375,16 +27420,20 @@ function parseSnapshotCapabilitiesFromList(list) {
|
|
|
27375
27420
|
const height = res ? pickNumber(res, "height", "1") : null;
|
|
27376
27421
|
const maxFrameRate = pickNumber(cap, "maxFrameRate", "1");
|
|
27377
27422
|
const imageCodec = pickNumber(cap, "imageCodec", "2");
|
|
27423
|
+
const requiresEncodedPixels = cap["requiresEncodedPixels"] ?? cap["3"];
|
|
27378
27424
|
return {
|
|
27379
27425
|
resolution: {
|
|
27380
27426
|
width: width ?? SNAPSHOT_DEFAULTS.resolution.width,
|
|
27381
27427
|
height: height ?? SNAPSHOT_DEFAULTS.resolution.height
|
|
27382
27428
|
},
|
|
27383
27429
|
maxFrameRate: maxFrameRate ?? SNAPSHOT_DEFAULTS.maxFrameRate,
|
|
27384
|
-
imageCodec: imageCodec ?? SNAPSHOT_DEFAULTS.imageCodec
|
|
27430
|
+
imageCodec: imageCodec ?? SNAPSHOT_DEFAULTS.imageCodec,
|
|
27431
|
+
requiresEncodedPixels: requiresEncodedPixels !== false
|
|
27385
27432
|
};
|
|
27386
27433
|
});
|
|
27387
|
-
|
|
27434
|
+
const encoderFree = parsed.filter(cap => !cap.requiresEncodedPixels);
|
|
27435
|
+
const pool = preferEncoderFree && encoderFree.length > 0 ? encoderFree : parsed;
|
|
27436
|
+
return pool.reduce((best, cur) => cur.resolution.width * cur.resolution.height > best.resolution.width * best.resolution.height ? cur : best);
|
|
27388
27437
|
}
|
|
27389
27438
|
function bytesToBase64(bytes) {
|
|
27390
27439
|
const CHUNK = 8192;
|
|
@@ -27564,11 +27613,18 @@ let WebRtcStreamView = class extends i$4 {
|
|
|
27564
27613
|
const minResolution = this.resolution ?? DEFAULT_MIN_RESOLUTION;
|
|
27565
27614
|
const maxResolution = this.resolution ?? DEFAULT_MAX_RESOLUTION;
|
|
27566
27615
|
const avsmFeatures = this._readAvsmFeatures();
|
|
27616
|
+
const maxEncodedPixelRate = this._readMaxEncodedPixelRate();
|
|
27617
|
+
const snapshotReservation = this._snapshotBudgetReservation();
|
|
27618
|
+
const videoMaxFrameRate = planVideoMaxFrameRate({
|
|
27619
|
+
maxEncodedPixelRate,
|
|
27620
|
+
videoResolution: maxResolution,
|
|
27621
|
+
snapshotReservation
|
|
27622
|
+
});
|
|
27567
27623
|
const videoAllocPayload = {
|
|
27568
27624
|
streamUsage: STREAM_USAGE_LIVE_VIEW,
|
|
27569
27625
|
videoCodec: 0,
|
|
27570
|
-
minFrameRate:
|
|
27571
|
-
maxFrameRate:
|
|
27626
|
+
minFrameRate: Math.min(VIDEO_MIN_FRAME_RATE, videoMaxFrameRate),
|
|
27627
|
+
maxFrameRate: videoMaxFrameRate,
|
|
27572
27628
|
minResolution,
|
|
27573
27629
|
maxResolution,
|
|
27574
27630
|
minBitRate: 1e4,
|
|
@@ -27577,15 +27633,21 @@ let WebRtcStreamView = class extends i$4 {
|
|
|
27577
27633
|
};
|
|
27578
27634
|
if (avsmFeatures.wmark) videoAllocPayload.watermarkEnabled = this.watermarkEnabled;
|
|
27579
27635
|
if (avsmFeatures.osd) videoAllocPayload.osdEnabled = this.osdEnabled;
|
|
27580
|
-
const
|
|
27636
|
+
const videoWant = {
|
|
27581
27637
|
streamUsage: STREAM_USAGE_LIVE_VIEW,
|
|
27582
27638
|
videoCodec: 0,
|
|
27583
27639
|
minRes: minResolution,
|
|
27584
27640
|
maxRes: maxResolution,
|
|
27585
27641
|
watermarkEnabled: avsmFeatures.wmark ? this.watermarkEnabled : void 0,
|
|
27586
|
-
osdEnabled: avsmFeatures.osd ? this.osdEnabled : void 0
|
|
27587
|
-
|
|
27642
|
+
osdEnabled: avsmFeatures.osd ? this.osdEnabled : void 0,
|
|
27643
|
+
budget: {
|
|
27644
|
+
maxEncodedPixelRate,
|
|
27645
|
+
snapshotReservation
|
|
27646
|
+
}
|
|
27647
|
+
};
|
|
27648
|
+
const reusedVideoId = this._findMatchingVideoStream(videoWant);
|
|
27588
27649
|
let videoAlloc = null;
|
|
27650
|
+
let usedFallbackReuse = false;
|
|
27589
27651
|
if (reusedVideoId !== null) {
|
|
27590
27652
|
console.info("[webrtc-stream-view] reusing existing video stream", reusedVideoId);
|
|
27591
27653
|
this._videoStreamId = reusedVideoId;
|
|
@@ -27596,17 +27658,31 @@ let WebRtcStreamView = class extends i$4 {
|
|
|
27596
27658
|
} catch (err) {
|
|
27597
27659
|
const message = err instanceof Error ? err.message : String(err);
|
|
27598
27660
|
const isResourceExhausted = message.includes("Resource exhausted") || message.includes("(code 137)");
|
|
27599
|
-
if (!isResourceExhausted
|
|
27600
|
-
|
|
27601
|
-
|
|
27602
|
-
|
|
27661
|
+
if (!isResourceExhausted) throw err;
|
|
27662
|
+
if (this._snapshotStreamId !== null) {
|
|
27663
|
+
console.info("[webrtc-stream-view] VideoStreamAllocate ResourceExhausted; freeing snapshot stream and retrying");
|
|
27664
|
+
await this.deallocateSnapshot();
|
|
27665
|
+
videoAlloc = await this.client.deviceCommand(this.nodeId, this.endpointId, CAMERA_AV_STREAM_MANAGEMENT_CLUSTER_ID, "VideoStreamAllocate", videoAllocPayload);
|
|
27666
|
+
} else {
|
|
27667
|
+
const fallbackId = this._findMatchingVideoStream({
|
|
27668
|
+
...videoWant,
|
|
27669
|
+
budget: void 0
|
|
27670
|
+
});
|
|
27671
|
+
if (fallbackId === null) throw err;
|
|
27672
|
+
console.warn("[webrtc-stream-view] VideoStreamAllocate ResourceExhausted; reusing over-budget stream", fallbackId, "(concurrent snapshot may be unavailable)");
|
|
27673
|
+
this._videoStreamId = fallbackId;
|
|
27674
|
+
this._videoStreamOwned = false;
|
|
27675
|
+
usedFallbackReuse = true;
|
|
27676
|
+
}
|
|
27603
27677
|
}
|
|
27604
|
-
|
|
27605
|
-
|
|
27606
|
-
|
|
27678
|
+
if (!usedFallbackReuse) {
|
|
27679
|
+
const videoStreamId = parseStreamAllocate(videoAlloc, "videoStreamId");
|
|
27680
|
+
if (videoStreamId === null) {
|
|
27681
|
+
throw new Error("VideoStreamAllocate did not return a videoStreamId");
|
|
27682
|
+
}
|
|
27683
|
+
this._videoStreamId = videoStreamId;
|
|
27684
|
+
this._videoStreamOwned = true;
|
|
27607
27685
|
}
|
|
27608
|
-
this._videoStreamId = videoStreamId;
|
|
27609
|
-
this._videoStreamOwned = true;
|
|
27610
27686
|
}
|
|
27611
27687
|
const audioWant = {
|
|
27612
27688
|
streamUsage: STREAM_USAGE_LIVE_VIEW,
|
|
@@ -27757,10 +27833,30 @@ let WebRtcStreamView = class extends i$4 {
|
|
|
27757
27833
|
const raw = node?.attributes[`${this.endpointId}/${CAMERA_AV_STREAM_MANAGEMENT_CLUSTER_ID}/${AVSM_FEATURE_MAP_ATTR_ID}`];
|
|
27758
27834
|
const bits = typeof raw === "number" ? raw : 0;
|
|
27759
27835
|
return {
|
|
27836
|
+
snp: (bits & AVSM_FEAT_SNP) !== 0,
|
|
27760
27837
|
wmark: (bits & AVSM_FEAT_WMARK) !== 0,
|
|
27761
27838
|
osd: (bits & AVSM_FEAT_OSD) !== 0
|
|
27762
27839
|
};
|
|
27763
27840
|
}
|
|
27841
|
+
_readMaxEncodedPixelRate() {
|
|
27842
|
+
const node = this.client?.nodes[String(this.nodeId)];
|
|
27843
|
+
const raw = node?.attributes[`${this.endpointId}/${CAMERA_AV_STREAM_MANAGEMENT_CLUSTER_ID}/${AVSM_MAX_ENCODED_PIXEL_RATE_ATTR_ID}`];
|
|
27844
|
+
return typeof raw === "number" && raw > 0 ? raw : null;
|
|
27845
|
+
}
|
|
27846
|
+
/**
|
|
27847
|
+
* px/s a concurrent snapshot stream would reserve from MaxEncodedPixelRate, so the
|
|
27848
|
+
* video stream can be sized to leave room. Zero when the camera has no snapshot feature
|
|
27849
|
+
* or the chosen capability does not draw from the encoder budget.
|
|
27850
|
+
*/
|
|
27851
|
+
_snapshotBudgetReservation() {
|
|
27852
|
+
if (!this._readAvsmFeatures().snp) return 0;
|
|
27853
|
+
const node = this.client?.nodes[String(this.nodeId)];
|
|
27854
|
+
const capsRaw = node?.attributes[`${this.endpointId}/${CAMERA_AV_STREAM_MANAGEMENT_CLUSTER_ID}/10`];
|
|
27855
|
+
const cap = Array.isArray(capsRaw) && capsRaw.length > 0 ? parseSnapshotCapabilitiesFromList(capsRaw, true) : SNAPSHOT_DEFAULTS;
|
|
27856
|
+
if (!cap.requiresEncodedPixels) return 0;
|
|
27857
|
+
const resolution = clampToCapability(this.snapshotResolution ?? cap.resolution, cap.resolution);
|
|
27858
|
+
return pixelRate(resolution, cap.maxFrameRate);
|
|
27859
|
+
}
|
|
27764
27860
|
async deallocateSnapshot() {
|
|
27765
27861
|
if (this._snapshotStreamId === null) return;
|
|
27766
27862
|
const id = this._snapshotStreamId;
|
|
@@ -27802,6 +27898,19 @@ let WebRtcStreamView = class extends i$4 {
|
|
|
27802
27898
|
const eMaxH = pickNumber(maxRes, "height", "1") ?? 0;
|
|
27803
27899
|
if (eMinW > want.minRes.width || eMaxW < want.maxRes.width) continue;
|
|
27804
27900
|
if (eMinH > want.minRes.height || eMaxH < want.maxRes.height) continue;
|
|
27901
|
+
if (want.budget) {
|
|
27902
|
+
const eMaxFrameRate = pickNumber(obj, "maxFrameRate", "4") ?? Number.POSITIVE_INFINITY;
|
|
27903
|
+
const fits = videoStreamFitsSnapshotBudget({
|
|
27904
|
+
maxEncodedPixelRate: want.budget.maxEncodedPixelRate,
|
|
27905
|
+
candidateResolution: {
|
|
27906
|
+
width: eMaxW,
|
|
27907
|
+
height: eMaxH
|
|
27908
|
+
},
|
|
27909
|
+
candidateFrameRate: eMaxFrameRate,
|
|
27910
|
+
snapshotReservation: want.budget.snapshotReservation
|
|
27911
|
+
});
|
|
27912
|
+
if (!fits) continue;
|
|
27913
|
+
}
|
|
27805
27914
|
if (want.watermarkEnabled !== void 0) {
|
|
27806
27915
|
const v = obj["watermarkEnabled"] ?? obj["10"];
|
|
27807
27916
|
if (v !== want.watermarkEnabled) continue;
|
|
@@ -27874,9 +27983,10 @@ let WebRtcStreamView = class extends i$4 {
|
|
|
27874
27983
|
if (this._snapshotStreamId !== null) return this._snapshotStreamId;
|
|
27875
27984
|
if (!this.client) throw new Error("Matter client not available");
|
|
27876
27985
|
const node = this.client.nodes[String(this.nodeId)];
|
|
27986
|
+
const encoderBusy = this._videoStreamId !== null;
|
|
27877
27987
|
const capsRaw = node?.attributes[`${this.endpointId}/${CAMERA_AV_STREAM_MANAGEMENT_CLUSTER_ID}/10`];
|
|
27878
|
-
const cap = Array.isArray(capsRaw) && capsRaw.length > 0 ? parseSnapshotCapabilitiesFromList(capsRaw) : SNAPSHOT_DEFAULTS;
|
|
27879
|
-
const targetResolution = this.snapshotResolution ?? cap.resolution;
|
|
27988
|
+
const cap = Array.isArray(capsRaw) && capsRaw.length > 0 ? parseSnapshotCapabilitiesFromList(capsRaw, encoderBusy) : SNAPSHOT_DEFAULTS;
|
|
27989
|
+
const targetResolution = clampToCapability(this.snapshotResolution ?? cap.resolution, cap.resolution);
|
|
27880
27990
|
const avsmFeatures = this._readAvsmFeatures();
|
|
27881
27991
|
const reused = this._findMatchingSnapshotStream({
|
|
27882
27992
|
imageCodec: cap.imageCodec,
|
|
@@ -29951,7 +30061,6 @@ let NodeDetails = class extends i$4 {
|
|
|
29951
30061
|
title: "Reinterview node",
|
|
29952
30062
|
text: "Success!"
|
|
29953
30063
|
});
|
|
29954
|
-
location.hash = "#";
|
|
29955
30064
|
} catch (err) {
|
|
29956
30065
|
showAlertDialog({
|
|
29957
30066
|
title: "Failed to reinterview node",
|
|
@@ -30401,7 +30510,7 @@ async function downgradeToOperate(client, nodeId, keys) {
|
|
|
30401
30510
|
* SPDX-License-Identifier: Apache-2.0
|
|
30402
30511
|
*/
|
|
30403
30512
|
const showNodeAclAddDialog = async node => {
|
|
30404
|
-
await import('./node-acl-add-dialog-
|
|
30513
|
+
await import('./node-acl-add-dialog-DHEm34fQ.js');
|
|
30405
30514
|
const dialog = document.createElement("node-acl-add-dialog");
|
|
30406
30515
|
dialog.node = node;
|
|
30407
30516
|
document.querySelector("matter-dashboard-app")?.renderRoot.appendChild(dialog);
|
|
@@ -32695,7 +32804,7 @@ async function deleteBindingAtIndex(client, sourceNode, sourceEndpoint, index) {
|
|
|
32695
32804
|
* SPDX-License-Identifier: Apache-2.0
|
|
32696
32805
|
*/
|
|
32697
32806
|
const showNodeBindingDialog = async (node, endpoint) => {
|
|
32698
|
-
await import('./node-binding-dialog-
|
|
32807
|
+
await import('./node-binding-dialog-NdTWDtWj.js');
|
|
32699
32808
|
const dialog = document.createElement("node-binding-dialog");
|
|
32700
32809
|
dialog.node = node;
|
|
32701
32810
|
dialog.endpoint = endpoint;
|
|
@@ -48992,7 +49101,7 @@ MatterNodeView = __decorateClass$3([t$1("matter-node-view")], MatterNodeView);
|
|
|
48992
49101
|
* SPDX-License-Identifier: Apache-2.0
|
|
48993
49102
|
*/
|
|
48994
49103
|
const showCommissionNodeDialog = async () => {
|
|
48995
|
-
await import('./commission-node-dialog-
|
|
49104
|
+
await import('./commission-node-dialog-DlTbsP25.js');
|
|
48996
49105
|
const dialog = document.createElement("commission-node-dialog");
|
|
48997
49106
|
document.querySelector("matter-dashboard-app")?.renderRoot.appendChild(dialog);
|
|
48998
49107
|
};
|
|
@@ -49003,7 +49112,7 @@ const showCommissionNodeDialog = async () => {
|
|
|
49003
49112
|
* SPDX-License-Identifier: Apache-2.0
|
|
49004
49113
|
*/
|
|
49005
49114
|
const showFabricLabelDialog = async (client, currentLabel, onSaved) => {
|
|
49006
|
-
await import('./fabric-label-dialog-
|
|
49115
|
+
await import('./fabric-label-dialog-BKI2qEOw.js');
|
|
49007
49116
|
const dialog = document.createElement("fabric-label-dialog");
|
|
49008
49117
|
dialog.client = client;
|
|
49009
49118
|
dialog.currentLabel = currentLabel;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i, c, a as clientContext, n, r, b as i$1, P as Privilege, v as nodeIdKey, x as aclCapacity, s as showAlertDialog, y as targetServerClusters, z as clusters, B as AuthMode, C as addAclEntry, E as PRIVILEGE_NAMES, d as b, F as mdiClose, G as getDeviceName, h as handleAsync, g as t } from './matter-dashboard-app-
|
|
1
|
+
import { i, c, a as clientContext, n, r, b as i$1, P as Privilege, v as nodeIdKey, x as aclCapacity, s as showAlertDialog, y as targetServerClusters, z as clusters, B as AuthMode, C as addAclEntry, E as PRIVILEGE_NAMES, d as b, F as mdiClose, G as getDeviceName, h as handleAsync, g as t } from './matter-dashboard-app-B3BC4HU2.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 { i, c, a as clientContext, n, r, b as i$1, v as nodeIdKey, z as clusters, s as showAlertDialog, H as targetAclCapacityForBinding, I as addBinding, J as bindableClusters, A, d as b, G as getDeviceName, K as getEndpointDeviceTypes, h as handleAsync, g as t } from './matter-dashboard-app-
|
|
1
|
+
import { i, c, a as clientContext, n, r, b as i$1, v as nodeIdKey, z as clusters, s as showAlertDialog, H as targetAclCapacityForBinding, I as addBinding, J as bindableClusters, A, d as b, G as getDeviceName, K as getEndpointDeviceTypes, h as handleAsync, g as t } from './matter-dashboard-app-B3BC4HU2.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 { r, n, g as t, b as i, M as MAX_NODE_LABEL_LENGTH, d as b, w as writeNodeLabel, s as showAlertDialog } from './matter-dashboard-app-
|
|
1
|
+
import { r, n, g as t, b as i, M as MAX_NODE_LABEL_LENGTH, d as b, w as writeNodeLabel, s as showAlertDialog } from './matter-dashboard-app-B3BC4HU2.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 { i, c, a as clientContext, t as tickContext, r, e, b as i$1, f as fireAndForget, s as showAlertDialog, d as b, A, h as handleAsync, g as t, n, D as DevModeService, m as mdiWifi, j as mdiPlus, k as mdiPencil, l as mdiDelete, o as mdiEyeOff, p as mdiEye, q as mdiAccessPoint } from './matter-dashboard-app-
|
|
1
|
+
import { i, c, a as clientContext, t as tickContext, r, e, b as i$1, f as fireAndForget, s as showAlertDialog, d as b, A, h as handleAsync, g as t, n, D as DevModeService, m as mdiWifi, j as mdiPlus, k as mdiPencil, l as mdiDelete, o as mdiEyeOff, p as mdiEye, q as mdiAccessPoint } from './matter-dashboard-app-B3BC4HU2.js';
|
|
2
2
|
import { p as preventDefault } from './prevent_default-D-ohDGsN.js';
|
|
3
3
|
import './main.js';
|
|
4
4
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter-server/dashboard",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.3",
|
|
4
4
|
"description": "Dashboard for OHF Matter Server",
|
|
5
5
|
"homepage": "https://github.com/matter-js/matterjs-server",
|
|
6
6
|
"bugs": {
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@lit/context": "^1.1.6",
|
|
35
35
|
"@material/web": "^2.4.1",
|
|
36
|
-
"@matter-server/custom-clusters": "1.2.
|
|
37
|
-
"@matter-server/ws-client": "1.2.
|
|
36
|
+
"@matter-server/custom-clusters": "1.2.3",
|
|
37
|
+
"@matter-server/ws-client": "1.2.3",
|
|
38
38
|
"@mdi/js": "^7.4.47",
|
|
39
39
|
"lit": "^3.3.3",
|
|
40
40
|
"tslib": "^2.8.1",
|