@camstack/addon-model-studio 1.1.208 → 1.1.209

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 (20) hide show
  1. package/dist/MotionZonesSettings-DPVW36SY.mjs +310 -0
  2. package/dist/{PrivacyMaskSettings-BR1W0Jdz.mjs → PrivacyMaskSettings-CE3p-uMG.mjs} +5 -5
  3. package/dist/{SceneMonitorEditor-C2hv7m4b.mjs → SceneMonitorEditor-B0ZWDpU7.mjs} +285 -285
  4. package/dist/_stub.js +6463 -5786
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-BXiGIO9F.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-CXndlwsf.mjs} +3 -3
  6. package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DMYNiT-L.mjs +26 -0
  7. package/dist/addon-model-studio.css +1 -1
  8. package/dist/{hostInit-BjI6ZGeQ.mjs → hostInit-DpDYa2D-.mjs} +2 -2
  9. package/dist/model-studio.addon.js +292 -9
  10. package/dist/model-studio.addon.mjs +292 -9
  11. package/dist/{player-overlays-DyvbN32a.mjs → player-overlays-B06LE_Gr.mjs} +5 -5
  12. package/dist/remoteEntry.js +1 -1
  13. package/dist/{responsive-B85nuotM.mjs → responsive-BV0NkBXa.mjs} +3 -3
  14. package/dist/{scene-monitor-copy-DY98vLAG.mjs → scene-monitor-copy-BEsrfWnh.mjs} +1 -1
  15. package/dist/{square-CqTd_dbN.mjs → square-1mDEdKJ6.mjs} +1 -1
  16. package/dist/{trash-2-CwTAu8_U.mjs → trash-2-BJYsA9Vu.mjs} +1 -1
  17. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CejkP6cN.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CmWc3NQd.mjs} +1 -1
  18. package/package.json +1 -1
  19. package/dist/MotionZonesSettings-CfPlD9DG.mjs +0 -310
  20. package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CVVm4Mi7.mjs +0 -26
@@ -0,0 +1,310 @@
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_model_studio_page__loadShare__react__loadShare__.js-DJDHChgO.mjs";
2
+ import { b as o, g as s, h as c, p as l, v as u } from "./responsive-BV0NkBXa.mjs";
3
+ import { n as ee, t as d } from "./player-overlays-B06LE_Gr.mjs";
4
+ import { n as f, r as p, t as te } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
5
+ import { MaskShapeCanvas as m } from "./MaskShapeCanvas-C4g96eMz.mjs";
6
+ var h = 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 ne = 110, re = "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 = s(u().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 (!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
+ c(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 = e((e) => {
96
+ Y > 0 && j(Array.from({ length: Y }, () => e));
97
+ }, [Y]), Z = e(() => {
98
+ j((e) => e && e.map((e) => !e));
99
+ }, []), ie = 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 (!(!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 d(r(() => R && !O && w && A ? {
166
+ id: re,
167
+ order: ne,
168
+ node: /* @__PURE__ */ f(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__ */ f(ee, {
192
+ title: "Motion Zones",
193
+ icon: /* @__PURE__ */ f(h, { className: "h-3.5 w-3.5 text-foreground-subtle" }),
194
+ children: /* @__PURE__ */ f("div", {
195
+ className: "flex flex-col gap-3",
196
+ children: O ? /* @__PURE__ */ f("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__ */ p(te, { children: [/* @__PURE__ */ p("p", {
200
+ className: `${l} leading-relaxed`,
201
+ children: [
202
+ "Toggle ",
203
+ /* @__PURE__ */ f("strong", {
204
+ className: "text-foreground",
205
+ children: "Edit grid"
206
+ }),
207
+ " to paint the region directly on the live frame, then ",
208
+ /* @__PURE__ */ f("strong", {
209
+ className: "text-foreground",
210
+ children: "Save"
211
+ }),
212
+ " to push the mask to the camera. Pick a bigger",
213
+ " ",
214
+ /* @__PURE__ */ f("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__ */ p("div", {
225
+ className: "flex items-center gap-2 flex-wrap",
226
+ children: [
227
+ /* @__PURE__ */ f("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__ */ f("button", {
236
+ type: "button",
237
+ onClick: () => X(!0),
238
+ disabled: I,
239
+ className: y,
240
+ children: "All on"
241
+ }),
242
+ /* @__PURE__ */ f("button", {
243
+ type: "button",
244
+ onClick: () => X(!1),
245
+ disabled: I,
246
+ className: y,
247
+ children: "All off"
248
+ }),
249
+ /* @__PURE__ */ f("button", {
250
+ type: "button",
251
+ onClick: Z,
252
+ disabled: I,
253
+ className: y,
254
+ children: "Invert"
255
+ }),
256
+ /* @__PURE__ */ p("div", {
257
+ className: "flex items-center gap-1 ml-1",
258
+ role: "group",
259
+ "aria-label": "Cell size",
260
+ children: [/* @__PURE__ */ f("span", {
261
+ className: `${l} mr-0.5`,
262
+ children: "Cell size"
263
+ }), _.map((e) => /* @__PURE__ */ p("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__ */ p("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__ */ f("span", { className: "flex-1" }),
287
+ /* @__PURE__ */ f("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__ */ f("button", {
295
+ type: "button",
296
+ onClick: () => void oe(),
297
+ disabled: I || !K,
298
+ className: b,
299
+ children: I ? "Saving…" : "Save"
300
+ })
301
+ ]
302
+ })] }) : /* @__PURE__ */ f("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,8 +1,8 @@
1
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_model_studio_page__loadShare__react__loadShare__.js-DJDHChgO.mjs";
2
- import { a as ee, n as te, r as ne, s as o, t as s } from "./responsive-B85nuotM.mjs";
3
- import { n as re, t as ie } from "./player-overlays-DyvbN32a.mjs";
4
- import { n as ae, r as oe, t as se } from "./square-CqTd_dbN.mjs";
5
- import { t as c } from "./trash-2-CwTAu8_U.mjs";
2
+ import { b as o, g as ee, h as te, p as s, v as ne } from "./responsive-BV0NkBXa.mjs";
3
+ import { n as re, t as ie } from "./player-overlays-B06LE_Gr.mjs";
4
+ import { n as ae, r as oe, t as se } from "./square-1mDEdKJ6.mjs";
5
+ import { t as c } from "./trash-2-BJYsA9Vu.mjs";
6
6
  import { n as l, r as u, t as ce } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
7
7
  import { MaskShapeCanvas as le } from "./MaskShapeCanvas-C4g96eMz.mjs";
8
8
  var ue = o("hexagon", [["path", {
@@ -68,7 +68,7 @@ function he(e, t) {
68
68
  return !0;
69
69
  }
70
70
  function v({ deviceId: a }) {
71
- let o = ne(ee().trpcClient, a), [d, f] = t(null), [v, y] = t(!1), [b, x] = t(!1), [S, C] = t(null), [w, T] = t(null), [E, D] = t(!1), [O, k] = t(!1), [A, j] = t(null), [M, N] = t(null), [ge, P] = t(null), [F, I] = t(null), [L, R] = t(null), z = n(!1);
71
+ let o = ee(ne().trpcClient, a), [d, f] = t(null), [v, y] = t(!1), [b, x] = t(!1), [S, C] = t(null), [w, T] = t(null), [E, D] = t(!1), [O, k] = t(!1), [A, j] = t(null), [M, N] = t(null), [ge, P] = t(null), [F, I] = t(null), [L, R] = t(null), z = n(!1);
72
72
  i(() => {
73
73
  if (!o) return;
74
74
  let e = !1;