@camstack/addon-osd-manager 0.1.184 → 0.1.185

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 (18) hide show
  1. package/dist/{MaskShapeCanvas-BT714ljC.mjs → MaskShapeCanvas-mrxtKs_l.mjs} +85 -85
  2. package/dist/MotionZonesSettings-DBooRvoC.mjs +310 -0
  3. package/dist/{PrivacyMaskSettings-CVXHA1TY.mjs → PrivacyMaskSettings-BOI23HW8.mjs} +14 -14
  4. package/dist/{SceneMonitorEditor-DfXktuc-.mjs → SceneMonitorEditor-Bh3b6fEU.mjs} +314 -314
  5. package/dist/_stub.js +4570 -4327
  6. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-WQk_9a7Q.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-CKsdRf-b.mjs} +3 -3
  7. package/dist/{_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-C5jUMd7X.mjs → _virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-D7xZfSHZ.mjs} +1 -1
  8. package/dist/addon-osd-manager.css +1 -1
  9. package/dist/{hostInit-B13AG8B3.mjs → hostInit-CBABPQis.mjs} +2 -2
  10. package/dist/{player-overlays-2U369Hn_.mjs → player-overlays-Do8k8gA2.mjs} +11 -11
  11. package/dist/remoteEntry.js +1 -1
  12. package/dist/{responsive-CX9nMQmP.mjs → responsive-yiWJoiT1.mjs} +35 -35
  13. package/dist/{scene-monitor-copy-mbiaJvpA.mjs → scene-monitor-copy-6bTPHwxW.mjs} +12 -12
  14. package/dist/{square-c2Ehe_cj.mjs → square-ClXZfZgc.mjs} +1 -1
  15. package/dist/{trash-2-C8s1nBjB.mjs → trash-2-Cm-45fYx.mjs} +1 -1
  16. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-Bi3cgGjf.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-BfGWacqv.mjs} +1 -1
  17. package/package.json +1 -1
  18. package/dist/MotionZonesSettings-D6SgWxHM.mjs +0 -310
@@ -0,0 +1,310 @@
1
+ import { _ as e, c as t, g as n, h as r, u as i, x as a } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-D7xZfSHZ.mjs";
2
+ import { c as o, n as s, o as c, r as ee, t as l } from "./responsive-yiWJoiT1.mjs";
3
+ import { n as te, t as u } from "./player-overlays-Do8k8gA2.mjs";
4
+ import { n as d, r as f, t as p } 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 m } from "./MaskShapeCanvas-mrxtKs_l.mjs";
6
+ var ne = o("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 re = 110, h = "motion-zones", g = 0, _ = [
28
+ 1,
29
+ 2,
30
+ 3
31
+ ], v = 1, y = "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", b = "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 x(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 S(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 C(e, t) {
43
+ return Math.ceil(e / t);
44
+ }
45
+ function w(e, t, n) {
46
+ return Math.min(n - 1, Math.floor((e + .5) / t * n));
47
+ }
48
+ function T(e, t, n, r) {
49
+ let i = C(t, r), a = C(n, r), o = Array.from({ length: i * a }, () => !1);
50
+ for (let r = 0; r < n; r += 1) {
51
+ let s = w(r, n, a);
52
+ for (let n = 0; n < t; n += 1) e[r * t + n] === !0 && (o[s * i + w(n, t, i)] = !0);
53
+ }
54
+ return o;
55
+ }
56
+ function E(e, t, n, r) {
57
+ let i = C(t, r), a = C(n, r), o = Array.from({ length: t * n }, () => !1);
58
+ for (let r = 0; r < n; r += 1) {
59
+ let s = w(r, n, a);
60
+ for (let n = 0; n < t; n += 1) o[r * t + n] = e[s * i + w(n, t, i)] === !0;
61
+ }
62
+ return o;
63
+ }
64
+ function D({ deviceId: a }) {
65
+ let o = ee(c().trpcClient, a), [w, D] = e(null), [O, k] = e(!1), [A, j] = e(null), [M, N] = e(null), [P, F] = e(v), [I, L] = e(!1), [R, z] = e(!1), B = n(!1);
66
+ i(() => {
67
+ if (!o) return;
68
+ let e = !1;
69
+ return B.current = !1, D(null), k(!1), j(null), N(null), F(v), z(!1), (async () => {
70
+ try {
71
+ let t = await o.motionZones?.getOptions({});
72
+ if (e) return;
73
+ if (!t) throw Error("device proxy not ready");
74
+ if (D(t), B.current) return;
75
+ let n = await o.motionZones?.getStatus({});
76
+ if (e) return;
77
+ if (!n) throw Error("device proxy not ready");
78
+ B.current = !0;
79
+ let r = n.regions.find((e) => e.shape.kind === "grid"), i = x(r ? r.shape.cells : [], t.grid.width, t.grid.height);
80
+ N(i), j(T(i, t.grid.width, t.grid.height, v));
81
+ } catch (t) {
82
+ if (e) return;
83
+ s(t) ? k(!0) : console.error("Motion Zones load failed", t);
84
+ }
85
+ })(), () => {
86
+ e = !0;
87
+ };
88
+ }, [o]);
89
+ let V = w ? w.grid.width : 0, H = w ? w.grid.height : 0, U = C(V, P), W = C(H, P), G = r(() => A && w ? E(A, V, H, P) : null, [
90
+ A,
91
+ w,
92
+ V,
93
+ H,
94
+ P
95
+ ]), K = r(() => G !== null && M !== null && !S(G, M), [G, M]), q = r(() => G ? G.reduce((e, t) => t ? e + 1 : e, 0) : 0, [G]), J = V * H, Y = U * W, X = t((e) => {
96
+ Y > 0 && j(Array.from({ length: Y }, () => e));
97
+ }, [Y]), Z = t(() => {
98
+ j((e) => e && e.map((e) => !e));
99
+ }, []), ie = t(() => {
100
+ M && w && j(T(M, V, H, P));
101
+ }, [
102
+ M,
103
+ w,
104
+ V,
105
+ H,
106
+ P
107
+ ]), ae = t((e) => {
108
+ e === P || !w || j((t) => {
109
+ if (!t) return F(e), t;
110
+ let n = T(E(t, V, H, P), V, H, e);
111
+ return F(e), n;
112
+ });
113
+ }, [
114
+ P,
115
+ w,
116
+ V,
117
+ H
118
+ ]), Q = r(() => w && A ? [{
119
+ id: g,
120
+ shape: {
121
+ kind: "grid",
122
+ gridWidth: U,
123
+ gridHeight: W,
124
+ cells: [...A]
125
+ }
126
+ }] : [], [
127
+ w,
128
+ A,
129
+ U,
130
+ W
131
+ ]), $ = t((e, t) => {
132
+ t.kind === "grid" && j(t.cells);
133
+ }, []), oe = t(async () => {
134
+ if (!(!o || !A || !w)) {
135
+ L(!0);
136
+ try {
137
+ let e = E(A, w.grid.width, w.grid.height, P), t = {
138
+ kind: "grid",
139
+ gridWidth: w.grid.width,
140
+ gridHeight: w.grid.height,
141
+ cells: e
142
+ };
143
+ await o.motionZones?.setZone({ patch: { regions: [{
144
+ id: g,
145
+ enabled: !0,
146
+ shape: t
147
+ }] } });
148
+ let n = await o.motionZones?.getStatus({});
149
+ if (n) {
150
+ let e = n.regions.find((e) => e.shape.kind === "grid"), t = x(e ? e.shape.cells : [], w.grid.width, w.grid.height);
151
+ N(t), j(T(t, w.grid.width, w.grid.height, P));
152
+ }
153
+ } catch (e) {
154
+ console.error("Motion Zones save failed", e);
155
+ } finally {
156
+ L(!1);
157
+ }
158
+ }
159
+ }, [
160
+ o,
161
+ A,
162
+ w,
163
+ P
164
+ ]);
165
+ return u(r(() => R && !O && w && A ? {
166
+ id: h,
167
+ order: re,
168
+ node: /* @__PURE__ */ d(m, {
169
+ transparent: !0,
170
+ items: Q,
171
+ supportedShapes: ["grid"],
172
+ grid: {
173
+ width: U,
174
+ height: W
175
+ },
176
+ selectedId: g,
177
+ onSelect: () => {},
178
+ onShapeChange: $,
179
+ onDrawComplete: () => {},
180
+ drawingKind: null
181
+ })
182
+ } : null, [
183
+ R,
184
+ O,
185
+ w,
186
+ A,
187
+ Q,
188
+ $,
189
+ U,
190
+ W
191
+ ])), o ? /* @__PURE__ */ d(te, {
192
+ title: "Motion Zones",
193
+ icon: /* @__PURE__ */ d(ne, { className: "h-3.5 w-3.5 text-foreground-subtle" }),
194
+ children: /* @__PURE__ */ d("div", {
195
+ className: "flex flex-col gap-3",
196
+ children: O ? /* @__PURE__ */ d("p", {
197
+ className: `${l} leading-relaxed`,
198
+ children: "This camera doesn't expose an on-board motion zones grid."
199
+ }) : !O && w !== null && A !== null ? /* @__PURE__ */ f(p, { children: [/* @__PURE__ */ f("p", {
200
+ className: `${l} leading-relaxed`,
201
+ children: [
202
+ "Toggle ",
203
+ /* @__PURE__ */ d("strong", {
204
+ className: "text-foreground",
205
+ children: "Edit grid"
206
+ }),
207
+ " to paint the region directly on the live frame, then ",
208
+ /* @__PURE__ */ d("strong", {
209
+ className: "text-foreground",
210
+ children: "Save"
211
+ }),
212
+ " to push the mask to the camera. Pick a bigger",
213
+ " ",
214
+ /* @__PURE__ */ d("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
+ w.grid.width,
220
+ "×",
221
+ w.grid.height,
222
+ " grid on save (×1 is the finest)."
223
+ ]
224
+ }), /* @__PURE__ */ f("div", {
225
+ className: "flex items-center gap-2 flex-wrap",
226
+ children: [
227
+ /* @__PURE__ */ d("button", {
228
+ type: "button",
229
+ onClick: () => z((e) => !e),
230
+ disabled: I,
231
+ "aria-pressed": R,
232
+ className: R ? b : y,
233
+ children: R ? "Done editing" : "Edit grid"
234
+ }),
235
+ /* @__PURE__ */ d("button", {
236
+ type: "button",
237
+ onClick: () => X(!0),
238
+ disabled: I,
239
+ className: y,
240
+ children: "All on"
241
+ }),
242
+ /* @__PURE__ */ d("button", {
243
+ type: "button",
244
+ onClick: () => X(!1),
245
+ disabled: I,
246
+ className: y,
247
+ children: "All off"
248
+ }),
249
+ /* @__PURE__ */ d("button", {
250
+ type: "button",
251
+ onClick: Z,
252
+ disabled: I,
253
+ className: y,
254
+ children: "Invert"
255
+ }),
256
+ /* @__PURE__ */ f("div", {
257
+ className: "flex items-center gap-1 ml-1",
258
+ role: "group",
259
+ "aria-label": "Cell size",
260
+ children: [/* @__PURE__ */ d("span", {
261
+ className: `${l} mr-0.5`,
262
+ children: "Cell size"
263
+ }), _.map((e) => /* @__PURE__ */ f("button", {
264
+ type: "button",
265
+ onClick: () => ae(e),
266
+ disabled: I,
267
+ "aria-pressed": P === e,
268
+ title: e === 1 ? `Camera grid ${V}×${H} (finest)` : `${C(V, e)}×${C(H, e)} painting grid · cells ×${e} bigger`,
269
+ className: P === e ? b : y,
270
+ children: ["×", e]
271
+ }, e))]
272
+ }),
273
+ /* @__PURE__ */ f("span", {
274
+ className: `${l} ml-1 tabular-nums`,
275
+ children: [
276
+ q,
277
+ " / ",
278
+ J,
279
+ " cells · ",
280
+ w.grid.width,
281
+ "×",
282
+ w.grid.height,
283
+ P === 1 ? "" : ` · paint ${U}×${W}`
284
+ ]
285
+ }),
286
+ /* @__PURE__ */ d("span", { className: "flex-1" }),
287
+ /* @__PURE__ */ d("button", {
288
+ type: "button",
289
+ onClick: ie,
290
+ disabled: I || !K,
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__ */ d("button", {
295
+ type: "button",
296
+ onClick: () => void oe(),
297
+ disabled: I || !K,
298
+ className: b,
299
+ children: I ? "Saving…" : "Save"
300
+ })
301
+ ]
302
+ })] }) : /* @__PURE__ */ d("p", {
303
+ className: `${l} leading-relaxed`,
304
+ children: "Loading the camera's grid…"
305
+ })
306
+ })
307
+ }) : null;
308
+ }
309
+ //#endregion
310
+ export { D as MotionZonesSettings };
@@ -1,17 +1,17 @@
1
- import { b as e, c as t, g as n, h as r, m as i, u as a } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-C5jUMd7X.mjs";
2
- import { c as o, n as ee, o as te, r as ne, t as s } from "./responsive-CX9nMQmP.mjs";
3
- import { n as re, t as ie } from "./player-overlays-2U369Hn_.mjs";
4
- import { i as ae, n as oe, r as se, t as c } from "./square-c2Ehe_cj.mjs";
5
- import { t as ce } from "./trash-2-C8s1nBjB.mjs";
1
+ import { _ as e, c as t, g as n, h as r, u as i, x as a } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-D7xZfSHZ.mjs";
2
+ import { c as o, n as ee, o as te, r as ne, t as s } from "./responsive-yiWJoiT1.mjs";
3
+ import { n as re, t as ie } from "./player-overlays-Do8k8gA2.mjs";
4
+ import { i as ae, n as oe, r as se, t as c } from "./square-ClXZfZgc.mjs";
5
+ import { t as ce } from "./trash-2-Cm-45fYx.mjs";
6
6
  import { n as l, r as u, t as le } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DalfdIDw.mjs";
7
- import { MaskShapeCanvas as ue } from "./MaskShapeCanvas-BT714ljC.mjs";
7
+ import { MaskShapeCanvas as ue } from "./MaskShapeCanvas-mrxtKs_l.mjs";
8
8
  var de = o("hexagon", [["path", {
9
9
  d: "M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z",
10
10
  key: "yt0hxn"
11
11
  }]]);
12
12
  //#endregion
13
13
  //#region ../ui-library/src/composites/cap-settings/privacy-mask-audio.ts
14
- e();
14
+ a();
15
15
  var d = "Microphone", f = "The camera encodes no audio at all — live view, recordings, exports and the audio analyzer are all silent.";
16
16
  function p(e) {
17
17
  let t = e.supportsAudioMute === !0, n = t ? e.audioEnabled : null, r = e.pendingOn ?? null;
@@ -42,9 +42,9 @@ function he(e, t) {
42
42
  for (let n = 0; n < e.length; n += 1) if (JSON.stringify(e[n]) !== JSON.stringify(t[n])) return !1;
43
43
  return !0;
44
44
  }
45
- function v({ deviceId: e }) {
46
- let o = ne(te().trpcClient, e), [d, f] = n(null), [v, y] = n(!1), [b, x] = n(!1), [S, C] = n(null), [w, T] = n(null), [E, D] = n(!1), [O, k] = n(!1), [A, j] = n(null), [M, N] = n(null), [ge, P] = n(null), [F, I] = n(null), [L, R] = n(null), z = r(!1);
47
- a(() => {
45
+ function v({ deviceId: a }) {
46
+ let o = ne(te().trpcClient, a), [d, f] = e(null), [v, y] = e(!1), [b, x] = e(!1), [S, C] = e(null), [w, T] = e(null), [E, D] = e(!1), [O, k] = e(!1), [A, j] = e(null), [M, N] = e(null), [ge, P] = e(null), [F, I] = e(null), [L, R] = e(null), z = n(!1);
47
+ i(() => {
48
48
  if (!o) return;
49
49
  let e = !1;
50
50
  return z.current = !1, f(null), y(!1), x(!1), C(null), T(null), k(!1), j(null), N(null), P(null), I(null), R(null), (async () => {
@@ -74,8 +74,8 @@ function v({ deviceId: e }) {
74
74
  e = !0;
75
75
  };
76
76
  }, [o]);
77
- let B = i(() => S !== null && w !== null && (S.enabled !== w.enabled || !he(S.regions, w.regions)), [S, w]), V = S ? S.regions.length : 0, H = d ? d.maxRegions : 0, U = r(0);
78
- a(() => {
77
+ let B = r(() => S !== null && w !== null && (S.enabled !== w.enabled || !he(S.regions, w.regions)), [S, w]), V = S ? S.regions.length : 0, H = d ? d.maxRegions : 0, U = n(0);
78
+ i(() => {
79
79
  U.current = H;
80
80
  }, [H]);
81
81
  let W = H > 0 && V >= H, _e = t(() => {
@@ -85,7 +85,7 @@ function v({ deviceId: e }) {
85
85
  });
86
86
  }, []), G = t((e) => {
87
87
  j(typeof e == "number" ? e : null);
88
- }, []), K = i(() => S ? S.regions.map((e) => ({
88
+ }, []), K = r(() => S ? S.regions.map((e) => ({
89
89
  id: e.id,
90
90
  shape: e.shape,
91
91
  enabled: e.enabled,
@@ -172,7 +172,7 @@ function v({ deviceId: e }) {
172
172
  }, [o, Z]), Se = t(() => {
173
173
  k((e) => (e && (N(null), j(null)), !e));
174
174
  }, []), Q = d?.supportedShapes ?? [];
175
- ie(i(() => O && !v && d && S ? {
175
+ ie(r(() => O && !v && d && S ? {
176
176
  id: pe,
177
177
  order: fe,
178
178
  node: /* @__PURE__ */ l(ue, {