@camstack/addon-osd-manager 0.1.128 → 0.1.129

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.
@@ -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 ee, s as c, t as l } from "./cap-error-Cj2E3c0-.mjs";
3
- import { n as te, t as u } from "./player-overlays-B1QNz7_H.mjs";
4
- import { n as d, r as f, t as ne } 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 re } from "./MaskShapeCanvas-BEVxAjNq.mjs";
6
- var p = c("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 m = 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 c = ee(o().trpcClient, a), [w, D] = t(null), [O, k] = t(!1), [A, j] = t(null), [M, N] = t(null), [P, F] = t(v), [I, L] = t(!1), [R, z] = t(!1), B = n(!1);
66
- i(() => {
67
- if (!c) 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 c.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 c.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
- l(t) ? k(!0) : console.error("Motion Zones load failed", t);
84
- }
85
- })(), () => {
86
- e = !0;
87
- };
88
- }, [c]);
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 = e((e) => {
96
- Y > 0 && j(Array.from({ length: Y }, () => e));
97
- }, [Y]), ie = e(() => {
98
- j((e) => e && e.map((e) => !e));
99
- }, []), Z = e(() => {
100
- M && w && j(T(M, V, H, P));
101
- }, [
102
- M,
103
- w,
104
- V,
105
- H,
106
- P
107
- ]), ae = e((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
- ]), $ = e((e, t) => {
132
- t.kind === "grid" && j(t.cells);
133
- }, []), oe = e(async () => {
134
- if (!(!c || !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 c.motionZones?.setZone({ patch: { regions: [{
144
- id: g,
145
- enabled: !0,
146
- shape: t
147
- }] } });
148
- let n = await c.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
- c,
161
- A,
162
- w,
163
- P
164
- ]);
165
- return u(r(() => R && !O && w && A ? {
166
- id: h,
167
- order: m,
168
- node: /* @__PURE__ */ d(re, {
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
- ])), c ? /* @__PURE__ */ d(te, {
192
- title: "Motion Zones",
193
- icon: /* @__PURE__ */ d(p, { 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: `${s} leading-relaxed`,
198
- children: "This camera doesn't expose an on-board motion zones grid."
199
- }) : !O && w !== null && A !== null ? /* @__PURE__ */ f(ne, { children: [/* @__PURE__ */ f("p", {
200
- className: `${s} 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: ie,
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: `${s} 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: `${s} 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: Z,
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: `${s} leading-relaxed`,
304
- children: "Loading the camera's grid…"
305
- })
306
- })
307
- }) : null;
308
- }
309
- //#endregion
310
- export { D as MotionZonesSettings };