@camstack/addon-osd-manager 0.1.155 → 0.1.157

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 (25) hide show
  1. package/dist/{MaskShapeCanvas-BEVxAjNq.mjs → MaskShapeCanvas-BT714ljC.mjs} +113 -113
  2. package/dist/MotionZonesSettings-vYt4dibj.mjs +310 -0
  3. package/dist/{PrivacyMaskSettings-D7EH_wl3.mjs → PrivacyMaskSettings-BiQ78hst.mjs} +35 -60
  4. package/dist/{SceneMonitorEditor-CO6VwdkE.mjs → SceneMonitorEditor-CJtJIyMf.mjs} +307 -307
  5. package/dist/_stub.js +11763 -4481
  6. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-B3v0K7b1.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-DdAtpC7z.mjs} +3 -3
  7. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BtgV-Ym5.mjs +26 -0
  8. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CHxDN0gE.mjs +26 -0
  9. package/dist/{_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-Bs1t18EM.mjs → _virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-C5jUMd7X.mjs} +1 -1
  10. package/dist/{_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react_mf_2_dom__loadShare__.js-C0K4h_0e.mjs → _virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react_mf_2_dom__loadShare__.js-qB5uHZAd.mjs} +8 -7
  11. package/dist/addon-osd-manager.css +1 -1
  12. package/dist/{hostInit-B3sHUn3j.mjs → hostInit-0Mc7Fm1R.mjs} +2 -2
  13. package/dist/index.js +1077 -112
  14. package/dist/index.mjs +1077 -112
  15. package/dist/{player-overlays-CTsQBdl8.mjs → player-overlays-BPyna-eI.mjs} +14 -14
  16. package/dist/remoteEntry.js +1 -1
  17. package/dist/{responsive-BPw6Y2I0.mjs → responsive-B0yDP9vf.mjs} +31 -27
  18. package/dist/{scene-monitor-copy-DNkKk6vF.mjs → scene-monitor-copy-BzX20O6q.mjs} +13 -13
  19. package/dist/{square-BPzhX8Pc.mjs → square-BOMOn_6j.mjs} +29 -4
  20. package/dist/{trash-2-DemFUbcB.mjs → trash-2-BolGRl2P.mjs} +1 -1
  21. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-BUQgSy9b.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-UY9P_4V2.mjs} +1 -1
  22. package/package.json +1 -3
  23. package/dist/MotionZonesSettings-DHyaxzBi.mjs +0 -310
  24. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-1qxETV_o.mjs +0 -26
  25. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-DmzTg7Gl.mjs +0 -25
@@ -1,20 +1,20 @@
1
- import { h as e, l as t, u as n, y as r } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-Bs1t18EM.mjs";
2
- import { o as i, s as a } from "./responsive-BPw6Y2I0.mjs";
1
+ import { b as e, g as t, l as n, u as r } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-C5jUMd7X.mjs";
2
+ import { c as i, s as a } from "./responsive-B0yDP9vf.mjs";
3
3
  import { n as o, r as s, t as c } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DalfdIDw.mjs";
4
- var l = a("chevron-down", [["path", {
4
+ var l = i("chevron-down", [["path", {
5
5
  d: "m6 9 6 6 6-6",
6
6
  key: "qrunsl"
7
- }]]), u = a("chevron-right", [["path", {
7
+ }]]), u = i("chevron-right", [["path", {
8
8
  d: "m9 18 6-6-6-6",
9
9
  key: "mthhwq"
10
10
  }]]);
11
11
  //#endregion
12
12
  //#region ../ui-library/src/composites/widget-panel.tsx
13
- r();
14
- function d({ title: t, icon: n, headerRight: r, collapsible: i = !1, defaultOpen: a = !0, bodyClassName: d = "p-3", children: f }) {
15
- let [p, m] = e(a), h = !i || p, g = /* @__PURE__ */ s(c, { children: [/* @__PURE__ */ s("span", {
13
+ e();
14
+ function d({ title: e, icon: n, headerRight: r, collapsible: i = !1, defaultOpen: a = !0, bodyClassName: d = "p-3", children: f }) {
15
+ let [p, m] = t(a), h = !i || p, g = /* @__PURE__ */ s(c, { children: [/* @__PURE__ */ s("span", {
16
16
  className: "flex items-center gap-2 text-xs font-semibold uppercase tracking-wider text-foreground",
17
- children: [n, t]
17
+ children: [n, e]
18
18
  }), i ? o(p ? l : u, { className: "h-3.5 w-3.5 text-foreground-subtle" }) : r] }), _ = `px-4 py-2 flex items-center justify-between ${h ? "border-b border-border" : ""}`;
19
19
  return /* @__PURE__ */ s("div", {
20
20
  className: "rounded-lg border border-border bg-surface overflow-hidden",
@@ -32,13 +32,13 @@ function d({ title: t, icon: n, headerRight: r, collapsible: i = !1, defaultOpen
32
32
  }) : null]
33
33
  });
34
34
  }
35
- r(), i("camstack:player-overlays-state", null);
36
- var f = i("camstack:player-overlays-actions", null);
35
+ e(), a("camstack:player-overlays-state", null);
36
+ var f = a("camstack:player-overlays-actions", null);
37
37
  function p(e) {
38
- let r = t(f);
39
- n(() => {
40
- if (!(!r || !e)) return r.setLayer(e), () => r.removeLayer(e.id);
41
- }, [r, e]);
38
+ let t = n(f);
39
+ r(() => {
40
+ if (!(!t || !e)) return t.setLayer(e), () => t.removeLayer(e.id);
41
+ }, [t, e]);
42
42
  }
43
43
  //#endregion
44
44
  export { l as i, d as n, u as r, p as t };
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-BUQgSy9b.mjs";
1
+ import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-UY9P_4V2.mjs";
2
2
  export { t as get, e as init };
@@ -1,8 +1,8 @@
1
- import { c as e, g as t, h as n, l as r, n as i, p as a, r as o, t as s, u as c, y as l } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-Bs1t18EM.mjs";
1
+ import { _ as e, b as t, c as n, g as r, l as i, m as a, n as o, r as s, t as c, u as l } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-C5jUMd7X.mjs";
2
2
  import "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DalfdIDw.mjs";
3
- import { n as u } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-1qxETV_o.mjs";
3
+ import { i as u } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BtgV-Ym5.mjs";
4
4
  //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
5
- l();
5
+ t();
6
6
  var d = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), f = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), p = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), m = (e) => {
7
7
  let t = p(e);
8
8
  return t.charAt(0).toUpperCase() + t.slice(1);
@@ -19,23 +19,23 @@ var d = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) =
19
19
  }, g = (e) => {
20
20
  for (let t in e) if (t.startsWith("aria-") || t === "role" || t === "title") return !0;
21
21
  return !1;
22
- }, _ = o(({ color: e = "currentColor", size: t = 24, strokeWidth: n = 2, absoluteStrokeWidth: r, className: a = "", children: o, iconNode: s, ...c }, l) => i("svg", {
22
+ }, _ = s(({ color: e = "currentColor", size: t = 24, strokeWidth: n = 2, absoluteStrokeWidth: r, className: i = "", children: a, iconNode: s, ...c }, l) => o("svg", {
23
23
  ref: l,
24
24
  ...h,
25
25
  width: t,
26
26
  height: t,
27
27
  stroke: e,
28
28
  strokeWidth: r ? Number(n) * 24 / Number(t) : n,
29
- className: d("lucide", a),
30
- ...!o && !g(c) && { "aria-hidden": "true" },
29
+ className: d("lucide", i),
30
+ ...!a && !g(c) && { "aria-hidden": "true" },
31
31
  ...c
32
- }, [...s.map(([e, t]) => i(e, t)), ...Array.isArray(o) ? o : [o]]));
32
+ }, [...s.map(([e, t]) => o(e, t)), ...Array.isArray(a) ? a : [a]]));
33
33
  //#endregion
34
34
  //#region ../../node_modules/lucide-react/dist/esm/createLucideIcon.js
35
- l();
35
+ t();
36
36
  var v = (e, t) => {
37
- let n = o(({ className: n, ...r }, a) => i(_, {
38
- ref: a,
37
+ let n = s(({ className: n, ...r }, i) => o(_, {
38
+ ref: i,
39
39
  iconNode: t,
40
40
  className: d(`lucide-${f(m(e))}`, `lucide-${e}`, n),
41
41
  ...r
@@ -44,32 +44,32 @@ var v = (e, t) => {
44
44
  };
45
45
  //#endregion
46
46
  //#region ../ui-library/src/lib/shared-context.ts
47
- l();
47
+ t();
48
48
  function y(e, t) {
49
- if (typeof globalThis > "u") return s(t);
49
+ if (typeof globalThis > "u") return c(t);
50
50
  let n = globalThis.__camstackSharedContexts, r = n ?? /* @__PURE__ */ new Map();
51
51
  n || (globalThis.__camstackSharedContexts = r);
52
52
  let i = r.get(e);
53
53
  if (i) return i;
54
- let a = s(t);
54
+ let a = c(t);
55
55
  return r.set(e, a), a;
56
56
  }
57
57
  //#endregion
58
58
  //#region ../ui-library/src/contexts/system-context.tsx
59
- l();
59
+ t();
60
60
  var b = y("camstack:system", null);
61
61
  function x() {
62
- let e = r(b);
62
+ let e = i(b);
63
63
  if (!e) throw Error("useSystem(): no <SystemProvider> in tree");
64
64
  return e;
65
65
  }
66
66
  //#endregion
67
67
  //#region ../ui-library/src/hooks/use-device-proxy.ts
68
- l();
68
+ t();
69
69
  var S = "capability.binding-changed";
70
70
  function C(e, t) {
71
- let [r, i] = n(null);
72
- return c(() => {
71
+ let [n, i] = r(null);
72
+ return l(() => {
73
73
  if (t === null) {
74
74
  i(null);
75
75
  return;
@@ -94,15 +94,19 @@ function C(e, t) {
94
94
  return () => {
95
95
  n = !0, a?.unsubscribe();
96
96
  };
97
- }, [e, t]), a(() => r ? u(e, r) : null, [e, r]);
97
+ }, [e, t]), a(() => n ? u(e, n) : null, [e, n]);
98
98
  }
99
- function w(n) {
100
- let r = e((e) => n ? n.subscribe(() => e()) : () => void 0, [n]), i = e(() => n?.value, [n]);
101
- return t(r, i, i);
99
+ function w(t) {
100
+ let r = n((e) => t ? t.subscribe(() => e()) : () => void 0, [t]), i = n(() => t?.value, [t]);
101
+ return e(r, i, i);
102
+ }
103
+ function T(e, t, n) {
104
+ let r = C(e, t);
105
+ return w(r ? n(r.state) : void 0);
102
106
  }
103
107
  //#endregion
104
108
  //#region ../ui-library/src/lib/cap-error.ts
105
- function T(e) {
109
+ function E(e) {
106
110
  if (typeof e != "object" || !e) return null;
107
111
  let t = Reflect.get(e, "data");
108
112
  if (typeof t == "object" && t) {
@@ -111,12 +115,12 @@ function T(e) {
111
115
  }
112
116
  return null;
113
117
  }
114
- function E(e) {
115
- let t = T(e);
118
+ function D(e) {
119
+ let t = E(e);
116
120
  return t === null ? (e instanceof Error ? e.message : String(e)).includes("provider not available") : t === "no-provider" || t === "node-offline";
117
121
  }
118
122
  //#endregion
119
123
  //#region ../ui-library/src/lib/responsive.ts
120
- var D = "text-[10px] text-foreground-subtle";
124
+ var O = "text-[10px] text-foreground-subtle";
121
125
  //#endregion
122
- export { x as a, w as i, E as n, y as o, C as r, v as s, D as t };
126
+ export { w as a, v as c, T as i, D as n, x as o, C as r, y as s, O as t };
@@ -1,5 +1,5 @@
1
- import { c as e, h as t, p as n, y as r } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-Bs1t18EM.mjs";
2
- import { s as i } from "./responsive-BPw6Y2I0.mjs";
1
+ import { b as e, c as t, g as n, m as r } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-C5jUMd7X.mjs";
2
+ import { c as i } from "./responsive-B0yDP9vf.mjs";
3
3
  var a = i("camera", [["path", {
4
4
  d: "M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",
5
5
  key: "18u6gg"
@@ -51,7 +51,7 @@ var a = i("camera", [["path", {
51
51
  }]]);
52
52
  //#endregion
53
53
  //#region ../ui-library/src/lib/hub-mount.ts
54
- r();
54
+ e();
55
55
  var c = "camstack-mount", l = /^\/(?:[A-Za-z0-9_\-.]+\/)*$/, u = null;
56
56
  function d(e) {
57
57
  if (e == null || e === "") return null;
@@ -88,23 +88,23 @@ function g(e) {
88
88
  //#endregion
89
89
  //#region ../ui-library/src/hooks/use-device-snapshot.ts
90
90
  var _ = "/addon/snapshot/media";
91
- function v(r, i = {}) {
92
- let { width: a, baseUrl: o } = i, [s, c] = t(0);
91
+ function v(e, i = {}) {
92
+ let { width: a, baseUrl: o } = i, [s, c] = n(0);
93
93
  return {
94
- src: n(() => {
95
- if (r === null || r <= 0) return null;
96
- let e = o === void 0 ? m() : o.replace(/\/+$/, ""), t = new URLSearchParams();
97
- a !== void 0 && Number.isInteger(a) && a > 0 && t.set("w", String(a)), s > 0 && (t.set("force", "1"), t.set("r", String(s)));
98
- let n = t.toString();
99
- return `${e}${_}/${String(r)}.jpg${n.length > 0 ? `?${n}` : ""}`;
94
+ src: r(() => {
95
+ if (e === null || e <= 0) return null;
96
+ let t = o === void 0 ? m() : o.replace(/\/+$/, ""), n = new URLSearchParams();
97
+ a !== void 0 && Number.isInteger(a) && a > 0 && n.set("w", String(a)), s > 0 && (n.set("force", "1"), n.set("r", String(s)));
98
+ let r = n.toString();
99
+ return `${t}${_}/${String(e)}.jpg${r.length > 0 ? `?${r}` : ""}`;
100
100
  }, [
101
- r,
101
+ e,
102
102
  a,
103
103
  o,
104
104
  s
105
105
  ]),
106
106
  loading: !1,
107
- refresh: e(() => {
107
+ refresh: t(() => {
108
108
  c((e) => e + 1);
109
109
  }, [])
110
110
  };
@@ -1,4 +1,4 @@
1
- import { s as e } from "./responsive-BPw6Y2I0.mjs";
1
+ import { c as e } from "./responsive-B0yDP9vf.mjs";
2
2
  var t = e("eye-off", [
3
3
  ["path", {
4
4
  d: "M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",
@@ -16,7 +16,32 @@ var t = e("eye-off", [
16
16
  d: "m2 2 20 20",
17
17
  key: "1ooewy"
18
18
  }]
19
- ]), n = e("mic", [
19
+ ]), n = e("mic-off", [
20
+ ["path", {
21
+ d: "M12 19v3",
22
+ key: "npa21l"
23
+ }],
24
+ ["path", {
25
+ d: "M15 9.34V5a3 3 0 0 0-5.68-1.33",
26
+ key: "1gzdoj"
27
+ }],
28
+ ["path", {
29
+ d: "M16.95 16.95A7 7 0 0 1 5 12v-2",
30
+ key: "cqa7eg"
31
+ }],
32
+ ["path", {
33
+ d: "M18.89 13.23A7 7 0 0 0 19 12v-2",
34
+ key: "16hl24"
35
+ }],
36
+ ["path", {
37
+ d: "m2 2 20 20",
38
+ key: "1ooewy"
39
+ }],
40
+ ["path", {
41
+ d: "M9 9v3a3 3 0 0 0 5.12 2.12",
42
+ key: "r2i35w"
43
+ }]
44
+ ]), r = e("mic", [
20
45
  ["path", {
21
46
  d: "M12 19v3",
22
47
  key: "npa21l"
@@ -33,7 +58,7 @@ var t = e("eye-off", [
33
58
  rx: "3",
34
59
  key: "s6n7sd"
35
60
  }]
36
- ]), r = e("square", [["rect", {
61
+ ]), i = e("square", [["rect", {
37
62
  width: "18",
38
63
  height: "18",
39
64
  x: "3",
@@ -42,4 +67,4 @@ var t = e("eye-off", [
42
67
  key: "afitv7"
43
68
  }]]);
44
69
  //#endregion
45
- export { n, t as r, r as t };
70
+ export { t as i, r as n, n as r, i as t };
@@ -1,4 +1,4 @@
1
- import { s as e } from "./responsive-BPw6Y2I0.mjs";
1
+ import { c as e } from "./responsive-B0yDP9vf.mjs";
2
2
  var t = e("trash-2", [
3
3
  ["path", {
4
4
  d: "M10 11v6",
@@ -2753,7 +2753,7 @@ async function rr(e) {
2753
2753
  }
2754
2754
  }
2755
2755
  async function ir() {
2756
- return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-B3v0K7b1.mjs")).catch((e) => {
2756
+ return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-DdAtpC7z.mjs")).catch((e) => {
2757
2757
  throw tr = void 0, e;
2758
2758
  }), tr;
2759
2759
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-osd-manager",
3
- "version": "0.1.155",
3
+ "version": "0.1.157",
4
4
  "description": "Binds camera on-screen-display slots to live state and recognitions",
5
5
  "keywords": [
6
6
  "camstack",
@@ -16,10 +16,8 @@
16
16
  },
17
17
  "main": "./dist/index.js",
18
18
  "module": "./dist/index.mjs",
19
- "types": "./dist/index.d.ts",
20
19
  "exports": {
21
20
  ".": {
22
- "types": "./dist/index.d.ts",
23
21
  "import": "./dist/index.mjs",
24
22
  "require": "./dist/index.js"
25
23
  },
@@ -1,310 +0,0 @@
1
- import { c as e, h as t, m as n, p as r, u as i, y as a } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-Bs1t18EM.mjs";
2
- import { a as o, n as s, r as c, s as l, t as u } from "./responsive-BPw6Y2I0.mjs";
3
- import { n as d, t as f } from "./player-overlays-CTsQBdl8.mjs";
4
- import { n as p, r as m, t as ee } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DalfdIDw.mjs";
5
- import { MaskShapeCanvas as h } from "./MaskShapeCanvas-BEVxAjNq.mjs";
6
- var g = l("grid-2x2", [
7
- ["path", {
8
- d: "M12 3v18",
9
- key: "108xh3"
10
- }],
11
- ["path", {
12
- d: "M3 12h18",
13
- key: "1i2n21"
14
- }],
15
- ["rect", {
16
- x: "3",
17
- y: "3",
18
- width: "18",
19
- height: "18",
20
- rx: "2",
21
- key: "h1oib"
22
- }]
23
- ]);
24
- //#endregion
25
- //#region ../ui-library/src/composites/cap-settings/MotionZonesSettings.tsx
26
- a();
27
- var _ = 110, v = "motion-zones", y = 0, b = [
28
- 1,
29
- 2,
30
- 3
31
- ], x = 1, S = "rounded-md border border-border bg-surface px-2 py-1 text-[11px] font-medium text-foreground-subtle hover:bg-surface-hover disabled:opacity-40 transition-colors", C = "rounded-md border border-primary/50 bg-primary/15 px-2.5 py-1 text-[11px] font-medium text-primary hover:bg-primary/25 disabled:opacity-40 transition-colors";
32
- function w(e, t, n) {
33
- let r = t * n, i = Array.from({ length: r });
34
- for (let t = 0; t < r; t += 1) i[t] = e[t] === !0;
35
- return i;
36
- }
37
- function T(e, t) {
38
- if (e.length !== t.length) return !1;
39
- for (let n = 0; n < e.length; n += 1) if (e[n] !== t[n]) return !1;
40
- return !0;
41
- }
42
- function E(e, t) {
43
- return Math.ceil(e / t);
44
- }
45
- function D(e, t, n) {
46
- return Math.min(n - 1, Math.floor((e + .5) / t * n));
47
- }
48
- function O(e, t, n, r) {
49
- let i = E(t, r), a = E(n, r), o = Array.from({ length: i * a }, () => !1);
50
- for (let r = 0; r < n; r += 1) {
51
- let s = D(r, n, a);
52
- for (let n = 0; n < t; n += 1) e[r * t + n] === !0 && (o[s * i + D(n, t, i)] = !0);
53
- }
54
- return o;
55
- }
56
- function k(e, t, n, r) {
57
- let i = E(t, r), a = E(n, r), o = Array.from({ length: t * n }, () => !1);
58
- for (let r = 0; r < n; r += 1) {
59
- let s = D(r, n, a);
60
- for (let n = 0; n < t; n += 1) o[r * t + n] = e[s * i + D(n, t, i)] === !0;
61
- }
62
- return o;
63
- }
64
- function A({ deviceId: a }) {
65
- let l = c(o().trpcClient, a), [D, A] = t(null), [j, M] = t(!1), [N, P] = t(null), [F, I] = t(null), [L, R] = t(x), [z, B] = t(!1), [V, H] = t(!1), U = n(!1);
66
- i(() => {
67
- if (!l) return;
68
- let e = !1;
69
- return U.current = !1, A(null), M(!1), P(null), I(null), R(x), H(!1), (async () => {
70
- try {
71
- let t = await l.motionZones?.getOptions({});
72
- if (e) return;
73
- if (!t) throw Error("device proxy not ready");
74
- if (A(t), U.current) return;
75
- let n = await l.motionZones?.getStatus({});
76
- if (e) return;
77
- if (!n) throw Error("device proxy not ready");
78
- U.current = !0;
79
- let r = n.regions.find((e) => e.shape.kind === "grid"), i = w(r ? r.shape.cells : [], t.grid.width, t.grid.height);
80
- I(i), P(O(i, t.grid.width, t.grid.height, x));
81
- } catch (t) {
82
- if (e) return;
83
- s(t) ? M(!0) : console.error("Motion Zones load failed", t);
84
- }
85
- })(), () => {
86
- e = !0;
87
- };
88
- }, [l]);
89
- let W = D ? D.grid.width : 0, G = D ? D.grid.height : 0, K = E(W, L), q = E(G, L), J = r(() => N && D ? k(N, W, G, L) : null, [
90
- N,
91
- D,
92
- W,
93
- G,
94
- L
95
- ]), Y = r(() => J !== null && F !== null && !T(J, F), [J, F]), te = r(() => J ? J.reduce((e, t) => t ? e + 1 : e, 0) : 0, [J]), ne = W * G, X = K * q, Z = e((e) => {
96
- X > 0 && P(Array.from({ length: X }, () => e));
97
- }, [X]), re = e(() => {
98
- P((e) => e && e.map((e) => !e));
99
- }, []), ie = e(() => {
100
- F && D && P(O(F, W, G, L));
101
- }, [
102
- F,
103
- D,
104
- W,
105
- G,
106
- L
107
- ]), ae = e((e) => {
108
- e === L || !D || P((t) => {
109
- if (!t) return R(e), t;
110
- let n = O(k(t, W, G, L), W, G, e);
111
- return R(e), n;
112
- });
113
- }, [
114
- L,
115
- D,
116
- W,
117
- G
118
- ]), Q = r(() => D && N ? [{
119
- id: y,
120
- shape: {
121
- kind: "grid",
122
- gridWidth: K,
123
- gridHeight: q,
124
- cells: [...N]
125
- }
126
- }] : [], [
127
- D,
128
- N,
129
- K,
130
- q
131
- ]), $ = e((e, t) => {
132
- t.kind === "grid" && P(t.cells);
133
- }, []), oe = e(async () => {
134
- if (!(!l || !N || !D)) {
135
- B(!0);
136
- try {
137
- let e = k(N, D.grid.width, D.grid.height, L), t = {
138
- kind: "grid",
139
- gridWidth: D.grid.width,
140
- gridHeight: D.grid.height,
141
- cells: e
142
- };
143
- await l.motionZones?.setZone({ patch: { regions: [{
144
- id: y,
145
- enabled: !0,
146
- shape: t
147
- }] } });
148
- let n = await l.motionZones?.getStatus({});
149
- if (n) {
150
- let e = n.regions.find((e) => e.shape.kind === "grid"), t = w(e ? e.shape.cells : [], D.grid.width, D.grid.height);
151
- I(t), P(O(t, D.grid.width, D.grid.height, L));
152
- }
153
- } catch (e) {
154
- console.error("Motion Zones save failed", e);
155
- } finally {
156
- B(!1);
157
- }
158
- }
159
- }, [
160
- l,
161
- N,
162
- D,
163
- L
164
- ]);
165
- return f(r(() => V && !j && D && N ? {
166
- id: v,
167
- order: _,
168
- node: /* @__PURE__ */ p(h, {
169
- transparent: !0,
170
- items: Q,
171
- supportedShapes: ["grid"],
172
- grid: {
173
- width: K,
174
- height: q
175
- },
176
- selectedId: y,
177
- onSelect: () => {},
178
- onShapeChange: $,
179
- onDrawComplete: () => {},
180
- drawingKind: null
181
- })
182
- } : null, [
183
- V,
184
- j,
185
- D,
186
- N,
187
- Q,
188
- $,
189
- K,
190
- q
191
- ])), l ? /* @__PURE__ */ p(d, {
192
- title: "Motion Zones",
193
- icon: /* @__PURE__ */ p(g, { className: "h-3.5 w-3.5 text-foreground-subtle" }),
194
- children: /* @__PURE__ */ p("div", {
195
- className: "flex flex-col gap-3",
196
- children: j ? /* @__PURE__ */ p("p", {
197
- className: `${u} leading-relaxed`,
198
- children: "This camera doesn't expose an on-board motion zones grid."
199
- }) : !j && D !== null && N !== null ? /* @__PURE__ */ m(ee, { children: [/* @__PURE__ */ m("p", {
200
- className: `${u} leading-relaxed`,
201
- children: [
202
- "Toggle ",
203
- /* @__PURE__ */ p("strong", {
204
- className: "text-foreground",
205
- children: "Edit grid"
206
- }),
207
- " to paint the region directly on the live frame, then ",
208
- /* @__PURE__ */ p("strong", {
209
- className: "text-foreground",
210
- children: "Save"
211
- }),
212
- " to push the mask to the camera. Pick a bigger",
213
- " ",
214
- /* @__PURE__ */ p("strong", {
215
- className: "text-foreground",
216
- children: "Cell size"
217
- }),
218
- " for quicker, broad-stroke painting — it's resampled to the camera's native ",
219
- D.grid.width,
220
- "×",
221
- D.grid.height,
222
- " grid on save (×1 is the finest)."
223
- ]
224
- }), /* @__PURE__ */ m("div", {
225
- className: "flex items-center gap-2 flex-wrap",
226
- children: [
227
- /* @__PURE__ */ p("button", {
228
- type: "button",
229
- onClick: () => H((e) => !e),
230
- disabled: z,
231
- "aria-pressed": V,
232
- className: V ? C : S,
233
- children: V ? "Done editing" : "Edit grid"
234
- }),
235
- /* @__PURE__ */ p("button", {
236
- type: "button",
237
- onClick: () => Z(!0),
238
- disabled: z,
239
- className: S,
240
- children: "All on"
241
- }),
242
- /* @__PURE__ */ p("button", {
243
- type: "button",
244
- onClick: () => Z(!1),
245
- disabled: z,
246
- className: S,
247
- children: "All off"
248
- }),
249
- /* @__PURE__ */ p("button", {
250
- type: "button",
251
- onClick: re,
252
- disabled: z,
253
- className: S,
254
- children: "Invert"
255
- }),
256
- /* @__PURE__ */ m("div", {
257
- className: "flex items-center gap-1 ml-1",
258
- role: "group",
259
- "aria-label": "Cell size",
260
- children: [/* @__PURE__ */ p("span", {
261
- className: `${u} mr-0.5`,
262
- children: "Cell size"
263
- }), b.map((e) => /* @__PURE__ */ m("button", {
264
- type: "button",
265
- onClick: () => ae(e),
266
- disabled: z,
267
- "aria-pressed": L === e,
268
- title: e === 1 ? `Camera grid ${W}×${G} (finest)` : `${E(W, e)}×${E(G, e)} painting grid · cells ×${e} bigger`,
269
- className: L === e ? C : S,
270
- children: ["×", e]
271
- }, e))]
272
- }),
273
- /* @__PURE__ */ m("span", {
274
- className: `${u} ml-1 tabular-nums`,
275
- children: [
276
- te,
277
- " / ",
278
- ne,
279
- " cells · ",
280
- D.grid.width,
281
- "×",
282
- D.grid.height,
283
- L === 1 ? "" : ` · paint ${K}×${q}`
284
- ]
285
- }),
286
- /* @__PURE__ */ p("span", { className: "flex-1" }),
287
- /* @__PURE__ */ p("button", {
288
- type: "button",
289
- onClick: ie,
290
- disabled: z || !Y,
291
- className: "rounded-md border border-border bg-surface px-2 py-1 text-[11px] text-foreground-subtle hover:bg-surface-hover disabled:opacity-40 transition-colors",
292
- children: "Revert"
293
- }),
294
- /* @__PURE__ */ p("button", {
295
- type: "button",
296
- onClick: () => void oe(),
297
- disabled: z || !Y,
298
- className: C,
299
- children: z ? "Saving…" : "Save"
300
- })
301
- ]
302
- })] }) : /* @__PURE__ */ p("p", {
303
- className: `${u} leading-relaxed`,
304
- children: "Loading the camera's grid…"
305
- })
306
- })
307
- }) : null;
308
- }
309
- //#endregion
310
- export { A as MotionZonesSettings };