@camstack/addon-post-analysis 1.1.12 → 1.1.14

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.
@@ -0,0 +1,145 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ var STORAGE_LOCATION_TYPES = [
4
+ "data",
5
+ "media",
6
+ "recordings",
7
+ "recordings-high",
8
+ "recordings-low",
9
+ "recordings-clips",
10
+ "event-images",
11
+ "models",
12
+ "addons-data",
13
+ "cache",
14
+ "logs",
15
+ "backups"
16
+ ];
17
+ var DEFAULT_LOCATION_SUBDIRS = {
18
+ data: "db",
19
+ media: "media",
20
+ recordings: "recordings",
21
+ "recordings-high": "recordings-high",
22
+ "recordings-low": "recordings-low",
23
+ "recordings-clips": "recordings-clips",
24
+ "event-images": "event-images",
25
+ models: "models",
26
+ "addons-data": "addons-data",
27
+ cache: "/tmp/camstack-cache",
28
+ logs: "logs",
29
+ backups: "backups"
30
+ };
31
+ /**
32
+ * Filesystem storage provider — serves all location types from a local directory tree.
33
+ *
34
+ * Default layout:
35
+ * {rootPath}/recordings-high/
36
+ * {rootPath}/recordings-low/
37
+ * {rootPath}/recordings-clips/
38
+ * {rootPath}/event-images/
39
+ * {rootPath}/models/
40
+ * {rootPath}/addons-data/
41
+ * {rootPath}/logs/
42
+ * /tmp/camstack-cache/ (cache is always local)
43
+ *
44
+ * Individual location paths can be overridden.
45
+ */
46
+ var FilesystemStorageProvider = class {
47
+ id = "local";
48
+ name = "Local Filesystem";
49
+ supportedLocations = [...STORAGE_LOCATION_TYPES];
50
+ rootPath;
51
+ locationPaths;
52
+ constructor(rootPath, overrides) {
53
+ this.rootPath = path.resolve(rootPath);
54
+ this.locationPaths = /* @__PURE__ */ new Map();
55
+ for (const loc of STORAGE_LOCATION_TYPES) {
56
+ const override = overrides?.[loc];
57
+ if (override) this.locationPaths.set(loc, path.resolve(override));
58
+ else {
59
+ const subdir = DEFAULT_LOCATION_SUBDIRS[loc] ?? loc;
60
+ this.locationPaths.set(loc, path.isAbsolute(subdir) ? subdir : path.join(this.rootPath, subdir));
61
+ }
62
+ }
63
+ }
64
+ async resolve({ location, relativePath }) {
65
+ const base = this.locationPaths.get(location) ?? path.join(this.rootPath, location);
66
+ return path.join(base, relativePath);
67
+ }
68
+ async write({ location, relativePath, data }) {
69
+ const filePath = await this.resolve({
70
+ location,
71
+ relativePath
72
+ });
73
+ await fs.promises.mkdir(path.dirname(filePath), { recursive: true });
74
+ if (Buffer.isBuffer(data)) await fs.promises.writeFile(filePath, data);
75
+ else {
76
+ const writeStream = fs.createWriteStream(filePath);
77
+ await new Promise((resolve, reject) => {
78
+ data.pipe(writeStream);
79
+ writeStream.on("finish", resolve);
80
+ writeStream.on("error", reject);
81
+ });
82
+ }
83
+ }
84
+ async read({ location, relativePath }) {
85
+ return fs.promises.readFile(await this.resolve({
86
+ location,
87
+ relativePath
88
+ }));
89
+ }
90
+ async exists({ location, relativePath }) {
91
+ try {
92
+ await fs.promises.access(await this.resolve({
93
+ location,
94
+ relativePath
95
+ }));
96
+ return true;
97
+ } catch {
98
+ return false;
99
+ }
100
+ }
101
+ async list({ location, prefix }) {
102
+ const base = this.locationPaths.get(location);
103
+ if (!base) return [];
104
+ const dir = prefix ? path.join(base, prefix) : base;
105
+ try {
106
+ return (await fs.promises.readdir(dir, { withFileTypes: true })).map((e) => prefix ? `${prefix}/${e.name}` : e.name);
107
+ } catch {
108
+ return [];
109
+ }
110
+ }
111
+ async delete({ location, relativePath }) {
112
+ const filePath = await this.resolve({
113
+ location,
114
+ relativePath
115
+ });
116
+ await fs.promises.rm(filePath, { force: true });
117
+ }
118
+ async getAvailableSpace({ location }) {
119
+ const base = this.locationPaths.get(location);
120
+ if (!base) return null;
121
+ try {
122
+ let target = base;
123
+ while (!fs.existsSync(target)) {
124
+ const parent = path.dirname(target);
125
+ if (!parent || parent === target) return null;
126
+ target = parent;
127
+ }
128
+ const stats = await fs.promises.statfs(target);
129
+ return stats.bavail * stats.bsize;
130
+ } catch {
131
+ return null;
132
+ }
133
+ }
134
+ /** Get the resolved path for a location type (addon-declared ids fall back
135
+ * to `<rootPath>/<id>`). */
136
+ getLocationPath(location) {
137
+ return this.locationPaths.get(location) ?? path.join(this.rootPath, location);
138
+ }
139
+ /** Get the root path */
140
+ getRootPath() {
141
+ return this.rootPath;
142
+ }
143
+ };
144
+ //#endregion
145
+ export { FilesystemStorageProvider };
@@ -1,6 +1,6 @@
1
1
  import { a as e, i as t, n, o as r, r as i, t as a } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.js-C0AuF9av.mjs";
2
2
  import { t as o } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-B3Wx5J80.mjs";
3
- import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-C3Bc8Uy_.mjs";
3
+ import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-C67yOF0e.mjs";
4
4
  import { n as m, r as h, t as g } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-Bm-iyjmq.mjs";
5
5
  //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils.js
6
6
  var _ = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), v = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), y = (e) => {
@@ -342,7 +342,7 @@ function oe(e) {
342
342
  return e ? ae[e.toLowerCase()] ?? "#6366f1" : "#71717a";
343
343
  }
344
344
  function se({ deviceId: n }) {
345
- let i = c(f().trpcClient, n), [a, s] = r("5m"), l = L[a], [u, d] = ee(), p = F(), _ = e(null), v = (e) => {
345
+ let i = s(p().trpcClient, n), [a, c] = r("5m"), l = L[a], [u, d] = ee(), f = F(), _ = e(null), v = (e) => {
346
346
  let t = _.current;
347
347
  if (!t) return e;
348
348
  let n = t.getBoundingClientRect();
@@ -383,7 +383,7 @@ function se({ deviceId: n }) {
383
383
  }), /* @__PURE__ */ m(M, {
384
384
  presets: ie,
385
385
  value: a,
386
- onChange: s
386
+ onChange: c
387
387
  })]
388
388
  }), /* @__PURE__ */ h("div", {
389
389
  ref: u,
@@ -400,7 +400,7 @@ function se({ deviceId: n }) {
400
400
  viewBox: `0 0 ${d} ${R}`,
401
401
  preserveAspectRatio: "none",
402
402
  className: "block",
403
- onMouseLeave: () => p.bindHover(null),
403
+ onMouseLeave: () => f.bindHover(null),
404
404
  children: [
405
405
  E.map(({ y: e, label: t }, n) => /* @__PURE__ */ h("g", { children: [/* @__PURE__ */ m("line", {
406
406
  x1: z.left,
@@ -457,7 +457,7 @@ function se({ deviceId: n }) {
457
457
  height: i,
458
458
  fill: "transparent",
459
459
  onMouseEnter: () => {
460
- p.bindHover({
460
+ f.bindHover({
461
461
  anchorX: v(n),
462
462
  anchorY: r,
463
463
  title: `${he(e.ts)} · ${e.dbfs?.toFixed(1) ?? "—"} dB`,
@@ -482,7 +482,7 @@ function se({ deviceId: n }) {
482
482
  })
483
483
  ]
484
484
  }), /* @__PURE__ */ m(I, {
485
- state: p.state,
485
+ state: f.state,
486
486
  containerWidth: d
487
487
  })] }), x.length > 0 && /* @__PURE__ */ h("div", {
488
488
  className: "flex items-center justify-between text-[10px] text-foreground-subtle mt-1",
@@ -580,7 +580,7 @@ function ge(e) {
580
580
  return !Number.isFinite(e) || e <= 0 ? 60 : Math.round(e > 600 ? e / 1e3 : e);
581
581
  }
582
582
  function _e({ dev: e, deviceId: t, title: n = "Audio Metrics", variant: r = "full" }) {
583
- let i = s(f().trpcClient, e === void 0 && t !== void 0 ? t : null, (e) => e.audioMetrics), a = u(e ? e.state.audioMetrics : void 0), o = e === void 0 ? i : a;
583
+ let i = u(p().trpcClient, e === void 0 && t !== void 0 ? t : null, (e) => e.audioMetrics), a = f(e ? e.state.audioMetrics : void 0), o = e === void 0 ? i : a;
584
584
  return o ? /* @__PURE__ */ m(ve, {
585
585
  title: n,
586
586
  variant: r,
@@ -790,27 +790,27 @@ var V = {
790
790
  left: 32
791
791
  }, W = "__all__";
792
792
  function we({ deviceId: n }) {
793
- let a = c(f().trpcClient, n), [s, l] = r("5m"), [d, p] = r(W), _ = V[s], [v, y] = ee(), b = F(), x = e(null), S = (e) => {
793
+ let a = s(p().trpcClient, n), [c, l] = r("5m"), [u, d] = r(W), _ = V[c], [v, y] = ee(), b = F(), x = e(null), S = (e) => {
794
794
  let t = x.current;
795
795
  if (!t) return e;
796
796
  let n = t.getBoundingClientRect();
797
797
  return n.width === 0 ? e : e / y * n.width;
798
- }, C = u(a?.state.zoneAnalytics), w = t(() => {
798
+ }, C = f(a?.state.zoneAnalytics), w = t(() => {
799
799
  let e = /* @__PURE__ */ new Set();
800
800
  if (C?.frame.byClass) for (let t of Object.keys(C.frame.byClass)) e.add(t);
801
801
  if (C?.zones) for (let t of C.zones) for (let n of Object.keys(t.byClass)) e.add(n);
802
802
  return [...e].toSorted();
803
803
  }, [C]);
804
804
  i(() => {
805
- d !== W && !w.includes(d) && p(W);
806
- }, [d, w]);
805
+ u !== W && !w.includes(u) && d(W);
806
+ }, [u, w]);
807
807
  let T = o({
808
808
  queryKey: [
809
809
  "zone-analytics",
810
810
  n,
811
811
  "cameraHistory",
812
- s,
813
- d
812
+ c,
813
+ u
814
814
  ],
815
815
  queryFn: async () => {
816
816
  if (!a) return [];
@@ -819,7 +819,7 @@ function we({ deviceId: n }) {
819
819
  from: e - _.windowMs,
820
820
  to: e,
821
821
  resolution: _.resolution,
822
- ...d === W ? {} : { className: d }
822
+ ...u === W ? {} : { className: u }
823
823
  }) ?? [];
824
824
  },
825
825
  enabled: !!a,
@@ -851,8 +851,8 @@ function we({ deviceId: n }) {
851
851
  }), /* @__PURE__ */ h("div", {
852
852
  className: "flex items-center gap-2",
853
853
  children: [w.length > 0 && /* @__PURE__ */ h("select", {
854
- value: d,
855
- onChange: (e) => p(e.target.value),
854
+ value: u,
855
+ onChange: (e) => d(e.target.value),
856
856
  className: "text-[10px] px-1.5 py-0.5 rounded border border-border bg-background text-foreground focus:outline-none focus:ring-1 focus:ring-primary/40",
857
857
  title: "Filter by detected class",
858
858
  children: [/* @__PURE__ */ m("option", {
@@ -864,7 +864,7 @@ function we({ deviceId: n }) {
864
864
  }, e))]
865
865
  }), /* @__PURE__ */ m(M, {
866
866
  presets: Ce,
867
- value: s,
867
+ value: c,
868
868
  onChange: l
869
869
  })]
870
870
  })]
@@ -935,7 +935,7 @@ function we({ deviceId: n }) {
935
935
  title: `${Oe(e.ts)} · ${e.count} object${e.count === 1 ? "" : "s"}`,
936
936
  rows: [{
937
937
  label: "Class",
938
- value: d === W ? "all" : d
938
+ value: u === W ? "all" : u
939
939
  }, {
940
940
  label: "Bucket",
941
941
  value: _.resolution
@@ -1036,7 +1036,7 @@ var G = {
1036
1036
  left: 32
1037
1037
  };
1038
1038
  function je({ deviceId: n }) {
1039
- let i = c(f().trpcClient, n), [a, s] = r("1h"), l = G[a], [u, d] = ee(), p = F(), _ = e(null), v = (e) => {
1039
+ let i = s(p().trpcClient, n), [a, c] = r("1h"), l = G[a], [u, d] = ee(), f = F(), _ = e(null), v = (e) => {
1040
1040
  let t = _.current;
1041
1041
  if (!t) return e;
1042
1042
  let n = t.getBoundingClientRect();
@@ -1086,7 +1086,7 @@ function je({ deviceId: n }) {
1086
1086
  }), /* @__PURE__ */ m(M, {
1087
1087
  presets: ke,
1088
1088
  value: a,
1089
- onChange: s
1089
+ onChange: c
1090
1090
  })]
1091
1091
  }), /* @__PURE__ */ h("div", {
1092
1092
  ref: u,
@@ -1103,7 +1103,7 @@ function je({ deviceId: n }) {
1103
1103
  viewBox: `0 0 ${d} ${K}`,
1104
1104
  preserveAspectRatio: "none",
1105
1105
  className: "block",
1106
- onMouseLeave: () => p.bindHover(null),
1106
+ onMouseLeave: () => f.bindHover(null),
1107
1107
  children: [
1108
1108
  D.map(({ y: e, label: t }, n) => /* @__PURE__ */ h("g", { children: [/* @__PURE__ */ m("line", {
1109
1109
  x1: q.left,
@@ -1144,7 +1144,7 @@ function je({ deviceId: n }) {
1144
1144
  height: i,
1145
1145
  fill: "transparent",
1146
1146
  onMouseEnter: () => {
1147
- p.bindHover({
1147
+ f.bindHover({
1148
1148
  anchorX: v(n + r / 2),
1149
1149
  anchorY: o,
1150
1150
  title: `${Fe(e.bucketStart, s)} · ${e.count} event${e.count === 1 ? "" : "s"}`,
@@ -1161,7 +1161,7 @@ function je({ deviceId: n }) {
1161
1161
  })
1162
1162
  ]
1163
1163
  }), /* @__PURE__ */ m(I, {
1164
- state: p.state,
1164
+ state: f.state,
1165
1165
  containerWidth: d
1166
1166
  })] }), O > 0 && /* @__PURE__ */ h("div", {
1167
1167
  className: "flex items-center justify-between text-[10px] text-foreground-subtle mt-1",
@@ -1265,25 +1265,25 @@ var J = {
1265
1265
  left: 32
1266
1266
  };
1267
1267
  function Be({ deviceId: n }) {
1268
- let a = c(f().trpcClient, n), [s, l] = r("1h"), [u, d] = r(X), p = J[s], [_, v] = ee(), y = F(), b = e(null), x = o({
1268
+ let a = s(p().trpcClient, n), [c, l] = r("1h"), [u, d] = r(X), f = J[c], [_, v] = ee(), y = F(), b = e(null), x = o({
1269
1269
  queryKey: [
1270
1270
  "pipeline-analytics",
1271
1271
  n,
1272
1272
  "objectEvents",
1273
- s
1273
+ c
1274
1274
  ],
1275
1275
  queryFn: async () => {
1276
1276
  if (!a) return [];
1277
- let e = Date.now() - p.windowMs;
1277
+ let e = Date.now() - f.windowMs;
1278
1278
  return await a.pipelineAnalytics?.getObjectEvents({
1279
1279
  since: e,
1280
1280
  limit: Re
1281
1281
  }) ?? [];
1282
1282
  },
1283
1283
  enabled: !!a,
1284
- refetchInterval: p.pollIntervalMs,
1285
- staleTime: Math.max(1e3, p.pollIntervalMs / 2)
1286
- }), S = x.data ?? [], C = t(() => u === X ? S : S.filter((e) => e.className === u), [S, u]), w = x.dataUpdatedAt > 0 ? x.dataUpdatedAt : Date.now(), T = w - p.windowMs, E = t(() => {
1284
+ refetchInterval: f.pollIntervalMs,
1285
+ staleTime: Math.max(1e3, f.pollIntervalMs / 2)
1286
+ }), S = x.data ?? [], C = t(() => u === X ? S : S.filter((e) => e.className === u), [S, u]), w = x.dataUpdatedAt > 0 ? x.dataUpdatedAt : Date.now(), T = w - f.windowMs, E = t(() => {
1287
1287
  let e = /* @__PURE__ */ new Set();
1288
1288
  for (let t of S) e.add(t.className);
1289
1289
  return u !== X && e.add(u), [...e].toSorted();
@@ -1295,11 +1295,11 @@ function Be({ deviceId: n }) {
1295
1295
  S,
1296
1296
  E
1297
1297
  ]);
1298
- let O = t(() => Ve(C, ze), [C]), k = t(() => He(C, T, w, p.bucketMs, O), [
1298
+ let O = t(() => Ve(C, ze), [C]), k = t(() => He(C, T, w, f.bucketMs, O), [
1299
1299
  C,
1300
1300
  T,
1301
1301
  w,
1302
- p.bucketMs,
1302
+ f.bucketMs,
1303
1303
  O
1304
1304
  ]), A = t(() => {
1305
1305
  if (k.length === 0) return 1;
@@ -1344,7 +1344,7 @@ function Be({ deviceId: n }) {
1344
1344
  }, e))]
1345
1345
  }), /* @__PURE__ */ m(M, {
1346
1346
  presets: Le,
1347
- value: s,
1347
+ value: c,
1348
1348
  onChange: l
1349
1349
  })]
1350
1350
  })]
@@ -1390,7 +1390,7 @@ function Be({ deviceId: n }) {
1390
1390
  }, `x-${n}`)),
1391
1391
  k.map((e, t) => {
1392
1392
  if (e.total === 0) return null;
1393
- let { x: n, w: r } = Ue(e.bucketStart, p.bucketMs, T, w, v), i = Z - Q.top - Q.bottom, a = e.total / A * i, o = Q.top + (i - a), s = 0, c = N.map((t, a) => {
1393
+ let { x: n, w: r } = Ue(e.bucketStart, f.bucketMs, T, w, v), i = Z - Q.top - Q.bottom, a = e.total / A * i, o = Q.top + (i - a), s = 0, c = N.map((t, a) => {
1394
1394
  let o = e.byClass[t] ?? 0;
1395
1395
  if (o === 0) return null;
1396
1396
  let c = o / A * i, l = Q.top + (i - s - c);
@@ -1404,7 +1404,7 @@ function Be({ deviceId: n }) {
1404
1404
  fill: u,
1405
1405
  opacity: .9
1406
1406
  }, `${e.bucketStart}-${t}`);
1407
- }).filter((e) => e !== null), l = e.bucketStart + p.bucketMs;
1407
+ }).filter((e) => e !== null), l = e.bucketStart + f.bucketMs;
1408
1408
  return /* @__PURE__ */ h("g", { children: [c, /* @__PURE__ */ m("rect", {
1409
1409
  x: n,
1410
1410
  y: Q.top,
@@ -1415,7 +1415,7 @@ function Be({ deviceId: n }) {
1415
1415
  y.bindHover({
1416
1416
  anchorX: P(n + r / 2),
1417
1417
  anchorY: o,
1418
- title: `${Ge(e.bucketStart, l, p.bucketMs)} · ${e.total} detection${e.total === 1 ? "" : "s"}`,
1418
+ title: `${Ge(e.bucketStart, l, f.bucketMs)} · ${e.total} detection${e.total === 1 ? "" : "s"}`,
1419
1419
  rows: N.map((t, n) => {
1420
1420
  let r = e.byClass[t] ?? 0;
1421
1421
  return r === 0 ? null : {
@@ -1443,7 +1443,7 @@ function Be({ deviceId: n }) {
1443
1443
  C.length === 1 ? "" : "s",
1444
1444
  " ·",
1445
1445
  " ",
1446
- Ke(p.bucketMs),
1446
+ Ke(f.bucketMs),
1447
1447
  " buckets"
1448
1448
  ] }), /* @__PURE__ */ h("span", { children: [
1449
1449
  "peak ",
@@ -1523,7 +1523,7 @@ function qe({ stackOrder: e }) {
1523
1523
  //#endregion
1524
1524
  //#region src/pipeline-analytics/widgets/OccupancyPanel.tsx
1525
1525
  function Je({ dev: e, deviceId: t, title: n = "Live Occupancy", variant: r = "full" }) {
1526
- let i = c(f().trpcClient, e === void 0 && t !== void 0 ? t : null), a = e ?? i, o = u(a?.state.zoneAnalytics);
1526
+ let i = s(p().trpcClient, e === void 0 && t !== void 0 ? t : null), a = e ?? i, o = f(a?.state.zoneAnalytics);
1527
1527
  return o ? /* @__PURE__ */ m(Ye, {
1528
1528
  title: n,
1529
1529
  variant: r,
@@ -1666,37 +1666,37 @@ function tt({ byClass: e }) {
1666
1666
  //#region src/pipeline-analytics/widgets/LiveStatsTab.tsx
1667
1667
  function nt({ deviceId: e }) {
1668
1668
  return /* @__PURE__ */ h("div", {
1669
- className: l,
1669
+ className: d,
1670
1670
  children: [
1671
1671
  /* @__PURE__ */ h("div", {
1672
- className: `grid ${p}`,
1672
+ className: `grid ${l}`,
1673
1673
  style: { gridTemplateColumns: "repeat(auto-fit, minmax(min(100%, 340px), 1fr))" },
1674
- children: [/* @__PURE__ */ m(d, {
1674
+ children: [/* @__PURE__ */ m(c, {
1675
1675
  widgetId: "pipeline-analytics/live-occupancy-panel",
1676
1676
  host: "device-tab",
1677
1677
  deviceId: e
1678
- }), /* @__PURE__ */ m(d, {
1678
+ }), /* @__PURE__ */ m(c, {
1679
1679
  widgetId: "pipeline-analytics/audio-metrics-panel",
1680
1680
  host: "device-tab",
1681
1681
  deviceId: e
1682
1682
  })]
1683
1683
  }),
1684
- /* @__PURE__ */ m(d, {
1684
+ /* @__PURE__ */ m(c, {
1685
1685
  widgetId: "pipeline-analytics/audio-history-chart",
1686
1686
  host: "device-tab",
1687
1687
  deviceId: e
1688
1688
  }),
1689
- /* @__PURE__ */ m(d, {
1689
+ /* @__PURE__ */ m(c, {
1690
1690
  widgetId: "pipeline-analytics/occupancy-history-chart",
1691
1691
  host: "device-tab",
1692
1692
  deviceId: e
1693
1693
  }),
1694
- /* @__PURE__ */ m(d, {
1694
+ /* @__PURE__ */ m(c, {
1695
1695
  widgetId: "pipeline-analytics/motion-history-chart",
1696
1696
  host: "device-tab",
1697
1697
  deviceId: e
1698
1698
  }),
1699
- /* @__PURE__ */ m(d, {
1699
+ /* @__PURE__ */ m(c, {
1700
1700
  widgetId: "pipeline-analytics/detection-history-chart",
1701
1701
  host: "device-tab",
1702
1702
  deviceId: e
@@ -3,7 +3,7 @@ import "./dist-CYZr2fwk.mjs";
3
3
  var e = {
4
4
  "@camstack/sdk": {
5
5
  name: "@camstack/sdk",
6
- version: "1.1.12",
6
+ version: "1.1.13",
7
7
  scope: ["default"],
8
8
  loaded: !1,
9
9
  from: "addon_pipeline_analytics_widgets",
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.1.13",
21
+ version: "1.1.19",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_pipeline_analytics_widgets",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.1.13",
36
+ version: "1.1.17",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_pipeline_analytics_widgets",
@@ -0,0 +1,26 @@
1
+ //#region \0virtual:mf:__mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js
2
+ var e = "__mf_init__virtual:mf:__mfe_internal__addon_pipeline_analytics_widgets__mf_v__runtimeInit__mf_v__.js__", t = globalThis[e];
3
+ if (!t) {
4
+ let n, r, i = new Promise((e, t) => {
5
+ n = e, r = t;
6
+ });
7
+ t = globalThis[e] = {
8
+ initPromise: i,
9
+ initResolve: n,
10
+ initReject: r
11
+ };
12
+ }
13
+ var n = t.initPromise, r = "__mf_module_cache__";
14
+ globalThis[r] ||= {
15
+ share: {},
16
+ remote: {}
17
+ }, globalThis[r].share ||= {}, globalThis[r].remote ||= {};
18
+ var i = globalThis[r], a, o, s, c, l, u, d, f = (e) => {
19
+ e.AddonGlobalSettingsForm, e.AgentStepEditor, e.AlarmHeroCard, e.AlarmPanelInlineControl, e.AppShell, e.ArcKnob, e.AudioClassificationList, e.AudioLevelWaveform, e.AudioWaveform, e.AutotrackSection, e.BTN_COMPACT, e.BTN_COMPACT_DANGER, e.BTN_COMPACT_PRIMARY, e.BTN_COMPACT_WARNING, e.Badge, e.BatteryBadge, e.BottomSheet, e.Breadcrumb, e.BrightnessPanel, e.Button, e.ButtonControl, e.ButtonHeroCard, e.CENTER, e.CHIP_ACTIVE, e.CHIP_BASE, e.CHIP_INACTIVE, e.CLASS_COLORS, e.COLUMN_BREAKPOINT_CLASS, e.COLUMN_PRIORITY, e.COMMIT_DEDUPE_TOLERANCE_MS, e.COMMIT_DEDUPE_WINDOW_MS, e.CONTROL_CAP_NAMES, e.CONTROL_FILLS, e.CameraStreamPlayer, e.Card, e.Checkbox, e.ChildSectionAccordion, e.ClimatePanel, e.CodeBlock, e.CollapsibleCard, e.ConfigFormBuilder, e.ConfigFormField, e.ConfigSchemaField, e.ConfirmActionButton, e.ConfirmDialogProvider, e.ConsumablesPanel, e.ContainerChildrenProvider, e.ContainerPrimaryHero, e.ControlColumn, e.ControlHeroCard, e.ControlInlineControl, e.ControlPanel, e.CopyButton, e.CoverHeroCard, e.CoverInlineControl, e.CoverPanel, e.CustomFieldRenderersProvider, e.DEFAULT_COLOR, e.DEVICE_COLUMNS, e.DEVICE_LIST_PAGE_SIZE_KEY, e.DEVICE_LIST_PAGE_SIZE_OPTIONS, e.DEVICE_ROLE_META, e.DEVICE_TYPE_CONTROL, e.DEVICE_TYPE_META, e.DataTable, e.DetectionCanvas, e.DetectionOverlay, e.DetectionResultTree, e.DevShell, e.DeviceActivityPanel, e.DeviceBatchToolbar, e.DeviceCard, e.DeviceContextProvider, e.DeviceExportPanel, e.DeviceGrid, e.DeviceItem, e.DeviceList, e.Dialog, e.DialogContent, e.DialogDescription, e.DialogFooter, e.DialogHeader, e.DialogTitle, e.DialogTrigger, e.DiscoveryPanel, e.DoorbellRecentPanel, e.Dropdown, e.DropdownContent, e.DropdownItem, e.DropdownTrigger, e.DummyHeroCard, e.DummyInline, e.EmptyState, e.ErrorBox, e.EventStream, e.EyeOff, e.FILL, e.FanHeroCard, e.FanInlineControl, e.FanPanel, e.FilterBar, e.FloatingEventStream, e.FloatingLogStream, e.FloatingPanel, e.FormField, a = e.GRID_GAP, e.GRID_PAIRED, e.GRID_QUICK_STATS, e.GripTrack, e.HOST_WIDGETS, e.HlsVideo, e.HoverZoomImage, e.HumidifierHeroCard, e.HumidifierInlineControl, e.INPUT_COMPACT, e.IconAction, e.IconButton, e.ImageHeroCard, e.ImageInlineControl, e.ImageSelector, e.InferenceConfigSelector, e.Input, e.KebabMenu, e.KeyValueList, e.LIST_ROW, e.Label, e.LawnMowerHeroCard, e.LawnMowerInlineControl, e.LightHeroCard, e.LightInlineControl, e.LockHeroCard, e.LockInlineControl, e.LockPanel, e.LogStream, e.LoginForm, e.MODE_COLOR, e.MaskShapeCanvas, e.MediaPlayerHeroCard, e.MediaPlayerInlineControl, e.MediaPlayerPanel, e.MobileDrawer, e.MotionZonesSettings, e.NodeMultiSelectField, e.NodePicker, e.NodeSelectField, e.OfflineBadge, e.PHASE_CONFIG, e.PRIORITY, e.PTZOverlay, e.PageHeader, e.PhaseIcon, e.PipelineBuilder, e.PipelineRuntimeSelector, e.PipelineStep, e.PipelineTreeMatrix, e.PlayerOverlaysProvider, e.Popover, e.PopoverContent, e.PopoverRowAction, e.PopoverTrigger, e.PrimaryChildPicker, e.PrivacyMaskSettings, e.ProviderBadge, e.PtzPanel, e.QrCode, e.RECORDED_PLAYBACK_MODES, e.RIGHT, e.ROLE_DESCRIPTOR, e.RadialGauge, e.RecordedPlaybackProvider, e.RecordingPanel, e.ResponseLog, e.SECTION_BODY, e.SECTION_CARD, e.SECTION_HEADER, e.SPLIT_PANEL_OUTER, e.SPLIT_PANEL_SIDE, o = e.STACK_GAP, e.STATE_COLOR, e.ScopePicker, e.ScrollArea, e.Select, e.SemanticBadge, e.SensorHeroCard, e.SensorInlineControl, e.SensorValueAtom, e.Separator, e.Sidebar, e.SidebarItem, e.Skeleton, e.SlideOverPanel, e.SlideToggle, e.SnapshotButton, e.Square, e.StatCard, e.StateValuesStream, e.StatusBadge, e.StepTimings, e.StepTreeMaster, e.Stepper, e.StreamBrokerSelector, e.StreamPanel, e.Switch, e.SwitchHeroCard, e.SwitchInlineControl, e.SwitchPanel, e.SystemProvider, e.TEXT_FIELD_LABEL, e.TEXT_HINT, e.TEXT_METRIC, e.TEXT_SECTION_LABEL, e.TEXT_VALUE, e.TIMEZONES, e.Tabs, e.TabsContent, e.TabsList, e.TabsTrigger, e.TapToggle, e.ThemeProvider, e.ThermostatHeroCard, e.ThermostatInlineControl, e.TimezoneSelector, e.Tooltip, e.TooltipContent, e.TooltipTrigger, e.Trash2, e.VacuumHeroCard, e.VacuumInlineControl, e.ValueReadout, e.ValveHeroCard, e.ValveInlineControl, e.VersionBadge, e.VodPlaybackProvider, e.WaterHeaterHeroCard, e.WaterHeaterInlineControl, e.WeatherHeroCard, e.WeatherInlineControl, e.WidgetMetricCard, e.WidgetPanel, e.WidgetRegistryProvider, s = e.WidgetSlot, e.ZoneEditingProvider, e.allDeviceTypeFilterOptions, e.buildStepTreeFromSchema, e.childEntityId, e.cn, e.columnsForContext, e.containerChildToRef, e.countableDevices, e.coverHighlight, e.createLucideIcon, e.createSharedContext, e.createTheme, e.cursorFractionFor, e.darkColors, e.defaultTheme, e.deriveDeviceKind, e.deviceRoleMeta, e.deviceRoleMetaOf, e.deviceTypeMeta, e.deviceTypeMetaOf, e.ensureMfHostInit, e.findTimezone, e.formatControlDateTime, e.formatLastSeen, e.fuzzyMatch, e.getClassColor, e.getPhaseVisual, e.groupChildrenByLayout, e.hardwareLabel, e.humidifierTint, e.initialScrubState, e.isAbsentProvider, e.isAbsentProvider$1, e.isFieldVisible, e.lawnMowerActivityMeta, e.lightColors, e.loadRemoteBundle, e.makeScrubBridge, e.metadataEntries, e.metadataString, e.mirror, e.mountAddonPage, e.nextSort, e.normalizeForSearch, e.overrideEntityIdFromLink, e.parseRecordedServerMessage, e.providerIcons, e.resolveContainerPrimary, e.resolveControlAlign, e.resolveDeviceControl, e.resolvePrimaryChild, e.scrubReducer, e.serializeRecordedCommand, e.shouldCommit, e.shouldEmit, e.sortRows, e.statusIcons, e.tankAlert, e.themeToCss, e.trpc, e.useAccessoriesGetStatus, e.useAccessoriesSetChildHidden, e.useAddonPagesListPages, e.useAddonSettingsGetDeviceSettings, e.useAddonSettingsGetGlobalSettings, e.useAddonSettingsUpdateDeviceSettings, e.useAddonSettingsUpdateGlobalSettings, e.useAddonWidgetsListWidgets, e.useAddonsApplyAutoUpdateToAll, e.useAddonsCancelJob, e.useAddonsCustom, e.useAddonsForceRefresh, e.useAddonsGetAddonAutoUpdate, e.useAddonsGetAutoUpdateSettings, e.useAddonsGetJob, e.useAddonsGetLastRestart, e.useAddonsGetLogs, e.useAddonsGetVersions, e.useAddonsInstallFromWorkspace, e.useAddonsInstallPackage, e.useAddonsIsWorkspaceAvailable, e.useAddonsList, e.useAddonsListCapabilityProviders, e.useAddonsListFrameworkPackages, e.useAddonsListJobs, e.useAddonsListPackages, e.useAddonsListUpdates, e.useAddonsListWorkspacePackages, e.useAddonsOnAddonLogs, e.useAddonsReloadPackages, e.useAddonsRestartAddon, e.useAddonsRestartServer, e.useAddonsRetryLoad, e.useAddonsRollbackPackage, e.useAddonsSearchAvailable, e.useAddonsSetAddonAutoUpdate, e.useAddonsSetAutoUpdateSettings, e.useAddonsSetCapabilityProviderEnabled, e.useAddonsStartJob, e.useAddonsUninstallPackage, e.useAddonsUpdateFrameworkPackage, e.useAddonsUpdatePackage, e.useAirQualitySensorGetStatus, e.useAlarmPanelArm, e.useAlarmPanelDisarm, e.useAlarmPanelGetStatus, e.useAlarmPanelTrigger, e.useAlertsDismiss, e.useAlertsEmit, e.useAlertsGetUnreadCount, e.useAlertsList, e.useAlertsMarkAllRead, e.useAlertsMarkRead, e.useAlertsUpdate, e.useAllWidgets, e.useAmbientLightSensorGetStatus, e.useAudioAnalysisApplyDeviceSettingsPatch, e.useAudioAnalysisGetDeviceLiveContribution, e.useAudioAnalysisGetDeviceSettingsContribution, e.useAudioAnalysisResolveDeviceSettings, e.useAudioAnalyzerAnalyseChunk, e.useAudioAnalyzerClassify, e.useAudioAnalyzerDispose, e.useAudioAnalyzerIsReady, e.useAudioAnalyzerReprobeAudioEngine, e.useAudioCodecCanHandle, e.useAudioCodecCloseSession, e.useAudioCodecCreateDecodeSession, e.useAudioCodecCreateEncodeSession, e.useAudioCodecFlushEncode, e.useAudioCodecListActiveSessions, e.useAudioCodecListSupportedCodecs, e.useAudioCodecPullEncoded, e.useAudioCodecPullPcm, e.useAudioCodecPushEncodedFrame, e.useAudioCodecPushPcm, e.useAudioMetricsGetCurrentSnapshot, e.useAudioMetricsGetHistory, e.useAutomationControlDisable, e.useAutomationControlEnable, e.useAutomationControlGetStatus, e.useAutomationControlTrigger, e.useBackupDelete, e.useBackupGetEntries, e.useBackupList, e.useBackupListArchives, e.useBackupListDestinations, e.useBackupListLocations, e.useBackupPreviewSchedule, e.useBackupRestore, e.useBackupTrigger, e.useBackupUpsertDestinationPolicy, e.useBatteryGetStatus, e.useBatteryWakeForStream, e.useBinaryGetStatus, e.useBrightnessGetStatus, e.useBrightnessSetBrightness, e.useBrokerAdd, e.useBrokerGet, e.useBrokerGetBrokerConfig, e.useBrokerGetSettings, e.useBrokerGetSettingsSchema, e.useBrokerGetState, e.useBrokerGetStatus, e.useBrokerList, e.useBrokerListProviders, e.useBrokerPublish, e.useBrokerRemove, e.useBrokerSetSettings, e.useBrokerSubscribe, e.useBrokerTestConnection, e.useBrokerTestSettings, e.useBrokerUnsubscribe, e.useButtonPress, e.useCameraCredentialsGetCredentials, e.useCameraCredentialsGetStatus, e.useCameraPipelineConfigApplyDeviceSettingsPatch, e.useCameraPipelineConfigGetDeviceLiveContribution, e.useCameraPipelineConfigGetDeviceSettingsContribution, e.useCameraStreamsGetBrokerStreams, e.useCameraStreamsGetCameraStreams, e.useCameraStreamsGetProfileRtspEntries, e.useCameraStreamsGetRtspEntries, e.useCameraStreamsPickStream, e.useCarbonMonoxideGetStatus, e.useClimateControlGetStatus, e.useClimateControlSetFanMode, e.useClimateControlSetMode, e.useClimateControlSetPreset, e.useClimateControlSetSwingHorizontal, e.useClimateControlSetSwingVertical, e.useClimateControlSetTarget, e.useClimateControlSetTargetHumidity, e.useClimateControlSetTargetRange, e.useClusterNodes, e.useColorGetStatus, e.useColorSetColor, e.useConfirm, e.useConnectivityGetStatus, e.useConsumablesGetStatus, e.useConsumablesReset, e.useContactGetStatus, e.useContainerChildren, e.useControlGetStatus, e.useControlSetValue, e.useCoverClose, e.useCoverGetStatus, e.useCoverOpen, e.useCoverSetPosition, e.useCoverSetTiltPosition, e.useCoverStop, e.useCustomFieldRenderer, e.useDebouncedString, e.useDecoderCreateSession, e.useDecoderDestroySession, e.useDecoderGetFrame, e.useDecoderGetInfo, e.useDecoderGetShmStats, e.useDecoderGetStats, e.useDecoderListActiveSessions, e.useDecoderOpenStream, e.useDecoderPullFrames, e.useDecoderPullHandles, e.useDecoderPushPacket, e.useDecoderReprobeHwaccel, e.useDecoderSupportsCodec, e.useDecoderUpdateConfig, e.useDetectionPipelineApplyDeviceSettingsPatch, e.useDetectionPipelineGetDeviceLiveContribution, e.useDetectionPipelineGetDeviceSettingsContribution, e.useDevShell, e.useDevice, e.useDeviceAdoptionAdopt, e.useDeviceAdoptionGetCandidate, e.useDeviceAdoptionGetStatus, e.useDeviceAdoptionListCandidateFilters, e.useDeviceAdoptionListCandidates, e.useDeviceAdoptionRefresh, e.useDeviceAdoptionRelease, e.useDeviceAdoptionResync, e.useDeviceAutotrack, e.useDeviceBattery, e.useDeviceCapSlice, e.useDeviceCapability, e.useDeviceDetections, e.useDeviceDiscoveryAdoptDevice, e.useDeviceDiscoveryGetStatus, e.useDeviceDiscoveryListDiscovered, e.useDeviceDiscoveryRefreshDiscovery, e.useDeviceDiscoveryReleaseDevice, e.useDeviceExportApplyDeviceSettingsPatch, e.useDeviceExportExposeDevice, e.useDeviceExportGetDeviceLiveContribution, e.useDeviceExportGetDeviceSettingsContribution, e.useDeviceExportGetStatus, e.useDeviceExportListExposedDevices, e.useDeviceExportListSupportedDeviceKinds, e.useDeviceExportUnexposeDevice, e.useDeviceId, e.useDeviceListPageSize, e.useDeviceManagerAddLocation, e.useDeviceManagerAdoptDevice, e.useDeviceManagerAdoptionAdopt, e.useDeviceManagerAdoptionListCandidateFilters, e.useDeviceManagerAdoptionListCandidates, e.useDeviceManagerAdoptionRefresh, e.useDeviceManagerAdoptionRelease, e.useDeviceManagerAdoptionResync, e.useDeviceManagerAllocateDeviceId, e.useDeviceManagerApplyInitialMeta, e.useDeviceManagerCreateDevice, e.useDeviceManagerDisable, e.useDeviceManagerDiscoverAllProviders, e.useDeviceManagerDiscoverDevices, e.useDeviceManagerDiscoverProvider, e.useDeviceManagerDiscoveryProviders, e.useDeviceManagerEnable, e.useDeviceManagerGetAllBindings, e.useDeviceManagerGetBindings, e.useDeviceManagerGetChildren, e.useDeviceManagerGetConfigSchema, e.useDeviceManagerGetCreationSchema, e.useDeviceManagerGetDevice, e.useDeviceManagerGetDeviceAggregate, e.useDeviceManagerGetDeviceLiveInfoAggregate, e.useDeviceManagerGetDeviceSettingsAggregate, e.useDeviceManagerGetDeviceStatusAggregate, e.useDeviceManagerGetSettingsSchema, e.useDeviceManagerGetStreamProfileMap, e.useDeviceManagerGetStreamSources, e.useDeviceManagerGetWireableFields, e.useDeviceManagerListAll, e.useDeviceManagerListBindableCapsForDeviceType, e.useDeviceManagerListLocations, e.useDeviceManagerListPersistedByAddon, e.useDeviceManagerListWrappersForCap, e.useDeviceManagerLoadConfig, e.useDeviceManagerLoadMeta, e.useDeviceManagerLoadRuntimeState, e.useDeviceManagerPersistConfig, e.useDeviceManagerProbeStreams, e.useDeviceManagerProviderCreationType, e.useDeviceManagerProviderDiscoveryParamsSchema, e.useDeviceManagerRegisterDevice, e.useDeviceManagerRemove, e.useDeviceManagerRemoveByIntegration, e.useDeviceManagerRemoveDevice, e.useDeviceManagerRemoveLocation, e.useDeviceManagerRunDeviceAction, e.useDeviceManagerSetChildLayout, e.useDeviceManagerSetDeviceLinks, e.useDeviceManagerSetDisabled, e.useDeviceManagerSetIntegrationId, e.useDeviceManagerSetLinkDeviceId, e.useDeviceManagerSetLocation, e.useDeviceManagerSetMetadata, e.useDeviceManagerSetName, e.useDeviceManagerSetPrimaryChildEntityId, e.useDeviceManagerSetRole, e.useDeviceManagerSetStreamProfileMap, e.useDeviceManagerSetType, e.useDeviceManagerSetWrapperActive, e.useDeviceManagerTestCreationField, e.useDeviceManagerTestField, e.useDeviceManagerUpdateConfig, e.useDeviceManagerUpdateDeviceField, e.useDeviceManagerUpdateDeviceFieldsBatch, e.useDeviceOpsGetConfigEntries, e.useDeviceOpsGetRawState, e.useDeviceOpsGetSettingsSchema, e.useDeviceOpsGetStreamSources, e.useDeviceOpsRemoveDevice, e.useDeviceOpsRunAction, e.useDeviceOpsSetConfig, e.useDeviceProviderAdoptDiscoveredDevice, e.useDeviceProviderCreateDevice, e.useDeviceProviderDiscoverDevices, e.useDeviceProviderGetChildCreationSchema, e.useDeviceProviderGetDevices, e.useDeviceProviderGetDiscoveryParamsSchema, e.useDeviceProviderGetManualCreationType, e.useDeviceProviderGetStatus, e.useDeviceProviderStart, e.useDeviceProviderStop, e.useDeviceProviderSupportsDiscovery, e.useDeviceProviderSupportsManualCreation, e.useDeviceProviderTestCreationField, c = e.useDeviceProxy, e.useDeviceProxy$1, e.useDeviceSnapshot, e.useDeviceSnapshotImage, l = e.useDeviceState, e.useDeviceStateGetAllSnapshots, e.useDeviceStateGetCapSlice, e.useDeviceStateGetSnapshot, e.useDeviceStateSetCapSlice, u = e.useDeviceStateSlice, e.useDeviceStatusGetStatus, e.useDeviceWebrtc, e.useDevices, e.useDoorbellEvents, e.useDoorbellGetStatus, e.useEnumSensorGetStatus, e.useEventEmitterGetStatus, e.useEventInvalidation, e.useEventStreamLatest, e.useEventStreamMap, e.useEventsGetEventClipUrl, e.useEventsGetEventThumbnail, e.useEventsGetEvents, e.useFaceGalleryAssignFace, e.useFaceGalleryAssignFaces, e.useFaceGalleryCreateIdentity, e.useFaceGalleryDeleteFace, e.useFaceGalleryDeleteIdentity, e.useFaceGalleryGetFaceByTrack, e.useFaceGalleryGetFaceMedia, e.useFaceGalleryListIdentities, e.useFaceGalleryListIdentitySamples, e.useFaceGalleryListRecentFaces, e.useFaceGalleryRemoveSample, e.useFaceGalleryRenameIdentity, e.useFaceGallerySuggestFaceClusters, e.useFaceGalleryUnassignFace, e.useFaceGalleryUnassignFaces, e.useFanControlGetStatus, e.useFanControlSetDirection, e.useFanControlSetOscillating, e.useFanControlSetPercentage, e.useFanControlSetPreset, e.useFeatureProbeGetStatus, e.useFloodGetStatus, e.useGasGetStatus, e.useHumidifierGetStatus, e.useHumidifierSetMode, e.useHumidifierSetOn, e.useHumidifierSetTargetHumidity, e.useHumiditySensorGetStatus, e.useImageGetStatus, e.useIntegrationsCreate, e.useIntegrationsDelete, e.useIntegrationsGet, e.useIntegrationsGetAvailableTypes, e.useIntegrationsGetByAddonId, e.useIntegrationsGetSettings, e.useIntegrationsList, e.useIntegrationsSetSettings, e.useIntegrationsTestConnection, e.useIntegrationsUpdate, e.useIntercomEndTalkSession, e.useIntercomGetStatus, e.useIntercomHandleAnswer, e.useIntercomPushTalkAudio, e.useIntercomStartSession, e.useIntercomStartTalkSession, e.useIntercomStopSession, e.useIsMidWidth, e.useIsMobile, e.useLawnMowerControlDock, e.useLawnMowerControlGetStatus, e.useLawnMowerControlPause, e.useLawnMowerControlStartMowing, e.useLiveBuffer, e.useLiveEvent, e.useLocalNetworkGetAllowedAddresses, e.useLocalNetworkGetConnectionEndpoints, e.useLocalNetworkGetPreferred, e.useLocalNetworkList, e.useLocalNetworkResetAllowlistToBestMatch, e.useLocalNetworkSetAllowedAddresses, e.useLockControlGetStatus, e.useLockControlLock, e.useLockControlOpen, e.useLockControlUnlock, e.useMediaPlayerGetStatus, e.useMediaPlayerNext, e.useMediaPlayerPause, e.useMediaPlayerPlay, e.useMediaPlayerPlayMedia, e.useMediaPlayerPrevious, e.useMediaPlayerSeek, e.useMediaPlayerSelectSource, e.useMediaPlayerSetMute, e.useMediaPlayerSetRepeat, e.useMediaPlayerSetShuffle, e.useMediaPlayerSetVolume, e.useMediaPlayerStop, e.useMeshNetworkGetStatus, e.useMeshNetworkJoin, e.useMeshNetworkLeave, e.useMeshNetworkListPeers, e.useMeshNetworkLogout, e.useMeshNetworkStartLogin, e.useMeshNetworkTestConnection, e.useMetricsProviderCollectSnapshot, e.useMetricsProviderDumpHeapSnapshot, e.useMetricsProviderGetAddonStats, e.useMetricsProviderGetCached, e.useMetricsProviderGetCpuTemperature, e.useMetricsProviderGetCurrent, e.useMetricsProviderGetDiskSpace, e.useMetricsProviderGetGpuInfo, e.useMetricsProviderGetProcessStats, e.useMetricsProviderKillProcess, e.useMetricsProviderListAddonInstances, e.useMetricsProviderListNodeProcesses, e.useMotionDetectionAnalyze, e.useMotionDetectionApplyDeviceSettingsPatch, e.useMotionDetectionGetDeviceLiveContribution, e.useMotionDetectionGetDeviceSettingsContribution, e.useMotionDetectionRemoveCamera, e.useMotionDetectionReset, e.useMotionGetStatus, e.useMotionIsDetected, e.useMotionTriggerGetStatus, e.useMotionTriggerSetMotionTrigger, e.useMotionZonesGetOptions, e.useMotionZonesGetStatus, e.useMotionZonesSetZone, e.useMqttBrokerAddBroker, e.useMqttBrokerGetBrokerConfig, e.useMqttBrokerGetStatus, e.useMqttBrokerListBrokers, e.useMqttBrokerRemoveBroker, e.useMqttBrokerStartEmbeddedBroker, e.useMqttBrokerStopEmbeddedBroker, e.useMqttBrokerTestConnection, e.useNativeObjectDetectionGetStatus, e.useNativeObjectDetectionSetEnabled, e.useNetworkAccessGetEndpoint, e.useNetworkAccessGetStatus, e.useNetworkAccessListEndpoints, e.useNetworkAccessStart, e.useNetworkAccessStop, e.useNetworkQualityGetAllStats, e.useNetworkQualityGetDeviceStats, e.useNetworkQualityReportClientStats, e.useNodesClusterAddonStatus, e.useNodesDeployAddon, e.useNodesExecuteQuery, e.useNodesGetCapUsageGraph, e.useNodesGetNodeAddons, e.useNodesRenameNode, e.useNodesRestartAddon, e.useNodesRestartNode, e.useNodesRestartProcess, e.useNodesSetProcessLogLevel, e.useNodesShutdownNode, e.useNodesTopology, e.useNodesUndeployAddon, e.useNotificationOutputDeleteTarget, e.useNotificationOutputDiscoverTargets, e.useNotificationOutputListTargetKinds, e.useNotificationOutputListTargets, e.useNotificationOutputSend, e.useNotificationOutputSetTargetEnabled, e.useNotificationOutputTestTarget, e.useNotificationOutputUpsertTarget, e.useNotifierCancel, e.useNotifierGetStatus, e.useNotifierSend, e.useNumericSensorGetStatus, e.useOptimisticSlice, e.useOptionalSystem, e.useOptionalWidgetRegistry, e.useOsdGetStatus, e.useOsdSetOverlay, e.usePTZ, e.usePipelineAnalyticsApplyDeviceSettingsPatch, e.usePipelineAnalyticsClearTracks, e.usePipelineAnalyticsGetActiveTracks, e.usePipelineAnalyticsGetAudioEvents, e.usePipelineAnalyticsGetDeviceLiveContribution, e.usePipelineAnalyticsGetDeviceSettingsContribution, e.usePipelineAnalyticsGetEventDensity, e.usePipelineAnalyticsGetEventMedia, e.usePipelineAnalyticsGetMotionEvents, e.usePipelineAnalyticsGetObjectEvents, e.usePipelineAnalyticsGetTrack, e.usePipelineAnalyticsGetTrackMedia, e.usePipelineAnalyticsListTracks, e.usePipelineAnalyticsPruneEventsBefore, e.usePipelineAnalyticsSearchObjectEvents, e.usePipelineExecutorCacheFrameInPool, e.usePipelineExecutorDeleteModel, e.usePipelineExecutorDeleteTemplate, e.usePipelineExecutorDetect, e.usePipelineExecutorDownloadModel, e.usePipelineExecutorGetAddonModels, e.usePipelineExecutorGetAudioCapabilities, e.usePipelineExecutorGetAvailableEngines, e.usePipelineExecutorGetCapabilities, e.usePipelineExecutorGetDefaultSteps, e.usePipelineExecutorGetDetectionConfigSchema, e.usePipelineExecutorGetEffectiveTuning, e.usePipelineExecutorGetEngineProvisioning, e.usePipelineExecutorGetGlobalPipelineConfig, e.usePipelineExecutorGetGlobalSteps, e.usePipelineExecutorGetOrchestratorConfigSchema, e.usePipelineExecutorGetReferenceAudio, e.usePipelineExecutorGetReferenceAudioFiles, e.usePipelineExecutorGetReferenceImage, e.usePipelineExecutorGetSchema, e.usePipelineExecutorGetSelectedEngine, e.usePipelineExecutorGetVideoPipelineSteps, e.usePipelineExecutorInferCached, e.usePipelineExecutorKillEngine, e.usePipelineExecutorListLoadedEngines, e.usePipelineExecutorListReferenceImages, e.usePipelineExecutorListTemplates, e.usePipelineExecutorReprobeEngine, e.usePipelineExecutorRunAudioTest, e.usePipelineExecutorRunPipeline, e.usePipelineExecutorRunPipelineBatch, e.usePipelineExecutorSaveTemplate, e.usePipelineExecutorSetVideoPipelineSteps, e.usePipelineExecutorSpinEngine, e.usePipelineExecutorUncacheFrame, e.usePipelineExecutorUpdateTemplate, e.usePipelineOrchestratorApplyDeviceSettingsPatch, e.usePipelineOrchestratorAssignAudio, e.usePipelineOrchestratorAssignDecoder, e.usePipelineOrchestratorAssignPipeline, e.usePipelineOrchestratorDeleteTemplate, e.usePipelineOrchestratorGetAgentLoad, e.usePipelineOrchestratorGetAgentSettings, e.usePipelineOrchestratorGetAudioAssignment, e.usePipelineOrchestratorGetAudioAssignments, e.usePipelineOrchestratorGetAudioNodeLoad, e.usePipelineOrchestratorGetCameraMetrics, e.usePipelineOrchestratorGetCameraSettings, e.usePipelineOrchestratorGetCameraStatus, e.usePipelineOrchestratorGetCameraStatuses, e.usePipelineOrchestratorGetCameraStepOverrides, e.usePipelineOrchestratorGetCapabilityBindings, e.usePipelineOrchestratorGetDecoderAssignment, e.usePipelineOrchestratorGetDecoderAssignments, e.usePipelineOrchestratorGetDeviceLiveContribution, e.usePipelineOrchestratorGetDeviceSettingsContribution, e.usePipelineOrchestratorGetGlobalMetrics, e.usePipelineOrchestratorGetPipelineAssignment, e.usePipelineOrchestratorGetPipelineAssignments, e.usePipelineOrchestratorListAgentSettings, e.usePipelineOrchestratorListTemplates, e.usePipelineOrchestratorRebalance, e.usePipelineOrchestratorRemoveAgentSettings, e.usePipelineOrchestratorResolvePipeline, e.usePipelineOrchestratorSaveTemplate, e.usePipelineOrchestratorSetAgentAddonDefaults, e.usePipelineOrchestratorSetAgentMaxCameras, e.usePipelineOrchestratorSetCameraPipelineForAgent, e.usePipelineOrchestratorSetCameraStepOverride, e.usePipelineOrchestratorSetCameraStepToggle, e.usePipelineOrchestratorSetCapabilityBinding, e.usePipelineOrchestratorUnassignAudio, e.usePipelineOrchestratorUnassignDecoder, e.usePipelineOrchestratorUnassignPipeline, e.usePipelineOrchestratorUpdateTemplate, e.usePipelineRunnerAttachCamera, e.usePipelineRunnerDetachCamera, e.usePipelineRunnerGetAllCameraMetrics, e.usePipelineRunnerGetCameraMetrics, e.usePipelineRunnerGetLocalCameras, e.usePipelineRunnerGetLocalLoad, e.usePipelineRunnerGetLocalMetrics, e.usePipelineRunnerReportMotion, e.usePlateGalleryCorrectPlateText, e.usePlateGalleryDeletePlate, e.usePlateGalleryGetPlateByTrack, e.usePlateGalleryGetPlateMedia, e.usePlateGalleryListPlates, e.usePlateGallerySearchPlates, e.usePlateGallerySuggestPlateClusters, e.usePlayerOverlayLayer, e.usePlayerOverlayLayers, e.usePlayerToolbarButton, e.usePlayerToolbarButtons, e.usePowerMeterGetStatus, e.usePresenceGetStatus, e.usePressureSensorGetStatus, e.usePrivacyMaskGetOptions, e.usePrivacyMaskGetStatus, e.usePrivacyMaskSetMask, e.usePtzAutotrackGetSettings, e.usePtzAutotrackGetStatus, e.usePtzAutotrackSetEnabled, e.usePtzAutotrackSetSettings, e.usePtzContinuousMove, e.usePtzDeletePreset, e.usePtzGetOptions, e.usePtzGetPosition, e.usePtzGetPresets, e.usePtzGetStatus, e.usePtzGoHome, e.usePtzGoToPreset, e.usePtzMove, e.usePtzSavePreset, e.usePtzSetAutofocus, e.usePtzStop, e.useRebootReboot, e.useRecordedPlayback, e.useRecordingApplyDeviceSettingsPatch, e.useRecordingGetAvailability, e.useRecordingGetDaysWithRecordings, e.useRecordingGetDeviceConfig, e.useRecordingGetDeviceLiveContribution, e.useRecordingGetDeviceSettingsContribution, e.useRecordingGetPlaybackManifest, e.useRecordingGetStatus, e.useRecordingGetStorageUsage, e.useRecordingLocateSegment, e.useRecordingPruneFootage, e.useRecordingReadSegmentBytes, e.useRecordingRescanStorage, e.useRecordingSetDeviceConfig, e.useRemoteComponent, e.useScriptRunnerGetStatus, e.useScriptRunnerRun, e.useScriptRunnerStop, e.useScrubController, e.useSettingsStoreCount, e.useSettingsStoreDeclareCollection, e.useSettingsStoreDelete, e.useSettingsStoreGet, e.useSettingsStoreHistogram, e.useSettingsStoreInsert, e.useSettingsStoreIsEmpty, e.useSettingsStoreQuery, e.useSettingsStoreSet, e.useSettingsStoreUpdate, e.useSmokeGetStatus, e.useSnapshotApplyDeviceSettingsPatch, e.useSnapshotGetDeviceLiveContribution, e.useSnapshotGetDeviceSettingsContribution, e.useSnapshotGetSnapshot, e.useSnapshotGetStatus, e.useSnapshotInvalidateCache, e.useSnapshotProviderGetSnapshot, e.useSnapshotProviderSupportsDevice, e.useStorageAbortUpload, e.useStorageBeginDownload, e.useStorageBeginUpload, e.useStorageDelete, e.useStorageDeleteLocation, e.useStorageEndDownload, e.useStorageExists, e.useStorageFinalizeUpload, e.useStorageGetAvailableSpace, e.useStorageGetDefaultLocation, e.useStorageList, e.useStorageListLocationDeclarations, e.useStorageListLocations, e.useStorageListProviders, e.useStorageRead, e.useStorageReadChunk, e.useStorageResolve, e.useStorageTestConfig, e.useStorageTestLocation, e.useStorageUpsertLocation, e.useStorageWrite, e.useStorageWriteChunk, e.useStreamBrokerApplyDeviceSettingsPatch, e.useStreamBrokerAssignProfile, e.useStreamBrokerGetAllRtspEntries, e.useStreamBrokerGetBrokerStats, e.useStreamBrokerGetDeviceLiveContribution, e.useStreamBrokerGetDeviceSettingsContribution, e.useStreamBrokerGetPreBufferInfo, e.useStreamBrokerGetRtspEntry, e.useStreamBrokerGetRtspPort, e.useStreamBrokerGetStreamUrl, e.useStreamBrokerGetStreamWithCodec, e.useStreamBrokerIsRtspEnabled, e.useStreamBrokerKillClient, e.useStreamBrokerListAllCameraStreams, e.useStreamBrokerListAllProfileSlots, e.useStreamBrokerListClients, e.useStreamBrokerProbeStream, e.useStreamBrokerPublishCameraStream, e.useStreamBrokerPullAudioChunks, e.useStreamBrokerPullFrameHandles, e.useStreamBrokerRegenerateRtspToken, e.useStreamBrokerReleaseStreamWithCodec, e.useStreamBrokerRestartProfile, e.useStreamBrokerRetractCameraStream, e.useStreamBrokerSetPreBufferDuration, e.useStreamBrokerSetRtspEnabled, e.useStreamBrokerSubscribeAudioChunks, e.useStreamBrokerSubscribeFrames, e.useStreamBrokerUnassignProfile, e.useStreamBrokerUnsubscribeAudioChunks, e.useStreamBrokerUnsubscribeFrames, e.useStreamCatalogGetCatalog, e.useStreamParamsGetConfigSchema, e.useStreamParamsGetOptions, e.useStreamParamsGetStatus, e.useStreamParamsSetProfile, e.useSwitchGetStatus, e.useSwitchSetState, d = e.useSystem, e.useSystem$1, e.useSystemFeatureFlags, e.useSystemForceRetentionCleanup, e.useSystemGetRetentionConfig, e.useSystemHealth, e.useSystemInfo, e.useSystemMutation, e.useSystemNetworkAddresses, e.useSystemQuery, e.useSystemSetRetentionConfig, e.useTamperGetStatus, e.useTemperatureSensorGetStatus, e.useThemeMode, e.useToastOnToast, e.useTurnProviderGetTurnServers, e.useUpdateGetStatus, e.useUpdateInstallUpdate, e.useUserManagementConfirmTotp, e.useUserManagementCreateApiKey, e.useUserManagementCreateScopedToken, e.useUserManagementCreateUser, e.useUserManagementDeleteUser, e.useUserManagementDisableTotp, e.useUserManagementGetTotpStatus, e.useUserManagementListApiKeys, e.useUserManagementListOauthSessions, e.useUserManagementListScopedTokens, e.useUserManagementListUsers, e.useUserManagementOauthExchangeCode, e.useUserManagementOauthIssueCode, e.useUserManagementOauthRefresh, e.useUserManagementOauthVerifyAccessToken, e.useUserManagementResetPassword, e.useUserManagementRevokeApiKey, e.useUserManagementRevokeOauthSession, e.useUserManagementRevokeScopedToken, e.useUserManagementSetUserScopes, e.useUserManagementSetupTotp, e.useUserManagementUpdateUser, e.useUserManagementValidateApiKey, e.useUserManagementValidateCredentials, e.useUserManagementValidateScopedToken, e.useUserManagementVerifyTotp, e.useVacuumControlGetStatus, e.useVacuumControlLocate, e.useVacuumControlPause, e.useVacuumControlReturnToBase, e.useVacuumControlSetFanSpeed, e.useVacuumControlStart, e.useVacuumControlStop, e.useValveClose, e.useValveGetStatus, e.useValveOpen, e.useValveSetPosition, e.useValveStop, e.useVibrationGetStatus, e.useVideoclipsGetClipPlayback, e.useVideoclipsListClips, e.useVodPlayback, e.useWaterHeaterGetStatus, e.useWaterHeaterSetAway, e.useWaterHeaterSetOperationMode, e.useWaterHeaterSetTargetTemp, e.useWeatherGetStatus, e.useWebrtcSessionAddIceCandidate, e.useWebrtcSessionCloseSession, e.useWebrtcSessionCreateSession, e.useWebrtcSessionGetIceCandidates, e.useWebrtcSessionGetSessionState, e.useWebrtcSessionHandleAnswer, e.useWebrtcSessionHandleOffer, e.useWebrtcSessionHasAdaptiveBitrate, e.useWebrtcSessionListStreams, e.useWidget, e.useWidgetMetadata, e.useWidgetRegistry, e.useZoneAnalyticsGetCameraHistory, e.useZoneAnalyticsGetCurrentSnapshot, e.useZoneAnalyticsGetUnzonedHistory, e.useZoneAnalyticsGetZoneHistory, e.useZoneEditing, e.useZoneRulesListRules, e.useZoneRulesSetRules, e.useZonesAddZone, e.useZonesListZones, e.useZonesRemoveZone, e.useZonesUpdateZone, e.vacuumStateMeta, e.validateScopes, e.valveStateMeta, e.waterHeaterPhase, e.waterHeaterTint, e.weatherConditionMeta, e.weatherTint, e.default;
20
+ }, p = i.share["default:@camstack/ui-library"];
21
+ p === void 0 ? n.then(() => {
22
+ if (p = i.share["default:@camstack/ui-library"], p === void 0) throw Error("[Module Federation] Shared module @camstack/ui-library was imported before federation bootstrap finished.");
23
+ f(p);
24
+ }) : f(p);
25
+ //#endregion
26
+ export { c as a, s as i, a as n, l as o, o as r, u as s, d as t };
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.1.13",
39
+ version: "1.1.19",
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.1.12",
48
+ version: "1.1.13",
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.1.13",
84
+ version: "1.1.17",
85
85
  scope: "default",
86
86
  shareConfig: {
87
87
  singleton: !0,
@@ -2,8 +2,8 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-d6siFYqC.js");
6
- const require_resolve_frame = require("../resolve-frame-BACRPcr1.js");
5
+ const require_dist = require("../dist-DrqXmZjI.js");
6
+ const require_resolve_frame = require("../resolve-frame-Dciml-ds.js");
7
7
  let _camstack_shm_ring = require("@camstack/shm-ring");
8
8
  let sharp = require("sharp");
9
9
  sharp = require_dist.__toESM(sharp);
@@ -5647,7 +5647,13 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
5647
5647
  await PlateStore.declare(api.settingsStore);
5648
5648
  await ObjectEmbeddingStore.declare(api.settingsStore);
5649
5649
  const logger = this.ctx.logger;
5650
- const storage = this.ctx.kernel.storage;
5650
+ let storage = this.ctx.kernel.storage;
5651
+ const mediaRoot = process.env.CAMSTACK_MEDIA_ROOT?.trim();
5652
+ if (mediaRoot) {
5653
+ const { FilesystemStorageProvider } = await Promise.resolve().then(() => require("../node-BGfIE_Il.js"));
5654
+ storage = new FilesystemStorageProvider(mediaRoot);
5655
+ logger.info("pipeline-analytics: event media rooted at CAMSTACK_MEDIA_ROOT", { meta: { mediaRoot } });
5656
+ }
5651
5657
  if (!storage) throw new Error("pipeline-analytics requires ctx.kernel.storage");
5652
5658
  this.trackStore = new TrackStore({
5653
5659
  store: api.settingsStore,
@@ -6038,10 +6044,7 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
6038
6044
  }
6039
6045
  ] };
6040
6046
  const videoclipsProvider = createVideoclipsProvider({
6041
- defaultPad: {
6042
- preMs: 5e3,
6043
- postMs: 1e4
6044
- },
6047
+ defaultPad: require_dist.EVENT_PAD_MS,
6045
6048
  fetchEvents: async ({ deviceId, since, until, limit }) => {
6046
6049
  const [motion, object, audio] = await Promise.all([
6047
6050
  this.getMotionEvents({