@camstack/addon-model-studio 1.1.107 → 1.1.109

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,14 +1,14 @@
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
2
  import { a as ee, n as te, r as ne, s as o, t as s } from "./responsive-CDob01xQ.mjs";
3
- import { n as re, t as c } from "./player-overlays-zjGpr2DV.mjs";
4
- import { n as l, r as ie, t as ae } from "./square-DVxG0_w-.mjs";
5
- import { t as oe } from "./trash-2-BgbLMJP2.mjs";
6
- import { n as u, r as d, t as se } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
7
- import { MaskShapeCanvas as ce } from "./MaskShapeCanvas-C4g96eMz.mjs";
8
- var le = o("hexagon", [["path", {
3
+ import { n as re, t as ie } from "./player-overlays-zjGpr2DV.mjs";
4
+ import { n as ae, r as oe, t as se } from "./square-DVxG0_w-.mjs";
5
+ import { t as c } from "./trash-2-BgbLMJP2.mjs";
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
+ import { MaskShapeCanvas as le } from "./MaskShapeCanvas-C4g96eMz.mjs";
8
+ var ue = 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
- }]]), ue = o("mic-off", [
11
+ }]]), de = o("mic-off", [
12
12
  ["path", {
13
13
  d: "M12 19v3",
14
14
  key: "npa21l"
@@ -37,15 +37,15 @@ var le = o("hexagon", [["path", {
37
37
  //#endregion
38
38
  //#region ../ui-library/src/composites/cap-settings/privacy-mask-audio.ts
39
39
  a();
40
- var f = "Microphone", p = "The camera encodes no audio at all — live view, recordings, exports and the audio analyzer are all silent.";
41
- function de(e) {
40
+ var d = "Microphone", f = "The camera encodes no audio at all — live view, recordings, exports and the audio analyzer are all silent.";
41
+ function p(e) {
42
42
  let t = e.supportsAudioMute === !0, n = t ? e.audioEnabled : null, r = e.pendingOn ?? null;
43
43
  return {
44
- label: f,
44
+ label: d,
45
45
  supported: t,
46
46
  on: n === null ? null : r ?? n,
47
47
  available: t && n !== null,
48
- costWhenOff: p
48
+ costWhenOff: f
49
49
  };
50
50
  }
51
51
  function m(e) {
@@ -53,34 +53,38 @@ function m(e) {
53
53
  }
54
54
  //#endregion
55
55
  //#region ../ui-library/src/composites/cap-settings/PrivacyMaskSettings.tsx
56
- var fe = 120, h = "privacy-mask", g = "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", _ = "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";
57
- function v(e) {
56
+ var fe = 120, pe = "privacy-mask", h = "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", g = "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";
57
+ function _(e) {
58
58
  return e.kind === "rect" || e.kind === "polygon" ? e : null;
59
59
  }
60
- function pe(e) {
60
+ function me(e) {
61
61
  let t = new Set(e.map((e) => e.id)), n = 0;
62
62
  for (; t.has(n);) n += 1;
63
63
  return n;
64
64
  }
65
- function y(e, t) {
65
+ function he(e, t) {
66
66
  if (e.length !== t.length) return !1;
67
67
  for (let n = 0; n < e.length; n += 1) if (JSON.stringify(e[n]) !== JSON.stringify(t[n])) return !1;
68
68
  return !0;
69
69
  }
70
- function b({ deviceId: a }) {
71
- let o = ne(ee().trpcClient, a), [f, p] = t(null), [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), [me, P] = t(null), [F, I] = t(null), [L, R] = t(null), z = n(!1);
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);
72
72
  i(() => {
73
73
  if (!o) return;
74
74
  let e = !1;
75
- return z.current = !1, p(null), x(!1), C(null), T(null), k(!1), j(null), N(null), P(null), I(null), R(null), (async () => {
75
+ 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 () => {
76
76
  try {
77
77
  let t = await o.privacyMask?.getOptions({});
78
78
  if (e) return;
79
79
  if (!t) throw Error("device proxy not ready");
80
- if (p(t), z.current) return;
80
+ if (f(t), z.current) return;
81
81
  let n = await o.privacyMask?.getStatus({});
82
82
  if (e) return;
83
83
  if (!n) throw Error("device proxy not ready");
84
+ if (n.regions === null) {
85
+ x(!0), P(n.audioEnabled);
86
+ return;
87
+ }
84
88
  z.current = !0;
85
89
  let r = {
86
90
  enabled: n.enabled,
@@ -89,17 +93,17 @@ function b({ deviceId: a }) {
89
93
  T(r), C(r), P(n.audioEnabled);
90
94
  } catch (t) {
91
95
  if (e) return;
92
- te(t) ? x(!0) : console.error("Privacy Mask load failed", t);
96
+ te(t) ? y(!0) : console.error("Privacy Mask load failed", t);
93
97
  }
94
98
  })(), () => {
95
99
  e = !0;
96
100
  };
97
101
  }, [o]);
98
- let B = r(() => S !== null && w !== null && (S.enabled !== w.enabled || !y(S.regions, w.regions)), [S, w]), V = S ? S.regions.length : 0, H = f ? f.maxRegions : 0, U = n(0);
102
+ 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);
99
103
  i(() => {
100
104
  U.current = H;
101
105
  }, [H]);
102
- let W = H > 0 && V >= H, he = e(() => {
106
+ let W = H > 0 && V >= H, _e = e(() => {
103
107
  C((e) => e && {
104
108
  ...e,
105
109
  enabled: !e.enabled
@@ -112,7 +116,7 @@ function b({ deviceId: a }) {
112
116
  enabled: e.enabled,
113
117
  label: `Zone ${String(e.id)}`
114
118
  })) : [], [S]), q = e((e, t) => {
115
- let n = v(t);
119
+ let n = _(t);
116
120
  n && C((t) => t && {
117
121
  ...t,
118
122
  regions: t.regions.map((t) => t.id === e ? {
@@ -121,12 +125,12 @@ function b({ deviceId: a }) {
121
125
  } : t)
122
126
  });
123
127
  }, []), J = e((e) => {
124
- let t = v(e);
128
+ let t = _(e);
125
129
  t && (N(null), C((e) => {
126
130
  if (!e) return e;
127
131
  let n = U.current;
128
132
  if (n > 0 && e.regions.length >= n) return e;
129
- let r = pe(e.regions), i = {
133
+ let r = me(e.regions), i = {
130
134
  id: r,
131
135
  enabled: !0,
132
136
  shape: t
@@ -138,19 +142,19 @@ function b({ deviceId: a }) {
138
142
  }));
139
143
  }, []), Y = e((e) => {
140
144
  k(!0), j(null), N(e);
141
- }, []), ge = e((e) => {
145
+ }, []), ve = e((e) => {
142
146
  k(!0), N(null), j(e);
143
147
  }, []), X = e((e) => {
144
148
  j((t) => t === e ? null : t), C((t) => t && {
145
149
  ...t,
146
150
  regions: t.regions.filter((t) => t.id !== e)
147
151
  });
148
- }, []), _e = e(() => {
152
+ }, []), ye = e(() => {
149
153
  N(null), j(null), w && C({
150
154
  enabled: w.enabled,
151
155
  regions: w.regions
152
156
  });
153
- }, [w]), ve = e(async () => {
157
+ }, [w]), be = e(async () => {
154
158
  if (!(!o || !S)) {
155
159
  D(!0);
156
160
  try {
@@ -159,7 +163,7 @@ function b({ deviceId: a }) {
159
163
  regions: [...S.regions]
160
164
  } });
161
165
  let e = await o.privacyMask?.getStatus({});
162
- if (e) {
166
+ if (e && e.regions !== null) {
163
167
  let t = {
164
168
  enabled: e.enabled,
165
169
  regions: e.regions
@@ -172,11 +176,11 @@ function b({ deviceId: a }) {
172
176
  D(!1);
173
177
  }
174
178
  }
175
- }, [o, S]), Z = de({
176
- supportsAudioMute: f === null ? null : f.supportsAudioMute,
177
- audioEnabled: me,
179
+ }, [o, S]), Z = p({
180
+ supportsAudioMute: d === null ? null : d.supportsAudioMute,
181
+ audioEnabled: ge,
178
182
  pendingOn: F
179
- }), ye = e(async () => {
183
+ }), xe = e(async () => {
180
184
  let e = m(Z);
181
185
  if (!(!o || e === null)) {
182
186
  I(e.enabled), R(null);
@@ -190,17 +194,17 @@ function b({ deviceId: a }) {
190
194
  I(null);
191
195
  }
192
196
  }
193
- }, [o, Z]), be = e(() => {
197
+ }, [o, Z]), Se = e(() => {
194
198
  k((e) => (e && (N(null), j(null)), !e));
195
- }, []), Q = f?.supportedShapes ?? [];
196
- c(r(() => O && !b && f && S ? {
197
- id: h,
199
+ }, []), Q = d?.supportedShapes ?? [];
200
+ ie(r(() => O && !v && d && S ? {
201
+ id: pe,
198
202
  order: fe,
199
- node: /* @__PURE__ */ u(ce, {
203
+ node: /* @__PURE__ */ l(le, {
200
204
  transparent: !0,
201
205
  items: K,
202
206
  supportedShapes: Q,
203
- polygonVertices: f.polygonVertices,
207
+ polygonVertices: d.polygonVertices,
204
208
  selectedId: A,
205
209
  onSelect: G,
206
210
  onShapeChange: q,
@@ -209,8 +213,8 @@ function b({ deviceId: a }) {
209
213
  })
210
214
  } : null, [
211
215
  O,
212
- b,
213
- f,
216
+ v,
217
+ d,
214
218
  S,
215
219
  K,
216
220
  Q,
@@ -220,70 +224,73 @@ function b({ deviceId: a }) {
220
224
  J,
221
225
  M
222
226
  ]));
223
- let xe = f?.supportedShapes.includes("rect") ?? !1, Se = f?.supportedShapes.includes("polygon") ?? !1, $ = f !== null && (f.maxRegions <= 0 || f.supportedShapes.length === 0);
224
- return o ? /* @__PURE__ */ u(re, {
227
+ let Ce = d?.supportedShapes.includes("rect") ?? !1, we = d?.supportedShapes.includes("polygon") ?? !1, $ = d !== null && (d.maxRegions <= 0 || d.supportedShapes.length === 0);
228
+ return o ? /* @__PURE__ */ l(re, {
225
229
  title: "Privacy Mask",
226
- icon: /* @__PURE__ */ u(ie, { className: "h-3.5 w-3.5 text-foreground-subtle" }),
227
- children: /* @__PURE__ */ d("div", {
230
+ icon: /* @__PURE__ */ l(oe, { className: "h-3.5 w-3.5 text-foreground-subtle" }),
231
+ children: /* @__PURE__ */ u("div", {
228
232
  className: "flex flex-col gap-3",
229
- children: [b || $ ? /* @__PURE__ */ u("p", {
233
+ children: [v || $ ? /* @__PURE__ */ l("p", {
230
234
  className: `${s} leading-relaxed`,
231
235
  children: "This camera doesn't support an on-board privacy mask."
232
- }) : !b && !$ && f !== null && S !== null ? /* @__PURE__ */ d(se, { children: [
233
- /* @__PURE__ */ d("p", {
236
+ }) : b ? /* @__PURE__ */ l("p", {
237
+ className: `${s} leading-relaxed`,
238
+ children: "This camera hasn't answered, so what it currently masks is unknown — the editor stays closed rather than showing an empty frame you could save over. A battery camera answers once it wakes; otherwise check that it is reachable."
239
+ }) : !v && !$ && !b && d !== null && S !== null ? /* @__PURE__ */ u(ce, { children: [
240
+ /* @__PURE__ */ u("p", {
234
241
  className: `${s} leading-relaxed`,
235
242
  children: [
236
243
  "Toggle ",
237
- /* @__PURE__ */ u("strong", {
244
+ /* @__PURE__ */ l("strong", {
238
245
  className: "text-foreground",
239
246
  children: "Edit mask"
240
247
  }),
241
248
  " to draw blanked-out zones on the live frame, then ",
242
- /* @__PURE__ */ u("strong", {
249
+ /* @__PURE__ */ l("strong", {
243
250
  className: "text-foreground",
244
251
  children: "Save"
245
252
  }),
246
253
  " to push them to the camera. Drag a rectangle to move, its corner to resize; drag polygon vertices, click an edge midpoint to add one, or right-click a vertex to remove it."
247
254
  ]
248
255
  }),
249
- /* @__PURE__ */ d("div", {
256
+ /* @__PURE__ */ u("div", {
250
257
  className: "flex items-center gap-2 flex-wrap",
251
258
  children: [
252
- /* @__PURE__ */ u("button", {
259
+ /* @__PURE__ */ l("button", {
253
260
  type: "button",
254
- onClick: be,
261
+ onClick: Se,
255
262
  disabled: E,
256
263
  "aria-pressed": O,
257
- className: O ? _ : g,
264
+ className: O ? g : h,
258
265
  children: O ? "Done editing" : "Edit mask"
259
266
  }),
260
- /* @__PURE__ */ u("button", {
267
+ /* @__PURE__ */ l("button", {
261
268
  type: "button",
262
- onClick: he,
269
+ onClick: _e,
263
270
  disabled: E,
264
271
  "aria-pressed": S.enabled,
265
- className: S.enabled ? _ : g,
272
+ className: S.enabled ? g : h,
266
273
  children: S.enabled ? "Mask on" : "Mask off"
267
274
  }),
268
- xe && /* @__PURE__ */ u("button", {
275
+ Ce && /* @__PURE__ */ l("button", {
269
276
  type: "button",
270
277
  onClick: () => Y("rect"),
271
278
  disabled: E || W,
272
279
  "aria-pressed": M === "rect",
273
- className: M === "rect" ? _ : g,
280
+ className: M === "rect" ? g : h,
274
281
  title: W ? "Maximum zones reached" : "Add a rectangle zone",
275
282
  children: "+ Rect"
276
283
  }),
277
- Se && /* @__PURE__ */ u("button", {
284
+ we && /* @__PURE__ */ l("button", {
278
285
  type: "button",
279
286
  onClick: () => Y("polygon"),
280
287
  disabled: E || W,
281
288
  "aria-pressed": M === "polygon",
282
- className: M === "polygon" ? _ : g,
289
+ className: M === "polygon" ? g : h,
283
290
  title: W ? "Maximum zones reached" : "Add a polygon zone",
284
291
  children: "+ Polygon"
285
292
  }),
286
- /* @__PURE__ */ d("span", {
293
+ /* @__PURE__ */ u("span", {
287
294
  className: `${s} ml-1 tabular-nums`,
288
295
  children: [
289
296
  V,
@@ -292,73 +299,73 @@ function b({ deviceId: a }) {
292
299
  " zones"
293
300
  ]
294
301
  }),
295
- /* @__PURE__ */ u("span", { className: "flex-1" }),
296
- /* @__PURE__ */ u("button", {
302
+ /* @__PURE__ */ l("span", { className: "flex-1" }),
303
+ /* @__PURE__ */ l("button", {
297
304
  type: "button",
298
- onClick: _e,
305
+ onClick: ye,
299
306
  disabled: E || !B,
300
307
  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",
301
308
  children: "Revert"
302
309
  }),
303
- /* @__PURE__ */ u("button", {
310
+ /* @__PURE__ */ l("button", {
304
311
  type: "button",
305
- onClick: () => void ve(),
312
+ onClick: () => void be(),
306
313
  disabled: E || !B,
307
- className: _,
314
+ className: g,
308
315
  children: E ? "Saving…" : "Save"
309
316
  })
310
317
  ]
311
318
  }),
312
- V > 0 ? /* @__PURE__ */ u("div", {
319
+ V > 0 ? /* @__PURE__ */ l("div", {
313
320
  className: "flex flex-col gap-1",
314
321
  children: S.regions.map((e) => {
315
- let t = A === e.id, n = e.shape.kind === "polygon" ? le : ae;
316
- return /* @__PURE__ */ d("div", {
322
+ let t = A === e.id, n = e.shape.kind === "polygon" ? ue : se;
323
+ return /* @__PURE__ */ u("div", {
317
324
  className: `flex items-center gap-2 rounded-md border px-2 py-1 transition-colors ${t ? "border-primary/50 bg-primary/10" : "border-border bg-surface"}`,
318
- children: [/* @__PURE__ */ d("button", {
325
+ children: [/* @__PURE__ */ u("button", {
319
326
  type: "button",
320
- onClick: () => ge(e.id),
327
+ onClick: () => ve(e.id),
321
328
  disabled: E,
322
329
  className: "flex flex-1 items-center gap-2 text-left text-[11px] font-medium text-foreground-subtle hover:text-foreground disabled:opacity-40 transition-colors",
323
330
  children: [
324
- /* @__PURE__ */ u(n, { className: "h-3.5 w-3.5 shrink-0" }),
325
- /* @__PURE__ */ d("span", { children: ["Zone ", e.id] }),
326
- /* @__PURE__ */ u("span", {
331
+ /* @__PURE__ */ l(n, { className: "h-3.5 w-3.5 shrink-0" }),
332
+ /* @__PURE__ */ u("span", { children: ["Zone ", e.id] }),
333
+ /* @__PURE__ */ l("span", {
327
334
  className: "text-foreground-faint capitalize",
328
335
  children: e.shape.kind
329
336
  })
330
337
  ]
331
- }), /* @__PURE__ */ u("button", {
338
+ }), /* @__PURE__ */ l("button", {
332
339
  type: "button",
333
340
  onClick: () => X(e.id),
334
341
  disabled: E,
335
342
  "aria-label": `Delete zone ${String(e.id)}`,
336
343
  title: "Delete zone",
337
344
  className: "inline-flex h-6 w-6 items-center justify-center rounded border border-border bg-surface text-foreground-subtle hover:border-red-400/40 hover:bg-red-500/10 hover:text-red-400 disabled:opacity-40 transition-colors",
338
- children: /* @__PURE__ */ u(oe, { className: "h-3.5 w-3.5" })
345
+ children: /* @__PURE__ */ l(c, { className: "h-3.5 w-3.5" })
339
346
  })]
340
347
  }, e.id);
341
348
  })
342
349
  }) : null
343
- ] }) : /* @__PURE__ */ u("p", {
350
+ ] }) : /* @__PURE__ */ l("p", {
344
351
  className: `${s} leading-relaxed`,
345
352
  children: "Loading the camera's privacy mask…"
346
- }), Z.supported && /* @__PURE__ */ d("div", {
353
+ }), Z.supported && /* @__PURE__ */ u("div", {
347
354
  className: "flex items-start gap-3 rounded-md border border-border bg-surface px-2 py-2",
348
- children: [/* @__PURE__ */ u("button", {
355
+ children: [/* @__PURE__ */ l("button", {
349
356
  type: "button",
350
357
  role: "switch",
351
358
  "aria-label": Z.label,
352
359
  "aria-checked": Z.on === !0,
353
360
  disabled: !Z.available || F !== null,
354
- onClick: () => void ye(),
361
+ onClick: () => void xe(),
355
362
  title: Z.on === null ? "Microphone — state unknown; the camera did not answer." : Z.on ? `The camera is capturing sound. Turning it off: ${Z.costWhenOff}` : `The camera is silent. ${Z.costWhenOff}`,
356
- className: Z.on === !1 || Z.on === null ? g : _,
357
- children: /* @__PURE__ */ d("span", {
363
+ className: Z.on === !1 || Z.on === null ? h : g,
364
+ children: /* @__PURE__ */ u("span", {
358
365
  className: "inline-flex items-center gap-1.5",
359
- children: [Z.on === !1 ? /* @__PURE__ */ u(ue, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ u(l, { className: "h-3.5 w-3.5" }), Z.on === null ? "Microphone unknown" : Z.on ? "Microphone on" : "Microphone off"]
366
+ children: [Z.on === !1 ? /* @__PURE__ */ l(de, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ l(ae, { className: "h-3.5 w-3.5" }), Z.on === null ? "Microphone unknown" : Z.on ? "Microphone on" : "Microphone off"]
360
367
  })
361
- }), /* @__PURE__ */ u("p", {
368
+ }), /* @__PURE__ */ l("p", {
362
369
  className: "text-[10px] text-foreground-subtle flex-1 leading-relaxed",
363
370
  children: L === null ? Z.on === null ? "The camera did not report its microphone, so this state is unknown." : Z.costWhenOff : `Write failed: ${L}`
364
371
  })]
@@ -367,4 +374,4 @@ function b({ deviceId: a }) {
367
374
  }) : null;
368
375
  }
369
376
  //#endregion
370
- export { b as PrivacyMaskSettings };
377
+ export { v as PrivacyMaskSettings };
package/dist/_stub.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import "./virtualExposes-CWSi4E_g.mjs";
2
- import "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-vRsGc6Lt.mjs";
2
+ import "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-BKG69NoE.mjs";
3
3
  import { _ as e, c as t, d as n, h as r, i, l as a, m as o, p as s, r as c, t as l, u, y as d } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DJDHChgO.mjs";
4
4
  import { a as f, i as p, o as m, r as h, s as g } from "./responsive-CDob01xQ.mjs";
5
5
  import { d as _, l as v, u as y } from "./use-device-snapshot-esDPfd9B.mjs";
@@ -3514,7 +3514,7 @@ d(), d(), d(), d(), d(), d(), d(), m("camstack:vod-playback", {
3514
3514
  mode: "live",
3515
3515
  positionMs: null,
3516
3516
  send: () => !1
3517
- }), d(), d(), d(), d(), d(), d(), i(() => import("./MotionZonesSettings-B3Ws1xqb.mjs").then((e) => ({ default: e.MotionZonesSettings }))), i(() => import("./PrivacyMaskSettings-D_yq7O4C.mjs").then((e) => ({ default: e.PrivacyMaskSettings }))), d(), d();
3517
+ }), d(), d(), d(), d(), d(), d(), i(() => import("./MotionZonesSettings-B3Ws1xqb.mjs").then((e) => ({ default: e.MotionZonesSettings }))), i(() => import("./PrivacyMaskSettings-UekMg4X1.mjs").then((e) => ({ default: e.PrivacyMaskSettings }))), d(), d();
3518
3518
  var zr = Object.defineProperty, Br = Object.getOwnPropertySymbols, Vr = Object.prototype.hasOwnProperty, Hr = Object.prototype.propertyIsEnumerable, Ur = (e, t, n) => t in e ? zr(e, t, {
3519
3519
  enumerable: !0,
3520
3520
  configurable: !0,
@@ -15964,7 +15964,7 @@ var K_ = class {
15964
15964
  } catch {}
15965
15965
  }
15966
15966
  };
15967
- d(), new K_(), d(), d(), d(), d(), i(() => import("./MaskShapeCanvas-C4g96eMz.mjs").then((e) => ({ default: e.MaskShapeCanvas }))), i(() => import("./MotionZonesSettings-B3Ws1xqb.mjs").then((e) => ({ default: e.MotionZonesSettings }))), i(() => import("./SceneMonitorEditor-6Z16a4l3.mjs").then((e) => ({ default: e.SceneMonitorEditor }))), i(() => import("./PrivacyMaskSettings-D_yq7O4C.mjs").then((e) => ({ default: e.PrivacyMaskSettings })));
15967
+ d(), new K_(), d(), d(), d(), d(), i(() => import("./MaskShapeCanvas-C4g96eMz.mjs").then((e) => ({ default: e.MaskShapeCanvas }))), i(() => import("./MotionZonesSettings-B3Ws1xqb.mjs").then((e) => ({ default: e.MotionZonesSettings }))), i(() => import("./SceneMonitorEditor-6Z16a4l3.mjs").then((e) => ({ default: e.SceneMonitorEditor }))), i(() => import("./PrivacyMaskSettings-UekMg4X1.mjs").then((e) => ({ default: e.PrivacyMaskSettings })));
15968
15968
  //#endregion
15969
15969
  //#region src/scrypted/scrypted-yolo-manifest-data.json
15970
15970
  var q_ = /*#__PURE__*/ JSON.parse("[{\"id\":\"scrypted-yolov9t-relu-coreml\",\"label\":\"Scrypted YOLOv9T ReLU CoreML\",\"family\":\"yolov9t\",\"variant\":\"relu\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9t_relu/scrypted_yolov9t_relu.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"0a8733949d77e3204dba6418e81a11a8cc177015711457ce2c171266f23382d6\"},{\"relativePath\":\"coreml/scrypted_yolov9t_relu/scrypted_yolov9t_relu.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":322229,\"sha256\":\"f5a62f196f1e72a84efa1637119dffb6501621af9cf6f867bc76b4b59c9242a0\"},{\"relativePath\":\"coreml/scrypted_yolov9t_relu/scrypted_yolov9t_relu.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":3797160,\"sha256\":\"b994419b8b68cfd6b89c3c6f3fe6b37458c86cc1d87fcca3df5034476a99dd38\"}],\"sizeMB\":4.12},{\"id\":\"scrypted-yolov9t-relu-onnx\",\"label\":\"Scrypted YOLOv9T ReLU ONNX\",\"family\":\"yolov9t\",\"variant\":\"relu\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9t_relu/scrypted_yolov9t_relu.onnx\",\"size\":8499266,\"sha256\":\"3f11ea2071b27c285b58c16636a44d6a0a27bdd1ca8b64112dfadabd39cfea47\"}],\"sizeMB\":8.5},{\"id\":\"scrypted-yolov9t-relu-test-coreml\",\"label\":\"Scrypted YOLOv9T ReLU test CoreML\",\"family\":\"yolov9t\",\"variant\":\"relu_test\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9t_relu_test/scrypted_yolov9t_relu_test.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"a5e0128b643f1a66f3e07d4b332f9ccbca97ccab75651c794f0b9f1fb41c8491\"},{\"relativePath\":\"coreml/scrypted_yolov9t_relu_test/scrypted_yolov9t_relu_test.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":322229,\"sha256\":\"79f4f647f2a0c79db3b560c84251b48c7ba7cbe9c1fecc9674d1a603a389dfa3\"},{\"relativePath\":\"coreml/scrypted_yolov9t_relu_test/scrypted_yolov9t_relu_test.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":3797160,\"sha256\":\"72efc9dc6af9241b5e5ee7de24a4f55741f6425d0e279d797f0f223e3d355f84\"}],\"sizeMB\":4.12},{\"id\":\"scrypted-yolov9t-relu-test-onnx\",\"label\":\"Scrypted YOLOv9T ReLU test ONNX\",\"family\":\"yolov9t\",\"variant\":\"relu_test\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9t_relu_test/scrypted_yolov9t_relu_test.onnx\",\"size\":8499266,\"sha256\":\"d20aa0e6923a3af7f5e84e3a6d28fb00e8ecd592e3225f986f93bd34b634e2f8\"}],\"sizeMB\":8.5},{\"id\":\"scrypted-yolov9s-relu-coreml\",\"label\":\"Scrypted YOLOv9S ReLU CoreML\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9s_relu/scrypted_yolov9s_relu.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"3bcdb820b82f1e89266f2d11bae1604d3ee4ca6d11dc5bd5c57055ff4157e9f3\"},{\"relativePath\":\"coreml/scrypted_yolov9s_relu/scrypted_yolov9s_relu.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":322664,\"sha256\":\"9a9c3c9cbca406ec2f0418ec867ed6b878ec6d02c16636d30e0bbd83d2ff7c40\"},{\"relativePath\":\"coreml/scrypted_yolov9s_relu/scrypted_yolov9s_relu.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":14190120,\"sha256\":\"fd51eda58a993997268f6a2e424b536ba173207ad7974ab8bee2a8ff76d52dab\"}],\"sizeMB\":14.51},{\"id\":\"scrypted-yolov9s-relu-onnx\",\"label\":\"Scrypted YOLOv9S ReLU ONNX\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9s_relu/scrypted_yolov9s_relu.onnx\",\"size\":29287339,\"sha256\":\"ca0b5bd98d5f59eb2029c6cb5129d53af59873f62a317a028beda463bbb96399\"}],\"sizeMB\":29.29},{\"id\":\"scrypted-yolov9s-relu-test-coreml\",\"label\":\"Scrypted YOLOv9S ReLU test CoreML\",\"family\":\"yolov9s\",\"variant\":\"relu_test\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9s_relu_test/scrypted_yolov9s_relu_test.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"e2d24de0ce7e8573f19572029765e55abc714f36a85175ad7fcb95c001a76653\"},{\"relativePath\":\"coreml/scrypted_yolov9s_relu_test/scrypted_yolov9s_relu_test.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":322664,\"sha256\":\"186b147cdfd15c5ed7a381ec3a426a22cee0b5c52d56f14efd26da06357f5cb0\"},{\"relativePath\":\"coreml/scrypted_yolov9s_relu_test/scrypted_yolov9s_relu_test.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":14190120,\"sha256\":\"e50651924c2cbffd56008a8953569e66c3de69f21807fcf7d825390ce30f21f8\"}],\"sizeMB\":14.51},{\"id\":\"scrypted-yolov9s-relu-test-onnx\",\"label\":\"Scrypted YOLOv9S ReLU test ONNX\",\"family\":\"yolov9s\",\"variant\":\"relu_test\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9s_relu_test/scrypted_yolov9s_relu_test.onnx\",\"size\":29287339,\"sha256\":\"115ddb83333762a0f2599421335678696454a5c3571ade5df9bac8e9cb5fb4cf\"}],\"sizeMB\":29.29},{\"id\":\"scrypted-yolov9m-relu-coreml\",\"label\":\"Scrypted YOLOv9M ReLU CoreML\",\"family\":\"yolov9m\",\"variant\":\"relu\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9m_relu/scrypted_yolov9m_relu.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"c548c6e1ff768b2b01bd71e230aa712a1635ae2baa30e0369557a42fc531ecbf\"},{\"relativePath\":\"coreml/scrypted_yolov9m_relu/scrypted_yolov9m_relu.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":247061,\"sha256\":\"1c40e02fc2a2559cb906ea6cd9da9c730d4a78f5019290cbb38d2fcaae379fe7\"},{\"relativePath\":\"coreml/scrypted_yolov9m_relu/scrypted_yolov9m_relu.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":39880616,\"sha256\":\"4cf938e5bfcc3ee1644813e4eb4702a7de450cc0581df94c719cf43d0ed2e408\"}],\"sizeMB\":40.13},{\"id\":\"scrypted-yolov9m-relu-onnx\",\"label\":\"Scrypted YOLOv9M ReLU ONNX\",\"family\":\"yolov9m\",\"variant\":\"relu\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9m_relu/scrypted_yolov9m_relu.onnx\",\"size\":80380404,\"sha256\":\"e7a81fb33224a0105d2a0a594c3fa43c398c361de623f1d14156ae826e7312d5\"}],\"sizeMB\":80.38},{\"id\":\"scrypted-yolov9m-relu-test-coreml\",\"label\":\"Scrypted YOLOv9M ReLU test CoreML\",\"family\":\"yolov9m\",\"variant\":\"relu_test\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9m_relu_test/scrypted_yolov9m_relu_test.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"8e2684b286d02b4bdf9db1027c84cb89bf8e4830cfb58269f3ec457c5a010650\"},{\"relativePath\":\"coreml/scrypted_yolov9m_relu_test/scrypted_yolov9m_relu_test.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":247061,\"sha256\":\"53d5946e74b13b15c5f8616081c9f15e8a95a5df3d5b45b830fc5a7f49561c16\"},{\"relativePath\":\"coreml/scrypted_yolov9m_relu_test/scrypted_yolov9m_relu_test.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":39880616,\"sha256\":\"69774bf0032c37707601b8cdc1e1820dbd9f8288eb5d6f3879618a5d34ff5199\"}],\"sizeMB\":40.13},{\"id\":\"scrypted-yolov9m-relu-test-onnx\",\"label\":\"Scrypted YOLOv9M ReLU test ONNX\",\"family\":\"yolov9m\",\"variant\":\"relu_test\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9m_relu_test/scrypted_yolov9m_relu_test.onnx\",\"size\":80380404,\"sha256\":\"8bb054f099295909ec518e2a6598d63db24d3f90edc8105a0f016903f2a205a2\"}],\"sizeMB\":80.38},{\"id\":\"scrypted-yolov9c-relu-coreml\",\"label\":\"Scrypted YOLOv9C ReLU CoreML\",\"family\":\"yolov9c\",\"variant\":\"relu\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9c_relu/scrypted_yolov9c_relu.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"813a306ebd69cabfd31f00434f5a961feeca7d237833f3e11805dcf4ad120ba9\"},{\"relativePath\":\"coreml/scrypted_yolov9c_relu/scrypted_yolov9c_relu.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":263210,\"sha256\":\"862f082619075e470738306b0ff0a37ae70a7d08e684ca6a6dfa1971d404e0c3\"},{\"relativePath\":\"coreml/scrypted_yolov9c_relu/scrypted_yolov9c_relu.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":50489960,\"sha256\":\"ed89747e58943758e2a87221d1d404f6a4466cbc039c3c6f96e327cadc403d27\"}],\"sizeMB\":50.75},{\"id\":\"scrypted-yolov9c-relu-onnx\",\"label\":\"Scrypted YOLOv9C ReLU ONNX\",\"family\":\"yolov9c\",\"variant\":\"relu\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9c_relu/scrypted_yolov9c_relu.onnx\",\"size\":101631962,\"sha256\":\"b9372c4428daf4cd944c114b1e80d1a9ff0487d743e53a77216a051cfbef7116\"}],\"sizeMB\":101.63},{\"id\":\"scrypted-yolov9c-relu-test-coreml\",\"label\":\"Scrypted YOLOv9C ReLU test CoreML\",\"family\":\"yolov9c\",\"variant\":\"relu_test\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9c_relu_test/scrypted_yolov9c_relu_test.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"966ef82a93cb0ccf1036a8c9729c065fd372fa9590a97d0945e581cc674f7ad2\"},{\"relativePath\":\"coreml/scrypted_yolov9c_relu_test/scrypted_yolov9c_relu_test.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":263210,\"sha256\":\"08718ecd3e9552d21a702bd8df60911cad0eec7b2ae382466809550f14634711\"},{\"relativePath\":\"coreml/scrypted_yolov9c_relu_test/scrypted_yolov9c_relu_test.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":50489960,\"sha256\":\"fe5936b9430ab4c87f30b148220131d6ec998b2377223d033e2fa2a00e60aada\"}],\"sizeMB\":50.75},{\"id\":\"scrypted-yolov9c-relu-test-onnx\",\"label\":\"Scrypted YOLOv9C ReLU test ONNX\",\"family\":\"yolov9c\",\"variant\":\"relu_test\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9c_relu_test/scrypted_yolov9c_relu_test.onnx\",\"size\":101631962,\"sha256\":\"2f4e2031e8efb4cbc871594338b2e875d78ab4af3ee0258d253273b1aac84742\"}],\"sizeMB\":101.63},{\"id\":\"scrypted-yolov9t-relu-openvino-fp32\",\"label\":\"Scrypted YOLOv9T ReLU OpenVINO FP32\",\"family\":\"yolov9t\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9t_relu/best-converted.xml\",\"size\":628222,\"sha256\":\"01b5a9d02a0f281e1aaf4860e1b0ed3a7f16b9d78975be8ff985ae0ee283d877\"},{\"relativePath\":\"openvino/scrypted_yolov9t_relu/best-converted.bin\",\"size\":7542204,\"sha256\":\"4fe9ce8dbdf94514fdd450cbfc907f257153e4898a0c1489a44e4912d8e32cc7\"}],\"sizeMB\":8.17},{\"id\":\"scrypted-yolov9s-relu-openvino-fp32\",\"label\":\"Scrypted YOLOv9S ReLU OpenVINO FP32\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9s_relu/best-converted.xml\",\"size\":629249,\"sha256\":\"5b4a229bf7229425698b63bd065a403e440a6151a6ddff0034867659cc4a480d\"},{\"relativePath\":\"openvino/scrypted_yolov9s_relu/best-converted.bin\",\"size\":28329724,\"sha256\":\"c030bd219208ea94082578c81f383d4ef9ec45d7150eec1c2c2ff2569cf49b35\"}],\"sizeMB\":28.96},{\"id\":\"scrypted-yolov9m-relu-openvino-fp32\",\"label\":\"Scrypted YOLOv9M ReLU OpenVINO FP32\",\"family\":\"yolov9m\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9m_relu/best-converted.xml\",\"size\":485439,\"sha256\":\"c66f9f1965bf70fd3635d4dfc3cb94c72c06b344c256713237d77706725b9a0c\"},{\"relativePath\":\"openvino/scrypted_yolov9m_relu/best-converted.bin\",\"size\":79717372,\"sha256\":\"dfc2d8952bbca9ad0e116168e3fd5c754e601c327d78c4f4d0d4cae12f0e1d2a\"}],\"sizeMB\":80.2},{\"id\":\"scrypted-yolov9c-relu-openvino-fp32\",\"label\":\"Scrypted YOLOv9C ReLU OpenVINO FP32\",\"family\":\"yolov9c\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9c_relu/best-converted.xml\",\"size\":535047,\"sha256\":\"836c1e998ebf76108ff64d554fdfa07aa72c42624f1a5448701bb409f27b8d68\"},{\"relativePath\":\"openvino/scrypted_yolov9c_relu/best-converted.bin\",\"size\":100942972,\"sha256\":\"11a1b330ac9843b349927977b3c7c7f17bb42af73a7ff102969132f27ab81814\"}],\"sizeMB\":101.48},{\"id\":\"scrypted-yolov9t-relu-openvino-int8\",\"label\":\"Scrypted YOLOv9T ReLU OpenVINO INT8\",\"family\":\"yolov9t\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9t_relu_int8/best-converted.xml\",\"size\":1380379,\"sha256\":\"e5a76bf88ac69fc0ebc50c04b61ff91550dd9c2349af1f6d7e4cac949c640cec\"},{\"relativePath\":\"openvino/scrypted_yolov9t_relu_int8/best-converted.bin\",\"size\":1954956,\"sha256\":\"98fb5b6826d7c6697a585f69ba96754873772d9d61fbed8335aab761e8248659\"}],\"sizeMB\":3.34},{\"id\":\"scrypted-yolov9t-relu-test-openvino-int8\",\"label\":\"Scrypted YOLOv9T ReLU test OpenVINO INT8\",\"family\":\"yolov9t\",\"variant\":\"relu_test\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9t_relu_test_int8/best-converted.xml\",\"size\":1380383,\"sha256\":\"9e4119284e923e08c9929e78fd31e2552e602a552ac538ae99bf34a50dd4d172\"},{\"relativePath\":\"openvino/scrypted_yolov9t_relu_test_int8/best-converted.bin\",\"size\":1954960,\"sha256\":\"efe5b0a2fd2f5ddef5923eeb9e592a7ef14719061bb7605c86e05b35c2c58ea9\"}],\"sizeMB\":3.34},{\"id\":\"scrypted-yolov9s-relu-openvino-int8\",\"label\":\"Scrypted YOLOv9S ReLU OpenVINO INT8\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9s_relu_int8/best-converted.xml\",\"size\":1382088,\"sha256\":\"4e6c24cf24afbab21462f7e1a15bd05b1cbbe5915046000e03c2435d8110bbbf\"},{\"relativePath\":\"openvino/scrypted_yolov9s_relu_int8/best-converted.bin\",\"size\":7197308,\"sha256\":\"23fd3d666a938c41db232d9c6239baec1134716cfb4ed4ddd3d602dd20eb8ac0\"}],\"sizeMB\":8.58},{\"id\":\"scrypted-yolov9s-relu-test-openvino-int8\",\"label\":\"Scrypted YOLOv9S ReLU test OpenVINO INT8\",\"family\":\"yolov9s\",\"variant\":\"relu_test\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9s_relu_test_int8/best-converted.xml\",\"size\":1382092,\"sha256\":\"49865bfeafe7576afce089ba6f5c3e25a9192c8b514eb96265c90fe877795641\"},{\"relativePath\":\"openvino/scrypted_yolov9s_relu_test_int8/best-converted.bin\",\"size\":7197312,\"sha256\":\"78e9d36e6b74754db2b624ea3ec0b3ff57ed6dfed59a4f2225e1a271054597de\"}],\"sizeMB\":8.58},{\"id\":\"scrypted-yolov9m-relu-openvino-int8\",\"label\":\"Scrypted YOLOv9M ReLU OpenVINO INT8\",\"family\":\"yolov9m\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9m_relu_int8/best-converted.xml\",\"size\":1024595,\"sha256\":\"1242ab8d8c73b2e80c5dd541177ade6e102a2684114b059136acb4cad6efb034\"},{\"relativePath\":\"openvino/scrypted_yolov9m_relu_int8/best-converted.bin\",\"size\":20090516,\"sha256\":\"da8e44af8bee66478e6f359e9504bfb13ab4b76f4bd8a2f1b10cfbc22febcf6e\"}],\"sizeMB\":21.12},{\"id\":\"scrypted-yolov9m-relu-test-openvino-int8\",\"label\":\"Scrypted YOLOv9M ReLU test OpenVINO INT8\",\"family\":\"yolov9m\",\"variant\":\"relu_test\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9m_relu_test_int8/best-converted.xml\",\"size\":1024601,\"sha256\":\"24395ae5fdbb321304c865372cd2b905cdc55abb7610520f3963702e2371decb\"},{\"relativePath\":\"openvino/scrypted_yolov9m_relu_test_int8/best-converted.bin\",\"size\":20090520,\"sha256\":\"4360fe0312067f92c49f180c7b8a10271f14d58b8909aa9b96b13af4ab9289aa\"}],\"sizeMB\":21.12},{\"id\":\"scrypted-yolov9c-relu-openvino-int8\",\"label\":\"Scrypted YOLOv9C ReLU OpenVINO INT8\",\"family\":\"yolov9c\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9c_relu_int8/best-converted.xml\",\"size\":1092695,\"sha256\":\"a45c62940120c4301d8fff9fb3b275c29e3618f403ea68a785f2f3220cefec7a\"},{\"relativePath\":\"openvino/scrypted_yolov9c_relu_int8/best-converted.bin\",\"size\":25428280,\"sha256\":\"0643403a56178c3ed1e066c7884458d8ea6780115d662bdc38d10754d7a11c79\"}],\"sizeMB\":26.52},{\"id\":\"scrypted-yolov9c-relu-test-openvino-int8\",\"label\":\"Scrypted YOLOv9C ReLU test OpenVINO INT8\",\"family\":\"yolov9c\",\"variant\":\"relu_test\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9c_relu_test_int8/best-converted.xml\",\"size\":1092695,\"sha256\":\"a8a1899848ebd060af2326d3c8d3c09ea83354f0bedff6cce6fa08b284ea5519\"},{\"relativePath\":\"openvino/scrypted_yolov9c_relu_test_int8/best-converted.bin\",\"size\":25428280,\"sha256\":\"2eb6bb3d0a03a9b239b6f623f9e7bced62eea61fbe4d8ff89c1b3e2e2b7978a2\"}],\"sizeMB\":26.52},{\"id\":\"scrypted-yolov9s-relu-sep-320-tflite-float16\",\"label\":\"Scrypted YOLOv9s ReLU sep 320 TFLite float16\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"tflite\",\"precision\":\"float16\",\"files\":[{\"relativePath\":\"tflite/scrypted_yolov9s_relu_sep_320/best_float16.tflite\",\"size\":14482836,\"sha256\":\"04889db3b81af361c361e41ffa99327330d37b71d680a2f889e6cdf1e94c0d8c\"}],\"sizeMB\":14.48},{\"id\":\"scrypted-yolov9s-relu-sep-320-tflite-float32\",\"label\":\"Scrypted YOLOv9s ReLU sep 320 TFLite float32\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"tflite\",\"precision\":\"float32\",\"files\":[{\"relativePath\":\"tflite/scrypted_yolov9s_relu_sep_320/best_float32.tflite\",\"size\":28777068,\"sha256\":\"f5d7d08fc1d8f2262633d2df4391638e0481740331aaa1837880a47c33001a96\"}],\"sizeMB\":28.78},{\"id\":\"scrypted-yolov9s-relu-sep-320-tflite-int8\",\"label\":\"Scrypted YOLOv9s ReLU sep 320 TFLite int8\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"tflite\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"tflite/scrypted_yolov9s_relu_sep_320/best_int8.tflite\",\"size\":7325616,\"sha256\":\"1e9866b16fe80931383bf3c94dc629fe93a37ba3dc1465ea019eb0a50bd428df\"}],\"sizeMB\":7.33},{\"id\":\"scrypted-yolov9s-relu-sep-320-tflite-integer_quant\",\"label\":\"Scrypted YOLOv9s ReLU sep 320 TFLite integer_quant\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"tflite\",\"precision\":\"integer_quant\",\"files\":[{\"relativePath\":\"tflite/scrypted_yolov9s_relu_sep_320/best_integer_quant.tflite\",\"size\":7342552,\"sha256\":\"bc1c902e9a9865637ee2403f70c6bf5c29c695d9163e58ad658feb29bb097ebc\"}],\"sizeMB\":7.34},{\"id\":\"scrypted-yolov9s-relu-sep-320-tflite-full_integer_quant\",\"label\":\"Scrypted YOLOv9s ReLU sep 320 TFLite full_integer_quant\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"tflite\",\"precision\":\"full_integer_quant\",\"files\":[{\"relativePath\":\"tflite/scrypted_yolov9s_relu_sep_320/best_full_integer_quant.tflite\",\"size\":7341704,\"sha256\":\"483ce38dbe33ee5a35f40a82f56c77629a44fa5d95efd8ade9fa97e4d2a261fd\"}],\"sizeMB\":7.34},{\"id\":\"scrypted-yolov9s-relu-sep-320-tflite-edgetpu\",\"label\":\"Scrypted YOLOv9s ReLU sep 320 TFLite edgetpu\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"tflite\",\"precision\":\"edgetpu\",\"files\":[{\"relativePath\":\"tflite/scrypted_yolov9s_relu_sep_320/best_full_integer_quant_edgetpu.tflite\",\"size\":8164480,\"sha256\":\"e1e6b074a3b9fdf19a171baf615553ad375a046aa7de2a3fef9a1950175fab22\"}],\"sizeMB\":8.16}]"), J_ = /^[0-9a-f]{64}$/, Y_ = "https://huggingface.co", X_ = "scrypted/plugin-models", Z_ = "187402b20a3be0a7fab9bceee21d857ed6ae0064", Q_ = [
@@ -1,9 +1,9 @@
1
- import "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-vRsGc6Lt.mjs";
1
+ import "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-BKG69NoE.mjs";
2
2
  //#region \0virtual:mf-localSharedImportMap:__mfe_internal__addon_model_studio_page
3
3
  var e = {
4
4
  "@camstack/sdk": {
5
5
  name: "@camstack/sdk",
6
- version: "1.2.84",
6
+ version: "1.2.86",
7
7
  scope: ["default"],
8
8
  loaded: !1,
9
9
  from: "addon_model_studio_page",
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.164",
21
+ version: "1.2.166",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_model_studio_page",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.2.132",
36
+ version: "1.2.134",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_model_studio_page",
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.164",
39
+ version: "1.2.166",
40
40
  scope: "default",
41
41
  shareConfig: {
42
42
  singleton: !0,
@@ -45,7 +45,7 @@ async function r() {
45
45
  }
46
46
  },
47
47
  "@camstack/sdk": {
48
- version: "1.2.84",
48
+ version: "1.2.86",
49
49
  scope: "default",
50
50
  shareConfig: {
51
51
  singleton: !0,
@@ -81,7 +81,7 @@ async function r() {
81
81
  }
82
82
  },
83
83
  "@camstack/ui-library": {
84
- version: "1.2.132",
84
+ version: "1.2.134",
85
85
  scope: "default",
86
86
  shareConfig: {
87
87
  singleton: !0,
@@ -12572,6 +12572,9 @@ var QueryFilterSchema = object({
12572
12572
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12573
12573
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12574
12574
  whereNot: record(string(), unknown()).optional(),
12575
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12576
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12577
+ whereNotIn: record(string(), array(unknown())).optional(),
12575
12578
  orderBy: object({
12576
12579
  field: string(),
12577
12580
  direction: _enum(["asc", "desc"])
@@ -12592,7 +12595,8 @@ var MutationFilterSchema = object({
12592
12595
  where: record(string(), unknown()).optional(),
12593
12596
  whereIn: record(string(), array(unknown())).optional(),
12594
12597
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12595
- whereNot: record(string(), unknown()).optional()
12598
+ whereNot: record(string(), unknown()).optional(),
12599
+ whereNotIn: record(string(), array(unknown())).optional()
12596
12600
  });
12597
12601
  /**
12598
12602
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -19088,10 +19092,12 @@ var TrackSourceSchema = _enum([
19088
19092
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
19089
19093
  * a deliberate action of the retrain page, not a side effect of a checkbox.
19090
19094
  *
19091
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
19092
- * the store's filter language has only positive equality and `whereIn` no
19093
- * negation, no IS NULL so a NULL would be unselectable by ANY predicate and
19094
- * would make the entire pre-column history immortal in one deploy.
19095
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
19096
+ * every row is selectable by a positive predicate. (The filter language has
19097
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
19098
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
19099
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
19100
+ * column was designed, and a NOT NULL column is still the better shape.)
19095
19101
  */
19096
19102
  var RetrainStatusSchema = _enum([
19097
19103
  "none",
@@ -19827,7 +19833,9 @@ var RecentTracksQueryInput = object({
19827
19833
  * whose class list is unreadable are kept, and the client's rule stays the
19828
19834
  * exact one.
19829
19835
  */
19830
- classes: array(string()).optional()
19836
+ classes: array(string()).optional(),
19837
+ /** See {@link ExcludeSourcesDoc}. */
19838
+ excludeSources: array(TrackSourceSchema).optional()
19831
19839
  });
19832
19840
  /**
19833
19841
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -20255,7 +20263,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20255
20263
  * selected is an operator who has not narrowed anything, and an empty
20256
20264
  * timeline would read as a camera that saw nothing.
20257
20265
  */
20258
- classes: array(string()).optional()
20266
+ classes: array(string()).optional(),
20267
+ /** See {@link ExcludeSourcesDoc}. */
20268
+ excludeSources: array(TrackSourceSchema).optional()
20259
20269
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
20260
20270
  kind: "mutation",
20261
20271
  auth: "admin"
@@ -27716,8 +27726,27 @@ var PrivacyMaskRegionSchema = object({
27716
27726
  });
27717
27727
  object({
27718
27728
  enabled: boolean(),
27719
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
27720
- regions: array(PrivacyMaskRegionSchema),
27729
+ /**
27730
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
27731
+ *
27732
+ * `null` means "no answer" — the provider has never reached this camera
27733
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
27734
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
27735
+ * has no zones": those two look identical to an operator right up to the
27736
+ * moment one of them is acted on, and acting on them differs completely.
27737
+ * The switch group turned an unanswered read into *"nothing is set up for
27738
+ * it to act on"* — an instruction to go and draw a zone that already
27739
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
27740
+ * from deleting the mask it could not read.
27741
+ *
27742
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
27743
+ * has no zones. The distinction is the same one {@link
27744
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
27745
+ * microphone, on the very same payload — both planes come from ONE refresh,
27746
+ * so it was never coherent for one of them to be able to say "unknown"
27747
+ * while the other could not.
27748
+ */
27749
+ regions: array(PrivacyMaskRegionSchema).nullable(),
27721
27750
  /**
27722
27751
  * Is the camera capturing sound right now? Read from the camera, never from
27723
27752
  * a server-side mirror.
@@ -12551,6 +12551,9 @@ var QueryFilterSchema = object({
12551
12551
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12552
12552
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12553
12553
  whereNot: record(string(), unknown()).optional(),
12554
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12555
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12556
+ whereNotIn: record(string(), array(unknown())).optional(),
12554
12557
  orderBy: object({
12555
12558
  field: string(),
12556
12559
  direction: _enum(["asc", "desc"])
@@ -12571,7 +12574,8 @@ var MutationFilterSchema = object({
12571
12574
  where: record(string(), unknown()).optional(),
12572
12575
  whereIn: record(string(), array(unknown())).optional(),
12573
12576
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12574
- whereNot: record(string(), unknown()).optional()
12577
+ whereNot: record(string(), unknown()).optional(),
12578
+ whereNotIn: record(string(), array(unknown())).optional()
12575
12579
  });
12576
12580
  /**
12577
12581
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -19067,10 +19071,12 @@ var TrackSourceSchema = _enum([
19067
19071
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
19068
19072
  * a deliberate action of the retrain page, not a side effect of a checkbox.
19069
19073
  *
19070
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
19071
- * the store's filter language has only positive equality and `whereIn` no
19072
- * negation, no IS NULL so a NULL would be unselectable by ANY predicate and
19073
- * would make the entire pre-column history immortal in one deploy.
19074
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
19075
+ * every row is selectable by a positive predicate. (The filter language has
19076
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
19077
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
19078
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
19079
+ * column was designed, and a NOT NULL column is still the better shape.)
19074
19080
  */
19075
19081
  var RetrainStatusSchema = _enum([
19076
19082
  "none",
@@ -19806,7 +19812,9 @@ var RecentTracksQueryInput = object({
19806
19812
  * whose class list is unreadable are kept, and the client's rule stays the
19807
19813
  * exact one.
19808
19814
  */
19809
- classes: array(string()).optional()
19815
+ classes: array(string()).optional(),
19816
+ /** See {@link ExcludeSourcesDoc}. */
19817
+ excludeSources: array(TrackSourceSchema).optional()
19810
19818
  });
19811
19819
  /**
19812
19820
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -20234,7 +20242,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20234
20242
  * selected is an operator who has not narrowed anything, and an empty
20235
20243
  * timeline would read as a camera that saw nothing.
20236
20244
  */
20237
- classes: array(string()).optional()
20245
+ classes: array(string()).optional(),
20246
+ /** See {@link ExcludeSourcesDoc}. */
20247
+ excludeSources: array(TrackSourceSchema).optional()
20238
20248
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
20239
20249
  kind: "mutation",
20240
20250
  auth: "admin"
@@ -27695,8 +27705,27 @@ var PrivacyMaskRegionSchema = object({
27695
27705
  });
27696
27706
  object({
27697
27707
  enabled: boolean(),
27698
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
27699
- regions: array(PrivacyMaskRegionSchema),
27708
+ /**
27709
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
27710
+ *
27711
+ * `null` means "no answer" — the provider has never reached this camera
27712
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
27713
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
27714
+ * has no zones": those two look identical to an operator right up to the
27715
+ * moment one of them is acted on, and acting on them differs completely.
27716
+ * The switch group turned an unanswered read into *"nothing is set up for
27717
+ * it to act on"* — an instruction to go and draw a zone that already
27718
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
27719
+ * from deleting the mask it could not read.
27720
+ *
27721
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
27722
+ * has no zones. The distinction is the same one {@link
27723
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
27724
+ * microphone, on the very same payload — both planes come from ONE refresh,
27725
+ * so it was never coherent for one of them to be able to say "unknown"
27726
+ * while the other could not.
27727
+ */
27728
+ regions: array(PrivacyMaskRegionSchema).nullable(),
27700
27729
  /**
27701
27730
  * Is the camera capturing sound right now? Read from the camera, never from
27702
27731
  * a server-side mirror.
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-vRsGc6Lt.mjs";
1
+ import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-BKG69NoE.mjs";
2
2
  export { t as get, e as init };
@@ -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_model_studio_page-D6NPMtuO.mjs")).catch((e) => {
2756
+ return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-D6w_3eqZ.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-model-studio",
3
- "version": "1.1.107",
3
+ "version": "1.1.109",
4
4
  "description": "Custom detection model registry, conversion & distribution for CamStack",
5
5
  "keywords": [
6
6
  "camstack",