@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/pages/camera-overlay.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -11,6 +11,7 @@ import { LitElement, type CSSResultGroup } from "lit";
11
11
  */
12
12
  export declare abstract class BaseClusterCommands extends LitElement {
13
13
  client: MatterClient;
14
+ protected _tick: number;
14
15
  node: MatterNode;
15
16
  endpoint: number;
16
17
  cluster: number;
@@ -1 +1 @@
1
- {"version":3,"file":"base-cluster-commands.d.ts","sourceRoot":"","sources":["../../../../src/pages/cluster-commands/base-cluster-commands.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAO,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAI3D;;;GAGG;AACH,8BAAsB,mBAAoB,SAAQ,UAAU;IAEjD,MAAM,EAAG,YAAY,CAAC;IAGtB,IAAI,EAAG,UAAU,CAAC;IAGlB,QAAQ,EAAG,MAAM,CAAC;IAGlB,OAAO,EAAG,MAAM,CAAC;IAExB;;;;OAIG;IACH,UAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7F;IAED,OAAgB,MAAM,EAAE,cAAc,CAkFpC;CACL"}
1
+ {"version":3,"file":"base-cluster-commands.d.ts","sourceRoot":"","sources":["../../../../src/pages/cluster-commands/base-cluster-commands.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAO,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAK3D;;;GAGG;AACH,8BAAsB,mBAAoB,SAAQ,UAAU;IAEjD,MAAM,EAAG,YAAY,CAAC;IAG7B,SAAS,CAAC,KAAK,SAAK;IAGb,IAAI,EAAG,UAAU,CAAC;IAGlB,QAAQ,EAAG,MAAM,CAAC;IAGlB,OAAO,EAAG,MAAM,CAAC;IAExB;;;;OAIG;IACH,UAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7F;IAED,OAAgB,MAAM,EAAE,cAAc,CAmFpC;CACL"}
@@ -13,10 +13,16 @@ var __decorateClass = (decorators, target, key, kind) => {
13
13
  * Copyright 2025-2026 Open Home Foundation
14
14
  * SPDX-License-Identifier: Apache-2.0
15
15
  */
16
+ import { consume } from "@lit/context";
16
17
  import { LitElement, css } from "lit";
17
18
  import { property } from "lit/decorators.js";
19
+ import { clientContext, tickContext } from "../../client/client-context.js";
18
20
  import { reducedMotionStyles } from "../../util/shared-styles.js";
19
21
  class BaseClusterCommands extends LitElement {
22
+ constructor() {
23
+ super(...arguments);
24
+ this._tick = 0;
25
+ }
20
26
  /**
21
27
  * Send a command to the device.
22
28
  * @param command - The command name (PascalCase, e.g., "On", "Off", "MoveToLevel")
@@ -35,6 +41,7 @@ class BaseClusterCommands extends LitElement {
35
41
  css`
36
42
  :host {
37
43
  display: block;
44
+ color: var(--md-sys-color-on-surface);
38
45
  }
39
46
 
40
47
  details.command-panel {
@@ -116,8 +123,11 @@ class BaseClusterCommands extends LitElement {
116
123
  }
117
124
  }
118
125
  __decorateClass([
119
- property({ attribute: false })
126
+ consume({ context: clientContext })
120
127
  ], BaseClusterCommands.prototype, "client", 2);
128
+ __decorateClass([
129
+ consume({ context: tickContext, subscribe: true })
130
+ ], BaseClusterCommands.prototype, "_tick", 2);
121
131
  __decorateClass([
122
132
  property({ attribute: false })
123
133
  ], BaseClusterCommands.prototype, "node", 2);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/pages/cluster-commands/base-cluster-commands.ts"],
4
- "mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,YAAY,WAAgC;AACrD,SAAS,gBAAgB;AACzB,SAAS,2BAA2B;AAM7B,MAAe,4BAA4B,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBzD,MAAgB,YAAY,SAAiB,SAAkD;AAC3F,QAAI;AACA,YAAM,KAAK,OAAO,cAAc,KAAK,KAAK,SAAS,KAAK,UAAU,KAAK,SAAS,SAAS,WAAW,CAAC,CAAC;AAAA,IAC1G,SAAS,OAAO;AACZ,cAAQ,MAAM,0BAA0B,OAAO,KAAK,KAAK;AAAA,IAE7D;AAAA,EACJ;AAAA,EAEA;AAAA,SAAgB,SAAyB;AAAA,MACrC;AAAA,MACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAgFJ;AAAA;AACJ;AA5GW;AAAA,EADN,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,GADZ,oBAEX;AAGA;AAAA,EADN,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,GAJZ,oBAKX;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAPR,oBAQX;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAVR,oBAWX;",
4
+ "mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,eAAe;AAExB,SAAS,YAAY,WAAgC;AACrD,SAAS,gBAAgB;AACzB,SAAS,eAAe,mBAAmB;AAC3C,SAAS,2BAA2B;AAM7B,MAAe,4BAA4B,WAAW;AAAA,EAAtD;AAAA;AAKH,SAAU,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBlB,MAAgB,YAAY,SAAiB,SAAkD;AAC3F,QAAI;AACA,YAAM,KAAK,OAAO,cAAc,KAAK,KAAK,SAAS,KAAK,UAAU,KAAK,SAAS,SAAS,WAAW,CAAC,CAAC;AAAA,IAC1G,SAAS,OAAO;AACZ,cAAQ,MAAM,0BAA0B,OAAO,KAAK,KAAK;AAAA,IAE7D;AAAA,EACJ;AAAA,EAEA;AAAA,SAAgB,SAAyB;AAAA,MACrC;AAAA,MACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAiFJ;AAAA;AACJ;AAhHW;AAAA,EADN,QAAQ,EAAE,SAAS,cAAc,CAAC;AAAA,GADjB,oBAEX;AAGG;AAAA,EADT,QAAQ,EAAE,SAAS,aAAa,WAAW,KAAK,CAAC;AAAA,GAJhC,oBAKR;AAGH;AAAA,EADN,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,GAPZ,oBAQX;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAVR,oBAWX;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAbR,oBAcX;",
5
5
  "names": []
6
6
  }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025-2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import "@material/web/button/outlined-button";
7
+ import "@material/web/iconbutton/outlined-icon-button";
8
+ import { nothing } from "lit";
9
+ import "../../../components/ha-svg-icon.js";
10
+ import { BaseClusterCommands } from "../base-cluster-commands.js";
11
+ declare class AvsumClusterCommands extends BaseClusterCommands {
12
+ private _unsubscribeNodes?;
13
+ private _toast;
14
+ private _toastTimer?;
15
+ private _newPresetName;
16
+ updated(changedProperties: Map<string, unknown>): void;
17
+ disconnectedCallback(): void;
18
+ render(): typeof nothing | import("lit-html").TemplateResult<1>;
19
+ private _fmtDeg;
20
+ private _showBusy;
21
+ private _isBusy;
22
+ private _stepFromEvent;
23
+ private _move;
24
+ private _goPreset;
25
+ private _scheduleToastClear;
26
+ private _savePresetUpdate;
27
+ private _renamePreset;
28
+ private _removePreset;
29
+ private _saveNewPreset;
30
+ static styles: (import("lit").CSSResultArray | import("lit").CSSResultOrNative)[];
31
+ }
32
+ declare global {
33
+ interface HTMLElementTagNameMap {
34
+ "avsum-cluster-commands": AvsumClusterCommands;
35
+ }
36
+ }
37
+ export {};
38
+ //# sourceMappingURL=avsum-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avsum-commands.d.ts","sourceRoot":"","sources":["../../../../../src/pages/cluster-commands/clusters/avsum-commands.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,sCAAsC,CAAC;AAC9C,OAAO,+CAA+C,CAAC;AAavD,OAAO,EAAa,OAAO,EAAE,MAAM,KAAK,CAAC;AAEzC,OAAO,oCAAoC,CAAC;AAgB5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,cACM,oBAAqB,SAAQ,mBAAmB;IAClD,OAAO,CAAC,iBAAiB,CAAC,CAAa;IAC9B,OAAO,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,WAAW,CAAC,CAAgC;IAC3C,OAAO,CAAC,cAAc,CAAM;IAE5B,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,QAKvD;IAEQ,oBAAoB,SAO5B;IAEQ,MAAM,0DA+Md;IAED,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,cAAc;YAIR,KAAK;YAYL,SAAS;IAevB,OAAO,CAAC,mBAAmB;YAOb,iBAAiB;YAWjB,aAAa;YAUb,aAAa;YAcb,cAAc;IAmB5B,OAAgB,MAAM,qEA4KpB;CACL;AAID,OAAO,CAAC,MAAM,CAAC,CAAC;IACZ,UAAU,qBAAqB;QAC3B,wBAAwB,EAAE,oBAAoB,CAAC;KAClD;CACJ"}
@@ -0,0 +1,534 @@
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 "@material/web/button/outlined-button";
17
+ import "@material/web/iconbutton/outlined-icon-button";
18
+ import {
19
+ mdiArrowDown,
20
+ mdiArrowLeft,
21
+ mdiArrowRight,
22
+ mdiArrowUp,
23
+ mdiCircleMedium,
24
+ mdiContentSaveOutline,
25
+ mdiMinus,
26
+ mdiPencil,
27
+ mdiPlus,
28
+ mdiTrashCan
29
+ } from "@mdi/js";
30
+ import { css, html, nothing } from "lit";
31
+ import { customElement, state } from "lit/decorators.js";
32
+ import "../../../components/ha-svg-icon.js";
33
+ import { showAlertDialog, showPromptDialog } from "../../../components/dialog-box/show-dialog-box.js";
34
+ import { handleAsync, handleAsyncEvent } from "../../../util/async-handler.js";
35
+ import {
36
+ AVSUM_CLUSTER_ID,
37
+ moveToPreset,
38
+ readDptzStreams,
39
+ readFeatures,
40
+ readMovementState,
41
+ readPosition,
42
+ readPresets,
43
+ readRanges,
44
+ relativeMove,
45
+ removePreset,
46
+ savePreset
47
+ } from "../../../util/avsum.js";
48
+ import { BaseClusterCommands } from "../base-cluster-commands.js";
49
+ import { registerClusterCommands } from "../registry.js";
50
+ let AvsumClusterCommands = class extends BaseClusterCommands {
51
+ constructor() {
52
+ super(...arguments);
53
+ this._toast = null;
54
+ this._newPresetName = "";
55
+ }
56
+ updated(changedProperties) {
57
+ super.updated(changedProperties);
58
+ if (changedProperties.has("client") && this.client && !this._unsubscribeNodes) {
59
+ this._unsubscribeNodes = this.client.addEventListener("nodes_changed", () => this.requestUpdate());
60
+ }
61
+ }
62
+ disconnectedCallback() {
63
+ super.disconnectedCallback();
64
+ this._unsubscribeNodes?.();
65
+ if (this._toastTimer) {
66
+ clearTimeout(this._toastTimer);
67
+ this._toastTimer = void 0;
68
+ }
69
+ }
70
+ render() {
71
+ if (!this.node || this.cluster !== AVSUM_CLUSTER_ID) return nothing;
72
+ const features = readFeatures(this.node, this.endpoint);
73
+ const pos = readPosition(this.node, this.endpoint);
74
+ const ranges = readRanges(this.node, this.endpoint);
75
+ const movement = readMovementState(this.node, this.endpoint);
76
+ return html`
77
+ <details class="command-panel" open>
78
+ <summary>Camera AV Settings — Pan / Tilt / Zoom</summary>
79
+ <div class="command-content">
80
+ <div class="readout">
81
+ ${features.mPan && pos.pan !== null ? html`<span><b>Pan</b> ${this._fmtDeg(pos.pan)}</span>` : nothing}
82
+ ${features.mTilt && pos.tilt !== null ? html`<span><b>Tilt</b> ${this._fmtDeg(pos.tilt)}</span>` : nothing}
83
+ ${features.mZoom && pos.zoom !== null ? html`<span><b>Zoom</b> ${pos.zoom}×</span>` : nothing}
84
+ ${movement !== "unknown" ? html`<span class="badge ${movement === "moving" ? "moving" : ""}"
85
+ >${movement === "moving" ? "Moving\u2026" : "Idle"}</span
86
+ >` : nothing}
87
+ ${features.mPan && ranges.panMin !== null && ranges.panMax !== null ? html`<span class="range">P [${ranges.panMin}°, ${ranges.panMax}°]</span>` : nothing}
88
+ ${features.mTilt && ranges.tiltMin !== null && ranges.tiltMax !== null ? html`<span class="range">T [${ranges.tiltMin}°, ${ranges.tiltMax}°]</span>` : nothing}
89
+ ${features.mZoom && ranges.zoomMax !== null ? html`<span class="range">Z [1×, ${ranges.zoomMax}×]</span>` : nothing}
90
+ </div>
91
+ ${features.mPan || features.mTilt || features.mZoom ? html`<div class="dpad-row">
92
+ <div class="dpad-grid">
93
+ <span></span>
94
+ <md-outlined-icon-button
95
+ ?disabled=${!features.mTilt || movement === "moving"}
96
+ title="Tilt up (Shift = fine)"
97
+ aria-label="Tilt up"
98
+ @click=${handleAsyncEvent(
99
+ (e) => this._move({ tiltDelta: this._stepFromEvent(e, 10) })
100
+ )}
101
+ >
102
+ <ha-svg-icon .path=${mdiArrowUp}></ha-svg-icon>
103
+ </md-outlined-icon-button>
104
+ <span></span>
105
+ <md-outlined-icon-button
106
+ ?disabled=${!features.mPan || movement === "moving"}
107
+ title="Pan left (Shift = fine)"
108
+ aria-label="Pan left"
109
+ @click=${handleAsyncEvent(
110
+ (e) => this._move({ panDelta: this._stepFromEvent(e, -10) })
111
+ )}
112
+ >
113
+ <ha-svg-icon .path=${mdiArrowLeft}></ha-svg-icon>
114
+ </md-outlined-icon-button>
115
+ <span class="dpad-center" aria-hidden="true">
116
+ <ha-svg-icon .path=${mdiCircleMedium}></ha-svg-icon>
117
+ </span>
118
+ <md-outlined-icon-button
119
+ ?disabled=${!features.mPan || movement === "moving"}
120
+ title="Pan right (Shift = fine)"
121
+ aria-label="Pan right"
122
+ @click=${handleAsyncEvent(
123
+ (e) => this._move({ panDelta: this._stepFromEvent(e, 10) })
124
+ )}
125
+ >
126
+ <ha-svg-icon .path=${mdiArrowRight}></ha-svg-icon>
127
+ </md-outlined-icon-button>
128
+ <span></span>
129
+ <md-outlined-icon-button
130
+ ?disabled=${!features.mTilt || movement === "moving"}
131
+ title="Tilt down (Shift = fine)"
132
+ aria-label="Tilt down"
133
+ @click=${handleAsyncEvent(
134
+ (e) => this._move({ tiltDelta: this._stepFromEvent(e, -10) })
135
+ )}
136
+ >
137
+ <ha-svg-icon .path=${mdiArrowDown}></ha-svg-icon>
138
+ </md-outlined-icon-button>
139
+ <span></span>
140
+ </div>
141
+ ${features.mZoom ? html`<div class="zoom-col">
142
+ <md-outlined-icon-button
143
+ ?disabled=${movement === "moving"}
144
+ title="Zoom in (Shift = fine)"
145
+ aria-label="Zoom in"
146
+ @click=${handleAsyncEvent(
147
+ (e) => this._move({ zoomDelta: this._stepFromEvent(e, 10) })
148
+ )}
149
+ >
150
+ <ha-svg-icon .path=${mdiPlus}></ha-svg-icon>
151
+ </md-outlined-icon-button>
152
+ <span class="muted small">zoom</span>
153
+ <md-outlined-icon-button
154
+ ?disabled=${movement === "moving"}
155
+ title="Zoom out (Shift = fine)"
156
+ aria-label="Zoom out"
157
+ @click=${handleAsyncEvent(
158
+ (e) => this._move({ zoomDelta: this._stepFromEvent(e, -10) })
159
+ )}
160
+ >
161
+ <ha-svg-icon .path=${mdiMinus}></ha-svg-icon>
162
+ </md-outlined-icon-button>
163
+ </div>` : nothing}
164
+ </div>` : nothing}
165
+ ${this._toast ? html`<div class="toast">${this._toast}</div>` : nothing}
166
+ ${features.mPresets ? (() => {
167
+ const { items, max } = readPresets(this.node, this.endpoint);
168
+ return html`
169
+ <div class="presets-frame">
170
+ <div class="presets-header">
171
+ <span>Presets</span>
172
+ <span class="muted small">${items.length} / ${max}</span>
173
+ </div>
174
+ <div class="chip-row">
175
+ ${items.map(
176
+ (p) => html`<button
177
+ class="chip"
178
+ title="p=${this._fmtDeg(p.settings.pan ?? 0)} · t=${this._fmtDeg(
179
+ p.settings.tilt ?? 0
180
+ )} · z=${p.settings.zoom ?? 1}×"
181
+ @click=${handleAsync(() => this._goPreset(p.presetId))}
182
+ >
183
+ ${p.name}
184
+ </button>`
185
+ )}
186
+ ${items.length === 0 ? html`<span class="muted small">No presets saved.</span>` : nothing}
187
+ </div>
188
+ <details class="manager">
189
+ <summary>Manage presets…</summary>
190
+ ${items.map(
191
+ (p) => html`<div class="preset-row">
192
+ <span class="pid">#${p.presetId}</span>
193
+ <span class="pname">${p.name}</span>
194
+ <span class="pcoord">
195
+ p=${this._fmtDeg(p.settings.pan ?? 0)} ·
196
+ t=${this._fmtDeg(p.settings.tilt ?? 0)} ·
197
+ z=${p.settings.zoom ?? 1}×
198
+ </span>
199
+ <span class="grow"></span>
200
+ <md-outlined-icon-button
201
+ title="Overwrite with current MPTZ"
202
+ @click=${handleAsync(() => this._savePresetUpdate(p.presetId))}
203
+ >
204
+ <ha-svg-icon .path=${mdiContentSaveOutline}></ha-svg-icon>
205
+ </md-outlined-icon-button>
206
+ <md-outlined-icon-button
207
+ title="Rename (also overwrites position with current MPTZ)"
208
+ aria-label="Rename preset"
209
+ @click=${handleAsync(
210
+ () => this._renamePreset(p.presetId, p.name)
211
+ )}
212
+ >
213
+ <ha-svg-icon .path=${mdiPencil}></ha-svg-icon>
214
+ </md-outlined-icon-button>
215
+ <md-outlined-icon-button
216
+ title="Remove"
217
+ @click=${handleAsync(
218
+ () => this._removePreset(p.presetId, p.name)
219
+ )}
220
+ >
221
+ <ha-svg-icon .path=${mdiTrashCan}></ha-svg-icon>
222
+ </md-outlined-icon-button>
223
+ </div>`
224
+ )}
225
+ <div class="add-bar">
226
+ <input
227
+ class="add-input"
228
+ placeholder="New preset name…"
229
+ .value=${this._newPresetName}
230
+ @input=${(e) => this._newPresetName = e.target.value}
231
+ />
232
+ <md-outlined-button
233
+ ?disabled=${!this._newPresetName.trim() || items.length >= max}
234
+ @click=${handleAsync(() => this._saveNewPreset())}
235
+ >
236
+ Save current MPTZ
237
+ </md-outlined-button>
238
+ </div>
239
+ </details>
240
+ </div>
241
+ `;
242
+ })() : nothing}
243
+ ${features.dptz ? (() => {
244
+ const streams = readDptzStreams(this.node, this.endpoint);
245
+ return html`<div class="dptz-note">
246
+ Digital PTZ: <b>${streams.length}</b> active stream${streams.length === 1 ? "" : "s"}
247
+ <span class="muted small">(controls available during live view)</span>
248
+ </div>`;
249
+ })() : nothing}
250
+ </div>
251
+ </details>
252
+ `;
253
+ }
254
+ _fmtDeg(v) {
255
+ const sign = v >= 0 ? "+" : "";
256
+ return `${sign}${v}\xB0`;
257
+ }
258
+ _showBusy() {
259
+ this._toast = "Camera busy";
260
+ this._scheduleToastClear();
261
+ }
262
+ _isBusy(err) {
263
+ const msg = err instanceof Error ? err.message.toLowerCase() : String(err).toLowerCase();
264
+ return msg.includes("busy");
265
+ }
266
+ _stepFromEvent(e, base) {
267
+ return e.shiftKey ? Math.sign(base) : base;
268
+ }
269
+ async _move(delta) {
270
+ try {
271
+ await relativeMove(this.client, this.node.node_id, this.endpoint, delta);
272
+ } catch (err) {
273
+ if (this._isBusy(err)) {
274
+ this._showBusy();
275
+ return;
276
+ }
277
+ showAlertDialog({ title: "Move failed", text: err instanceof Error ? err.message : String(err) });
278
+ }
279
+ }
280
+ async _goPreset(presetId) {
281
+ try {
282
+ await moveToPreset(this.client, this.node.node_id, this.endpoint, presetId);
283
+ } catch (err) {
284
+ const msg = err instanceof Error ? err.message : String(err);
285
+ if (this._isBusy(err)) return this._showBusy();
286
+ if (msg.toLowerCase().includes("not_found")) {
287
+ this._toast = "Preset removed";
288
+ this._scheduleToastClear();
289
+ return;
290
+ }
291
+ showAlertDialog({ title: "Move failed", text: msg });
292
+ }
293
+ }
294
+ _scheduleToastClear() {
295
+ if (this._toastTimer) clearTimeout(this._toastTimer);
296
+ this._toastTimer = setTimeout(() => {
297
+ this._toast = null;
298
+ }, 2e3);
299
+ }
300
+ async _savePresetUpdate(presetId) {
301
+ if (!this.node) return;
302
+ const preset = readPresets(this.node, this.endpoint).items.find((p) => p.presetId === presetId);
303
+ if (!preset) return;
304
+ try {
305
+ await savePreset(this.client, this.node.node_id, this.endpoint, preset.name, presetId);
306
+ } catch (err) {
307
+ showAlertDialog({ title: "Update failed", text: err instanceof Error ? err.message : String(err) });
308
+ }
309
+ }
310
+ async _renamePreset(presetId, currentName) {
311
+ const next = window.prompt("New name (max 32 chars)", currentName);
312
+ if (typeof next !== "string" || !next.trim()) return;
313
+ try {
314
+ await savePreset(this.client, this.node.node_id, this.endpoint, next.trim().slice(0, 32), presetId);
315
+ } catch (err) {
316
+ showAlertDialog({ title: "Rename failed", text: err instanceof Error ? err.message : String(err) });
317
+ }
318
+ }
319
+ async _removePreset(presetId, name) {
320
+ const ok = await showPromptDialog({
321
+ title: "Remove preset",
322
+ text: `Remove "${name}"?`,
323
+ confirmText: "Remove"
324
+ });
325
+ if (!ok) return;
326
+ try {
327
+ await removePreset(this.client, this.node.node_id, this.endpoint, presetId);
328
+ } catch (err) {
329
+ showAlertDialog({ title: "Remove failed", text: err instanceof Error ? err.message : String(err) });
330
+ }
331
+ }
332
+ async _saveNewPreset() {
333
+ if (!this.node) return;
334
+ const name = this._newPresetName.trim().slice(0, 32);
335
+ if (!name) return;
336
+ try {
337
+ await savePreset(this.client, this.node.node_id, this.endpoint, name);
338
+ this._newPresetName = "";
339
+ } catch (err) {
340
+ const msg = err instanceof Error ? err.message : String(err);
341
+ if (msg.toLowerCase().includes("resource_exhausted")) {
342
+ const max = readPresets(this.node, this.endpoint).max;
343
+ this._toast = `Preset list full (${max})`;
344
+ this._scheduleToastClear();
345
+ return;
346
+ }
347
+ showAlertDialog({ title: "Save failed", text: msg });
348
+ }
349
+ }
350
+ };
351
+ AvsumClusterCommands.styles = [
352
+ ...Array.isArray(BaseClusterCommands.styles) ? BaseClusterCommands.styles : [BaseClusterCommands.styles],
353
+ css`
354
+ .readout {
355
+ display: flex;
356
+ align-items: center;
357
+ gap: 16px;
358
+ flex-wrap: wrap;
359
+ font-family: var(--monospace-font, monospace);
360
+ font-size: 0.85rem;
361
+ padding: 4px 0 12px;
362
+ }
363
+ .readout b {
364
+ font-weight: 500;
365
+ color: var(--md-sys-color-on-surface-variant);
366
+ margin-right: 4px;
367
+ }
368
+ .badge {
369
+ padding: 2px 8px;
370
+ border-radius: 4px;
371
+ background: var(--md-sys-color-secondary-container);
372
+ color: var(--md-sys-color-on-secondary-container);
373
+ font-size: 0.75rem;
374
+ }
375
+ .badge.moving {
376
+ background: var(--md-sys-color-primary-container);
377
+ color: var(--md-sys-color-on-primary-container);
378
+ }
379
+ .range {
380
+ color: var(--md-sys-color-on-surface-variant);
381
+ font-size: 0.75rem;
382
+ }
383
+ .dpad-row {
384
+ display: flex;
385
+ align-items: center;
386
+ justify-content: center;
387
+ gap: 24px;
388
+ padding: 12px 0;
389
+ }
390
+ md-outlined-icon-button {
391
+ --md-outlined-icon-button-icon-color: var(--md-sys-color-on-surface);
392
+ --md-outlined-icon-button-outline-color: var(--md-sys-color-outline);
393
+ }
394
+ md-outlined-icon-button[disabled] {
395
+ opacity: 0.6;
396
+ }
397
+ .dpad-grid {
398
+ display: grid;
399
+ grid-template-columns: 40px 40px 40px;
400
+ grid-template-rows: 40px 40px 40px;
401
+ gap: 4px;
402
+ }
403
+ .dpad-center {
404
+ display: grid;
405
+ place-items: center;
406
+ color: var(--md-sys-color-on-surface-variant);
407
+ opacity: 0.4;
408
+ }
409
+ .zoom-col {
410
+ display: flex;
411
+ flex-direction: column;
412
+ align-items: center;
413
+ gap: 4px;
414
+ }
415
+ .muted.small {
416
+ font-size: 0.7rem;
417
+ color: var(--md-sys-color-on-surface-variant);
418
+ }
419
+ .muted {
420
+ color: var(--md-sys-color-on-surface-variant);
421
+ }
422
+ .toast {
423
+ margin-top: 8px;
424
+ padding: 6px 12px;
425
+ background: var(--md-sys-color-inverse-surface);
426
+ color: var(--md-sys-color-inverse-on-surface);
427
+ border-radius: 4px;
428
+ font-size: 0.85rem;
429
+ text-align: center;
430
+ }
431
+ .presets-frame {
432
+ margin-top: 12px;
433
+ padding-top: 12px;
434
+ border-top: 1px solid var(--md-sys-color-outline-variant);
435
+ }
436
+ .presets-header {
437
+ display: flex;
438
+ justify-content: space-between;
439
+ font-weight: 500;
440
+ margin-bottom: 8px;
441
+ }
442
+ .chip-row {
443
+ display: flex;
444
+ gap: 6px;
445
+ flex-wrap: wrap;
446
+ margin-bottom: 8px;
447
+ }
448
+ .chip {
449
+ padding: 6px 14px;
450
+ border-radius: 16px;
451
+ background: var(--md-sys-color-primary-container);
452
+ color: var(--md-sys-color-on-primary-container);
453
+ border: none;
454
+ cursor: pointer;
455
+ font-size: 0.85rem;
456
+ font-family: inherit;
457
+ }
458
+ .chip:hover {
459
+ filter: brightness(1.05);
460
+ }
461
+ details.manager summary {
462
+ cursor: pointer;
463
+ font-size: 0.85rem;
464
+ color: var(--md-sys-color-on-surface-variant);
465
+ padding: 4px 0;
466
+ }
467
+ .preset-row {
468
+ display: flex;
469
+ align-items: center;
470
+ gap: 12px;
471
+ padding: 4px 8px;
472
+ border-radius: 4px;
473
+ }
474
+ .preset-row:hover {
475
+ background: var(--md-sys-color-surface-container-high);
476
+ }
477
+ .pid {
478
+ font-family: var(--monospace-font, monospace);
479
+ color: var(--md-sys-color-on-surface-variant);
480
+ font-size: 0.85rem;
481
+ min-width: 32px;
482
+ }
483
+ .pname {
484
+ font-weight: 500;
485
+ }
486
+ .pcoord {
487
+ font-family: var(--monospace-font, monospace);
488
+ font-size: 0.75rem;
489
+ color: var(--md-sys-color-on-surface-variant);
490
+ }
491
+ .grow {
492
+ flex: 1;
493
+ }
494
+ .add-bar {
495
+ display: flex;
496
+ gap: 8px;
497
+ align-items: center;
498
+ padding-top: 8px;
499
+ margin-top: 8px;
500
+ border-top: 1px solid var(--md-sys-color-outline-variant);
501
+ }
502
+ .add-input {
503
+ flex: 1;
504
+ padding: 6px 8px;
505
+ border: 1px solid var(--md-sys-color-outline);
506
+ border-radius: 4px;
507
+ background: var(--md-sys-color-surface);
508
+ color: var(--md-sys-color-on-surface);
509
+ font-family: inherit;
510
+ font-size: 0.85rem;
511
+ }
512
+ .dptz-note {
513
+ margin-top: 12px;
514
+ padding: 8px 12px;
515
+ background: var(--md-sys-color-surface-container);
516
+ border-radius: 4px;
517
+ font-size: 0.85rem;
518
+ }
519
+ .dptz-note b {
520
+ font-weight: 500;
521
+ }
522
+ `
523
+ ];
524
+ __decorateClass([
525
+ state()
526
+ ], AvsumClusterCommands.prototype, "_toast", 2);
527
+ __decorateClass([
528
+ state()
529
+ ], AvsumClusterCommands.prototype, "_newPresetName", 2);
530
+ AvsumClusterCommands = __decorateClass([
531
+ customElement("avsum-cluster-commands")
532
+ ], AvsumClusterCommands);
533
+ registerClusterCommands(AVSUM_CLUSTER_ID, "avsum-cluster-commands");
534
+ //# sourceMappingURL=avsum-commands.js.map