@camstack/addon-osd-manager 0.1.183 → 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 (22) 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-MfIH7-Fl.mjs → PrivacyMaskSettings-BOI23HW8.mjs} +14 -14
  4. package/dist/{SceneMonitorEditor-B9fe5VoP.mjs → SceneMonitorEditor-Bh3b6fEU.mjs} +314 -314
  5. package/dist/_stub.js +4571 -4328
  6. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-ChI8RP64.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-CKsdRf-b.mjs} +4 -4
  7. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CTH5s3ZX.mjs +26 -0
  8. 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
  9. package/dist/addon-osd-manager.css +1 -1
  10. package/dist/{hostInit-BRdQ6lL_.mjs → hostInit-CBABPQis.mjs} +3 -3
  11. package/dist/index.js +239 -181
  12. package/dist/index.mjs +239 -181
  13. package/dist/{player-overlays-DBos84dy.mjs → player-overlays-Do8k8gA2.mjs} +11 -11
  14. package/dist/remoteEntry.js +1 -1
  15. package/dist/{responsive-CSrcORLE.mjs → responsive-yiWJoiT1.mjs} +36 -36
  16. package/dist/{scene-monitor-copy-DvcsgzM2.mjs → scene-monitor-copy-6bTPHwxW.mjs} +12 -12
  17. package/dist/{square-BALj2dYA.mjs → square-ClXZfZgc.mjs} +1 -1
  18. package/dist/{trash-2-BMJXCVQ3.mjs → trash-2-Cm-45fYx.mjs} +1 -1
  19. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-2kWEtYV7.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-BfGWacqv.mjs} +1 -1
  20. package/package.json +1 -1
  21. package/dist/MotionZonesSettings-zw2RZO3c.mjs +0 -310
  22. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CWgx3QDa.mjs +0 -26
@@ -1,8 +1,8 @@
1
- import { _ as e, b as t, c as n, g as r, l as i, m as a, n as o, r as s, t as c, u as l } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-C5jUMd7X.mjs";
1
+ import { _ as e, c as t, h as n, l as r, n as i, r as a, t as o, u as s, v as c, x as l } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-D7xZfSHZ.mjs";
2
2
  import "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DalfdIDw.mjs";
3
- import { i as u } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CWgx3QDa.mjs";
3
+ import { i as u } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CTH5s3ZX.mjs";
4
4
  //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
5
- t();
5
+ l();
6
6
  var d = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), f = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), p = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), m = (e) => {
7
7
  let t = p(e);
8
8
  return t.charAt(0).toUpperCase() + t.slice(1);
@@ -19,23 +19,23 @@ var d = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) =
19
19
  }, g = (e) => {
20
20
  for (let t in e) if (t.startsWith("aria-") || t === "role" || t === "title") return !0;
21
21
  return !1;
22
- }, _ = s(({ color: e = "currentColor", size: t = 24, strokeWidth: n = 2, absoluteStrokeWidth: r, className: i = "", children: a, iconNode: s, ...c }, l) => o("svg", {
22
+ }, _ = a(({ color: e = "currentColor", size: t = 24, strokeWidth: n = 2, absoluteStrokeWidth: r, className: a = "", children: o, iconNode: s, ...c }, l) => i("svg", {
23
23
  ref: l,
24
24
  ...h,
25
25
  width: t,
26
26
  height: t,
27
27
  stroke: e,
28
28
  strokeWidth: r ? Number(n) * 24 / Number(t) : n,
29
- className: d("lucide", i),
30
- ...!a && !g(c) && { "aria-hidden": "true" },
29
+ className: d("lucide", a),
30
+ ...!o && !g(c) && { "aria-hidden": "true" },
31
31
  ...c
32
- }, [...s.map(([e, t]) => o(e, t)), ...Array.isArray(a) ? a : [a]]));
32
+ }, [...s.map(([e, t]) => i(e, t)), ...Array.isArray(o) ? o : [o]]));
33
33
  //#endregion
34
34
  //#region ../../node_modules/lucide-react/dist/esm/createLucideIcon.js
35
- t();
35
+ l();
36
36
  var v = (e, t) => {
37
- let n = s(({ className: n, ...r }, i) => o(_, {
38
- ref: i,
37
+ let n = a(({ className: n, ...r }, a) => i(_, {
38
+ ref: a,
39
39
  iconNode: t,
40
40
  className: d(`lucide-${f(m(e))}`, `lucide-${e}`, n),
41
41
  ...r
@@ -44,61 +44,61 @@ var v = (e, t) => {
44
44
  };
45
45
  //#endregion
46
46
  //#region ../ui-library/src/lib/shared-context.ts
47
- t();
47
+ l();
48
48
  function y(e, t) {
49
- if (typeof globalThis > "u") return c(t);
49
+ if (typeof globalThis > "u") return o(t);
50
50
  let n = globalThis.__camstackSharedContexts, r = n ?? /* @__PURE__ */ new Map();
51
51
  n || (globalThis.__camstackSharedContexts = r);
52
52
  let i = r.get(e);
53
53
  if (i) return i;
54
- let a = c(t);
54
+ let a = o(t);
55
55
  return r.set(e, a), a;
56
56
  }
57
57
  //#endregion
58
58
  //#region ../ui-library/src/contexts/system-context.tsx
59
- t();
59
+ l();
60
60
  var b = y("camstack:system", null);
61
61
  function x() {
62
- let e = i(b);
62
+ let e = r(b);
63
63
  if (!e) throw Error("useSystem(): no <SystemProvider> in tree");
64
64
  return e;
65
65
  }
66
66
  //#endregion
67
67
  //#region ../ui-library/src/hooks/use-device-proxy.ts
68
- t();
68
+ l();
69
69
  var S = "capability.binding-changed";
70
- function C(e, t) {
71
- let [n, i] = r(null);
72
- return l(() => {
73
- if (t === null) {
74
- i(null);
70
+ function C(t, r) {
71
+ let [i, a] = e(null);
72
+ return s(() => {
73
+ if (r === null) {
74
+ a(null);
75
75
  return;
76
76
  }
77
- let n = !1, r = async () => {
77
+ let e = !1, n = async () => {
78
78
  try {
79
- let r = await e.deviceManager.getBindings.query({ deviceId: t });
80
- n || i(r);
79
+ let n = await t.deviceManager.getBindings.query({ deviceId: r });
80
+ e || a(n);
81
81
  } catch {
82
- n || i((e) => e);
82
+ e || a((e) => e);
83
83
  }
84
84
  };
85
- r();
86
- let a = e.live?.onEvent.subscribe({ category: S }, { onData: (e) => {
87
- let n = e.data?.source;
88
- if (!n) {
89
- r();
85
+ n();
86
+ let i = t.live?.onEvent.subscribe({ category: S }, { onData: (e) => {
87
+ let t = e.data?.source;
88
+ if (!t) {
89
+ n();
90
90
  return;
91
91
  }
92
- n.type === "device" && n.id === t && r();
92
+ t.type === "device" && t.id === r && n();
93
93
  } });
94
94
  return () => {
95
- n = !0, a?.unsubscribe();
95
+ e = !0, i?.unsubscribe();
96
96
  };
97
- }, [e, t]), a(() => n ? u(e, n) : null, [e, n]);
97
+ }, [t, r]), n(() => i ? u(t, i) : null, [t, i]);
98
98
  }
99
- function w(t) {
100
- let r = n((e) => t ? t.subscribe(() => e()) : () => void 0, [t]), i = n(() => t?.value, [t]);
101
- return e(r, i, i);
99
+ function w(e) {
100
+ let n = t((t) => e ? e.subscribe(() => t()) : () => void 0, [e]), r = t(() => e?.value, [e]);
101
+ return c(n, r, r);
102
102
  }
103
103
  function T(e, t, n) {
104
104
  let r = C(e, t);
@@ -1,5 +1,5 @@
1
- import { b as e, c as t, g as n, m as r } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-C5jUMd7X.mjs";
2
- import { c as i } from "./responsive-CSrcORLE.mjs";
1
+ import { _ as e, c as t, h as n, x as r } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-D7xZfSHZ.mjs";
2
+ import { c as i } from "./responsive-yiWJoiT1.mjs";
3
3
  var a = i("camera", [["path", {
4
4
  d: "M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",
5
5
  key: "18u6gg"
@@ -51,7 +51,7 @@ var a = i("camera", [["path", {
51
51
  }]]);
52
52
  //#endregion
53
53
  //#region ../ui-library/src/lib/hub-mount.ts
54
- e();
54
+ r();
55
55
  var c = "camstack-mount", l = /^\/(?:[A-Za-z0-9_\-.]+\/)*$/, u = null;
56
56
  function d(e) {
57
57
  if (e == null || e === "") return null;
@@ -88,17 +88,17 @@ function g(e) {
88
88
  //#endregion
89
89
  //#region ../ui-library/src/hooks/use-device-snapshot.ts
90
90
  var _ = "/addon/snapshot/media";
91
- function v(e, i = {}) {
92
- let { width: a, baseUrl: o } = i, [s, c] = n(0);
91
+ function v(r, i = {}) {
92
+ let { width: a, baseUrl: o } = i, [s, c] = e(0);
93
93
  return {
94
- src: r(() => {
95
- if (e === null || e <= 0) return null;
96
- let t = o === void 0 ? m() : o.replace(/\/+$/, ""), n = new URLSearchParams();
97
- a !== void 0 && Number.isInteger(a) && a > 0 && n.set("w", String(a)), s > 0 && (n.set("force", "1"), n.set("r", String(s)));
98
- let r = n.toString();
99
- return `${t}${_}/${String(e)}.jpg${r.length > 0 ? `?${r}` : ""}`;
94
+ src: n(() => {
95
+ if (r === null || r <= 0) return null;
96
+ let e = o === void 0 ? m() : o.replace(/\/+$/, ""), t = new URLSearchParams();
97
+ a !== void 0 && Number.isInteger(a) && a > 0 && t.set("w", String(a)), s > 0 && (t.set("force", "1"), t.set("r", String(s)));
98
+ let n = t.toString();
99
+ return `${e}${_}/${String(r)}.jpg${n.length > 0 ? `?${n}` : ""}`;
100
100
  }, [
101
- e,
101
+ r,
102
102
  a,
103
103
  o,
104
104
  s
@@ -1,4 +1,4 @@
1
- import { c as e } from "./responsive-CSrcORLE.mjs";
1
+ import { c as e } from "./responsive-yiWJoiT1.mjs";
2
2
  var t = e("eye-off", [
3
3
  ["path", {
4
4
  d: "M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",
@@ -1,4 +1,4 @@
1
- import { c as e } from "./responsive-CSrcORLE.mjs";
1
+ import { c as e } from "./responsive-yiWJoiT1.mjs";
2
2
  var t = e("trash-2", [
3
3
  ["path", {
4
4
  d: "M10 11v6",
@@ -2753,7 +2753,7 @@ async function rr(e) {
2753
2753
  }
2754
2754
  }
2755
2755
  async function ir() {
2756
- return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-ChI8RP64.mjs")).catch((e) => {
2756
+ return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-CKsdRf-b.mjs")).catch((e) => {
2757
2757
  throw tr = void 0, e;
2758
2758
  }), tr;
2759
2759
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-osd-manager",
3
- "version": "0.1.183",
3
+ "version": "0.1.185",
4
4
  "description": "Binds camera on-screen-display slots to live state and recognitions",
5
5
  "keywords": [
6
6
  "camstack",
@@ -1,310 +0,0 @@
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 s, o as c, r as ee, t as l } from "./responsive-CSrcORLE.mjs";
3
- import { n as u, t as d } from "./player-overlays-DBos84dy.mjs";
4
- import { n as f, r as p, t as m } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DalfdIDw.mjs";
5
- import { MaskShapeCanvas as h } from "./MaskShapeCanvas-BT714ljC.mjs";
6
- var g = 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
- e();
27
- var _ = 110, te = "motion-zones", v = 0, y = [
28
- 1,
29
- 2,
30
- 3
31
- ], b = 1, x = "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", S = "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 C(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 ne(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 w(e, t) {
43
- return Math.ceil(e / t);
44
- }
45
- function T(e, t, n) {
46
- return Math.min(n - 1, Math.floor((e + .5) / t * n));
47
- }
48
- function E(e, t, n, r) {
49
- let i = w(t, r), a = w(n, r), o = Array.from({ length: i * a }, () => !1);
50
- for (let r = 0; r < n; r += 1) {
51
- let s = T(r, n, a);
52
- for (let n = 0; n < t; n += 1) e[r * t + n] === !0 && (o[s * i + T(n, t, i)] = !0);
53
- }
54
- return o;
55
- }
56
- function D(e, t, n, r) {
57
- let i = w(t, r), a = w(n, r), o = Array.from({ length: t * n }, () => !1);
58
- for (let r = 0; r < n; r += 1) {
59
- let s = T(r, n, a);
60
- for (let n = 0; n < t; n += 1) o[r * t + n] = e[s * i + T(n, t, i)] === !0;
61
- }
62
- return o;
63
- }
64
- function O({ deviceId: e }) {
65
- let o = ee(c().trpcClient, e), [T, O] = n(null), [k, A] = n(!1), [j, M] = n(null), [N, P] = n(null), [F, I] = n(b), [L, R] = n(!1), [z, B] = n(!1), V = r(!1);
66
- a(() => {
67
- if (!o) return;
68
- let e = !1;
69
- return V.current = !1, O(null), A(!1), M(null), P(null), I(b), B(!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 (O(t), V.current) return;
75
- let n = await o.motionZones?.getStatus({});
76
- if (e) return;
77
- if (!n) throw Error("device proxy not ready");
78
- V.current = !0;
79
- let r = n.regions.find((e) => e.shape.kind === "grid"), i = C(r ? r.shape.cells : [], t.grid.width, t.grid.height);
80
- P(i), M(E(i, t.grid.width, t.grid.height, b));
81
- } catch (t) {
82
- if (e) return;
83
- s(t) ? A(!0) : console.error("Motion Zones load failed", t);
84
- }
85
- })(), () => {
86
- e = !0;
87
- };
88
- }, [o]);
89
- let H = T ? T.grid.width : 0, U = T ? T.grid.height : 0, W = w(H, F), G = w(U, F), K = i(() => j && T ? D(j, H, U, F) : null, [
90
- j,
91
- T,
92
- H,
93
- U,
94
- F
95
- ]), q = i(() => K !== null && N !== null && !ne(K, N), [K, N]), J = i(() => K ? K.reduce((e, t) => t ? e + 1 : e, 0) : 0, [K]), Y = H * U, X = W * G, Z = t((e) => {
96
- X > 0 && M(Array.from({ length: X }, () => e));
97
- }, [X]), re = t(() => {
98
- M((e) => e && e.map((e) => !e));
99
- }, []), ie = t(() => {
100
- N && T && M(E(N, H, U, F));
101
- }, [
102
- N,
103
- T,
104
- H,
105
- U,
106
- F
107
- ]), ae = t((e) => {
108
- e === F || !T || M((t) => {
109
- if (!t) return I(e), t;
110
- let n = E(D(t, H, U, F), H, U, e);
111
- return I(e), n;
112
- });
113
- }, [
114
- F,
115
- T,
116
- H,
117
- U
118
- ]), Q = i(() => T && j ? [{
119
- id: v,
120
- shape: {
121
- kind: "grid",
122
- gridWidth: W,
123
- gridHeight: G,
124
- cells: [...j]
125
- }
126
- }] : [], [
127
- T,
128
- j,
129
- W,
130
- G
131
- ]), $ = t((e, t) => {
132
- t.kind === "grid" && M(t.cells);
133
- }, []), oe = t(async () => {
134
- if (!(!o || !j || !T)) {
135
- R(!0);
136
- try {
137
- let e = D(j, T.grid.width, T.grid.height, F), t = {
138
- kind: "grid",
139
- gridWidth: T.grid.width,
140
- gridHeight: T.grid.height,
141
- cells: e
142
- };
143
- await o.motionZones?.setZone({ patch: { regions: [{
144
- id: v,
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 = C(e ? e.shape.cells : [], T.grid.width, T.grid.height);
151
- P(t), M(E(t, T.grid.width, T.grid.height, F));
152
- }
153
- } catch (e) {
154
- console.error("Motion Zones save failed", e);
155
- } finally {
156
- R(!1);
157
- }
158
- }
159
- }, [
160
- o,
161
- j,
162
- T,
163
- F
164
- ]);
165
- return d(i(() => z && !k && T && j ? {
166
- id: te,
167
- order: _,
168
- node: /* @__PURE__ */ f(h, {
169
- transparent: !0,
170
- items: Q,
171
- supportedShapes: ["grid"],
172
- grid: {
173
- width: W,
174
- height: G
175
- },
176
- selectedId: v,
177
- onSelect: () => {},
178
- onShapeChange: $,
179
- onDrawComplete: () => {},
180
- drawingKind: null
181
- })
182
- } : null, [
183
- z,
184
- k,
185
- T,
186
- j,
187
- Q,
188
- $,
189
- W,
190
- G
191
- ])), o ? /* @__PURE__ */ f(u, {
192
- title: "Motion Zones",
193
- icon: /* @__PURE__ */ f(g, { className: "h-3.5 w-3.5 text-foreground-subtle" }),
194
- children: /* @__PURE__ */ f("div", {
195
- className: "flex flex-col gap-3",
196
- children: k ? /* @__PURE__ */ f("p", {
197
- className: `${l} leading-relaxed`,
198
- children: "This camera doesn't expose an on-board motion zones grid."
199
- }) : !k && T !== null && j !== null ? /* @__PURE__ */ p(m, { 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
- T.grid.width,
220
- "×",
221
- T.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: () => B((e) => !e),
230
- disabled: L,
231
- "aria-pressed": z,
232
- className: z ? S : x,
233
- children: z ? "Done editing" : "Edit grid"
234
- }),
235
- /* @__PURE__ */ f("button", {
236
- type: "button",
237
- onClick: () => Z(!0),
238
- disabled: L,
239
- className: x,
240
- children: "All on"
241
- }),
242
- /* @__PURE__ */ f("button", {
243
- type: "button",
244
- onClick: () => Z(!1),
245
- disabled: L,
246
- className: x,
247
- children: "All off"
248
- }),
249
- /* @__PURE__ */ f("button", {
250
- type: "button",
251
- onClick: re,
252
- disabled: L,
253
- className: x,
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
- }), y.map((e) => /* @__PURE__ */ p("button", {
264
- type: "button",
265
- onClick: () => ae(e),
266
- disabled: L,
267
- "aria-pressed": F === e,
268
- title: e === 1 ? `Camera grid ${H}×${U} (finest)` : `${w(H, e)}×${w(U, e)} painting grid · cells ×${e} bigger`,
269
- className: F === e ? S : x,
270
- children: ["×", e]
271
- }, e))]
272
- }),
273
- /* @__PURE__ */ p("span", {
274
- className: `${l} ml-1 tabular-nums`,
275
- children: [
276
- J,
277
- " / ",
278
- Y,
279
- " cells · ",
280
- T.grid.width,
281
- "×",
282
- T.grid.height,
283
- F === 1 ? "" : ` · paint ${W}×${G}`
284
- ]
285
- }),
286
- /* @__PURE__ */ f("span", { className: "flex-1" }),
287
- /* @__PURE__ */ f("button", {
288
- type: "button",
289
- onClick: ie,
290
- disabled: L || !q,
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: L || !q,
298
- className: S,
299
- children: L ? "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 { O as MotionZonesSettings };