@camstack/addon-admin-ui 1.2.462 → 1.2.464
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.
- package/dist/assets/{AddonAssetIcon-DMG19u-q.js → AddonAssetIcon-CeDKQMK8.js} +1 -1
- package/dist/assets/Addons-rFRq_nR3.js +4 -0
- package/dist/assets/{AdminPage-oFm0hhFj.js → AdminPage-DP0D1UF2.js} +1 -1
- package/dist/assets/{AdminSectionedPage-CXL0Cc0w.js → AdminSectionedPage-SayqOJV9.js} +1 -1
- package/dist/assets/AiProfiles-Ds3eZpQt.js +3 -0
- package/dist/assets/{BrokerForm-D-QT3T4C.js → BrokerForm-BE7pwwXD.js} +1 -1
- package/dist/assets/Build-C5Fd-n_g.js +40 -0
- package/dist/assets/Calendars-B4pCLD6a.js +1 -0
- package/dist/assets/{Cluster-aDWkD3jS.js → Cluster-DBi_J1Wn.js} +1 -1
- package/dist/assets/CompositionEditor-CMWuITR7.js +1 -0
- package/dist/assets/CompositionEditorPage-BdoPZcOr.js +1 -0
- package/dist/assets/Data-CSl5da2E.js +2 -0
- package/dist/assets/DeviceDetail-CYFZVwJc.js +2 -0
- package/dist/assets/{DeviceDoActionFields-BfsAy1hi.js → DeviceDoActionFields-DmabAA_t.js} +1 -1
- package/dist/assets/{Devices-CndVoeQ8.js → Devices-3UrNP22-.js} +1 -1
- package/dist/assets/{EmbedPlayerPage-DB6Hb_mj.js → EmbedPlayerPage-DCl9eG4I.js} +1 -1
- package/dist/assets/History-Da3qAsyF.js +1 -0
- package/dist/assets/{Identity-DBoDRsam.js → Identity-DkYAbCLL.js} +1 -1
- package/dist/assets/IntegrationDetail-DsnuoHtK.js +1 -0
- package/dist/assets/{IntegrationHub-DnBfbKWG.js → IntegrationHub-BhNtcf1l.js} +1 -1
- package/dist/assets/Integrations-C_Rf4dUR.js +1 -0
- package/dist/assets/Integrations-DwGfEuNv.js +1 -0
- package/dist/assets/Library-UaWRBgSL.js +1 -0
- package/dist/assets/Locations-BVvFwwcJ.js +3 -0
- package/dist/assets/{Logs-DhyhktWC.js → Logs-D3SuWdxr.js} +1 -1
- package/dist/assets/{MaskShapeCanvas-CBL-DJGe.js → MaskShapeCanvas-C5rdWXtR.js} +1 -1
- package/dist/assets/{MotionZonesSettings-8vvPxjTe.js → MotionZonesSettings-ZcLOh0c4.js} +1 -1
- package/dist/assets/MyAccess-BOVxwGSk.js +2 -0
- package/dist/assets/{Network-BVufubzK.js → Network-B9GVDhRD.js} +1 -1
- package/dist/assets/{NodeAddonsSettingsPanel-B2ppCOQm.js → NodeAddonsSettingsPanel-Cg_7xIUB.js} +1 -1
- package/dist/assets/Notifications-N583FFEv.js +1 -0
- package/dist/assets/Pipeline-ud0MHAwc.js +1 -0
- package/dist/assets/{PrivacyMaskSettings-Cp2TZg4d.js → PrivacyMaskSettings-C1yy5qkh.js} +1 -1
- package/dist/assets/Recordings-MsjfcehA.js +1 -0
- package/dist/assets/{ScanNetworkModal-DFuZaP78.js → ScanNetworkModal-BjNMs3MS.js} +1 -1
- package/dist/assets/{SceneMonitorEditor-B47BGXqI.js → SceneMonitorEditor-DOsfgD2_.js} +1 -1
- package/dist/assets/SessionsList-CTYBPqGP.js +2 -0
- package/dist/assets/{Showroom-B_K5Voir.js → Showroom-CBqwAnFi.js} +1 -1
- package/dist/assets/{System-B3QOfsQ-.js → System-Ch25Qpf4.js} +1 -1
- package/dist/assets/{Terminal-CepoEWPj.js → Terminal-2YmS1vyw.js} +3 -3
- package/dist/assets/{Viewer-9n98n7Mc.js → Viewer-Cywjrh5B.js} +1 -1
- package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-pwVcJ8Li.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-DtRMQaGk.js} +1 -1
- package/dist/assets/{addon-icons-context-CfxpJVkI.js → addon-icons-context-BmIeVEr2.js} +1 -1
- package/dist/assets/{archive-CkpL7nYU.js → archive-BfaqC_ow.js} +1 -1
- package/dist/assets/{authed-media-BtcsEMhs.js → authed-media-DEe2ThW9.js} +1 -1
- package/dist/assets/{bell-off-D9tHNuLX.js → bell-off-D657Qfjl.js} +1 -1
- package/dist/assets/{board-model-BLL_cD-z.js → board-model-DGOHIUHU.js} +1 -1
- package/dist/assets/{boxes-BA8-oYCX.js → boxes-BH4OlHge.js} +1 -1
- package/dist/assets/circle-slash-CrxEyAEa.js +1 -0
- package/dist/assets/client-CYW9ELYx.js +358 -0
- package/dist/assets/{cloud-upload-5unDJZ5Y.js → cloud-upload-CFwwCXBD.js} +1 -1
- package/dist/assets/crop-CHdeAwRA.js +1 -0
- package/dist/assets/{device-integration-icon-B_6sNK4Z.js → device-integration-icon-BnX44OAw.js} +1 -1
- package/dist/assets/device-picker-model-BG1JsKx5.js +1 -0
- package/dist/assets/dist-2_skMd0F.js +358 -0
- package/dist/assets/{dist-CnGggN6i.js → dist-U0zz_Qaa.js} +1 -1
- package/dist/assets/{eraser-BehwAkha.js → eraser-DoTYk-op.js} +1 -1
- package/dist/assets/{format-3n872UoD.js → format-1YmOOIUc.js} +1 -1
- package/dist/assets/{hard-drive-download-5P7_6z5A.js → hard-drive-download-Bkwx7erK.js} +1 -1
- package/dist/assets/{hostInit-DxdU_pnx.js → hostInit-CwZD0WkC.js} +1 -1
- package/dist/assets/i18n-B-tc0y0g.js +1 -0
- package/dist/assets/{icons-Clqqnzdw.js → icons-zrco2zgK.js} +1 -1
- package/dist/assets/index-D44jtzlM.css +2 -0
- package/dist/assets/index-c8zQtnFh.js +4 -0
- package/dist/assets/{key-Dq6CiRWE.js → key-COVAKnjX.js} +1 -1
- package/dist/assets/{key-round-DX4Tm3r5.js → key-round-D26RK68l.js} +1 -1
- package/dist/assets/{layers-M4OA6__8.js → layers-egCDUDk5.js} +1 -1
- package/dist/assets/{linked-devices-model-BT6sN3Jo.js → linked-devices-model-foIHeKZ-.js} +1 -1
- package/dist/assets/{list-ordered-USAX-4g-.js → list-ordered-BRxJMtli.js} +1 -1
- package/dist/assets/{location-owned-usage-CmhxgtcU.js → location-owned-usage-Cz9x2yYX.js} +1 -1
- package/dist/assets/{log-in-C-sFC6o8.js → log-in-CR1DP5G2.js} +1 -1
- package/dist/assets/{memory-stick-CNw60CfF.js → memory-stick-CdDKrQSf.js} +1 -1
- package/dist/assets/{message-square-plus-BHUImv1e.js → message-square-plus-CTU1aOLB.js} +1 -1
- package/dist/assets/{mf-entry-bootstrap-0-22898ca3.js → mf-entry-bootstrap-0-f804d6aa.js} +2 -2
- package/dist/assets/{mic-off-nZLVhgXn.js → mic-off-D_q6qKRd.js} +1 -1
- package/dist/assets/{monitor-off-CemGAHSc.js → monitor-off-CxDc2ENq.js} +1 -1
- package/dist/assets/{monitor-smartphone-DWtxkkEg.js → monitor-smartphone-CXWzPwhX.js} +1 -1
- package/dist/assets/mount-BG1JsKx5.js +1 -0
- package/dist/assets/{player-overlays-BIvElXhE.js → player-overlays-BH057O7U.js} +1 -1
- package/dist/assets/{recycle-BxIgahL6.js → recycle-CB_CwFhI.js} +1 -1
- package/dist/assets/remoteEntry-5jqsf3vm.js +1 -0
- package/dist/assets/{scan-eye-NGftRIPn.js → scan-eye-zCPN-IXA.js} +1 -1
- package/dist/assets/{scissors-BHv40eB0.js → scissors-8OXl9wtf.js} +1 -1
- package/dist/assets/{search-x-D0cw_-38.js → search-x-DTqz9u3f.js} +1 -1
- package/dist/assets/{send-B63foSkK.js → send-8GpK6UfW.js} +1 -1
- package/dist/assets/{settings-2-DX9ytL3l.js → settings-2-HzWfFtqI.js} +1 -1
- package/dist/assets/{speaker-BC0GjvT5.js → speaker-BkEeT7Qt.js} +1 -1
- package/dist/assets/src-DR_xV8BA.js +67 -0
- package/dist/assets/{step-inspector-model-BNiszF9a.js → step-inspector-model-UCA2LTHH.js} +1 -1
- package/dist/assets/{timer-reset-Emc4qthN.js → timer-reset-BAE1rlG9.js} +1 -1
- package/dist/assets/{ungroup-PYWFRB_O.js → ungroup-DwAY18V9.js} +1 -1
- package/dist/assets/{unlink-DUoBRhNd.js → unlink-CBe0geqM.js} +1 -1
- package/dist/assets/{usb-x_Sc1fcn.js → usb-DIvGHcpB.js} +1 -1
- package/dist/assets/{use-scenes-feed-BStfY5U_.js → use-scenes-feed-C8vBAMF_.js} +1 -1
- package/dist/assets/{use-stationary-objects-CRygyfvJ.js → use-stationary-objects-CW3x2icV.js} +1 -1
- package/dist/assets/useEventInvalidation-BG1JsKx5.js +1 -0
- package/dist/assets/{useNodeUrlSelection-CXgYDNbG.js → useNodeUrlSelection-DGKmtTIk.js} +1 -1
- package/dist/assets/user-round-Ku24ZXeJ.js +1 -0
- package/dist/assets/{user-x-CBs312Q9.js → user-x-Ti_5uOx5.js} +1 -1
- package/dist/assets/{video-D0GPir6r.js → video-IEto7g6S.js} +1 -1
- package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-DNGcxVE-.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-CjmIPZyr.js} +2 -2
- package/dist/index.html +10 -10
- package/dist/server/addon.js +470 -70
- package/package.json +1 -1
- package/dist/assets/Addons-BgJCB4KS.js +0 -4
- package/dist/assets/AiProfiles-BVyp59R4.js +0 -3
- package/dist/assets/Build-BbIlgO2k.js +0 -40
- package/dist/assets/Calendars-hof9Zsuo.js +0 -1
- package/dist/assets/CompositionEditor-DVyG_gki.js +0 -1
- package/dist/assets/CompositionEditorPage-7rnuVmmK.js +0 -1
- package/dist/assets/Data-XFdQ_CJg.js +0 -2
- package/dist/assets/DeviceDetail-4xoKO2Rw.js +0 -2
- package/dist/assets/History-DiYHtz3o.js +0 -1
- package/dist/assets/IntegrationDetail-Bc1sRi3k.js +0 -1
- package/dist/assets/Integrations-8Pi-1QTx.js +0 -1
- package/dist/assets/Integrations-BXourHS8.js +0 -1
- package/dist/assets/Library-C-ZxsOFn.js +0 -1
- package/dist/assets/Locations-BlixafK7.js +0 -3
- package/dist/assets/MyAccess-DP1ZLrmr.js +0 -2
- package/dist/assets/Notifications-CebO2rH3.js +0 -1
- package/dist/assets/Pipeline-BEX8fX4r.js +0 -1
- package/dist/assets/Recordings-D11aOWfh.js +0 -1
- package/dist/assets/SessionsList-C3EfpYvC.js +0 -2
- package/dist/assets/circle-slash-DF-9F9d1.js +0 -1
- package/dist/assets/client-CNqHea-r.js +0 -358
- package/dist/assets/crop-BeLqvBA7.js +0 -1
- package/dist/assets/device-picker-model-D7ZJEJ81.js +0 -1
- package/dist/assets/dist-v3iXCHPG.js +0 -358
- package/dist/assets/i18n-SRLxy4I7.js +0 -1
- package/dist/assets/index-CfXsU3sZ.js +0 -4
- package/dist/assets/index-DhkrLRVh.css +0 -2
- package/dist/assets/mount-D7ZJEJ81.js +0 -1
- package/dist/assets/remoteEntry-BqGZp0f4.js +0 -1
- package/dist/assets/src-WNMGrUfA.js +0 -67
- package/dist/assets/useEventInvalidation-D7ZJEJ81.js +0 -1
- package/dist/assets/user-round-CfdLlVdg.js +0 -1
package/dist/server/addon.js
CHANGED
|
@@ -41750,6 +41750,381 @@ var _macroLookup = /* @__PURE__ */ new Map();
|
|
|
41750
41750
|
for (const [k, v] of Object.entries(YAMNET_TO_MACRO.mapping)) _macroLookup.set(k.toLowerCase(), v);
|
|
41751
41751
|
for (const [k, v] of Object.entries(APPLE_SA_TO_MACRO.mapping)) _macroLookup.set(k.toLowerCase(), v);
|
|
41752
41752
|
/**
|
|
41753
|
+
* Palette entry ids (D939). Audio is the one gradient; `audio-*` leaves are
|
|
41754
|
+
* not entries. `heatmapScrub` is a mark, not an event kind.
|
|
41755
|
+
*/
|
|
41756
|
+
var PALETTE_ENTRY_IDS = [
|
|
41757
|
+
"motion",
|
|
41758
|
+
"audio",
|
|
41759
|
+
"recording",
|
|
41760
|
+
"live",
|
|
41761
|
+
"heatmapScrub",
|
|
41762
|
+
"person",
|
|
41763
|
+
"vehicle",
|
|
41764
|
+
"animal",
|
|
41765
|
+
"package",
|
|
41766
|
+
"sensor",
|
|
41767
|
+
"control",
|
|
41768
|
+
"face",
|
|
41769
|
+
"plate",
|
|
41770
|
+
"car",
|
|
41771
|
+
"truck",
|
|
41772
|
+
"bus",
|
|
41773
|
+
"motorcycle",
|
|
41774
|
+
"bicycle",
|
|
41775
|
+
"airplane",
|
|
41776
|
+
"boat",
|
|
41777
|
+
"train",
|
|
41778
|
+
"bird",
|
|
41779
|
+
"dog",
|
|
41780
|
+
"cat",
|
|
41781
|
+
"horse",
|
|
41782
|
+
"sheep",
|
|
41783
|
+
"cow",
|
|
41784
|
+
"elephant",
|
|
41785
|
+
"bear",
|
|
41786
|
+
"zebra",
|
|
41787
|
+
"giraffe",
|
|
41788
|
+
"package-delivered",
|
|
41789
|
+
"package-picked-up",
|
|
41790
|
+
"suitcase",
|
|
41791
|
+
"backpack",
|
|
41792
|
+
"handbag",
|
|
41793
|
+
"contact",
|
|
41794
|
+
"motion-sensor",
|
|
41795
|
+
"smoke",
|
|
41796
|
+
"flood",
|
|
41797
|
+
"gas",
|
|
41798
|
+
"carbon-monoxide",
|
|
41799
|
+
"vibration",
|
|
41800
|
+
"tamper",
|
|
41801
|
+
"presence",
|
|
41802
|
+
"enum-sensor",
|
|
41803
|
+
"device-event",
|
|
41804
|
+
"lock",
|
|
41805
|
+
"cover",
|
|
41806
|
+
"switch",
|
|
41807
|
+
"siren",
|
|
41808
|
+
"button",
|
|
41809
|
+
"doorbell"
|
|
41810
|
+
];
|
|
41811
|
+
var AUDIO_ENTRY_ID = "audio";
|
|
41812
|
+
/** Six rungs, quiet → loud. The opaque end is the entry's hex. */
|
|
41813
|
+
var AUDIO_GRADIENT_ALPHAS = [
|
|
41814
|
+
.3,
|
|
41815
|
+
.42,
|
|
41816
|
+
.55,
|
|
41817
|
+
.7,
|
|
41818
|
+
.85,
|
|
41819
|
+
1
|
|
41820
|
+
];
|
|
41821
|
+
var PALETTE_PRESET_IDS = [
|
|
41822
|
+
"camstack",
|
|
41823
|
+
"high-contrast",
|
|
41824
|
+
"okabe-ito"
|
|
41825
|
+
];
|
|
41826
|
+
/** Frozen palette tables (D939). The spec refuses a table that breaks the rule. */
|
|
41827
|
+
var CAMSTACK_HEX = {
|
|
41828
|
+
motion: "#d946ef",
|
|
41829
|
+
audio: "#059eb8",
|
|
41830
|
+
recording: "#ef4444",
|
|
41831
|
+
live: "#8d7a00",
|
|
41832
|
+
heatmapScrub: "#4b32ff",
|
|
41833
|
+
person: "#11a64c",
|
|
41834
|
+
vehicle: "#3b82f6",
|
|
41835
|
+
animal: "#ea6a09",
|
|
41836
|
+
package: "#924667",
|
|
41837
|
+
sensor: "#624bbc",
|
|
41838
|
+
control: "#944d24",
|
|
41839
|
+
face: "#ed4f8d",
|
|
41840
|
+
plate: "#4b7027",
|
|
41841
|
+
car: "#9684cf",
|
|
41842
|
+
truck: "#0f9b89",
|
|
41843
|
+
bus: "#a734a9",
|
|
41844
|
+
motorcycle: "#c1133a",
|
|
41845
|
+
bicycle: "#0e6a9b",
|
|
41846
|
+
airplane: "#7c9928",
|
|
41847
|
+
boat: "#b17933",
|
|
41848
|
+
train: "#ad6ca3",
|
|
41849
|
+
bird: "#0f7c55",
|
|
41850
|
+
dog: "#c82700",
|
|
41851
|
+
cat: "#7268f2",
|
|
41852
|
+
horse: "#cb795e",
|
|
41853
|
+
sheep: "#b8636b",
|
|
41854
|
+
cow: "#cb2969",
|
|
41855
|
+
elephant: "#1158d2",
|
|
41856
|
+
bear: "#8d5e00",
|
|
41857
|
+
zebra: "#0097d6",
|
|
41858
|
+
giraffe: "#8f61bb",
|
|
41859
|
+
"package-delivered": "#cd3f9b",
|
|
41860
|
+
"package-picked-up": "#388a08",
|
|
41861
|
+
suitcase: "#666800",
|
|
41862
|
+
backpack: "#ec5022",
|
|
41863
|
+
handbag: "#a76ef8",
|
|
41864
|
+
contact: "#ab5a49",
|
|
41865
|
+
"motion-sensor": "#b95d1a",
|
|
41866
|
+
smoke: "#dd3858",
|
|
41867
|
+
flood: "#b31e7d",
|
|
41868
|
+
gas: "#5b70b5",
|
|
41869
|
+
"carbon-monoxide": "#7b4e8e",
|
|
41870
|
+
vibration: "#e65bba",
|
|
41871
|
+
tamper: "#98464b",
|
|
41872
|
+
presence: "#3a9468",
|
|
41873
|
+
"enum-sensor": "#7885f8",
|
|
41874
|
+
"device-event": "#8c43c8",
|
|
41875
|
+
lock: "#649653",
|
|
41876
|
+
cover: "#c67597",
|
|
41877
|
+
switch: "#7a812a",
|
|
41878
|
+
siren: "#ac5d7f",
|
|
41879
|
+
button: "#b276cd",
|
|
41880
|
+
doorbell: "#0087ab"
|
|
41881
|
+
};
|
|
41882
|
+
var CAMSTACK_FALLBACK = [
|
|
41883
|
+
"#b34dc7",
|
|
41884
|
+
"#1d7d34",
|
|
41885
|
+
"#db6b6c",
|
|
41886
|
+
"#a43d29",
|
|
41887
|
+
"#0e6ee6",
|
|
41888
|
+
"#29a10b",
|
|
41889
|
+
"#a98731",
|
|
41890
|
+
"#0181c6"
|
|
41891
|
+
];
|
|
41892
|
+
var HIGH_CONTRAST_HEX = {
|
|
41893
|
+
motion: "#964360",
|
|
41894
|
+
audio: "#23a132",
|
|
41895
|
+
recording: "#2494ca",
|
|
41896
|
+
live: "#bd7e2b",
|
|
41897
|
+
heatmapScrub: "#ad6eea",
|
|
41898
|
+
person: "#62611e",
|
|
41899
|
+
vehicle: "#f4534c",
|
|
41900
|
+
animal: "#1556cd",
|
|
41901
|
+
package: "#9c4415",
|
|
41902
|
+
sensor: "#066c48",
|
|
41903
|
+
control: "#f2479f",
|
|
41904
|
+
face: "#139d8a",
|
|
41905
|
+
plate: "#909024",
|
|
41906
|
+
car: "#8e35ab",
|
|
41907
|
+
truck: "#bd0b2b",
|
|
41908
|
+
bus: "#7a88ca",
|
|
41909
|
+
motorcycle: "#e26725",
|
|
41910
|
+
bicycle: "#a6679b",
|
|
41911
|
+
airplane: "#7c5720",
|
|
41912
|
+
boat: "#467a1b",
|
|
41913
|
+
train: "#6f65a4",
|
|
41914
|
+
bird: "#cb717f",
|
|
41915
|
+
dog: "#c62490",
|
|
41916
|
+
cat: "#b36850",
|
|
41917
|
+
horse: "#1872ac",
|
|
41918
|
+
sheep: "#927939",
|
|
41919
|
+
cow: "#428a5c",
|
|
41920
|
+
elephant: "#d41160",
|
|
41921
|
+
bear: "#799453",
|
|
41922
|
+
zebra: "#a85455",
|
|
41923
|
+
giraffe: "#746be8",
|
|
41924
|
+
"package-delivered": "#824a80",
|
|
41925
|
+
"package-picked-up": "#614ac1",
|
|
41926
|
+
suitcase: "#2f77f3",
|
|
41927
|
+
backpack: "#fa476d",
|
|
41928
|
+
handbag: "#c14cbe",
|
|
41929
|
+
contact: "#c83921",
|
|
41930
|
+
"motion-sensor": "#a07ebd",
|
|
41931
|
+
smoke: "#a25b13",
|
|
41932
|
+
flood: "#526bab",
|
|
41933
|
+
gas: "#924938",
|
|
41934
|
+
"carbon-monoxide": "#bb7e53",
|
|
41935
|
+
vibration: "#b66182",
|
|
41936
|
+
tamper: "#3c6931",
|
|
41937
|
+
presence: "#6c851d",
|
|
41938
|
+
"enum-sensor": "#ad2d48",
|
|
41939
|
+
"device-event": "#5e9b04",
|
|
41940
|
+
lock: "#00a062",
|
|
41941
|
+
cover: "#ad8624",
|
|
41942
|
+
switch: "#d05259",
|
|
41943
|
+
siren: "#cd67b3",
|
|
41944
|
+
button: "#c9746a",
|
|
41945
|
+
doorbell: "#338eeb"
|
|
41946
|
+
};
|
|
41947
|
+
var HIGH_CONTRAST_FALLBACK = [
|
|
41948
|
+
"#817f3b",
|
|
41949
|
+
"#a0733e",
|
|
41950
|
+
"#8658b2",
|
|
41951
|
+
"#956301",
|
|
41952
|
+
"#bc652d",
|
|
41953
|
+
"#647331",
|
|
41954
|
+
"#a14c9e",
|
|
41955
|
+
"#d14e71"
|
|
41956
|
+
];
|
|
41957
|
+
var OKABE_ITO_HEX = {
|
|
41958
|
+
motion: "#b88128",
|
|
41959
|
+
audio: "#1096c8",
|
|
41960
|
+
recording: "#009e73",
|
|
41961
|
+
live: "#9c8c22",
|
|
41962
|
+
heatmapScrub: "#0072b2",
|
|
41963
|
+
person: "#d55e00",
|
|
41964
|
+
vehicle: "#c0739f",
|
|
41965
|
+
animal: "#226d18",
|
|
41966
|
+
package: "#91446c",
|
|
41967
|
+
sensor: "#217b56",
|
|
41968
|
+
control: "#648647",
|
|
41969
|
+
face: "#c22998",
|
|
41970
|
+
plate: "#fa4575",
|
|
41971
|
+
car: "#956301",
|
|
41972
|
+
truck: "#2f77f3",
|
|
41973
|
+
bus: "#7a4e86",
|
|
41974
|
+
motorcycle: "#f54597",
|
|
41975
|
+
bicycle: "#bb3e75",
|
|
41976
|
+
airplane: "#e054c0",
|
|
41977
|
+
boat: "#457942",
|
|
41978
|
+
train: "#867afa",
|
|
41979
|
+
bird: "#88914c",
|
|
41980
|
+
dog: "#1556cd",
|
|
41981
|
+
cat: "#71702c",
|
|
41982
|
+
horse: "#9b4fa4",
|
|
41983
|
+
sheep: "#c0559d",
|
|
41984
|
+
cow: "#d14f65",
|
|
41985
|
+
elephant: "#98470f",
|
|
41986
|
+
bear: "#595896",
|
|
41987
|
+
zebra: "#96790e",
|
|
41988
|
+
giraffe: "#cb717b",
|
|
41989
|
+
"package-delivered": "#139d8a",
|
|
41990
|
+
"package-picked-up": "#906ead",
|
|
41991
|
+
suitcase: "#d02939",
|
|
41992
|
+
backpack: "#d41160",
|
|
41993
|
+
handbag: "#f64f54",
|
|
41994
|
+
contact: "#7258d2",
|
|
41995
|
+
"motion-sensor": "#b66182",
|
|
41996
|
+
smoke: "#627abb",
|
|
41997
|
+
flood: "#b86ae4",
|
|
41998
|
+
gas: "#a95261",
|
|
41999
|
+
"carbon-monoxide": "#c65d3c",
|
|
42000
|
+
vibration: "#7a40b7",
|
|
42001
|
+
tamper: "#914b34",
|
|
42002
|
+
presence: "#9481c3",
|
|
42003
|
+
"enum-sensor": "#ac6d47",
|
|
42004
|
+
"device-event": "#7b6fce",
|
|
42005
|
+
lock: "#c67662",
|
|
42006
|
+
cover: "#a6564d",
|
|
42007
|
+
switch: "#ad2c4e",
|
|
42008
|
+
siren: "#348e08",
|
|
42009
|
+
button: "#d27303",
|
|
42010
|
+
doorbell: "#55770f"
|
|
42011
|
+
};
|
|
42012
|
+
var OKABE_ITO_FALLBACK = [
|
|
42013
|
+
"#9a3784",
|
|
42014
|
+
"#a7392c",
|
|
42015
|
+
"#409d50",
|
|
42016
|
+
"#6987e7",
|
|
42017
|
+
"#ee5b3d",
|
|
42018
|
+
"#c0430d",
|
|
42019
|
+
"#af79b3",
|
|
42020
|
+
"#4b6628"
|
|
42021
|
+
];
|
|
42022
|
+
/**
|
|
42023
|
+
* The display palette (D939). One table of colours, three presets, one
|
|
42024
|
+
* validator. Taxonomy colours and every consumer read this — there is no
|
|
42025
|
+
* second hex table.
|
|
42026
|
+
*/
|
|
42027
|
+
var paletteHexSchema = string().regex(/^#[0-9a-f]{6}$/);
|
|
42028
|
+
var paletteSwatchSchema = discriminatedUnion("form", [object({
|
|
42029
|
+
form: literal("solid"),
|
|
42030
|
+
hex: paletteHexSchema
|
|
42031
|
+
}), object({
|
|
42032
|
+
form: literal("gradient"),
|
|
42033
|
+
hex: paletteHexSchema,
|
|
42034
|
+
alphas: array(number().gt(0).lte(1)).length(AUDIO_GRADIENT_ALPHAS.length)
|
|
42035
|
+
})]);
|
|
42036
|
+
var paletteReadySchema = object({
|
|
42037
|
+
status: literal("ready"),
|
|
42038
|
+
presetId: _enum(PALETTE_PRESET_IDS),
|
|
42039
|
+
customized: boolean(),
|
|
42040
|
+
source: _enum(["stored", "unconfigured"]),
|
|
42041
|
+
swatches: record(string(), paletteSwatchSchema),
|
|
42042
|
+
fallbacks: array(paletteHexSchema).length(8)
|
|
42043
|
+
});
|
|
42044
|
+
var paletteResultSchema = discriminatedUnion("status", [paletteReadySchema, object({
|
|
42045
|
+
status: literal("unknown"),
|
|
42046
|
+
reason: string()
|
|
42047
|
+
})]);
|
|
42048
|
+
var setPaletteInputSchema = union([object({ presetId: string() }), object({
|
|
42049
|
+
presetId: string(),
|
|
42050
|
+
overrides: record(string(), paletteSwatchSchema)
|
|
42051
|
+
})]);
|
|
42052
|
+
object({
|
|
42053
|
+
presetId: string(),
|
|
42054
|
+
overrides: record(string(), paletteSwatchSchema)
|
|
42055
|
+
});
|
|
42056
|
+
function solid(hex) {
|
|
42057
|
+
return {
|
|
42058
|
+
form: "solid",
|
|
42059
|
+
hex
|
|
42060
|
+
};
|
|
42061
|
+
}
|
|
42062
|
+
function audioGradient(hex) {
|
|
42063
|
+
return {
|
|
42064
|
+
form: "gradient",
|
|
42065
|
+
hex,
|
|
42066
|
+
alphas: [...AUDIO_GRADIENT_ALPHAS]
|
|
42067
|
+
};
|
|
42068
|
+
}
|
|
42069
|
+
function swatchesFrom(hexes) {
|
|
42070
|
+
const out = {};
|
|
42071
|
+
for (const id of PALETTE_ENTRY_IDS) {
|
|
42072
|
+
const hex = hexes[id];
|
|
42073
|
+
if (hex === void 0) throw new Error(`palette table missing ${id}`);
|
|
42074
|
+
out[id] = id === "audio" ? audioGradient(hex) : solid(hex);
|
|
42075
|
+
}
|
|
42076
|
+
return out;
|
|
42077
|
+
}
|
|
42078
|
+
function preset(id, name, hexes, fallbacks) {
|
|
42079
|
+
return {
|
|
42080
|
+
id,
|
|
42081
|
+
name,
|
|
42082
|
+
swatches: swatchesFrom(hexes),
|
|
42083
|
+
fallbacks
|
|
42084
|
+
};
|
|
42085
|
+
}
|
|
42086
|
+
var DISPLAY_PRESETS = [
|
|
42087
|
+
preset("camstack", "CamStack", CAMSTACK_HEX, CAMSTACK_FALLBACK),
|
|
42088
|
+
preset("high-contrast", "High contrast", HIGH_CONTRAST_HEX, HIGH_CONTRAST_FALLBACK),
|
|
42089
|
+
preset("okabe-ito", "Colour-blind safe", OKABE_ITO_HEX, OKABE_ITO_FALLBACK)
|
|
42090
|
+
];
|
|
42091
|
+
function presetById(id) {
|
|
42092
|
+
return DISPLAY_PRESETS.find((item) => item.id === id);
|
|
42093
|
+
}
|
|
42094
|
+
function bundledCamstack() {
|
|
42095
|
+
const presetRow = presetById("camstack");
|
|
42096
|
+
if (presetRow === void 0) throw new Error("CamStack preset missing");
|
|
42097
|
+
return readyOf(presetRow, "unconfigured", false);
|
|
42098
|
+
}
|
|
42099
|
+
function readyOf(row, source, customized) {
|
|
42100
|
+
return {
|
|
42101
|
+
status: "ready",
|
|
42102
|
+
presetId: row.id,
|
|
42103
|
+
customized,
|
|
42104
|
+
source,
|
|
42105
|
+
swatches: row.swatches,
|
|
42106
|
+
fallbacks: [...row.fallbacks]
|
|
42107
|
+
};
|
|
42108
|
+
}
|
|
42109
|
+
function hashFallback(kind, fallbacks) {
|
|
42110
|
+
let hash = 0;
|
|
42111
|
+
for (let i = 0; i < kind.length; i++) hash = hash * 31 + (kind.codePointAt(i) ?? 0) >>> 0;
|
|
42112
|
+
const hex = fallbacks[hash % fallbacks.length];
|
|
42113
|
+
if (hex === void 0) throw new Error("display palette has no fallback colour");
|
|
42114
|
+
return hex;
|
|
42115
|
+
}
|
|
42116
|
+
/** Colour a kind paints with. Audio leaves share the audio gradient's hex. */
|
|
42117
|
+
function paintHex(swatches, fallbacks, kind) {
|
|
42118
|
+
const key = kind.trim().toLowerCase();
|
|
42119
|
+
if (key.startsWith("audio-")) {
|
|
42120
|
+
const audio = swatches[AUDIO_ENTRY_ID];
|
|
42121
|
+
return audio !== void 0 ? audio.hex : hashFallback(key, fallbacks);
|
|
42122
|
+
}
|
|
42123
|
+
const direct = swatches[key];
|
|
42124
|
+
if (direct !== void 0) return direct.hex;
|
|
42125
|
+
return hashFallback(key, fallbacks);
|
|
42126
|
+
}
|
|
42127
|
+
/**
|
|
41753
42128
|
* Unified event-kind taxonomy — THE single source of truth for
|
|
41754
42129
|
* `kind → { parentKind, category, level, color, iconId, labelKey, label,
|
|
41755
42130
|
* icon }`.
|
|
@@ -41763,109 +42138,88 @@ for (const [k, v] of Object.entries(APPLE_SA_TO_MACRO.mapping)) _macroLookup.set
|
|
|
41763
42138
|
* - `addon-post-analysis/shared/frame/box-drawer.ts` (DEFAULT_COLOR)
|
|
41764
42139
|
* - the COCO / audio class maps (macro ↔ sub relationships)
|
|
41765
42140
|
*
|
|
41766
|
-
* The DATA (serializable —
|
|
41767
|
-
* `@camstack/types`.
|
|
41768
|
-
*
|
|
41769
|
-
*
|
|
41770
|
-
*
|
|
42141
|
+
* The DATA (serializable — parentKind / iconId / labelKey) lives here in
|
|
42142
|
+
* `@camstack/types`. Colour is NOT a second table: each entry's `color` is
|
|
42143
|
+
* the bundled CamStack display palette (D939). The effective cluster palette
|
|
42144
|
+
* is the `display-palette` capability. The UI-side mapping `iconId → lucide
|
|
42145
|
+
* component` and `labelKey → t()` lives in `@camstack/ui-library`.
|
|
41771
42146
|
*
|
|
41772
42147
|
* Two levels only (v1 YAGNI): macro → sub. `person` is a leaf macro.
|
|
41773
42148
|
*/
|
|
41774
|
-
var
|
|
41775
|
-
|
|
41776
|
-
|
|
41777
|
-
|
|
41778
|
-
|
|
41779
|
-
|
|
41780
|
-
|
|
41781
|
-
|
|
41782
|
-
|
|
41783
|
-
|
|
41784
|
-
};
|
|
41785
|
-
var DETECTION_SUB_COLORS = {
|
|
41786
|
-
car: "#f59e0b",
|
|
41787
|
-
truck: "#d97706",
|
|
41788
|
-
bus: "#b45309",
|
|
41789
|
-
motorcycle: "#eab308",
|
|
41790
|
-
bicycle: "#ca8a04",
|
|
41791
|
-
airplane: "#60a5fa",
|
|
41792
|
-
boat: "#2563eb",
|
|
41793
|
-
train: "#1d4ed8",
|
|
41794
|
-
bird: "#14b8a6",
|
|
41795
|
-
dog: "#84cc16",
|
|
41796
|
-
cat: "#f97316",
|
|
41797
|
-
horse: "#a16207",
|
|
41798
|
-
sheep: "#a3a3a3",
|
|
41799
|
-
cow: "#78716c",
|
|
41800
|
-
elephant: "#6b7280",
|
|
41801
|
-
bear: "#7c2d12",
|
|
41802
|
-
zebra: "#404040",
|
|
41803
|
-
giraffe: "#d4a373"
|
|
41804
|
-
};
|
|
42149
|
+
var BUNDLED_PALETTE = bundledCamstack();
|
|
42150
|
+
function kindColor(kind) {
|
|
42151
|
+
return paintHex(BUNDLED_PALETTE.swatches, BUNDLED_PALETTE.fallbacks, kind);
|
|
42152
|
+
}
|
|
42153
|
+
function firstFallback(fallbacks) {
|
|
42154
|
+
const hex = fallbacks[0];
|
|
42155
|
+
if (hex === void 0) throw new Error("display palette has no fallback colour");
|
|
42156
|
+
return hex;
|
|
42157
|
+
}
|
|
42158
|
+
firstFallback(BUNDLED_PALETTE.fallbacks);
|
|
41805
42159
|
function titleCase(id) {
|
|
41806
42160
|
return id.split(/[-_ ]/).filter((p) => p.length > 0).map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join(" ");
|
|
41807
42161
|
}
|
|
41808
42162
|
var entries = /* @__PURE__ */ new Map();
|
|
41809
|
-
function macro(kind, category,
|
|
42163
|
+
function macro(kind, category, iconId, label) {
|
|
41810
42164
|
entries.set(kind, {
|
|
41811
42165
|
kind,
|
|
41812
42166
|
parentKind: null,
|
|
41813
42167
|
level: "macro",
|
|
41814
42168
|
category,
|
|
41815
|
-
color,
|
|
42169
|
+
color: kindColor(kind),
|
|
41816
42170
|
iconId,
|
|
41817
42171
|
labelKey: `eventKind.${kind}`,
|
|
41818
42172
|
label
|
|
41819
42173
|
});
|
|
41820
42174
|
}
|
|
41821
|
-
function sub(kind, parentKind, category,
|
|
42175
|
+
function sub(kind, parentKind, category, iconId, label) {
|
|
41822
42176
|
entries.set(kind, {
|
|
41823
42177
|
kind,
|
|
41824
42178
|
parentKind,
|
|
41825
42179
|
level: "sub",
|
|
41826
42180
|
category,
|
|
41827
|
-
color,
|
|
42181
|
+
color: kindColor(kind),
|
|
41828
42182
|
iconId,
|
|
41829
42183
|
labelKey: `eventKind.${kind}`,
|
|
41830
42184
|
label
|
|
41831
42185
|
});
|
|
41832
42186
|
}
|
|
41833
|
-
macro("motion", "motion",
|
|
41834
|
-
macro("audio", "audio",
|
|
41835
|
-
macro("person", "detection",
|
|
41836
|
-
macro("vehicle", "detection",
|
|
41837
|
-
macro("animal", "detection",
|
|
41838
|
-
macro("package", "package",
|
|
41839
|
-
macro("sensor", "sensor",
|
|
41840
|
-
macro("control", "control",
|
|
42187
|
+
macro("motion", "motion", "motion", "Motion");
|
|
42188
|
+
macro("audio", "audio", "audio", "Audio");
|
|
42189
|
+
macro("person", "detection", "person", "Person");
|
|
42190
|
+
macro("vehicle", "detection", "vehicle", "Vehicle");
|
|
42191
|
+
macro("animal", "detection", "animal", "Animal");
|
|
42192
|
+
macro("package", "package", "package", "Package");
|
|
42193
|
+
macro("sensor", "sensor", "sensor", "Sensor");
|
|
42194
|
+
macro("control", "control", "control", "Control");
|
|
41841
42195
|
for (const [cocoClass, macroClass] of Object.entries(COCO_TO_MACRO.mapping)) {
|
|
41842
42196
|
if (macroClass !== "vehicle" && macroClass !== "animal") continue;
|
|
41843
42197
|
if (entries.has(cocoClass)) continue;
|
|
41844
|
-
sub(cocoClass, macroClass, "detection",
|
|
42198
|
+
sub(cocoClass, macroClass, "detection", cocoClass, titleCase(cocoClass));
|
|
41845
42199
|
}
|
|
41846
|
-
sub("package-delivered", "package", "package",
|
|
41847
|
-
sub("package-picked-up", "package", "package",
|
|
41848
|
-
sub("contact", "sensor", "sensor", "
|
|
41849
|
-
sub("motion-sensor", "sensor", "sensor",
|
|
41850
|
-
sub("smoke", "sensor", "sensor", "
|
|
41851
|
-
sub("flood", "sensor", "sensor", "
|
|
41852
|
-
sub("gas", "sensor", "sensor", "
|
|
41853
|
-
sub("carbon-monoxide", "sensor", "sensor", "
|
|
41854
|
-
sub("vibration", "sensor", "sensor", "
|
|
41855
|
-
sub("tamper", "sensor", "sensor", "
|
|
41856
|
-
sub("presence", "sensor", "sensor", "
|
|
41857
|
-
sub("enum-sensor", "sensor", "sensor",
|
|
41858
|
-
sub("device-event", "sensor", "sensor", "
|
|
41859
|
-
sub("lock", "control", "control", "
|
|
41860
|
-
sub("cover", "control", "control", "
|
|
41861
|
-
sub("switch", "control", "control",
|
|
41862
|
-
sub("siren", "control", "control", "
|
|
41863
|
-
sub("button", "control", "control", "
|
|
41864
|
-
sub("doorbell", "control", "control", "
|
|
42200
|
+
sub("package-delivered", "package", "package", "package", "Package delivered");
|
|
42201
|
+
sub("package-picked-up", "package", "package", "package", "Package picked up");
|
|
42202
|
+
sub("contact", "sensor", "sensor", "door", "Contact");
|
|
42203
|
+
sub("motion-sensor", "sensor", "sensor", "pir", "Motion sensor");
|
|
42204
|
+
sub("smoke", "sensor", "sensor", "smoke", "Smoke");
|
|
42205
|
+
sub("flood", "sensor", "sensor", "water", "Water leak");
|
|
42206
|
+
sub("gas", "sensor", "sensor", "gas", "Gas");
|
|
42207
|
+
sub("carbon-monoxide", "sensor", "sensor", "smoke", "Carbon monoxide");
|
|
42208
|
+
sub("vibration", "sensor", "sensor", "vibration", "Vibration");
|
|
42209
|
+
sub("tamper", "sensor", "sensor", "tamper", "Tamper");
|
|
42210
|
+
sub("presence", "sensor", "sensor", "presence", "Presence");
|
|
42211
|
+
sub("enum-sensor", "sensor", "sensor", "generic", "Sensor state");
|
|
42212
|
+
sub("device-event", "sensor", "sensor", "button", "Device event");
|
|
42213
|
+
sub("lock", "control", "control", "lock", "Lock");
|
|
42214
|
+
sub("cover", "control", "control", "door", "Cover");
|
|
42215
|
+
sub("switch", "control", "control", "switch", "Switch");
|
|
42216
|
+
sub("siren", "control", "control", "siren", "Siren");
|
|
42217
|
+
sub("button", "control", "control", "button", "Button");
|
|
42218
|
+
sub("doorbell", "control", "control", "doorbell", "Doorbell");
|
|
41865
42219
|
for (const l of AUDIO_MACRO_LABELS) {
|
|
41866
42220
|
const kind = `audio-${l.id}`;
|
|
41867
42221
|
if (entries.has(kind)) continue;
|
|
41868
|
-
sub(kind, "audio", "audio",
|
|
42222
|
+
sub(kind, "audio", "audio", kind, l.name);
|
|
41869
42223
|
}
|
|
41870
42224
|
/** The complete taxonomy dictionary, keyed by kind. */
|
|
41871
42225
|
var EVENT_TAXONOMY = Object.freeze(Object.fromEntries(entries));
|
|
@@ -54575,6 +54929,30 @@ DeviceType.Camera, method(object({ deviceId: number() }), DayNightOptionsSchema)
|
|
|
54575
54929
|
auth: "admin"
|
|
54576
54930
|
});
|
|
54577
54931
|
/**
|
|
54932
|
+
* display-palette — the cluster's one colour table (D939).
|
|
54933
|
+
*
|
|
54934
|
+
* Hub singleton. `getPalette` reports `unknown` when the settings store
|
|
54935
|
+
* cannot be read; it does not pretend the bundled preset was stored.
|
|
54936
|
+
* `setPalette` refuses a palette that fails the ΔE / contrast rule and names
|
|
54937
|
+
* the pairs.
|
|
54938
|
+
*/
|
|
54939
|
+
var presetSummarySchema = object({
|
|
54940
|
+
id: string(),
|
|
54941
|
+
name: string(),
|
|
54942
|
+
swatches: record(string(), paletteSwatchSchema),
|
|
54943
|
+
fallbacks: array(string())
|
|
54944
|
+
});
|
|
54945
|
+
method(_void(), paletteResultSchema, {
|
|
54946
|
+
auth: "protected",
|
|
54947
|
+
role: "viewer"
|
|
54948
|
+
}), method(_void(), array(presetSummarySchema).readonly(), {
|
|
54949
|
+
auth: "protected",
|
|
54950
|
+
role: "viewer"
|
|
54951
|
+
}), method(setPaletteInputSchema, paletteReadySchema, {
|
|
54952
|
+
kind: "mutation",
|
|
54953
|
+
auth: "admin"
|
|
54954
|
+
});
|
|
54955
|
+
/**
|
|
54578
54956
|
* Generic device-level status snapshot. Auto-registered by `BaseDevice`
|
|
54579
54957
|
* for every device, regardless of provider — the kernel needs a uniform
|
|
54580
54958
|
* cap-keyed slice for the basic device flags every consumer expects to
|
|
@@ -65473,6 +65851,27 @@ Object.freeze({
|
|
|
65473
65851
|
access: "create",
|
|
65474
65852
|
role: "viewer"
|
|
65475
65853
|
},
|
|
65854
|
+
"displayPalette.getPalette": {
|
|
65855
|
+
capName: "display-palette",
|
|
65856
|
+
capScope: "system",
|
|
65857
|
+
addonId: null,
|
|
65858
|
+
access: "view",
|
|
65859
|
+
role: "viewer"
|
|
65860
|
+
},
|
|
65861
|
+
"displayPalette.listPresets": {
|
|
65862
|
+
capName: "display-palette",
|
|
65863
|
+
capScope: "system",
|
|
65864
|
+
addonId: null,
|
|
65865
|
+
access: "view",
|
|
65866
|
+
role: "viewer"
|
|
65867
|
+
},
|
|
65868
|
+
"displayPalette.setPalette": {
|
|
65869
|
+
capName: "display-palette",
|
|
65870
|
+
capScope: "system",
|
|
65871
|
+
addonId: null,
|
|
65872
|
+
access: "create",
|
|
65873
|
+
role: "admin"
|
|
65874
|
+
},
|
|
65476
65875
|
"doorbell.getStatus": {
|
|
65477
65876
|
capName: "doorbell",
|
|
65478
65877
|
capScope: "device",
|
|
@@ -75929,6 +76328,7 @@ var SYSTEM_CAP_VOCABULARY = {
|
|
|
75929
76328
|
"device-provider": system(INTERNAL),
|
|
75930
76329
|
"device-removal-hook": system(INTERNAL),
|
|
75931
76330
|
"device-state": system("the runtime-state mirror every trigger already reads through"),
|
|
76331
|
+
"display-palette": system("the cluster display palette — one colour table for every client, not a device action"),
|
|
75932
76332
|
"embedding-encoder": system(ML),
|
|
75933
76333
|
"face-gallery": system("the face gallery — curated on its own page"),
|
|
75934
76334
|
"failure-contribution": system(INTERNAL),
|
|
@@ -80115,7 +80515,7 @@ var AdminUIAddon = class extends BaseAddon {
|
|
|
80115
80515
|
capability: adminUiCapability,
|
|
80116
80516
|
provider: {
|
|
80117
80517
|
getStaticDir: async () => ({ staticDir: resolveAdminUiDistDir() }),
|
|
80118
|
-
getVersion: async () => ({ version: "1.2.
|
|
80518
|
+
getVersion: async () => ({ version: "1.2.464" })
|
|
80119
80519
|
}
|
|
80120
80520
|
}];
|
|
80121
80521
|
}
|