@camstack/addon-osd-manager 0.1.68 → 0.1.70

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 (17) hide show
  1. package/dist/{MotionZonesSettings-B_4oSB9j.mjs → MotionZonesSettings-v7mdWSJz.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-BA9bkG8G.mjs → PrivacyMaskSettings-BMx0poHF.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-ZIDwRiWt.mjs → SceneMonitorEditor-D8YJqooy.mjs} +254 -254
  4. package/dist/_stub.js +13 -13
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-DNCbtovz.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-DDGVZgEx.mjs} +4 -4
  6. package/dist/{_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CzbsPrgW.mjs → _virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CbMqoUGE.mjs} +1 -1
  7. package/dist/{hostInit-CZ2Qp1Fj.mjs → hostInit-DoM6vf6N.mjs} +3 -3
  8. package/dist/index.js +118 -1
  9. package/dist/index.mjs +118 -1
  10. package/dist/{player-overlays-D5k6Sil0.mjs → player-overlays-C16Fbveg.mjs} +1 -1
  11. package/dist/remoteEntry.js +1 -1
  12. package/dist/{responsive-Bqsf65Tp.mjs → responsive-DgE6uJQL.mjs} +1 -1
  13. package/dist/{square-B9YAq7Ib.mjs → square-fdvKDCKB.mjs} +1 -1
  14. package/dist/{trash-2-CfxM8zKf.mjs → trash-2-C1RIMmGl.mjs} +1 -1
  15. package/dist/{use-device-snapshot-Cd65t8qo.mjs → use-device-snapshot-Bs7H8rkB.mjs} +65 -27
  16. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-CHlLNZT0.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-B3aCdsuR.mjs} +1 -1
  17. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -6444,6 +6444,21 @@ var CameraStreamSchema = object({
6444
6444
  */
6445
6445
  autoEligible: boolean().optional(),
6446
6446
  /**
6447
+ * The profile slot the PUBLISHER says this stream is: `low` for a stream
6448
+ * whose only sensible role is the low-bandwidth one, `high` for a main
6449
+ * stream. Consulted by the broker's automatic ranking
6450
+ * (`rankInitialAssignment`) BEFORE the pixel-count heuristic, and only there:
6451
+ * an operator's manual assignment still wins, and an absent hint is the
6452
+ * pixel-ranked default every camera had before this field existed.
6453
+ *
6454
+ * Why it exists: a camera with ONE stream ranked to `mid` — the slot no
6455
+ * storage class is written for on its own (`recordings` is high|mid,
6456
+ * `recordingsLow` is low) and the one profile scrub does not read. The robot
6457
+ * camera's single 720p relay is a `low` in every respect except the slot the
6458
+ * heuristic put it in.
6459
+ */
6460
+ profileHint: CamProfileSchema.optional(),
6461
+ /**
6447
6462
  * Transport-specific opaque metadata. The broker passes it through to
6448
6463
  * the source reader without inspecting it. Currently used by
6449
6464
  * `pull-rfc4571` streams to carry the upstream SDP (so the reader can
@@ -7989,7 +8004,22 @@ var RecordingTriggersSchema = object({
7989
8004
  * il livello: un contatto trovato già aperto al riavvio del runner non fa
7990
8005
  * registrare.
7991
8006
  */
7992
- sensorDeviceIds: array(number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
8007
+ sensorDeviceIds: array(number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional(),
8008
+ /**
8009
+ * La camera registra per tutta la durata del SEGNALE che lei stessa
8010
+ * pubblica — la cap `recording-signal` (`active: true` mentre il device è in
8011
+ * funzione: un robot che pulisce). È un LIVELLO, non un fronte: la finestra
8012
+ * resta aperta finché il segnale è alto e si chiude `postBufferSec` dopo la
8013
+ * caduta, così una pulizia di quaranta minuti è UNA clip.
8014
+ *
8015
+ * Non nomina un device: il segnale è della camera stessa, tenuto fresco dal
8016
+ * suo provider (D224); il recorder lo ascolta su `DeviceStateChanged` e lo
8017
+ * riconcilia leggendo la slice via RPC, con un tetto oltre il quale un
8018
+ * segnale mai abbassato (un evento perso) non può tenere aperta una
8019
+ * registrazione (D11). Vedi `recorder/addon/band-decision.ts`
8020
+ * (`holdTrigger` / `releaseTrigger`).
8021
+ */
8022
+ deviceSignal: boolean().optional()
7993
8023
  });
7994
8024
  /**
7995
8025
  * Mode of a single recording band — the recorder per-band vocabulary.
@@ -11866,6 +11896,8 @@ var streamBrokerCapability = {
11866
11896
  label: string().optional(),
11867
11897
  deviceFeatures: array(string()).optional(),
11868
11898
  autoEligible: boolean().optional(),
11899
+ /** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
11900
+ profileHint: CamProfileSchema.optional(),
11869
11901
  metadata: record(string(), unknown()).optional(),
11870
11902
  /** Required when kind === 'derived' — the source camStreamId the
11871
11903
  * derived broker reads its encoded plane from.
@@ -35161,6 +35193,77 @@ var recordingExportCapability = {
35161
35193
  }
35162
35194
  };
35163
35195
  /**
35196
+ * A camera's own "record me NOW" LEVEL — a signal the device raises while
35197
+ * something it knows about is happening (a robot vacuum cleaning, a machine
35198
+ * running, a gate open) and lowers when it stops.
35199
+ *
35200
+ * It is a level, not an edge. The sensor triggers the recorder already listens
35201
+ * to (`SOURCE_CAP_ACTIVE_FIELD`) fire on a rising edge and record for a fixed
35202
+ * post-buffer; a cleaning lasts forty minutes, and forty minutes of "this is
35203
+ * still happening" cannot be expressed as an edge plus a post-buffer without
35204
+ * either re-triggering on a timer (polling — D224 forbids the consumer keeping
35205
+ * the fact fresh) or picking a post-buffer long enough to cover every job,
35206
+ * which records the dock for that long after every short one. So the recorder
35207
+ * reads the LEVEL: it records for as long as `active` is true, plus the band's
35208
+ * own post-buffer once it falls.
35209
+ *
35210
+ * Who owns the fact: the PROVIDER of the device, which already reads the state
35211
+ * the signal is derived from (the vacuum's lifecycle state, for Dreame). It
35212
+ * writes this slice on every change; consumers subscribe to the kernel's
35213
+ * `DeviceStateChanged` for it and read it back through
35214
+ * `deviceState.getCapSlice` to reconcile — never a second copy, never a poll
35215
+ * against the device (D224, D8/D11).
35216
+ *
35217
+ * Deliberately NOT a `binary` sensor on the camera: a binary sensor is exported
35218
+ * to Home Assistant, HomeKit and the sensor picker as a thing an operator can
35219
+ * bind, and "the camera wants to record" is not a room sensor. It is a fact
35220
+ * about the camera, on the camera.
35221
+ */
35222
+ var RecordingSignalStatusSchema = object({
35223
+ /** True while the device asks to be recorded. */
35224
+ active: boolean(),
35225
+ /**
35226
+ * Why, in the provider's own vocabulary (a vacuum's `cleaning` / `docked`,
35227
+ * …). Free text for the log line and the UI badge; the recorder never
35228
+ * branches on it.
35229
+ */
35230
+ reason: string(),
35231
+ /** Ms epoch of the last `active` transition. 0 if never observed. */
35232
+ lastChangedAt: number()
35233
+ });
35234
+ /** The runtime-state slice: the status plus the clock every slice carries. */
35235
+ var RecordingSignalRuntimeStateSchema = RecordingSignalStatusSchema.extend({ lastFetchedAt: number() });
35236
+ var recordingSignalCapability = {
35237
+ name: "recording-signal",
35238
+ scope: "device",
35239
+ deviceNative: true,
35240
+ mode: "singleton",
35241
+ deviceTypes: [DeviceType.Camera],
35242
+ methods: {
35243
+ /** The current level, straight from the slice the provider keeps fresh. */
35244
+ getStatus: method(object({ deviceId: number() }), RecordingSignalStatusSchema) },
35245
+ status: {
35246
+ schema: RecordingSignalStatusSchema,
35247
+ kind: "push",
35248
+ empty: {
35249
+ active: false,
35250
+ reason: "unknown",
35251
+ lastChangedAt: 0
35252
+ }
35253
+ },
35254
+ runtimeState: RecordingSignalRuntimeStateSchema,
35255
+ /**
35256
+ * Runtime-state durability: **session** — a restored `active: true` from
35257
+ * before a restart is exactly the stale level the recorder's reconcile bound
35258
+ * exists to end, and the provider re-derives the true level on activation
35259
+ * anyway. Nothing is lost by forgetting it; a lie is avoided.
35260
+ *
35261
+ * See `RuntimeStateDurability`. Enforced by
35262
+ * `scripts/check-runtime-state-durability.ts`.
35263
+ */
35264
+ durability: "session"
35265
+ };
35266
+ /**
35164
35267
  * scene-monitor — device-scoped reference-region state cap. An operator marks
35165
35268
  * a rect ROI on a camera frame and names one or more states; the engine
35166
35269
  * (pipeline-analytics, designated post-processing node) reports which state is
@@ -35658,6 +35761,8 @@ var CamStreamDescriptorSchema = object({
35658
35761
  deviceFeatures: array(string()).optional(),
35659
35762
  /** Eligible for automatic profile assignment. Absent = `true`. */
35660
35763
  autoEligible: boolean().optional(),
35764
+ /** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
35765
+ profileHint: CamProfileSchema.optional(),
35661
35766
  /** Transport-specific opaque metadata (e.g. rfc4571 SDP). */
35662
35767
  metadata: record(string(), unknown()).optional()
35663
35768
  });
@@ -37833,6 +37938,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
37833
37938
  rebootCapability,
37834
37939
  recordingCapability,
37835
37940
  recordingExportCapability,
37941
+ recordingSignalCapability,
37836
37942
  sceneMonitorCapability,
37837
37943
  scriptRunnerCapability,
37838
37944
  serverManagementCapability,
@@ -42510,6 +42616,12 @@ Object.freeze({
42510
42616
  addonId: null,
42511
42617
  access: "view"
42512
42618
  },
42619
+ "recordingSignal.getStatus": {
42620
+ capName: "recording-signal",
42621
+ capScope: "device",
42622
+ addonId: null,
42623
+ access: "view"
42624
+ },
42513
42625
  "sceneMonitor.captureReference": {
42514
42626
  capName: "scene-monitor",
42515
42627
  capScope: "device",
@@ -45502,6 +45614,11 @@ Object.freeze({
45502
45614
  form: "single",
45503
45615
  optional: true
45504
45616
  }],
45617
+ "recordingSignal.getStatus": [{
45618
+ name: "deviceId",
45619
+ form: "single",
45620
+ optional: false
45621
+ }],
45505
45622
  "sceneMonitor.captureReference": [{
45506
45623
  name: "deviceId",
45507
45624
  form: "single",
@@ -1,5 +1,5 @@
1
1
  import { h as e, l as t, u as n, y as r } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-Bs1t18EM.mjs";
2
- import { o as i, s as a } from "./responsive-Bqsf65Tp.mjs";
2
+ import { o as i, s as a } from "./responsive-DgE6uJQL.mjs";
3
3
  import { n as o, r as s, t as c } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DalfdIDw.mjs";
4
4
  var l = a("chevron-down", [["path", {
5
5
  d: "m6 9 6 6 6-6",
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-CHlLNZT0.mjs";
1
+ import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-B3aCdsuR.mjs";
2
2
  export { t as get, e as init };
@@ -1,6 +1,6 @@
1
1
  import { c as e, g as t, h as n, l as r, n as i, p as a, r as o, t as s, u as c, y as l } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-Bs1t18EM.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 { n as u } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CzbsPrgW.mjs";
3
+ import { n as u } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CbMqoUGE.mjs";
4
4
  //#region ../ui-library/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
5
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) => {
@@ -1,4 +1,4 @@
1
- import { s as e } from "./responsive-Bqsf65Tp.mjs";
1
+ import { s as e } from "./responsive-DgE6uJQL.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 { s as e } from "./responsive-Bqsf65Tp.mjs";
1
+ import { s as e } from "./responsive-DgE6uJQL.mjs";
2
2
  var t = e("trash-2", [
3
3
  ["path", {
4
4
  d: "M10 11v6",
@@ -1,5 +1,5 @@
1
1
  import { c as e, h as t, p as n, y as r } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-Bs1t18EM.mjs";
2
- import { s as i } from "./responsive-Bqsf65Tp.mjs";
2
+ import { s as i } from "./responsive-DgE6uJQL.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"
@@ -48,46 +48,85 @@ var a = i("camera", [["path", {
48
48
  }], ["path", {
49
49
  d: "M3 3v5h5",
50
50
  key: "1xhq8a"
51
- }]]), c = ["day", "ir"], l = {
51
+ }]]);
52
+ //#endregion
53
+ //#region ../ui-library/src/lib/hub-mount.ts
54
+ r();
55
+ var c = "camstack-mount", l = /^\/(?:[A-Za-z0-9_\-.]+\/)*$/, u = null;
56
+ function d(e) {
57
+ if (e == null || e === "") return null;
58
+ let t = e.endsWith("/") ? e : `${e}/`;
59
+ return !l.test(t) || t.includes("/../") || t.includes("/./") ? null : t;
60
+ }
61
+ function f() {
62
+ if (typeof document > "u") return "/";
63
+ let e = d(document.querySelector(`meta[name="${c}"]`)?.getAttribute("content"));
64
+ if (e !== null) return e;
65
+ if (document.querySelector("base[href]") !== null) try {
66
+ let e = new URL(document.baseURI);
67
+ if (e.origin === window.location.origin) {
68
+ let t = d(e.pathname);
69
+ if (t !== null) return t;
70
+ }
71
+ } catch {}
72
+ return "/";
73
+ }
74
+ function p() {
75
+ return u === null && (u = f()), u;
76
+ }
77
+ function m() {
78
+ return p().replace(/\/$/, "");
79
+ }
80
+ function h(e) {
81
+ return /^[a-z][a-z0-9+.-]*:/i.test(e) || e.startsWith("//");
82
+ }
83
+ function g(e) {
84
+ if (h(e)) return e;
85
+ let t = p(), n = e.replace(/^\/+/, "");
86
+ return t !== "/" && (e === m() || e.startsWith(t)) ? e : `${t}${n}`;
87
+ }
88
+ //#endregion
89
+ //#region ../ui-library/src/composites/cap-settings/scene-monitor-copy.ts
90
+ var _ = ["day", "ir"], v = {
52
91
  day: "Daylight",
53
92
  ir: "Night (IR)",
54
93
  night: "Night",
55
94
  dawn: "Dawn",
56
95
  dusk: "Dusk"
57
96
  };
58
- function u(e) {
59
- return l[e] ?? e;
97
+ function y(e) {
98
+ return v[e] ?? e;
60
99
  }
61
- function d(e) {
62
- let t = new Set(e.coveredConditions), n = c.map((e) => `${u(e)} ${t.has(e) ? "✓" : "✗"}`), r = [...t].filter((e) => !c.some((t) => t === e));
63
- for (let e of r) n.push(`${u(e)} ✓`);
64
- let i = c.filter((e) => !t.has(e));
100
+ function b(e) {
101
+ let t = new Set(e.coveredConditions), n = _.map((e) => `${y(e)} ${t.has(e) ? "✓" : "✗"}`), r = [...t].filter((e) => !_.some((t) => t === e));
102
+ for (let e of r) n.push(`${y(e)} ✓`);
103
+ let i = _.filter((e) => !t.has(e));
65
104
  if (i.length === 0) return n.join(" · ");
66
105
  if (t.size === 0) return `${n.join(" · ")} — nothing captured yet, so this scene is not watching.`;
67
- let a = i.map((e) => u(e).toLowerCase()).join(" and ");
106
+ let a = i.map((e) => y(e).toLowerCase()).join(" and ");
68
107
  return e.onUncoveredCondition === "judge-anyway" ? `${n.join(" · ")} — ${a} judged against the references you do have.` : `${n.join(" · ")} — optional; checks in ${a} are skipped.`;
69
108
  }
70
- function f(e) {
109
+ function x(e) {
71
110
  if (e.suspendedCondition === null) return null;
72
- let t = u(e.suspendedCondition).toLowerCase();
111
+ let t = y(e.suspendedCondition).toLowerCase();
73
112
  return `Paused — nothing was captured in ${t}, so checks are on hold until the light changes back. Capture ${t} if you want it watched around the clock.`;
74
113
  }
75
- var p = {
114
+ var S = {
76
115
  "no-reference-for-condition": "can’t tell — nothing has been captured for this scene yet. Press “Capture daylight” to photograph what normal looks like.",
77
116
  "view-shifted": "can’t tell — the camera view has moved since the reference was captured. Re-capture it.",
78
117
  "no-vision-profile": "can’t tell — the vision model is unreachable, so the change is on hold.",
79
118
  "encoder-model-changed": "can’t tell — the embedding model changed, so the stored references are unreadable. Re-capture them.",
80
119
  "no-snapshot": "can’t tell — this camera did not return a frame."
81
120
  };
82
- function m(e, t) {
121
+ function C(e, t) {
83
122
  if (e.states.length === 0) return "Not armed yet — capture the initial state to start watching.";
84
- if (e.verdict === "unknown") return e.unavailable === null ? "can’t tell right now." : p[e.unavailable];
85
- let n = e.verdict === "diverged" ? e.divergedAt : e.armedAt, r = n === null ? "" : ` for ${v(Math.max(0, t - n))}`;
123
+ if (e.verdict === "unknown") return e.unavailable === null ? "can’t tell right now." : S[e.unavailable];
124
+ let n = e.verdict === "diverged" ? e.divergedAt : e.armedAt, r = n === null ? "" : ` for ${D(Math.max(0, t - n))}`;
86
125
  if (e.latched) return e.verdict === "diverged" ? `CHANGED${r} — press Reset when you have dealt with it.` : `Back to normal, but still flagged as changed${r}. Press Reset to clear it.`;
87
- let i = f(e);
126
+ let i = x(e);
88
127
  return i === null ? e.verdict === "diverged" ? `CHANGED${r}` : `Normal${r}` : i;
89
128
  }
90
- function h(e) {
129
+ function w(e) {
91
130
  return e.states.length === 0 ? {
92
131
  text: "Not armed",
93
132
  tone: "unknown"
@@ -108,11 +147,11 @@ function h(e) {
108
147
  tone: "unknown"
109
148
  };
110
149
  }
111
- var g = .4;
112
- function _(e) {
113
- return e.width * e.height > g;
150
+ var T = .4;
151
+ function E(e) {
152
+ return e.width * e.height > T;
114
153
  }
115
- function v(e) {
154
+ function D(e) {
116
155
  let t = Math.floor(e / 1e3);
117
156
  if (t < 60) return `${t}s`;
118
157
  let n = Math.floor(t / 60);
@@ -122,17 +161,16 @@ function v(e) {
122
161
  }
123
162
  //#endregion
124
163
  //#region ../ui-library/src/hooks/use-device-snapshot.ts
125
- r();
126
- var y = "/addon/snapshot/media";
127
- function b(r, i = {}) {
164
+ var O = "/addon/snapshot/media";
165
+ function k(r, i = {}) {
128
166
  let { width: a, baseUrl: o } = i, [s, c] = t(0);
129
167
  return {
130
168
  src: n(() => {
131
169
  if (r === null || r <= 0) return null;
132
- let e = o === void 0 ? "" : o.replace(/\/+$/, ""), t = new URLSearchParams();
170
+ let e = o === void 0 ? m() : o.replace(/\/+$/, ""), t = new URLSearchParams();
133
171
  a !== void 0 && Number.isInteger(a) && a > 0 && t.set("w", String(a)), s > 0 && (t.set("force", "1"), t.set("r", String(s)));
134
172
  let n = t.toString();
135
- return `${e}${y}/${String(r)}.jpg${n.length > 0 ? `?${n}` : ""}`;
173
+ return `${e}${O}/${String(r)}.jpg${n.length > 0 ? `?${n}` : ""}`;
136
174
  }, [
137
175
  r,
138
176
  a,
@@ -146,4 +184,4 @@ function b(r, i = {}) {
146
184
  };
147
185
  }
148
186
  //#endregion
149
- export { _ as a, s as c, d as i, o as l, c as n, m as o, h as r, u as s, b as t, a as u };
187
+ export { E as a, g as c, a as d, b as i, s as l, _ as n, C as o, w as r, y as s, k as t, o as u };
@@ -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-DNCbtovz.mjs")).catch((e) => {
2756
+ return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-DDGVZgEx.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.68",
3
+ "version": "0.1.70",
4
4
  "description": "Binds camera on-screen-display slots to live state and recognitions",
5
5
  "keywords": [
6
6
  "camstack",