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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/dist/esm/client/client-context.d.ts +3 -0
  2. package/dist/esm/client/client-context.d.ts.map +1 -1
  3. package/dist/esm/client/client-context.js +3 -1
  4. package/dist/esm/client/client-context.js.map +1 -1
  5. package/dist/esm/client/models/descriptions.js +45 -45
  6. package/dist/esm/components/avsum-ptz-strip.d.ts +41 -0
  7. package/dist/esm/components/avsum-ptz-strip.d.ts.map +1 -0
  8. package/dist/esm/components/avsum-ptz-strip.js +379 -0
  9. package/dist/esm/components/avsum-ptz-strip.js.map +6 -0
  10. package/dist/esm/components/dialogs/binding/node-binding-dialog.js +1 -1
  11. package/dist/esm/components/dialogs/binding/show-node-binding-dialog.d.ts +2 -2
  12. package/dist/esm/components/dialogs/binding/show-node-binding-dialog.d.ts.map +1 -1
  13. package/dist/esm/components/dialogs/binding/show-node-binding-dialog.js +1 -2
  14. package/dist/esm/components/dialogs/binding/show-node-binding-dialog.js.map +1 -1
  15. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-dialog.d.ts +1 -0
  16. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-dialog.d.ts.map +1 -1
  17. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-dialog.js +12 -3
  18. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-dialog.js.map +1 -1
  19. package/dist/esm/components/dialogs/commission-node-dialog/show-commission-node-dialog.d.ts +1 -2
  20. package/dist/esm/components/dialogs/commission-node-dialog/show-commission-node-dialog.d.ts.map +1 -1
  21. package/dist/esm/components/dialogs/commission-node-dialog/show-commission-node-dialog.js +1 -2
  22. package/dist/esm/components/dialogs/commission-node-dialog/show-commission-node-dialog.js.map +1 -1
  23. package/dist/esm/components/dialogs/settings/log-level-dialog.d.ts +0 -2
  24. package/dist/esm/components/dialogs/settings/log-level-dialog.d.ts.map +1 -1
  25. package/dist/esm/components/dialogs/settings/log-level-dialog.js +2 -8
  26. package/dist/esm/components/dialogs/settings/log-level-dialog.js.map +1 -1
  27. package/dist/esm/components/dialogs/settings/log-level-section.d.ts +2 -1
  28. package/dist/esm/components/dialogs/settings/log-level-section.d.ts.map +1 -1
  29. package/dist/esm/components/dialogs/settings/log-level-section.js +10 -2
  30. package/dist/esm/components/dialogs/settings/log-level-section.js.map +1 -1
  31. package/dist/esm/components/dialogs/settings/settings-dialog.d.ts +1 -0
  32. package/dist/esm/components/dialogs/settings/settings-dialog.d.ts.map +1 -1
  33. package/dist/esm/components/dialogs/settings/settings-dialog.js +8 -2
  34. package/dist/esm/components/dialogs/settings/settings-dialog.js.map +1 -1
  35. package/dist/esm/components/dialogs/settings/show-log-level-dialog.d.ts +1 -2
  36. package/dist/esm/components/dialogs/settings/show-log-level-dialog.d.ts.map +1 -1
  37. package/dist/esm/components/dialogs/settings/show-log-level-dialog.js +1 -2
  38. package/dist/esm/components/dialogs/settings/show-log-level-dialog.js.map +1 -1
  39. package/dist/esm/components/dialogs/settings/show-settings-dialog.d.ts +1 -2
  40. package/dist/esm/components/dialogs/settings/show-settings-dialog.d.ts.map +1 -1
  41. package/dist/esm/components/dialogs/settings/show-settings-dialog.js +1 -2
  42. package/dist/esm/components/dialogs/settings/show-settings-dialog.js.map +1 -1
  43. package/dist/esm/components/webrtc-stream-view.d.ts +97 -0
  44. package/dist/esm/components/webrtc-stream-view.d.ts.map +1 -0
  45. package/dist/esm/components/webrtc-stream-view.js +878 -0
  46. package/dist/esm/components/webrtc-stream-view.js.map +6 -0
  47. package/dist/esm/pages/camera-overlay.d.ts +63 -0
  48. package/dist/esm/pages/camera-overlay.d.ts.map +1 -0
  49. package/dist/esm/pages/camera-overlay.js +546 -0
  50. package/dist/esm/pages/camera-overlay.js.map +6 -0
  51. package/dist/esm/pages/cluster-commands/base-cluster-commands.d.ts +1 -0
  52. package/dist/esm/pages/cluster-commands/base-cluster-commands.d.ts.map +1 -1
  53. package/dist/esm/pages/cluster-commands/base-cluster-commands.js +11 -1
  54. package/dist/esm/pages/cluster-commands/base-cluster-commands.js.map +1 -1
  55. package/dist/esm/pages/cluster-commands/clusters/avsum-commands.d.ts +38 -0
  56. package/dist/esm/pages/cluster-commands/clusters/avsum-commands.d.ts.map +1 -0
  57. package/dist/esm/pages/cluster-commands/clusters/avsum-commands.js +534 -0
  58. package/dist/esm/pages/cluster-commands/clusters/avsum-commands.js.map +6 -0
  59. package/dist/esm/pages/cluster-commands/clusters/chime-commands.d.ts +32 -0
  60. package/dist/esm/pages/cluster-commands/clusters/chime-commands.d.ts.map +1 -0
  61. package/dist/esm/pages/cluster-commands/clusters/chime-commands.js +261 -0
  62. package/dist/esm/pages/cluster-commands/clusters/chime-commands.js.map +6 -0
  63. package/dist/esm/pages/cluster-commands/index.d.ts +2 -0
  64. package/dist/esm/pages/cluster-commands/index.d.ts.map +1 -1
  65. package/dist/esm/pages/cluster-commands/index.js +2 -0
  66. package/dist/esm/pages/cluster-commands/index.js.map +1 -1
  67. package/dist/esm/pages/components/header.d.ts +1 -0
  68. package/dist/esm/pages/components/header.d.ts.map +1 -1
  69. package/dist/esm/pages/components/header.js +10 -3
  70. package/dist/esm/pages/components/header.js.map +1 -1
  71. package/dist/esm/pages/components/node-details.d.ts +3 -0
  72. package/dist/esm/pages/components/node-details.d.ts.map +1 -1
  73. package/dist/esm/pages/components/node-details.js +34 -4
  74. package/dist/esm/pages/components/node-details.js.map +1 -1
  75. package/dist/esm/pages/components/server-details.d.ts +1 -0
  76. package/dist/esm/pages/components/server-details.d.ts.map +1 -1
  77. package/dist/esm/pages/components/server-details.js +11 -2
  78. package/dist/esm/pages/components/server-details.js.map +1 -1
  79. package/dist/esm/pages/matter-cluster-view.d.ts +1 -0
  80. package/dist/esm/pages/matter-cluster-view.d.ts.map +1 -1
  81. package/dist/esm/pages/matter-cluster-view.js +15 -8
  82. package/dist/esm/pages/matter-cluster-view.js.map +1 -1
  83. package/dist/esm/pages/matter-dashboard-app.d.ts +3 -1
  84. package/dist/esm/pages/matter-dashboard-app.d.ts.map +1 -1
  85. package/dist/esm/pages/matter-dashboard-app.js +12 -16
  86. package/dist/esm/pages/matter-dashboard-app.js.map +1 -1
  87. package/dist/esm/pages/matter-endpoint-view.d.ts +2 -1
  88. package/dist/esm/pages/matter-endpoint-view.d.ts.map +1 -1
  89. package/dist/esm/pages/matter-endpoint-view.js +17 -3
  90. package/dist/esm/pages/matter-endpoint-view.js.map +1 -1
  91. package/dist/esm/pages/matter-network-view.d.ts.map +1 -1
  92. package/dist/esm/pages/matter-network-view.js +5 -1
  93. package/dist/esm/pages/matter-network-view.js.map +1 -1
  94. package/dist/esm/pages/matter-node-view.d.ts +1 -0
  95. package/dist/esm/pages/matter-node-view.d.ts.map +1 -1
  96. package/dist/esm/pages/matter-node-view.js +15 -7
  97. package/dist/esm/pages/matter-node-view.js.map +1 -1
  98. package/dist/esm/pages/matter-server-view.d.ts +1 -0
  99. package/dist/esm/pages/matter-server-view.d.ts.map +1 -1
  100. package/dist/esm/pages/matter-server-view.js +13 -2
  101. package/dist/esm/pages/matter-server-view.js.map +1 -1
  102. package/dist/esm/pages/network/network-details.d.ts.map +1 -1
  103. package/dist/esm/pages/network/network-details.js +0 -3
  104. package/dist/esm/pages/network/network-details.js.map +1 -1
  105. package/dist/esm/pages/network/update-connections-dialog.d.ts +1 -0
  106. package/dist/esm/pages/network/update-connections-dialog.d.ts.map +1 -1
  107. package/dist/esm/pages/network/update-connections-dialog.js +7 -1
  108. package/dist/esm/pages/network/update-connections-dialog.js.map +1 -1
  109. package/dist/esm/util/attribute-shapes.d.ts +11 -0
  110. package/dist/esm/util/attribute-shapes.d.ts.map +1 -0
  111. package/dist/esm/util/attribute-shapes.js +37 -0
  112. package/dist/esm/util/attribute-shapes.js.map +6 -0
  113. package/dist/esm/util/avsum.d.ts +69 -0
  114. package/dist/esm/util/avsum.d.ts.map +1 -0
  115. package/dist/esm/util/avsum.js +150 -0
  116. package/dist/esm/util/avsum.js.map +6 -0
  117. package/dist/esm/util/chime.d.ts +20 -0
  118. package/dist/esm/util/chime.d.ts.map +1 -0
  119. package/dist/esm/util/chime.js +60 -0
  120. package/dist/esm/util/chime.js.map +6 -0
  121. package/dist/web/js/{attribute-write-dialog-DzMWN_T3.js → attribute-write-dialog-DLRP2hlx.js} +1 -1
  122. package/dist/web/js/{command-invoke-dialog-BhAOXzjX.js → command-invoke-dialog-BcCfT1sn.js} +1 -1
  123. package/dist/web/js/{commission-node-dialog-DF87YIqR.js → commission-node-dialog-BfldkUxD.js} +16 -8
  124. package/dist/web/js/{commission-node-existing-DLcWvJTL.js → commission-node-existing-omW-An0J.js} +2 -2
  125. package/dist/web/js/{commission-node-thread-m2fqED-2.js → commission-node-thread-BZpJIxlI.js} +2 -2
  126. package/dist/web/js/{commission-node-wifi-PCsot-CX.js → commission-node-wifi-HA2pYTW2.js} +2 -2
  127. package/dist/web/js/{dialog-box-DiqYXM8c.js → dialog-box-BjDID9j4.js} +1 -1
  128. package/dist/web/js/{fire_event-BnpND_gK.js → fire_event-CChLgSiV.js} +1 -1
  129. package/dist/web/js/main.js +39 -1
  130. package/dist/web/js/{matter-dashboard-app-BZOhBELR.js → matter-dashboard-app-XUWBcruM.js} +8265 -2035
  131. package/dist/web/js/{node-binding-dialog-B3lVN-FU.js → node-binding-dialog-_yHtf7WP.js} +2 -2
  132. package/dist/web/js/settings-dialog-BFPfOSOI.js +607 -0
  133. package/package.json +4 -4
  134. package/src/client/client-context.ts +1 -0
  135. package/src/client/models/descriptions.ts +45 -45
  136. package/src/components/avsum-ptz-strip.ts +388 -0
  137. package/src/components/dialogs/binding/node-binding-dialog.ts +1 -1
  138. package/src/components/dialogs/binding/show-node-binding-dialog.ts +2 -3
  139. package/src/components/dialogs/commission-node-dialog/commission-node-dialog.ts +10 -4
  140. package/src/components/dialogs/commission-node-dialog/show-commission-node-dialog.ts +1 -4
  141. package/src/components/dialogs/settings/log-level-dialog.ts +2 -9
  142. package/src/components/dialogs/settings/log-level-section.ts +11 -4
  143. package/src/components/dialogs/settings/settings-dialog.ts +8 -3
  144. package/src/components/dialogs/settings/show-log-level-dialog.ts +1 -4
  145. package/src/components/dialogs/settings/show-settings-dialog.ts +1 -4
  146. package/src/components/webrtc-stream-view.ts +999 -0
  147. package/src/pages/camera-overlay.ts +562 -0
  148. package/src/pages/cluster-commands/base-cluster-commands.ts +7 -1
  149. package/src/pages/cluster-commands/clusters/avsum-commands.ts +562 -0
  150. package/src/pages/cluster-commands/clusters/chime-commands.ts +272 -0
  151. package/src/pages/cluster-commands/index.ts +2 -0
  152. package/src/pages/components/header.ts +7 -3
  153. package/src/pages/components/node-details.ts +33 -3
  154. package/src/pages/components/server-details.ts +8 -2
  155. package/src/pages/matter-cluster-view.ts +13 -9
  156. package/src/pages/matter-dashboard-app.ts +11 -16
  157. package/src/pages/matter-endpoint-view.ts +13 -5
  158. package/src/pages/matter-network-view.ts +3 -1
  159. package/src/pages/matter-node-view.ts +9 -7
  160. package/src/pages/matter-server-view.ts +7 -2
  161. package/src/pages/network/network-details.ts +0 -3
  162. package/src/pages/network/update-connections-dialog.ts +6 -1
  163. package/src/util/attribute-shapes.ts +34 -0
  164. package/src/util/avsum.ts +212 -0
  165. package/src/util/chime.ts +82 -0
  166. package/dist/esm/util/clone_class.d.ts +0 -7
  167. package/dist/esm/util/clone_class.d.ts.map +0 -1
  168. package/dist/esm/util/clone_class.js +0 -10
  169. package/dist/esm/util/clone_class.js.map +0 -6
  170. package/dist/web/js/settings-dialog-D75IAPKe.js +0 -4039
  171. package/src/util/clone_class.ts +0 -7
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/webrtc-stream-view.ts"],
4
+ "mappings": "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",
5
+ "names": ["state"]
6
+ }
@@ -0,0 +1,63 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025-2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import "@material/web/button/filled-button.js";
7
+ import "@material/web/button/text-button.js";
8
+ import "@material/web/iconbutton/icon-button.js";
9
+ import "@material/web/select/outlined-select.js";
10
+ import "@material/web/select/select-option.js";
11
+ import type { MatterClient } from "@matter-server/ws-client";
12
+ import { LitElement } from "lit";
13
+ import "../components/avsum-ptz-strip.js";
14
+ import "../components/ha-svg-icon.js";
15
+ import "../components/webrtc-stream-view.js";
16
+ export declare class CameraOverlay extends LitElement {
17
+ client?: MatterClient;
18
+ nodeId: number | bigint;
19
+ endpointId: number;
20
+ private _state;
21
+ private _errorMessage;
22
+ private _snapshotDataUri;
23
+ private _snapshotResolution;
24
+ private _snapshotBusy;
25
+ private _snapshotError;
26
+ private _resolutions;
27
+ private _selectedResolution;
28
+ private _resolutionsLoading;
29
+ private _closing;
30
+ private _activeVideoStreamId;
31
+ private _muted;
32
+ private _watermarkEnabled;
33
+ private _osdEnabled;
34
+ private _snapshotResolutions;
35
+ private _selectedSnapshotResolution;
36
+ private get _snapshotSupported();
37
+ private _streamViewRef;
38
+ firstUpdated(): void;
39
+ private _initResolutions;
40
+ private _loadSnapshotResolutions;
41
+ private _onSnapshotResolutionChange;
42
+ private _readCachedAvsmAttribute;
43
+ private _loadResolutions;
44
+ private _getSensorSize;
45
+ private _avsmFeatures;
46
+ private _avsumPresent;
47
+ private _close;
48
+ private _onStreamState;
49
+ private _start;
50
+ private _stop;
51
+ private _toggleMute;
52
+ private _onSnapshot;
53
+ private _downloadSnapshot;
54
+ private _onResolutionChange;
55
+ render(): import("lit-html").TemplateResult<1>;
56
+ static styles: import("lit").CSSResult;
57
+ }
58
+ declare global {
59
+ interface HTMLElementTagNameMap {
60
+ "camera-overlay": CameraOverlay;
61
+ }
62
+ }
63
+ //# sourceMappingURL=camera-overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera-overlay.d.ts","sourceRoot":"","sources":["../../../src/pages/camera-overlay.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,uCAAuC,CAAC;AAC/C,OAAO,qCAAqC,CAAC;AAC7C,OAAO,yCAAyC,CAAC;AACjD,OAAO,yCAAyC,CAAC;AACjD,OAAO,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAUrD,OAAO,kCAAkC,CAAC;AAC1C,OAAO,8BAA8B,CAAC;AACtC,OAAO,qCAAqC,CAAC;AAkB7C,qBACa,aAAc,SAAQ,UAAU;IAGzC,MAAM,CAAC,EAAE,YAAY,CAAC;IAEU,MAAM,EAAG,MAAM,GAAG,MAAM,CAAC;IAC7B,UAAU,EAAG,MAAM,CAAC;IAEvC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,mBAAmB,CAA2B;IACtD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,mBAAmB,CAA2B;IACtD,OAAO,CAAC,mBAAmB,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,oBAAoB,CAAoB;IAChD,OAAO,CAAC,2BAA2B,CAA2B;IAEvE,OAAO,KAAK,kBAAkB,GAY7B;IAED,OAAO,CAAC,cAAc,CAAiC;IAE9C,YAAY,IAAI,IAAI,CAE5B;IAED,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,wBAAwB;IAmBhC,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,wBAAwB;IAMhC,OAAO,CAAC,gBAAgB;IAgCxB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,aAAa;YAMP,MAAM;IAcpB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,WAAW;YAQL,WAAW;IAgBzB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,mBAAmB;IAOlB,MAAM,yCA4Jd;IAED,OAAgB,MAAM,0BA8HpB;CACL;AAED,OAAO,CAAC,MAAM,CAAC,CAAC;IACZ,UAAU,qBAAqB;QAC3B,gBAAgB,EAAE,aAAa,CAAC;KACnC;CACJ"}
@@ -0,0 +1,546 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __decorateClass = (decorators, target, key, kind) => {
4
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
+ if (decorator = decorators[i])
7
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
+ if (kind && result) __defProp(target, key, result);
9
+ return result;
10
+ };
11
+ /**
12
+ * @license
13
+ * Copyright 2025-2026 Open Home Foundation
14
+ * SPDX-License-Identifier: Apache-2.0
15
+ */
16
+ import { consume } from "@lit/context";
17
+ import "@material/web/button/filled-button.js";
18
+ import "@material/web/button/text-button.js";
19
+ import "@material/web/iconbutton/icon-button.js";
20
+ import "@material/web/select/outlined-select.js";
21
+ import "@material/web/select/select-option.js";
22
+ import { mdiCamera, mdiClose, mdiVolumeHigh, mdiVolumeOff } from "@mdi/js";
23
+ import { LitElement, css, html, nothing } from "lit";
24
+ import { customElement, property, state } from "lit/decorators.js";
25
+ import { createRef, ref } from "lit/directives/ref.js";
26
+ import { clientContext } from "../client/client-context.js";
27
+ import {
28
+ AVSM_FEAT_OSD,
29
+ AVSM_FEAT_WMARK,
30
+ AVSM_FEATURE_MAP_ATTR_ID,
31
+ CAMERA_AV_STREAM_MANAGEMENT_CLUSTER_ID
32
+ } from "../components/webrtc-stream-view.js";
33
+ import "../components/avsum-ptz-strip.js";
34
+ import "../components/ha-svg-icon.js";
35
+ import "../components/webrtc-stream-view.js";
36
+ import { asObject, pickNumber } from "../util/attribute-shapes.js";
37
+ import { hasAvsumOnEndpoint } from "../util/avsum.js";
38
+ const HA_DEFAULT_RESOLUTIONS = [
39
+ { width: 1920, height: 1080 },
40
+ { width: 1280, height: 720 },
41
+ { width: 640, height: 480 }
42
+ ];
43
+ let CameraOverlay = class extends LitElement {
44
+ constructor() {
45
+ super(...arguments);
46
+ this._state = "idle";
47
+ this._errorMessage = null;
48
+ this._snapshotDataUri = null;
49
+ this._snapshotResolution = null;
50
+ this._snapshotBusy = false;
51
+ this._snapshotError = null;
52
+ this._resolutions = [];
53
+ this._selectedResolution = null;
54
+ this._resolutionsLoading = true;
55
+ this._closing = false;
56
+ this._activeVideoStreamId = null;
57
+ this._muted = true;
58
+ this._watermarkEnabled = false;
59
+ this._osdEnabled = false;
60
+ this._snapshotResolutions = [];
61
+ this._selectedSnapshotResolution = null;
62
+ this._streamViewRef = createRef();
63
+ }
64
+ get _snapshotSupported() {
65
+ const node = this.client?.nodes[String(this.nodeId)];
66
+ const accepted = node?.attributes[`${this.endpointId}/1361/65529`];
67
+ if (!Array.isArray(accepted) || !accepted.includes(12)) return false;
68
+ const featureMap = node?.attributes[`${this.endpointId}/1361/65532`];
69
+ if (typeof featureMap === "number" && (featureMap & 4) !== 0) return true;
70
+ const caps = node?.attributes[`${this.endpointId}/1361/10`];
71
+ return Array.isArray(caps) && caps.length > 0;
72
+ }
73
+ firstUpdated() {
74
+ this._initResolutions();
75
+ }
76
+ _initResolutions() {
77
+ this._resolutions = this._loadResolutions();
78
+ this._selectedResolution = this._resolutions[0] ?? null;
79
+ this._snapshotResolutions = this._loadSnapshotResolutions();
80
+ this._selectedSnapshotResolution = this._snapshotResolutions[0] ?? null;
81
+ this._resolutionsLoading = false;
82
+ }
83
+ _loadSnapshotResolutions() {
84
+ const raw = this._readCachedAvsmAttribute(10);
85
+ if (!Array.isArray(raw)) return [];
86
+ const seen = /* @__PURE__ */ new Map();
87
+ for (const item of raw) {
88
+ const obj = asObject(item);
89
+ if (!obj) continue;
90
+ const res = asObject(obj["resolution"] ?? obj["0"]);
91
+ if (!res) continue;
92
+ const w = pickNumber(res, "width", "0");
93
+ const h = pickNumber(res, "height", "1");
94
+ if (w !== null && h !== null) {
95
+ const key = `${w}x${h}`;
96
+ if (!seen.has(key)) seen.set(key, { width: w, height: h });
97
+ }
98
+ }
99
+ return [...seen.values()].sort((a, b) => b.width * b.height - a.width * a.height);
100
+ }
101
+ _onSnapshotResolutionChange(ev) {
102
+ const value = ev.target.value;
103
+ const [w, h] = value.split("x").map(Number);
104
+ if (!Number.isFinite(w) || !Number.isFinite(h)) return;
105
+ this._selectedSnapshotResolution = { width: w, height: h };
106
+ }
107
+ _readCachedAvsmAttribute(attributeId) {
108
+ const node = this.client?.nodes[String(this.nodeId)];
109
+ if (!node) return void 0;
110
+ return node.attributes[`${this.endpointId}/${CAMERA_AV_STREAM_MANAGEMENT_CLUSTER_ID}/${attributeId}`];
111
+ }
112
+ _loadResolutions() {
113
+ const rdtRaw = this._readCachedAvsmAttribute(5);
114
+ if (Array.isArray(rdtRaw) && rdtRaw.length > 0) {
115
+ const seen = /* @__PURE__ */ new Map();
116
+ for (const item of rdtRaw) {
117
+ const resObj = asObject(item)?.["resolution"];
118
+ const res = asObject(resObj);
119
+ if (!res) continue;
120
+ const w = pickNumber(res, "width");
121
+ const h = pickNumber(res, "height");
122
+ if (w !== null && h !== null) {
123
+ const key = `${w}x${h}`;
124
+ if (!seen.has(key)) seen.set(key, { width: w, height: h });
125
+ }
126
+ }
127
+ const results = [...seen.values()].sort((a, b) => b.width * b.height - a.width * a.height);
128
+ if (results.length > 0) return results;
129
+ }
130
+ const minVpRaw = this._readCachedAvsmAttribute(4);
131
+ const minVp = asObject(minVpRaw);
132
+ if (minVp) {
133
+ const w = pickNumber(minVp, "width");
134
+ const h = pickNumber(minVp, "height");
135
+ if (w !== null && h !== null && w > 0 && h > 0) return [{ width: w, height: h }];
136
+ }
137
+ return HA_DEFAULT_RESOLUTIONS;
138
+ }
139
+ _getSensorSize() {
140
+ const node = this.client?.nodes[String(this.nodeId)];
141
+ if (!node) return null;
142
+ const raw = node.attributes[`${this.endpointId}/1361/7`];
143
+ const obj = asObject(raw);
144
+ if (!obj) return null;
145
+ const w = pickNumber(obj, "sensorWidth", "0");
146
+ const h = pickNumber(obj, "sensorHeight", "1");
147
+ if (w === null || h === null) return null;
148
+ return { width: w, height: h };
149
+ }
150
+ _avsmFeatures() {
151
+ const node = this.client?.nodes[String(this.nodeId)];
152
+ const raw = node?.attributes[`${this.endpointId}/${CAMERA_AV_STREAM_MANAGEMENT_CLUSTER_ID}/${AVSM_FEATURE_MAP_ATTR_ID}`];
153
+ const bits = typeof raw === "number" ? raw : 0;
154
+ return {
155
+ wmark: (bits & AVSM_FEAT_WMARK) !== 0,
156
+ osd: (bits & AVSM_FEAT_OSD) !== 0
157
+ };
158
+ }
159
+ _avsumPresent() {
160
+ const node = this.client?.nodes[String(this.nodeId)];
161
+ if (!node) return false;
162
+ return hasAvsumOnEndpoint(node, this.endpointId);
163
+ }
164
+ async _close() {
165
+ const view = this._streamViewRef.value;
166
+ if (view) {
167
+ this._closing = true;
168
+ try {
169
+ await view.stop();
170
+ await view.deallocateSnapshot();
171
+ } finally {
172
+ this._closing = false;
173
+ }
174
+ }
175
+ this.remove();
176
+ }
177
+ _onStreamState(ev) {
178
+ this._state = ev.detail.state;
179
+ this._errorMessage = ev.detail.errorMessage;
180
+ this._activeVideoStreamId = ev.detail.state === "streaming" ? this._streamViewRef.value?.videoStreamId ?? null : null;
181
+ }
182
+ _start() {
183
+ const view = this._streamViewRef.value;
184
+ if (view) {
185
+ void view.start();
186
+ }
187
+ }
188
+ _stop() {
189
+ const view = this._streamViewRef.value;
190
+ if (view) {
191
+ void view.stop();
192
+ }
193
+ }
194
+ _toggleMute() {
195
+ const view = this._streamViewRef.value;
196
+ if (!view) return;
197
+ const next = !this._muted;
198
+ view.setMuted(next);
199
+ this._muted = next;
200
+ }
201
+ async _onSnapshot() {
202
+ const view = this._streamViewRef.value;
203
+ if (!view) return;
204
+ this._snapshotBusy = true;
205
+ this._snapshotError = null;
206
+ try {
207
+ const { dataUri, resolution } = await view.takeSnapshot();
208
+ this._snapshotDataUri = dataUri;
209
+ this._snapshotResolution = resolution;
210
+ } catch (e) {
211
+ this._snapshotError = e instanceof Error ? e.message : String(e);
212
+ } finally {
213
+ this._snapshotBusy = false;
214
+ }
215
+ }
216
+ _downloadSnapshot() {
217
+ if (!this._snapshotDataUri) return;
218
+ const a = document.createElement("a");
219
+ a.href = this._snapshotDataUri;
220
+ a.download = `snapshot-node${this.nodeId}-ep${this.endpointId}-${Date.now()}.jpg`;
221
+ a.click();
222
+ }
223
+ _onResolutionChange(ev) {
224
+ const value = ev.target.value;
225
+ const [w, h] = value.split("x").map(Number);
226
+ if (!Number.isFinite(w) || !Number.isFinite(h)) return;
227
+ this._selectedResolution = { width: w, height: h };
228
+ }
229
+ render() {
230
+ const canStart = this._state === "idle" || this._state === "error";
231
+ return html`
232
+ <div class="backdrop" @click=${this._closing ? void 0 : this._close}></div>
233
+ <div class="frame" @click=${(e) => e.stopPropagation()}>
234
+ <header>
235
+ <md-icon-button @click=${this._close} ?disabled=${this._closing} aria-label="Close">
236
+ <ha-svg-icon .path=${mdiClose}></ha-svg-icon>
237
+ </md-icon-button>
238
+ <span>Node ${this.nodeId} • Endpoint ${this.endpointId}</span>
239
+ </header>
240
+ ${this._avsumPresent() ? html`<avsum-ptz-strip
241
+ .nodeId=${this.nodeId}
242
+ .endpointId=${this.endpointId}
243
+ .activeVideoStreamId=${this._activeVideoStreamId}
244
+ .sensorSize=${this._getSensorSize()}
245
+ ></avsum-ptz-strip>` : nothing}
246
+ <main>
247
+ ${this.client ? html`<webrtc-stream-view
248
+ ${ref(this._streamViewRef)}
249
+ .nodeId=${this.nodeId}
250
+ .endpointId=${this.endpointId}
251
+ .resolution=${this._selectedResolution}
252
+ .watermarkEnabled=${this._watermarkEnabled}
253
+ .osdEnabled=${this._osdEnabled}
254
+ .snapshotResolution=${this._selectedSnapshotResolution}
255
+ @streamstate=${this._onStreamState}
256
+ ></webrtc-stream-view>` : html`<div class="status error">No Matter client available.</div>`}
257
+ ${this._snapshotDataUri ? html`
258
+ <div class="snapshot-preview">
259
+ <img
260
+ src=${this._snapshotDataUri}
261
+ @click=${this._downloadSnapshot}
262
+ title="Click to download${this._snapshotResolution ? ` (${this._snapshotResolution.width}\xD7${this._snapshotResolution.height})` : ""}"
263
+ alt="Snapshot"
264
+ />
265
+ <md-icon-button
266
+ @click=${() => {
267
+ this._snapshotDataUri = null;
268
+ }}
269
+ aria-label="Close snapshot"
270
+ >
271
+ <ha-svg-icon .path=${mdiClose}></ha-svg-icon>
272
+ </md-icon-button>
273
+ </div>
274
+ ` : nothing}
275
+ ${this._snapshotError ? html`<div class="snapshot-error">${this._snapshotError}</div>` : nothing}
276
+ </main>
277
+ <footer>
278
+ ${this._closing ? html`<span class="footer-status">Closing…</span>` : nothing}
279
+ ${!this._closing && this._state === "connecting" ? html`<span class="footer-status">Waiting for camera response…</span>` : nothing}
280
+ ${!this._closing && this._state === "error" && this._errorMessage ? html`<span class="footer-status error">${this._errorMessage}</span>` : nothing}
281
+ ${canStart && this._resolutions.length > 0 ? html`
282
+ <md-outlined-select
283
+ label="Resolution"
284
+ .value=${this._selectedResolution ? `${this._selectedResolution.width}x${this._selectedResolution.height}` : ""}
285
+ @change=${this._onResolutionChange}
286
+ >
287
+ ${this._resolutions.map(
288
+ (r) => html`
289
+ <md-select-option value=${`${r.width}x${r.height}`}>
290
+ <div slot="headline">${r.width}×${r.height}</div>
291
+ </md-select-option>
292
+ `
293
+ )}
294
+ </md-outlined-select>
295
+ ` : nothing}
296
+ ${canStart && this._snapshotSupported && this._snapshotResolutions.length > 0 ? html`
297
+ <md-outlined-select
298
+ label="Snapshot"
299
+ .value=${this._selectedSnapshotResolution ? `${this._selectedSnapshotResolution.width}x${this._selectedSnapshotResolution.height}` : ""}
300
+ @change=${this._onSnapshotResolutionChange}
301
+ >
302
+ ${this._snapshotResolutions.map(
303
+ (r) => html`
304
+ <md-select-option value=${`${r.width}x${r.height}`}>
305
+ <div slot="headline">${r.width}×${r.height}</div>
306
+ </md-select-option>
307
+ `
308
+ )}
309
+ </md-outlined-select>
310
+ ` : nothing}
311
+ ${canStart && this._avsmFeatures().wmark ? html`<label class="overlay-toggle">
312
+ <input
313
+ type="checkbox"
314
+ ?checked=${this._watermarkEnabled}
315
+ @change=${(e) => this._watermarkEnabled = e.target.checked}
316
+ />
317
+ Watermark
318
+ </label>` : nothing}
319
+ ${canStart && this._avsmFeatures().osd ? html`<label class="overlay-toggle">
320
+ <input
321
+ type="checkbox"
322
+ ?checked=${this._osdEnabled}
323
+ @change=${(e) => this._osdEnabled = e.target.checked}
324
+ />
325
+ OSD
326
+ </label>` : nothing}
327
+ ${canStart ? html`<md-filled-button
328
+ @click=${this._start}
329
+ ?disabled=${!this.client || this._resolutionsLoading}
330
+ >
331
+ ${this._state === "error" ? "Retry" : "Start"}
332
+ </md-filled-button>` : nothing}
333
+ ${this._state === "streaming" ? html`<md-filled-button @click=${this._stop}>End</md-filled-button>
334
+ <md-text-button @click=${this._toggleMute} aria-label=${this._muted ? "Unmute" : "Mute"}>
335
+ <ha-svg-icon
336
+ slot="icon"
337
+ .path=${this._muted ? mdiVolumeOff : mdiVolumeHigh}
338
+ ></ha-svg-icon>
339
+ ${this._muted ? "Unmute" : "Mute"}
340
+ </md-text-button>` : nothing}
341
+ ${this._snapshotSupported ? html`<md-text-button
342
+ @click=${this._onSnapshot}
343
+ ?disabled=${this._snapshotBusy || !this.client}
344
+ aria-label="Take snapshot"
345
+ >
346
+ <ha-svg-icon .path=${mdiCamera} slot="icon"></ha-svg-icon>
347
+ ${this._snapshotBusy ? "Capturing\u2026" : "Snapshot"}
348
+ </md-text-button>` : nothing}
349
+ <md-text-button @click=${this._close} ?disabled=${this._closing}>Close</md-text-button>
350
+ </footer>
351
+ </div>
352
+ `;
353
+ }
354
+ };
355
+ CameraOverlay.styles = css`
356
+ :host {
357
+ position: fixed;
358
+ inset: 0;
359
+ display: grid;
360
+ place-items: center;
361
+ z-index: 9999;
362
+ }
363
+ .backdrop {
364
+ position: fixed;
365
+ inset: 0;
366
+ background: rgba(0, 0, 0, 0.8);
367
+ }
368
+ .frame {
369
+ position: relative;
370
+ width: min(80vw, 1200px);
371
+ height: min(80vh, 800px);
372
+ background: var(--md-sys-color-surface);
373
+ color: var(--md-sys-color-on-surface);
374
+ display: grid;
375
+ grid-template-rows: auto auto 1fr auto;
376
+ grid-template-areas: "header" "strip" "main" "footer";
377
+ border-radius: 8px;
378
+ overflow: hidden;
379
+ }
380
+ header {
381
+ grid-area: header;
382
+ }
383
+ avsum-ptz-strip {
384
+ grid-area: strip;
385
+ }
386
+ main {
387
+ grid-area: main;
388
+ }
389
+ footer {
390
+ grid-area: footer;
391
+ }
392
+ header {
393
+ display: flex;
394
+ align-items: center;
395
+ padding: 8px 16px;
396
+ gap: 12px;
397
+ border-bottom: 1px solid var(--md-sys-color-outline-variant);
398
+ }
399
+ main {
400
+ display: flex;
401
+ flex-direction: column;
402
+ background: black;
403
+ position: relative;
404
+ overflow: hidden;
405
+ min-height: 0;
406
+ }
407
+ webrtc-stream-view {
408
+ flex: 1 1 0;
409
+ min-height: 0;
410
+ width: 100%;
411
+ }
412
+ .status.error {
413
+ color: var(--danger-color);
414
+ text-align: center;
415
+ padding: 16px;
416
+ }
417
+ .overlay-toggle {
418
+ display: inline-flex;
419
+ align-items: center;
420
+ gap: 6px;
421
+ font-size: 0.85rem;
422
+ color: var(--md-sys-color-on-surface-variant);
423
+ user-select: none;
424
+ cursor: pointer;
425
+ }
426
+ .overlay-toggle input[type="checkbox"] {
427
+ accent-color: var(--md-sys-color-primary);
428
+ margin: 0;
429
+ }
430
+ .snapshot-preview {
431
+ position: absolute;
432
+ top: 8px;
433
+ right: 8px;
434
+ max-width: 200px;
435
+ background: var(--md-sys-color-surface-container);
436
+ border: 1px solid var(--md-sys-color-outline-variant);
437
+ border-radius: 4px;
438
+ padding: 4px;
439
+ display: grid;
440
+ grid-template-columns: 1fr auto;
441
+ align-items: start;
442
+ gap: 4px;
443
+ z-index: 10;
444
+ }
445
+ .snapshot-preview img {
446
+ max-width: 100%;
447
+ cursor: pointer;
448
+ display: block;
449
+ border-radius: 2px;
450
+ }
451
+ .snapshot-error {
452
+ position: absolute;
453
+ bottom: 8px;
454
+ left: 50%;
455
+ transform: translateX(-50%);
456
+ color: var(--danger-color);
457
+ background: var(--md-sys-color-surface-container);
458
+ border-radius: 4px;
459
+ padding: 6px 12px;
460
+ font-size: 0.875rem;
461
+ z-index: 10;
462
+ white-space: nowrap;
463
+ }
464
+ footer {
465
+ padding: 8px 16px;
466
+ display: flex;
467
+ align-items: center;
468
+ justify-content: flex-end;
469
+ gap: 12px;
470
+ border-top: 1px solid var(--md-sys-color-outline-variant);
471
+ }
472
+ .footer-status {
473
+ margin-right: auto;
474
+ color: var(--md-sys-color-on-surface-variant);
475
+ font-style: italic;
476
+ }
477
+ .footer-status.error {
478
+ color: var(--danger-color);
479
+ font-style: normal;
480
+ }
481
+ `;
482
+ __decorateClass([
483
+ consume({ context: clientContext, subscribe: true }),
484
+ property({ attribute: false })
485
+ ], CameraOverlay.prototype, "client", 2);
486
+ __decorateClass([
487
+ property({ attribute: false })
488
+ ], CameraOverlay.prototype, "nodeId", 2);
489
+ __decorateClass([
490
+ property({ type: Number })
491
+ ], CameraOverlay.prototype, "endpointId", 2);
492
+ __decorateClass([
493
+ state()
494
+ ], CameraOverlay.prototype, "_state", 2);
495
+ __decorateClass([
496
+ state()
497
+ ], CameraOverlay.prototype, "_errorMessage", 2);
498
+ __decorateClass([
499
+ state()
500
+ ], CameraOverlay.prototype, "_snapshotDataUri", 2);
501
+ __decorateClass([
502
+ state()
503
+ ], CameraOverlay.prototype, "_snapshotResolution", 2);
504
+ __decorateClass([
505
+ state()
506
+ ], CameraOverlay.prototype, "_snapshotBusy", 2);
507
+ __decorateClass([
508
+ state()
509
+ ], CameraOverlay.prototype, "_snapshotError", 2);
510
+ __decorateClass([
511
+ state()
512
+ ], CameraOverlay.prototype, "_resolutions", 2);
513
+ __decorateClass([
514
+ state()
515
+ ], CameraOverlay.prototype, "_selectedResolution", 2);
516
+ __decorateClass([
517
+ state()
518
+ ], CameraOverlay.prototype, "_resolutionsLoading", 2);
519
+ __decorateClass([
520
+ state()
521
+ ], CameraOverlay.prototype, "_closing", 2);
522
+ __decorateClass([
523
+ state()
524
+ ], CameraOverlay.prototype, "_activeVideoStreamId", 2);
525
+ __decorateClass([
526
+ state()
527
+ ], CameraOverlay.prototype, "_muted", 2);
528
+ __decorateClass([
529
+ state()
530
+ ], CameraOverlay.prototype, "_watermarkEnabled", 2);
531
+ __decorateClass([
532
+ state()
533
+ ], CameraOverlay.prototype, "_osdEnabled", 2);
534
+ __decorateClass([
535
+ state()
536
+ ], CameraOverlay.prototype, "_snapshotResolutions", 2);
537
+ __decorateClass([
538
+ state()
539
+ ], CameraOverlay.prototype, "_selectedSnapshotResolution", 2);
540
+ CameraOverlay = __decorateClass([
541
+ customElement("camera-overlay")
542
+ ], CameraOverlay);
543
+ export {
544
+ CameraOverlay
545
+ };
546
+ //# sourceMappingURL=camera-overlay.js.map