@camstack/addon-osd-manager 0.1.108 → 0.1.110

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 (18) hide show
  1. package/dist/{MotionZonesSettings-BzISdGHH.mjs → MotionZonesSettings-mMDuvXWV.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-Bt3_2EKl.mjs → PrivacyMaskSettings-K3gDoEmA.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-06DMsHxC.mjs → SceneMonitorEditor-PxElG3NE.mjs} +13 -13
  4. package/dist/_stub.js +11 -13
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-Gm3yQ5Si.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-CZoX6N2L.mjs} +4 -4
  6. package/dist/{_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BblS1MmL.mjs → _virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-nrA2tN0c.mjs} +1 -1
  7. package/dist/addon-osd-manager.css +1 -1
  8. package/dist/{hostInit-BcdikRxN.mjs → hostInit-C9K_NNZy.mjs} +3 -3
  9. package/dist/index.js +102 -1
  10. package/dist/index.mjs +102 -1
  11. package/dist/{player-overlays-tTeFLkD9.mjs → player-overlays-CHC79YA3.mjs} +1 -1
  12. package/dist/remoteEntry.js +1 -1
  13. package/dist/{responsive-Bh8IG8OT.mjs → responsive-LN43GEk8.mjs} +1 -1
  14. package/dist/{use-device-snapshot-a9ticTCA.mjs → scene-monitor-copy-jPoCoWxW.mjs} +46 -46
  15. package/dist/{square-CI7Yp8Gw.mjs → square-DtyVaIJk.mjs} +1 -1
  16. package/dist/{trash-2-DbCE3CFA.mjs → trash-2-BOv0DQMJ.mjs} +1 -1
  17. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-BJr1VAOO.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-CE8wg9eY.mjs} +1 -1
  18. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -5363,7 +5363,7 @@ var ZodIssueCode = {
5363
5363
  var ZodFirstPartyTypeKind;
5364
5364
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5365
5365
  //#endregion
5366
- //#region ../types/dist/sleep-B1y0Fo1U.mjs
5366
+ //#region ../types/dist/sleep-Dk-BdnBf.mjs
5367
5367
  /**
5368
5368
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5369
5369
  * window to float samples (D455).
@@ -36434,6 +36434,26 @@ var PtzHomePresetSchema = object({
36434
36434
  "none"
36435
36435
  ])
36436
36436
  });
36437
+ /**
36438
+ * The camera's own idle-return behaviour: whether it goes home by itself, and
36439
+ * after how long.
36440
+ *
36441
+ * ONE shape, not two scalars, because on the camera they are ONE fact —
36442
+ * Reolink's guard point carries `benable` and `timeout` in the same element,
36443
+ * written by the same command. Reading them apart means two round-trips that
36444
+ * can disagree.
36445
+ *
36446
+ * `enabled` and `seconds` are INDEPENDENT: a camera can hold a 68 s delay with
36447
+ * the behaviour switched off, which is exactly what the vendor app leaves when
36448
+ * you turn the guard point off without clearing it. The first version of this
36449
+ * cap reported only the delay, so that state was invisible — a camera could be
36450
+ * configured to return after 68 seconds with no way to say whether it should
36451
+ * return at all.
36452
+ */
36453
+ var PtzHomeReturnSchema = object({
36454
+ enabled: boolean(),
36455
+ seconds: number().int()
36456
+ });
36437
36457
  var ptzCapability = {
36438
36458
  name: "ptz",
36439
36459
  scope: "device",
@@ -36493,6 +36513,54 @@ var ptzCapability = {
36493
36513
  auth: "admin"
36494
36514
  }),
36495
36515
  /**
36516
+ * Make WHERE THE HEAD IS POINTING RIGHT NOW this camera's home.
36517
+ *
36518
+ * `setHomePreset` takes a preset id, and a preset id is the wrong shape for
36519
+ * the most natural thing an operator does: aim the camera, then say "here".
36520
+ * It is also the only shape a camera whose home is NOT a preset can accept
36521
+ * -- Reolink's home is a guard point, a stored position with no id at all,
36522
+ * and hiding the control for that case (as the UI briefly did) left the one
36523
+ * vendor with a native home unable to set it.
36524
+ *
36525
+ * Each provider does it its own way:
36526
+ * reolink `setGrd` with `needSetPos`, pinning the guard point here
36527
+ * hikvision / amcrest save a preset, then pin it as home
36528
+ * onvif REFUSES -- its home is the PTZ origin and cannot be moved
36529
+ *
36530
+ * A provider that cannot honour it throws rather than silently doing
36531
+ * nothing: an operator who pressed "set home here" and saw no error would
36532
+ * believe it took.
36533
+ */
36534
+ captureHomeHere: method(object({ deviceId: number() }), _void(), {
36535
+ kind: "mutation",
36536
+ auth: "admin"
36537
+ }),
36538
+ /**
36539
+ * Whether the camera returns home on its own when left idle, and after how
36540
+ * long. `null` when it has no such behaviour at all.
36541
+ *
36542
+ * Reolink's guard point carries one (`timeout`, freely settable in
36543
+ * seconds). It is a real function of the camera that we did not expose at
36544
+ * all, and it belongs next to the home it governs rather than in a vendor
36545
+ * settings page nobody associates with Home.
36546
+ */
36547
+ getHomeReturn: method(object({ deviceId: number() }), PtzHomeReturnSchema.nullable()),
36548
+ /**
36549
+ * Set both together. Refused by a camera with no idle-return behaviour.
36550
+ *
36551
+ * They travel together for the same reason they are read together: the
36552
+ * underlying write carries both, so setting one alone means reading the
36553
+ * other back first and racing whoever else is writing.
36554
+ */
36555
+ setHomeReturn: method(object({
36556
+ deviceId: number(),
36557
+ enabled: boolean(),
36558
+ seconds: number().int().min(0).max(3600)
36559
+ }), _void(), {
36560
+ kind: "mutation",
36561
+ auth: "admin"
36562
+ }),
36563
+ /**
36496
36564
  * Pull the current PTZ position. Redundant with the auto-injected
36497
36565
  * `getStatus` method (see `status` below); kept for callers that
36498
36566
  * haven't migrated. Will be folded into `getStatus` in a future
@@ -44896,6 +44964,12 @@ Object.freeze({
44896
44964
  addonId: null,
44897
44965
  access: "create"
44898
44966
  },
44967
+ "ptz.captureHomeHere": {
44968
+ capName: "ptz",
44969
+ capScope: "device",
44970
+ addonId: null,
44971
+ access: "create"
44972
+ },
44899
44973
  "ptz.continuousMove": {
44900
44974
  capName: "ptz",
44901
44975
  capScope: "device",
@@ -44914,6 +44988,12 @@ Object.freeze({
44914
44988
  addonId: null,
44915
44989
  access: "view"
44916
44990
  },
44991
+ "ptz.getHomeReturn": {
44992
+ capName: "ptz",
44993
+ capScope: "device",
44994
+ addonId: null,
44995
+ access: "view"
44996
+ },
44917
44997
  "ptz.getOptions": {
44918
44998
  capName: "ptz",
44919
44999
  capScope: "device",
@@ -44968,6 +45048,12 @@ Object.freeze({
44968
45048
  addonId: null,
44969
45049
  access: "create"
44970
45050
  },
45051
+ "ptz.setHomeReturn": {
45052
+ capName: "ptz",
45053
+ capScope: "device",
45054
+ addonId: null,
45055
+ access: "create"
45056
+ },
44971
45057
  "ptz.stop": {
44972
45058
  capName: "ptz",
44973
45059
  capScope: "device",
@@ -48131,6 +48217,11 @@ Object.freeze({
48131
48217
  form: "single",
48132
48218
  optional: false
48133
48219
  }],
48220
+ "ptz.captureHomeHere": [{
48221
+ name: "deviceId",
48222
+ form: "single",
48223
+ optional: false
48224
+ }],
48134
48225
  "ptz.continuousMove": [{
48135
48226
  name: "deviceId",
48136
48227
  form: "single",
@@ -48146,6 +48237,11 @@ Object.freeze({
48146
48237
  form: "single",
48147
48238
  optional: false
48148
48239
  }],
48240
+ "ptz.getHomeReturn": [{
48241
+ name: "deviceId",
48242
+ form: "single",
48243
+ optional: false
48244
+ }],
48149
48245
  "ptz.getOptions": [{
48150
48246
  name: "deviceId",
48151
48247
  form: "single",
@@ -48191,6 +48287,11 @@ Object.freeze({
48191
48287
  form: "single",
48192
48288
  optional: false
48193
48289
  }],
48290
+ "ptz.setHomeReturn": [{
48291
+ name: "deviceId",
48292
+ form: "single",
48293
+ optional: false
48294
+ }],
48194
48295
  "ptz.stop": [{
48195
48296
  name: "deviceId",
48196
48297
  form: "single",
package/dist/index.mjs CHANGED
@@ -5359,7 +5359,7 @@ var ZodIssueCode = {
5359
5359
  var ZodFirstPartyTypeKind;
5360
5360
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5361
5361
  //#endregion
5362
- //#region ../types/dist/sleep-B1y0Fo1U.mjs
5362
+ //#region ../types/dist/sleep-Dk-BdnBf.mjs
5363
5363
  /**
5364
5364
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5365
5365
  * window to float samples (D455).
@@ -36430,6 +36430,26 @@ var PtzHomePresetSchema = object({
36430
36430
  "none"
36431
36431
  ])
36432
36432
  });
36433
+ /**
36434
+ * The camera's own idle-return behaviour: whether it goes home by itself, and
36435
+ * after how long.
36436
+ *
36437
+ * ONE shape, not two scalars, because on the camera they are ONE fact —
36438
+ * Reolink's guard point carries `benable` and `timeout` in the same element,
36439
+ * written by the same command. Reading them apart means two round-trips that
36440
+ * can disagree.
36441
+ *
36442
+ * `enabled` and `seconds` are INDEPENDENT: a camera can hold a 68 s delay with
36443
+ * the behaviour switched off, which is exactly what the vendor app leaves when
36444
+ * you turn the guard point off without clearing it. The first version of this
36445
+ * cap reported only the delay, so that state was invisible — a camera could be
36446
+ * configured to return after 68 seconds with no way to say whether it should
36447
+ * return at all.
36448
+ */
36449
+ var PtzHomeReturnSchema = object({
36450
+ enabled: boolean(),
36451
+ seconds: number().int()
36452
+ });
36433
36453
  var ptzCapability = {
36434
36454
  name: "ptz",
36435
36455
  scope: "device",
@@ -36489,6 +36509,54 @@ var ptzCapability = {
36489
36509
  auth: "admin"
36490
36510
  }),
36491
36511
  /**
36512
+ * Make WHERE THE HEAD IS POINTING RIGHT NOW this camera's home.
36513
+ *
36514
+ * `setHomePreset` takes a preset id, and a preset id is the wrong shape for
36515
+ * the most natural thing an operator does: aim the camera, then say "here".
36516
+ * It is also the only shape a camera whose home is NOT a preset can accept
36517
+ * -- Reolink's home is a guard point, a stored position with no id at all,
36518
+ * and hiding the control for that case (as the UI briefly did) left the one
36519
+ * vendor with a native home unable to set it.
36520
+ *
36521
+ * Each provider does it its own way:
36522
+ * reolink `setGrd` with `needSetPos`, pinning the guard point here
36523
+ * hikvision / amcrest save a preset, then pin it as home
36524
+ * onvif REFUSES -- its home is the PTZ origin and cannot be moved
36525
+ *
36526
+ * A provider that cannot honour it throws rather than silently doing
36527
+ * nothing: an operator who pressed "set home here" and saw no error would
36528
+ * believe it took.
36529
+ */
36530
+ captureHomeHere: method(object({ deviceId: number() }), _void(), {
36531
+ kind: "mutation",
36532
+ auth: "admin"
36533
+ }),
36534
+ /**
36535
+ * Whether the camera returns home on its own when left idle, and after how
36536
+ * long. `null` when it has no such behaviour at all.
36537
+ *
36538
+ * Reolink's guard point carries one (`timeout`, freely settable in
36539
+ * seconds). It is a real function of the camera that we did not expose at
36540
+ * all, and it belongs next to the home it governs rather than in a vendor
36541
+ * settings page nobody associates with Home.
36542
+ */
36543
+ getHomeReturn: method(object({ deviceId: number() }), PtzHomeReturnSchema.nullable()),
36544
+ /**
36545
+ * Set both together. Refused by a camera with no idle-return behaviour.
36546
+ *
36547
+ * They travel together for the same reason they are read together: the
36548
+ * underlying write carries both, so setting one alone means reading the
36549
+ * other back first and racing whoever else is writing.
36550
+ */
36551
+ setHomeReturn: method(object({
36552
+ deviceId: number(),
36553
+ enabled: boolean(),
36554
+ seconds: number().int().min(0).max(3600)
36555
+ }), _void(), {
36556
+ kind: "mutation",
36557
+ auth: "admin"
36558
+ }),
36559
+ /**
36492
36560
  * Pull the current PTZ position. Redundant with the auto-injected
36493
36561
  * `getStatus` method (see `status` below); kept for callers that
36494
36562
  * haven't migrated. Will be folded into `getStatus` in a future
@@ -44892,6 +44960,12 @@ Object.freeze({
44892
44960
  addonId: null,
44893
44961
  access: "create"
44894
44962
  },
44963
+ "ptz.captureHomeHere": {
44964
+ capName: "ptz",
44965
+ capScope: "device",
44966
+ addonId: null,
44967
+ access: "create"
44968
+ },
44895
44969
  "ptz.continuousMove": {
44896
44970
  capName: "ptz",
44897
44971
  capScope: "device",
@@ -44910,6 +44984,12 @@ Object.freeze({
44910
44984
  addonId: null,
44911
44985
  access: "view"
44912
44986
  },
44987
+ "ptz.getHomeReturn": {
44988
+ capName: "ptz",
44989
+ capScope: "device",
44990
+ addonId: null,
44991
+ access: "view"
44992
+ },
44913
44993
  "ptz.getOptions": {
44914
44994
  capName: "ptz",
44915
44995
  capScope: "device",
@@ -44964,6 +45044,12 @@ Object.freeze({
44964
45044
  addonId: null,
44965
45045
  access: "create"
44966
45046
  },
45047
+ "ptz.setHomeReturn": {
45048
+ capName: "ptz",
45049
+ capScope: "device",
45050
+ addonId: null,
45051
+ access: "create"
45052
+ },
44967
45053
  "ptz.stop": {
44968
45054
  capName: "ptz",
44969
45055
  capScope: "device",
@@ -48127,6 +48213,11 @@ Object.freeze({
48127
48213
  form: "single",
48128
48214
  optional: false
48129
48215
  }],
48216
+ "ptz.captureHomeHere": [{
48217
+ name: "deviceId",
48218
+ form: "single",
48219
+ optional: false
48220
+ }],
48130
48221
  "ptz.continuousMove": [{
48131
48222
  name: "deviceId",
48132
48223
  form: "single",
@@ -48142,6 +48233,11 @@ Object.freeze({
48142
48233
  form: "single",
48143
48234
  optional: false
48144
48235
  }],
48236
+ "ptz.getHomeReturn": [{
48237
+ name: "deviceId",
48238
+ form: "single",
48239
+ optional: false
48240
+ }],
48145
48241
  "ptz.getOptions": [{
48146
48242
  name: "deviceId",
48147
48243
  form: "single",
@@ -48187,6 +48283,11 @@ Object.freeze({
48187
48283
  form: "single",
48188
48284
  optional: false
48189
48285
  }],
48286
+ "ptz.setHomeReturn": [{
48287
+ name: "deviceId",
48288
+ form: "single",
48289
+ optional: false
48290
+ }],
48190
48291
  "ptz.stop": [{
48191
48292
  name: "deviceId",
48192
48293
  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-Bh8IG8OT.mjs";
2
+ import { o as i, s as a } from "./responsive-LN43GEk8.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-BJr1VAOO.mjs";
1
+ import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-CE8wg9eY.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-BblS1MmL.mjs";
3
+ import { n as u } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-nrA2tN0c.mjs";
4
4
  //#region ../../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,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-Bh8IG8OT.mjs";
2
+ import { s as i } from "./responsive-LN43GEk8.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"
@@ -86,47 +86,71 @@ function g(e) {
86
86
  return t !== "/" && (e === m() || e.startsWith(t)) ? e : `${t}${n}`;
87
87
  }
88
88
  //#endregion
89
+ //#region ../ui-library/src/hooks/use-device-snapshot.ts
90
+ var _ = "/addon/snapshot/media";
91
+ function v(r, i = {}) {
92
+ let { width: a, baseUrl: o } = i, [s, c] = t(0);
93
+ return {
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
+ }, [
101
+ r,
102
+ a,
103
+ o,
104
+ s
105
+ ]),
106
+ loading: !1,
107
+ refresh: e(() => {
108
+ c((e) => e + 1);
109
+ }, [])
110
+ };
111
+ }
112
+ //#endregion
89
113
  //#region ../ui-library/src/composites/cap-settings/scene-monitor-copy.ts
90
- var _ = ["day", "ir"], v = {
114
+ var y = ["day", "ir"], b = {
91
115
  day: "Daylight",
92
116
  ir: "Night (IR)",
93
117
  night: "Night",
94
118
  dawn: "Dawn",
95
119
  dusk: "Dusk"
96
120
  };
97
- function y(e) {
98
- return v[e] ?? e;
121
+ function x(e) {
122
+ return b[e] ?? e;
99
123
  }
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));
124
+ function S(e) {
125
+ let t = new Set(e.coveredConditions), n = y.map((e) => `${x(e)} ${t.has(e) ? "✓" : "✗"}`), r = [...t].filter((e) => !y.some((t) => t === e));
126
+ for (let e of r) n.push(`${x(e)} ✓`);
127
+ let i = y.filter((e) => !t.has(e));
104
128
  if (i.length === 0) return n.join(" · ");
105
129
  if (t.size === 0) return `${n.join(" · ")} — nothing captured yet, so this scene is not watching.`;
106
- let a = i.map((e) => y(e).toLowerCase()).join(" and ");
130
+ let a = i.map((e) => x(e).toLowerCase()).join(" and ");
107
131
  return e.onUncoveredCondition === "judge-anyway" ? `${n.join(" · ")} — ${a} judged against the references you do have.` : `${n.join(" · ")} — optional; checks in ${a} are skipped.`;
108
132
  }
109
- function x(e) {
133
+ function C(e) {
110
134
  if (e.suspendedCondition === null) return null;
111
- let t = y(e.suspendedCondition).toLowerCase();
135
+ let t = x(e.suspendedCondition).toLowerCase();
112
136
  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.`;
113
137
  }
114
- var S = {
138
+ var w = {
115
139
  "no-reference-for-condition": "can’t tell — nothing has been captured for this scene yet. Press “Capture daylight” to photograph what normal looks like.",
116
140
  "view-shifted": "can’t tell — the camera view has moved since the reference was captured. Re-capture it.",
117
141
  "no-vision-profile": "can’t tell — the vision model is unreachable, so the change is on hold.",
118
142
  "encoder-model-changed": "can’t tell — the embedding model changed, so the stored references are unreadable. Re-capture them.",
119
143
  "no-snapshot": "can’t tell — this camera did not return a frame."
120
144
  };
121
- function C(e, t) {
145
+ function T(e, t) {
122
146
  if (e.states.length === 0) return "Not armed yet — capture the initial state to start watching.";
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))}`;
147
+ if (e.verdict === "unknown") return e.unavailable === null ? "can’t tell right now." : w[e.unavailable];
148
+ let n = e.verdict === "diverged" ? e.divergedAt : e.armedAt, r = n === null ? "" : ` for ${k(Math.max(0, t - n))}`;
125
149
  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.`;
126
- let i = x(e);
150
+ let i = C(e);
127
151
  return i === null ? e.verdict === "diverged" ? `CHANGED${r}` : `Normal${r}` : i;
128
152
  }
129
- function w(e) {
153
+ function E(e) {
130
154
  return e.states.length === 0 ? {
131
155
  text: "Not armed",
132
156
  tone: "unknown"
@@ -147,11 +171,11 @@ function w(e) {
147
171
  tone: "unknown"
148
172
  };
149
173
  }
150
- var T = .4;
151
- function E(e) {
152
- return e.width * e.height > T;
174
+ var D = .4;
175
+ function O(e) {
176
+ return e.width * e.height > D;
153
177
  }
154
- function D(e) {
178
+ function k(e) {
155
179
  let t = Math.floor(e / 1e3);
156
180
  if (t < 60) return `${t}s`;
157
181
  let n = Math.floor(t / 60);
@@ -160,28 +184,4 @@ function D(e) {
160
184
  return r < 48 ? `${r}h` : `${Math.floor(r / 24)}d`;
161
185
  }
162
186
  //#endregion
163
- //#region ../ui-library/src/hooks/use-device-snapshot.ts
164
- var O = "/addon/snapshot/media";
165
- function k(r, i = {}) {
166
- let { width: a, baseUrl: o } = i, [s, c] = t(0);
167
- return {
168
- src: n(() => {
169
- if (r === null || r <= 0) return null;
170
- let e = o === void 0 ? m() : o.replace(/\/+$/, ""), t = new URLSearchParams();
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)));
172
- let n = t.toString();
173
- return `${e}${O}/${String(r)}.jpg${n.length > 0 ? `?${n}` : ""}`;
174
- }, [
175
- r,
176
- a,
177
- o,
178
- s
179
- ]),
180
- loading: !1,
181
- refresh: e(() => {
182
- c((e) => e + 1);
183
- }, [])
184
- };
185
- }
186
- //#endregion
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 };
187
+ export { T as a, g as c, a as d, O as i, s as l, E as n, x as o, S as r, v as s, y as t, o as u };
@@ -1,4 +1,4 @@
1
- import { s as e } from "./responsive-Bh8IG8OT.mjs";
1
+ import { s as e } from "./responsive-LN43GEk8.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-Bh8IG8OT.mjs";
1
+ import { s as e } from "./responsive-LN43GEk8.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-Gm3yQ5Si.mjs")).catch((e) => {
2756
+ return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-CZoX6N2L.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.108",
3
+ "version": "0.1.110",
4
4
  "description": "Binds camera on-screen-display slots to live state and recognitions",
5
5
  "keywords": [
6
6
  "camstack",