@camstack/addon-import-alexa 0.2.148 → 0.2.150

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 (48) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/assets/alexa-echo.LICENSE.md +13 -0
  3. package/assets/alexa-echo.svg +1 -0
  4. package/dist/MaskShapeCanvas-B6q5RDLi.mjs +13807 -0
  5. package/dist/MotionZonesSettings-Dxo0EAzN.mjs +309 -0
  6. package/dist/PrivacyMaskSettings-DwWxpZrj.mjs +368 -0
  7. package/dist/SceneMonitorEditor-CC0dk5TR.mjs +846 -0
  8. package/dist/_stub.js +39566 -0
  9. package/dist/_virtual_mf-localSharedImportMap___mfe_internal__addon_import_alexa_page-CcQjQJmj.mjs +156 -0
  10. package/dist/_virtual_mf___mfe_internal__addon_import_alexa_page__loadShare___mf_0_camstack_mf_1_sdk__loadShare__.js-BmoaT3cr.mjs +25 -0
  11. package/dist/_virtual_mf___mfe_internal__addon_import_alexa_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Msberbw_.mjs +26 -0
  12. package/dist/_virtual_mf___mfe_internal__addon_import_alexa_page__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-Bct5qZia.mjs +25 -0
  13. package/dist/_virtual_mf___mfe_internal__addon_import_alexa_page__loadShare___mf_0_trpc_mf_1_client__loadShare__.js-BHqOw8oh.mjs +25 -0
  14. package/dist/_virtual_mf___mfe_internal__addon_import_alexa_page__loadShare___mf_0_trpc_mf_1_react_mf_2_query__loadShare__.js-B3qxfxBT.mjs +26 -0
  15. package/dist/_virtual_mf___mfe_internal__addon_import_alexa_page__loadShare__react__loadShare__.js-DwXXYAlk.mjs +70 -0
  16. package/dist/_virtual_mf___mfe_internal__addon_import_alexa_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-CUiVYNMY.mjs +26 -0
  17. package/dist/_virtual_mf___mfe_internal__addon_import_alexa_page__loadShare__react_mf_2_dom__loadShare__.js-CIPmAyPi.mjs +25 -0
  18. package/dist/_virtual_mf___mfe_internal__addon_import_alexa_page__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-tXm1x5EZ.mjs +25 -0
  19. package/dist/addon-import-alexa.css +3 -0
  20. package/dist/addon.js +2708 -149
  21. package/dist/addon.mjs +2724 -168
  22. package/dist/hostInit-CRUwUtSm.mjs +129 -0
  23. package/dist/index.js +1 -0
  24. package/dist/index.mjs +2 -2
  25. package/dist/player-overlays-DNpsEqAe.mjs +51 -0
  26. package/dist/remoteEntry.js +2 -0
  27. package/dist/remoteEntry.ssr.js +33 -0
  28. package/dist/responsive-B82v3AbM.mjs +125 -0
  29. package/dist/rolldown-runtime-HEgqtunE.mjs +20 -0
  30. package/dist/scene-monitor-copy-CPnjwzw6.mjs +227 -0
  31. package/dist/square-YTl_L1_3.mjs +45 -0
  32. package/dist/trash-2-DCHugLVt.mjs +25 -0
  33. package/dist/ui-text-B5YO4hoJ.mjs +34 -0
  34. package/dist/virtualExposes-lZT06jeg.mjs +2 -0
  35. package/dist/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_import_alexa_page__remoteEntry_js-DMdgQOgz.mjs +2857 -0
  36. package/dist/virtual_mf-exposes-ssr___mfe_internal__addon_import_alexa_page__remoteEntry_js-CViESMdd.mjs +10 -0
  37. package/dist/virtual_mf-exposes___mfe_internal__addon_import_alexa_page__remoteEntry_js-C3qJCjtV.mjs +27 -0
  38. package/i18n/en.json +8 -1
  39. package/i18n/it.json +8 -1
  40. package/package.json +26 -4
  41. package/python/NOTICE +4 -0
  42. package/python/alexa_gateway.py +226 -0
  43. package/python/alexa_protocol.py +115 -0
  44. package/python/alexa_sequences.py +74 -0
  45. package/python/alexa_worker.py +50 -0
  46. package/python/requirements.txt +3 -0
  47. package/python/test_alexa_gateway.py +141 -0
  48. package/python/test_alexa_protocol.py +177 -0
@@ -0,0 +1,129 @@
1
+ //#region \0virtual:mf:__mfe_internal__addon_import_alexa_page__H_A_I__hostAutoInit__H_A_I__.js
2
+ var e = "__mf_module_cache__";
3
+ globalThis[e] ||= {
4
+ share: {},
5
+ remote: {}
6
+ }, globalThis[e].share ||= {}, globalThis[e].remote ||= {};
7
+ var t = globalThis[e], n;
8
+ async function r() {
9
+ return n ||= (async () => {
10
+ let e = await (await import("./remoteEntry.js")).init(), n = {
11
+ react: {
12
+ version: "19.2.7",
13
+ scope: "default",
14
+ shareConfig: {
15
+ singleton: !0,
16
+ requiredVersion: "*",
17
+ import: !1
18
+ }
19
+ },
20
+ "react-dom": {
21
+ version: "19.2.7",
22
+ scope: "default",
23
+ shareConfig: {
24
+ singleton: !0,
25
+ requiredVersion: "*",
26
+ import: !1
27
+ }
28
+ },
29
+ "react/jsx-runtime": {
30
+ version: "19.2.7",
31
+ scope: "default",
32
+ shareConfig: {
33
+ singleton: !0,
34
+ requiredVersion: "*",
35
+ import: !1
36
+ }
37
+ },
38
+ "@camstack/types": {
39
+ version: "1.2.424",
40
+ scope: "default",
41
+ shareConfig: {
42
+ singleton: !0,
43
+ requiredVersion: "*",
44
+ import: !1
45
+ }
46
+ },
47
+ "@camstack/sdk": {
48
+ version: "1.2.153",
49
+ scope: "default",
50
+ shareConfig: {
51
+ singleton: !0,
52
+ requiredVersion: "*",
53
+ import: !1
54
+ }
55
+ },
56
+ "@tanstack/react-query": {
57
+ version: "5.101.0",
58
+ scope: "default",
59
+ shareConfig: {
60
+ singleton: !0,
61
+ requiredVersion: "*",
62
+ import: !1
63
+ }
64
+ },
65
+ "@trpc/client": {
66
+ version: "11.18.0",
67
+ scope: "default",
68
+ shareConfig: {
69
+ singleton: !0,
70
+ requiredVersion: "*",
71
+ import: !1
72
+ }
73
+ },
74
+ "@trpc/react-query": {
75
+ version: "11.18.0",
76
+ scope: "default",
77
+ shareConfig: {
78
+ singleton: !0,
79
+ requiredVersion: "*",
80
+ import: !1
81
+ }
82
+ },
83
+ "@camstack/ui-library": {
84
+ version: "1.2.335",
85
+ scope: "default",
86
+ shareConfig: {
87
+ singleton: !0,
88
+ requiredVersion: "*",
89
+ import: !1
90
+ }
91
+ },
92
+ "react-dom/client": {
93
+ version: "19.2.7",
94
+ scope: "default",
95
+ shareConfig: {
96
+ singleton: !0,
97
+ requiredVersion: "*",
98
+ import: !1
99
+ }
100
+ }
101
+ }, r = (e, t, n, r) => {
102
+ let i = ((Array.isArray(r) ? r[0] : r) || "default") + ":";
103
+ return t || !n ? i + e : i + e + "@" + n;
104
+ }, i = (e) => {
105
+ let t = e;
106
+ for (let e = 0; e < 5; e++) {
107
+ let e = t?.default;
108
+ if (!e || typeof e != "object" || Object.keys(e).length === 0) break;
109
+ let n = Object.keys(t).filter((e) => e !== "default").map((e) => t[e]);
110
+ if (n.length > 0 && n.some((e) => e !== void 0)) break;
111
+ t = e;
112
+ }
113
+ return t;
114
+ };
115
+ for (let [a, o] of Object.entries(n)) {
116
+ let n = r(a, o.shareConfig?.singleton, o.version, o.scope);
117
+ t.share[n] === void 0 && await e.loadShare(a, { customShareInfo: { shareConfig: o.shareConfig } }).then((e) => {
118
+ let r = typeof e == "function" ? e() : e;
119
+ return Promise.resolve(r).then((e) => {
120
+ t.share[n] = i(e);
121
+ });
122
+ });
123
+ }
124
+ return await Promise.all([]), e;
125
+ })(), n;
126
+ }
127
+ n = r();
128
+ //#endregion
129
+ export { n as hostInitPromise, r as initHost };
package/dist/index.js CHANGED
@@ -10,6 +10,7 @@ exports.buildAlexaApplianceCandidate = require_addon.buildAlexaApplianceCandidat
10
10
  exports.buildConnectionFormSchema = require_addon.buildConnectionFormSchema;
11
11
  exports.connectionToCredentials = require_addon.connectionToCredentials;
12
12
  exports.createAlexaClient = require_addon.createAlexaClient;
13
+ exports.customActions = require_addon.alexaSpeakActions;
13
14
  exports.mapAlexaCapabilitiesToCamStack = require_addon.mapAlexaCapabilitiesToCamStack;
14
15
  exports.mappableAppliance = require_addon.mappableAppliance;
15
16
  exports.settingsToAlexaConnection = require_addon.settingsToAlexaConnection;
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { AlexaImportAddon, a as AlexaClientNotWiredError, c as alexaAddonConfigSchema, d as connectionToCredentials, f as settingsToAlexaConnection, i as AlexaAuthError, l as alexaConnectionSchema, n as mappableAppliance, o as StubAlexaClient, r as mapAlexaCapabilitiesToCamStack, s as createAlexaClient, t as buildAlexaApplianceCandidate, u as buildConnectionFormSchema } from "./addon.mjs";
2
- export { AlexaAuthError, AlexaClientNotWiredError, AlexaImportAddon, StubAlexaClient, alexaAddonConfigSchema, alexaConnectionSchema, buildAlexaApplianceCandidate, buildConnectionFormSchema, connectionToCredentials, createAlexaClient, mapAlexaCapabilitiesToCamStack, mappableAppliance, settingsToAlexaConnection };
1
+ import { AlexaImportAddon, a as AlexaClientNotWiredError, c as alexaAddonConfigSchema, customActions as alexaSpeakActions, d as connectionToCredentials, f as settingsToAlexaConnection, i as AlexaAuthError, l as alexaConnectionSchema, n as mappableAppliance, o as StubAlexaClient, r as mapAlexaCapabilitiesToCamStack, s as createAlexaClient, t as buildAlexaApplianceCandidate, u as buildConnectionFormSchema } from "./addon.mjs";
2
+ export { AlexaAuthError, AlexaClientNotWiredError, AlexaImportAddon, StubAlexaClient, alexaAddonConfigSchema, alexaConnectionSchema, buildAlexaApplianceCandidate, buildConnectionFormSchema, connectionToCredentials, createAlexaClient, alexaSpeakActions as customActions, mapAlexaCapabilitiesToCamStack, mappableAppliance, settingsToAlexaConnection };
@@ -0,0 +1,51 @@
1
+ import { S as e, d as t, u as n, v as r } from "./_virtual_mf___mfe_internal__addon_import_alexa_page__loadShare__react__loadShare__.js-DwXXYAlk.mjs";
2
+ import { n as i, r as a, t as o } from "./_virtual_mf___mfe_internal__addon_import_alexa_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-CUiVYNMY.mjs";
3
+ import { h as s, m as c } from "./responsive-B82v3AbM.mjs";
4
+ var l = s("chevron-down", [["path", {
5
+ d: "m6 9 6 6 6-6",
6
+ key: "qrunsl"
7
+ }]]), u = s("chevron-right", [["path", {
8
+ d: "m9 18 6-6-6-6",
9
+ key: "mthhwq"
10
+ }]]);
11
+ //#endregion
12
+ //#region ../ui-library/src/composites/widget-panel.tsx
13
+ e();
14
+ function d({ title: e, icon: t, headerRight: n, collapsible: s = !1, defaultOpen: c = !0, open: d, onOpenChange: f, bodyClassName: p = "p-3", children: m }) {
15
+ let [h, g] = r(c), _ = d ?? h, v = () => {
16
+ let e = !_;
17
+ d === void 0 && g(e), f?.(e);
18
+ }, y = !s || _, b = /* @__PURE__ */ a(o, { children: [/* @__PURE__ */ a("span", {
19
+ className: "flex items-center gap-2 text-xs font-semibold uppercase tracking-wider text-foreground",
20
+ children: [t, e]
21
+ }), s ? /* @__PURE__ */ a("span", {
22
+ className: "flex min-w-0 items-center gap-2",
23
+ children: [n, i(_ ? l : u, { className: "h-3.5 w-3.5 shrink-0 text-foreground-subtle" })]
24
+ }) : n] }), x = `px-4 py-2 flex items-center justify-between ${y ? "border-b border-border" : ""}`;
25
+ return /* @__PURE__ */ a("div", {
26
+ className: "rounded-lg border border-border bg-surface overflow-hidden",
27
+ children: [s ? /* @__PURE__ */ i("button", {
28
+ type: "button",
29
+ "aria-expanded": _,
30
+ onClick: v,
31
+ className: `w-full gap-2 text-left ${x}`,
32
+ children: b
33
+ }) : /* @__PURE__ */ i("div", {
34
+ className: x,
35
+ children: b
36
+ }), y ? /* @__PURE__ */ i("div", {
37
+ className: p,
38
+ children: m
39
+ }) : null]
40
+ });
41
+ }
42
+ e(), c("camstack:player-overlays-state", null);
43
+ var f = c("camstack:player-overlays-actions", null);
44
+ function p(e) {
45
+ let r = n(f);
46
+ t(() => {
47
+ if (!(!r || !e)) return r.setLayer(e), () => r.removeLayer(e.id);
48
+ }, [r, e]);
49
+ }
50
+ //#endregion
51
+ export { d as n, l as r, p as t };
@@ -0,0 +1,2 @@
1
+ import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_import_alexa_page__remoteEntry_js-DMdgQOgz.mjs";
2
+ export { t as get, e as init };
@@ -0,0 +1,33 @@
1
+ import { init as e } from "@module-federation/runtime";
2
+ //#region virtual:mf-REMOTE_ENTRY_SSR_ID:__mfe_internal__addon_import_alexa_page__remoteEntry_js
3
+ var t;
4
+ async function n() {
5
+ return t ??= import("./virtual_mf-exposes-ssr___mfe_internal__addon_import_alexa_page__remoteEntry_js-CViESMdd.mjs").then((e) => e.default ?? e), t;
6
+ }
7
+ async function r(t = {}, n = []) {
8
+ let r = e({
9
+ name: "addon_import_alexa_page",
10
+ remotes: [],
11
+ shared: {}
12
+ }), i = { from: "addon_import_alexa_page" };
13
+ if (!(n.indexOf(i) >= 0)) {
14
+ n.push(i), r.initShareScopeMap("default", t);
15
+ try {
16
+ await Promise.all(await r.initializeSharing("default", {
17
+ strategy: "version-first",
18
+ from: "build",
19
+ initScope: n
20
+ }));
21
+ } catch (e) {
22
+ console.error("[Module Federation SSR]", e);
23
+ }
24
+ return r;
25
+ }
26
+ }
27
+ async function i(e) {
28
+ let t = await n();
29
+ if (!(e in t)) throw Error(`[Module Federation] Module ${e} does not exist in container.`);
30
+ return t[e]().then((e) => () => e);
31
+ }
32
+ //#endregion
33
+ export { i as get, r as init };
@@ -0,0 +1,125 @@
1
+ import { S as e, d as t, g as n, i as r, l as i, n as a, r as o, u as s, v as c, y as l } from "./_virtual_mf___mfe_internal__addon_import_alexa_page__loadShare__react__loadShare__.js-DwXXYAlk.mjs";
2
+ import "./_virtual_mf___mfe_internal__addon_import_alexa_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-CUiVYNMY.mjs";
3
+ import { c as u } from "./_virtual_mf___mfe_internal__addon_import_alexa_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Msberbw_.mjs";
4
+ //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
5
+ e();
6
+ var d = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), f = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), p = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), m = (e) => {
7
+ let t = p(e);
8
+ return t.charAt(0).toUpperCase() + t.slice(1);
9
+ }, h = {
10
+ xmlns: "http://www.w3.org/2000/svg",
11
+ width: 24,
12
+ height: 24,
13
+ viewBox: "0 0 24 24",
14
+ fill: "none",
15
+ stroke: "currentColor",
16
+ strokeWidth: 2,
17
+ strokeLinecap: "round",
18
+ strokeLinejoin: "round"
19
+ }, g = (e) => {
20
+ for (let t in e) if (t.startsWith("aria-") || t === "role" || t === "title") return !0;
21
+ return !1;
22
+ }, _ = r(({ color: e = "currentColor", size: t = 24, strokeWidth: n = 2, absoluteStrokeWidth: r, className: i = "", children: a, iconNode: s, ...c }, l) => o("svg", {
23
+ ref: l,
24
+ ...h,
25
+ width: t,
26
+ height: t,
27
+ stroke: e,
28
+ strokeWidth: r ? Number(n) * 24 / Number(t) : n,
29
+ className: d("lucide", i),
30
+ ...!a && !g(c) && { "aria-hidden": "true" },
31
+ ...c
32
+ }, [...s.map(([e, t]) => o(e, t)), ...Array.isArray(a) ? a : [a]]));
33
+ //#endregion
34
+ //#region ../../node_modules/lucide-react/dist/esm/createLucideIcon.js
35
+ e();
36
+ var v = (e, t) => {
37
+ let n = r(({ className: n, ...r }, i) => o(_, {
38
+ ref: i,
39
+ iconNode: t,
40
+ className: d(`lucide-${f(m(e))}`, `lucide-${e}`, n),
41
+ ...r
42
+ }));
43
+ return n.displayName = m(e), n;
44
+ };
45
+ //#endregion
46
+ //#region ../ui-library/src/lib/shared-context.ts
47
+ e();
48
+ function y(e, t) {
49
+ if (typeof globalThis > "u") return a(t);
50
+ let n = globalThis.__camstackSharedContexts, r = n ?? /* @__PURE__ */ new Map();
51
+ n || (globalThis.__camstackSharedContexts = r);
52
+ let i = r.get(e);
53
+ if (i) return i;
54
+ let o = a(t);
55
+ return r.set(e, o), o;
56
+ }
57
+ //#endregion
58
+ //#region ../ui-library/src/contexts/system-context.tsx
59
+ e();
60
+ var b = y("camstack:system", null);
61
+ function x() {
62
+ let e = s(b);
63
+ if (!e) throw Error("useSystem(): no <SystemProvider> in tree");
64
+ return e;
65
+ }
66
+ function S() {
67
+ return s(b);
68
+ }
69
+ //#endregion
70
+ //#region ../ui-library/src/hooks/use-device-proxy.ts
71
+ e();
72
+ var C = "capability.binding-changed";
73
+ function w(e, r) {
74
+ let [i, a] = c(null);
75
+ return t(() => {
76
+ if (r === null) {
77
+ a(null);
78
+ return;
79
+ }
80
+ let t = !1, n = async () => {
81
+ try {
82
+ let n = await e.deviceManager.getBindings.query({ deviceId: r });
83
+ t || a(n);
84
+ } catch {
85
+ t || a((e) => e);
86
+ }
87
+ };
88
+ n();
89
+ let i = e.live?.onEvent.subscribe({ category: C }, { onData: (e) => {
90
+ let t = e.data?.source;
91
+ if (!t) {
92
+ n();
93
+ return;
94
+ }
95
+ t.type === "device" && t.id === r && n();
96
+ } });
97
+ return () => {
98
+ t = !0, i?.unsubscribe();
99
+ };
100
+ }, [e, r]), n(() => i ? u(e, i) : null, [e, i]);
101
+ }
102
+ function T(e) {
103
+ let t = i((t) => e ? e.subscribe(() => t()) : () => void 0, [e]), n = i(() => e?.value, [e]);
104
+ return l(t, n, n);
105
+ }
106
+ //#endregion
107
+ //#region ../ui-library/src/lib/cap-error.ts
108
+ function E(e) {
109
+ if (typeof e != "object" || !e) return null;
110
+ let t = Reflect.get(e, "data");
111
+ if (typeof t == "object" && t) {
112
+ let e = Reflect.get(t, "capRouteReason");
113
+ if (typeof e == "string") return e;
114
+ }
115
+ return null;
116
+ }
117
+ function D(e) {
118
+ let t = E(e);
119
+ return t === null ? (e instanceof Error ? e.message : String(e)).includes("provider not available") : t === "no-provider" || t === "node-offline";
120
+ }
121
+ //#endregion
122
+ //#region ../ui-library/src/lib/responsive.ts
123
+ var O = "rounded-lg border border-border bg-surface overflow-hidden", k = "border-b border-border px-3 sm:px-4 py-1.5 sm:py-2", A = "p-2 sm:p-3 lg:p-4", j = "space-y-3 sm:space-y-4", M = "text-[10px] sm:text-[11px] font-semibold text-foreground uppercase tracking-wider", N = "text-[10px] text-foreground-subtle", P = "inline-flex items-center gap-1 rounded-full border px-1.5 py-0.5 text-[10px] font-medium transition-colors", F = "border-primary/50 bg-primary/15 text-primary";
124
+ //#endregion
125
+ export { k as a, M as c, T as d, S as f, v as h, O as i, D as l, y as m, P as n, j as o, x as p, A as r, N as s, F as t, w as u };
@@ -0,0 +1,20 @@
1
+ //#region \0rolldown/runtime.js
2
+ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescriptor, r = Object.getOwnPropertyNames, i = Object.getPrototypeOf, a = Object.prototype.hasOwnProperty, o = (e, t) => () => (e && (t = e(e = 0)), t), s = (e, t) => () => (t || (e((t = { exports: {} }).exports, t), e = null), t.exports), c = (e, n) => {
3
+ let r = {};
4
+ for (var i in e) t(r, i, {
5
+ get: e[i],
6
+ enumerable: !0
7
+ });
8
+ return n || t(r, Symbol.toStringTag, { value: "Module" }), r;
9
+ }, l = (e, i, o, s) => {
10
+ if (i && typeof i == "object" || typeof i == "function") for (var c = r(i), l = 0, u = c.length, d; l < u; l++) d = c[l], !a.call(e, d) && d !== o && t(e, d, {
11
+ get: ((e) => i[e]).bind(null, d),
12
+ enumerable: !(s = n(i, d)) || s.enumerable
13
+ });
14
+ return e;
15
+ }, u = (n, r, a) => (a = n == null ? {} : e(i(n)), l(r || !n || !n.__esModule ? t(a, "default", {
16
+ value: n,
17
+ enumerable: !0
18
+ }) : a, n)), d = (e) => a.call(e, "module.exports") ? e["module.exports"] : l(t({}, "__esModule", { value: !0 }), e);
19
+ //#endregion
20
+ export { u as a, d as i, o as n, c as r, s as t };
@@ -0,0 +1,227 @@
1
+ import { S as e, g as t, l as n, v as r } from "./_virtual_mf___mfe_internal__addon_import_alexa_page__loadShare__react__loadShare__.js-DwXXYAlk.mjs";
2
+ import { n as i } from "./ui-text-B5YO4hoJ.mjs";
3
+ import { h as a } from "./responsive-B82v3AbM.mjs";
4
+ var o = a("camera", [["path", {
5
+ 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",
6
+ key: "18u6gg"
7
+ }], ["circle", {
8
+ cx: "12",
9
+ cy: "13",
10
+ r: "3",
11
+ key: "1vg3eu"
12
+ }]]), s = a("image-off", [
13
+ ["line", {
14
+ x1: "2",
15
+ x2: "22",
16
+ y1: "2",
17
+ y2: "22",
18
+ key: "a6p6uj"
19
+ }],
20
+ ["path", {
21
+ d: "M10.41 10.41a2 2 0 1 1-2.83-2.83",
22
+ key: "1bzlo9"
23
+ }],
24
+ ["line", {
25
+ x1: "13.5",
26
+ x2: "6",
27
+ y1: "13.5",
28
+ y2: "21",
29
+ key: "1q0aeu"
30
+ }],
31
+ ["line", {
32
+ x1: "18",
33
+ x2: "21",
34
+ y1: "12",
35
+ y2: "15",
36
+ key: "5mozeu"
37
+ }],
38
+ ["path", {
39
+ d: "M3.59 3.59A1.99 1.99 0 0 0 3 5v14a2 2 0 0 0 2 2h14c.55 0 1.052-.22 1.41-.59",
40
+ key: "mmje98"
41
+ }],
42
+ ["path", {
43
+ d: "M21 15V5a2 2 0 0 0-2-2H9",
44
+ key: "43el77"
45
+ }]
46
+ ]), c = a("rotate-ccw", [["path", {
47
+ d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",
48
+ key: "1357e3"
49
+ }], ["path", {
50
+ d: "M3 3v5h5",
51
+ key: "1xhq8a"
52
+ }]]);
53
+ //#endregion
54
+ //#region ../ui-library/src/lib/hub-mount.ts
55
+ e();
56
+ var l = "camstack-mount", u = /^\/(?:[A-Za-z0-9_\-.]+\/)*$/, d = null;
57
+ function f(e) {
58
+ if (e == null || e === "") return null;
59
+ let t = e.endsWith("/") ? e : `${e}/`;
60
+ return !u.test(t) || t.includes("/../") || t.includes("/./") ? null : t;
61
+ }
62
+ function p() {
63
+ if (typeof document > "u") return "/";
64
+ let e = f(document.querySelector(`meta[name="${l}"]`)?.getAttribute("content"));
65
+ if (e !== null) return e;
66
+ if (document.querySelector("base[href]") !== null) try {
67
+ let e = new URL(document.baseURI);
68
+ if (e.origin === window.location.origin) {
69
+ let t = f(e.pathname);
70
+ if (t !== null) return t;
71
+ }
72
+ } catch {}
73
+ return "/";
74
+ }
75
+ function m() {
76
+ return d === null && (d = p()), d;
77
+ }
78
+ function h() {
79
+ return m().replace(/\/$/, "");
80
+ }
81
+ function g(e) {
82
+ return /^[a-z][a-z0-9+.-]*:/i.test(e) || e.startsWith("//");
83
+ }
84
+ function _(e) {
85
+ if (g(e)) return e;
86
+ let t = m(), n = e.replace(/^\/+/, "");
87
+ return t !== "/" && (e === h() || e.startsWith(t)) ? e : `${t}${n}`;
88
+ }
89
+ //#endregion
90
+ //#region ../ui-library/src/hooks/use-device-snapshot.ts
91
+ var v = "/addon/snapshot/media";
92
+ function y(e, i = {}) {
93
+ let { width: a, baseUrl: o } = i, [s, c] = r(0);
94
+ return {
95
+ src: t(() => {
96
+ if (e === null || e <= 0) return null;
97
+ let t = o === void 0 ? h() : o.replace(/\/+$/, ""), n = new URLSearchParams();
98
+ a !== void 0 && Number.isInteger(a) && a > 0 && n.set("w", String(a)), s > 0 && (n.set("force", "1"), n.set("r", String(s)));
99
+ let r = n.toString();
100
+ return `${t}${v}/${String(e)}.jpg${r.length > 0 ? `?${r}` : ""}`;
101
+ }, [
102
+ e,
103
+ a,
104
+ o,
105
+ s
106
+ ]),
107
+ loading: !1,
108
+ refresh: n(() => {
109
+ c((e) => e + 1);
110
+ }, [])
111
+ };
112
+ }
113
+ //#endregion
114
+ //#region ../ui-library/src/composites/cap-settings/scene-monitor-copy.ts
115
+ var b = ["day", "ir"], x = {
116
+ day: {
117
+ labelKey: "uiLibrary.sceneMonitor.variant.day",
118
+ labelFallback: "Daylight"
119
+ },
120
+ ir: {
121
+ labelKey: "uiLibrary.sceneMonitor.variant.ir",
122
+ labelFallback: "Night (IR)"
123
+ },
124
+ night: {
125
+ labelKey: "uiLibrary.sceneMonitor.variant.night",
126
+ labelFallback: "Night"
127
+ },
128
+ dawn: {
129
+ labelKey: "uiLibrary.sceneMonitor.variant.dawn",
130
+ labelFallback: "Dawn"
131
+ },
132
+ dusk: {
133
+ labelKey: "uiLibrary.sceneMonitor.variant.dusk",
134
+ labelFallback: "Dusk"
135
+ }
136
+ };
137
+ function S(e, t = i) {
138
+ let n = x[e];
139
+ return n === void 0 ? e : t(n.labelKey, n.labelFallback);
140
+ }
141
+ function C(e, t = i) {
142
+ let n = new Set(e.coveredConditions), r = b.map((e) => `${S(e, t)} ${n.has(e) ? "✓" : "✗"}`), a = [...n].filter((e) => !b.some((t) => t === e));
143
+ for (let e of a) r.push(`${S(e, t)} ✓`);
144
+ let o = b.filter((e) => !n.has(e));
145
+ if (o.length === 0) return r.join(" · ");
146
+ if (n.size === 0) return t("uiLibrary.sceneMonitor.coverage.empty", "{{parts}} — nothing captured yet, so this scene is not watching.", { parts: r.join(" · ") });
147
+ let [s = "", c] = o.map((e) => S(e, t).toLowerCase()), l = c === void 0 ? s : t("uiLibrary.sceneMonitor.coverage.namesJoin", "{{first}} and {{second}}", {
148
+ first: s,
149
+ second: c
150
+ }), u = {
151
+ parts: r.join(" · "),
152
+ names: l
153
+ };
154
+ return e.onUncoveredCondition === "judge-anyway" ? t("uiLibrary.sceneMonitor.coverage.judgeAnyway", "{{parts}} — {{names}} judged against the references you do have.", u) : t("uiLibrary.sceneMonitor.coverage.skip", "{{parts}} — optional; checks in {{names}} are skipped.", u);
155
+ }
156
+ function w(e, t = i) {
157
+ return e.suspendedCondition === null ? null : t("uiLibrary.sceneMonitor.suspension", "Paused — nothing was captured in {{light}}, so checks are on hold until the light changes back. Capture {{light}} if you want it watched around the clock.", { light: S(e.suspendedCondition, t).toLowerCase() });
158
+ }
159
+ var T = {
160
+ "no-reference-for-condition": {
161
+ key: "uiLibrary.sceneMonitor.unavailable.no_reference_for_condition",
162
+ fallback: "can’t tell — nothing has been captured for this scene yet. Press “Capture daylight” to photograph what normal looks like."
163
+ },
164
+ "view-shifted": {
165
+ key: "uiLibrary.sceneMonitor.unavailable.view_shifted",
166
+ fallback: "can’t tell — the camera view has moved since the reference was captured. Re-capture it."
167
+ },
168
+ "no-vision-profile": {
169
+ key: "uiLibrary.sceneMonitor.unavailable.no_vision_profile",
170
+ fallback: "can’t tell — the vision model is unreachable, so the change is on hold."
171
+ },
172
+ "encoder-model-changed": {
173
+ key: "uiLibrary.sceneMonitor.unavailable.encoder_model_changed",
174
+ fallback: "can’t tell — the embedding model changed, so the stored references are unreadable. Re-capture them."
175
+ },
176
+ "no-snapshot": {
177
+ key: "uiLibrary.sceneMonitor.unavailable.no_snapshot",
178
+ fallback: "can’t tell — this camera did not return a frame."
179
+ }
180
+ };
181
+ function E(e, t, n = i) {
182
+ if (e.states.length === 0) return n("uiLibrary.sceneMonitor.status.notArmed", "Not armed yet — capture the initial state to start watching.");
183
+ if (e.verdict === "unknown") {
184
+ if (e.unavailable === null) return n("uiLibrary.sceneMonitor.status.cantTellNow", "can’t tell right now.");
185
+ let t = T[e.unavailable];
186
+ return n(t.key, t.fallback);
187
+ }
188
+ let r = e.verdict === "diverged" ? e.divergedAt : e.armedAt, a = r === null ? "" : ` ${n("uiLibrary.sceneMonitor.status.heldFor", "for {{duration}}", { duration: A(Math.max(0, t - r)) })}`;
189
+ if (e.latched) return e.verdict === "diverged" ? n("uiLibrary.sceneMonitor.status.changedLatched", "CHANGED{{held}} — press Reset when you have dealt with it.", { held: a }) : n("uiLibrary.sceneMonitor.status.backToNormal", "Back to normal, but still flagged as changed{{held}}. Press Reset to clear it.", { held: a });
190
+ let o = w(e, n);
191
+ return o === null ? e.verdict === "diverged" ? n("uiLibrary.sceneMonitor.status.changed", "CHANGED{{held}}", { held: a }) : n("uiLibrary.sceneMonitor.status.normal", "Normal{{held}}", { held: a }) : o;
192
+ }
193
+ function D(e, t = i) {
194
+ return e.states.length === 0 ? {
195
+ text: t("uiLibrary.sceneMonitor.badge.notArmed", "Not armed"),
196
+ tone: "unknown"
197
+ } : e.latched ? {
198
+ text: t("uiLibrary.sceneMonitor.badge.changed", "Changed"),
199
+ tone: "alarm"
200
+ } : e.suspendedCondition === null ? e.verdict === "unknown" ? {
201
+ text: t("uiLibrary.sceneMonitor.badge.cantTell", "Can’t tell"),
202
+ tone: "unknown"
203
+ } : e.verdict === "diverged" ? {
204
+ text: t("uiLibrary.sceneMonitor.badge.changed", "Changed"),
205
+ tone: "alarm"
206
+ } : {
207
+ text: t("uiLibrary.sceneMonitor.badge.normal", "Normal"),
208
+ tone: "ok"
209
+ } : {
210
+ text: t("uiLibrary.sceneMonitor.badge.paused", "Paused"),
211
+ tone: "unknown"
212
+ };
213
+ }
214
+ var O = .4;
215
+ function k(e) {
216
+ return e.width * e.height > O;
217
+ }
218
+ function A(e) {
219
+ let t = Math.floor(e / 1e3);
220
+ if (t < 60) return `${t}s`;
221
+ let n = Math.floor(t / 60);
222
+ if (n < 60) return `${n}m`;
223
+ let r = Math.floor(n / 60);
224
+ return r < 48 ? `${r}h` : `${Math.floor(r / 24)}d`;
225
+ }
226
+ //#endregion
227
+ export { E as a, _ as c, o as d, k as i, c as l, D as n, S as o, C as r, y as s, b as t, s as u };
@@ -0,0 +1,45 @@
1
+ import { h as e } from "./responsive-B82v3AbM.mjs";
2
+ var t = e("eye-off", [
3
+ ["path", {
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",
5
+ key: "ct8e1f"
6
+ }],
7
+ ["path", {
8
+ d: "M14.084 14.158a3 3 0 0 1-4.242-4.242",
9
+ key: "151rxh"
10
+ }],
11
+ ["path", {
12
+ d: "M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",
13
+ key: "13bj9a"
14
+ }],
15
+ ["path", {
16
+ d: "m2 2 20 20",
17
+ key: "1ooewy"
18
+ }]
19
+ ]), n = e("mic", [
20
+ ["path", {
21
+ d: "M12 19v3",
22
+ key: "npa21l"
23
+ }],
24
+ ["path", {
25
+ d: "M19 10v2a7 7 0 0 1-14 0v-2",
26
+ key: "1vc78b"
27
+ }],
28
+ ["rect", {
29
+ x: "9",
30
+ y: "2",
31
+ width: "6",
32
+ height: "13",
33
+ rx: "3",
34
+ key: "s6n7sd"
35
+ }]
36
+ ]), r = e("square", [["rect", {
37
+ width: "18",
38
+ height: "18",
39
+ x: "3",
40
+ y: "3",
41
+ rx: "2",
42
+ key: "afitv7"
43
+ }]]);
44
+ //#endregion
45
+ export { n, t as r, r as t };
@@ -0,0 +1,25 @@
1
+ import { h as e } from "./responsive-B82v3AbM.mjs";
2
+ var t = e("trash-2", [
3
+ ["path", {
4
+ d: "M10 11v6",
5
+ key: "nco0om"
6
+ }],
7
+ ["path", {
8
+ d: "M14 11v6",
9
+ key: "outv1u"
10
+ }],
11
+ ["path", {
12
+ d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",
13
+ key: "miytrc"
14
+ }],
15
+ ["path", {
16
+ d: "M3 6h18",
17
+ key: "d0wm0j"
18
+ }],
19
+ ["path", {
20
+ d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",
21
+ key: "e791ji"
22
+ }]
23
+ ]);
24
+ //#endregion
25
+ export { t };