@camstack/addon-model-studio 1.1.306 → 1.1.308
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/CHANGELOG.md +10 -1
- package/README.md +18 -10
- package/dist/{MotionZonesSettings-BdAF3Lx2.mjs → MotionZonesSettings-DkgjOPCB.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-bRMKWnGr.mjs → PrivacyMaskSettings-fESQpFIS.mjs} +4 -4
- package/dist/{SceneMonitorEditor-DffVOhzN.mjs → SceneMonitorEditor-C9B7EixP.mjs} +123 -124
- package/dist/_stub.js +4265 -4277
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-DVVRygHY.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-DHIXnmpZ.mjs} +4 -4
- package/dist/{_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CsIeC3fr.mjs → _virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BQQ1gj_P.mjs} +1 -1
- package/dist/addon-model-studio.css +1 -1
- package/dist/{hostInit-fNjQtgdi.mjs → hostInit-sbd7BJLf.mjs} +3 -3
- package/dist/model-studio.addon.js +38 -7
- package/dist/model-studio.addon.mjs +38 -7
- package/dist/{player-overlays-BQux3aXS.mjs → player-overlays-SAR77Y-f.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-BOS8RfJa.mjs → responsive-DhsW4w_p.mjs} +1 -1
- package/dist/{scene-monitor-copy-CaVNQakt.mjs → scene-monitor-copy-BYVAve5e.mjs} +63 -50
- package/dist/{square-DCA-7eaY.mjs → square-Dy3-P6UW.mjs} +1 -1
- package/dist/{trash-2-DYZFq4gu.mjs → trash-2-DScdmxQC.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CWXLGHpz.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CqZcfvB1.mjs} +1 -1
- package/package.json +1 -1
|
@@ -36,7 +36,7 @@ async function r() {
|
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
"@camstack/types": {
|
|
39
|
-
version: "1.2.
|
|
39
|
+
version: "1.2.428",
|
|
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.2.
|
|
48
|
+
version: "1.2.154",
|
|
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.2.
|
|
84
|
+
version: "1.2.337",
|
|
85
85
|
scope: "default",
|
|
86
86
|
shareConfig: {
|
|
87
87
|
singleton: !0,
|
|
@@ -17619,7 +17619,22 @@ var BrokerProviderInfoSchema = object({
|
|
|
17619
17619
|
*/
|
|
17620
17620
|
interactiveConnectPath: string().min(1).optional(),
|
|
17621
17621
|
/** Relative hub path to disconnect the linked account (same popup pattern). */
|
|
17622
|
-
interactiveDisconnectPath: string().min(1).optional()
|
|
17622
|
+
interactiveDisconnectPath: string().min(1).optional(),
|
|
17623
|
+
/**
|
|
17624
|
+
* The kind signs in through a server-held interactive session instead of
|
|
17625
|
+
* (or before) typed credentials. `basePath` is a hub-relative route set
|
|
17626
|
+
* served by the owning addon (`/addon/<id>/...`) speaking the sign-in
|
|
17627
|
+
* contract: `POST {basePath}/start` (body: the form's settings) answers
|
|
17628
|
+
* `{ sessionId, loginUrl }`; `GET {basePath}/status?sessionId=` answers
|
|
17629
|
+
* `{ phase: 'starting' | 'awaiting-login' | 'captured' | 'error' |
|
|
17630
|
+
* 'cancelled', loginUrl, error }`; `POST {basePath}/commit`
|
|
17631
|
+
* (`{ sessionId, name, brokerId? }`) stores the credentials on a new or
|
|
17632
|
+
* existing broker and answers `{ brokerId }`; `POST {basePath}/cancel`
|
|
17633
|
+
* (`{ sessionId }`) drops the session. The dialog that edits a broker
|
|
17634
|
+
* offers it as the default path; the fields the session fills are
|
|
17635
|
+
* marked `filledBySignIn` in the kind's settings schema.
|
|
17636
|
+
*/
|
|
17637
|
+
signIn: object({ basePath: string().min(1) }).optional()
|
|
17623
17638
|
}))
|
|
17624
17639
|
});
|
|
17625
17640
|
var ListInputSchema = object({
|
|
@@ -44287,7 +44302,7 @@ var NetworkAccessStatusSchema = object({
|
|
|
44287
44302
|
});
|
|
44288
44303
|
/**
|
|
44289
44304
|
* Optional, richer endpoint shape returned by providers that expose
|
|
44290
|
-
* MORE than one ingress concurrently (Tailscale
|
|
44305
|
+
* MORE than one ingress concurrently (Tailscale Funnel with mixed
|
|
44291
44306
|
* serve+funnel rules, future ngrok multi-tunnel, …). Each entry carries
|
|
44292
44307
|
* the originating provider config (mode + sourcePort) so the
|
|
44293
44308
|
* orchestrator UI can label rows distinctly. Providers that expose only
|
|
@@ -57400,7 +57415,7 @@ var BatteryStatusSchema = object({
|
|
|
57400
57415
|
*/
|
|
57401
57416
|
binary: boolean().optional().meta({ label: "Binary indicator" })
|
|
57402
57417
|
});
|
|
57403
|
-
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat;
|
|
57418
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, DeviceType.EventEmitter;
|
|
57404
57419
|
method(object({
|
|
57405
57420
|
deviceId: number(),
|
|
57406
57421
|
/** Bound on the wait. Sensible range 3000–10000ms. */
|
|
@@ -62002,9 +62017,9 @@ object({
|
|
|
62002
62017
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
62003
62018
|
kwhTotal: number().optional().meta(readingMeta("energy", { label: "Energy" })),
|
|
62004
62019
|
/** Voltage in volts. */
|
|
62005
|
-
volts: number().optional().meta(readingMeta("voltage")),
|
|
62020
|
+
volts: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
62006
62021
|
/** Current in amperes. */
|
|
62007
|
-
amps: number().optional().meta(readingMeta("current")),
|
|
62022
|
+
amps: number().optional().meta(readingMeta("current", { label: "Current" })),
|
|
62008
62023
|
/** Apparent power in volt-amperes. */
|
|
62009
62024
|
va: number().optional().meta(readingMeta("apparent-power")),
|
|
62010
62025
|
/** Power factor (0..1) if reported. */
|
|
@@ -62012,7 +62027,23 @@ object({
|
|
|
62012
62027
|
/** Ms epoch when the slice was last updated. */
|
|
62013
62028
|
lastFetchedAt: number()
|
|
62014
62029
|
});
|
|
62015
|
-
|
|
62030
|
+
[
|
|
62031
|
+
DeviceType.Sensor,
|
|
62032
|
+
DeviceType.Switch,
|
|
62033
|
+
DeviceType.Light,
|
|
62034
|
+
DeviceType.Fan,
|
|
62035
|
+
DeviceType.Climate,
|
|
62036
|
+
DeviceType.Thermostat,
|
|
62037
|
+
DeviceType.Humidifier,
|
|
62038
|
+
DeviceType.WaterHeater,
|
|
62039
|
+
DeviceType.MediaPlayer,
|
|
62040
|
+
DeviceType.Washer,
|
|
62041
|
+
DeviceType.Dryer,
|
|
62042
|
+
DeviceType.Dishwasher,
|
|
62043
|
+
DeviceType.Vacuum,
|
|
62044
|
+
DeviceType.LawnMower,
|
|
62045
|
+
DeviceType.PetFeeder
|
|
62046
|
+
].filter((type) => type !== DeviceType.Sensor);
|
|
62016
62047
|
/**
|
|
62017
62048
|
* Presence cap. Models HA `person.*` and `device_tracker.*` entities
|
|
62018
62049
|
* on `DeviceType.Presence`. Read-only — no setters: presence is
|
|
@@ -66192,7 +66223,7 @@ method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" })
|
|
|
66192
66223
|
});
|
|
66193
66224
|
DeviceFeature.FanSpeed, DeviceFeature.FanPreset, DeviceFeature.FanDirection, DeviceFeature.FanOscillating, DeviceFeature.CoverPositionable, DeviceFeature.CoverTilt, DeviceFeature.ValvePositionable, DeviceFeature.MediaPlayerVolume, DeviceFeature.ClimateFanMode;
|
|
66194
66225
|
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
66195
|
-
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher, DeviceType.Washer, DeviceType.Dryer, DeviceType.Camera, DeviceType.Camera, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
66226
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, DeviceType.EventEmitter, DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher, DeviceType.Washer, DeviceType.Dryer, DeviceType.Camera, DeviceType.Camera, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
66196
66227
|
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
66197
66228
|
DeviceRole.BinarySensor, DeviceRole.MotionSensor;
|
|
66198
66229
|
new Set(CAP_NAMES);
|
|
@@ -17593,7 +17593,22 @@ var BrokerProviderInfoSchema = object({
|
|
|
17593
17593
|
*/
|
|
17594
17594
|
interactiveConnectPath: string().min(1).optional(),
|
|
17595
17595
|
/** Relative hub path to disconnect the linked account (same popup pattern). */
|
|
17596
|
-
interactiveDisconnectPath: string().min(1).optional()
|
|
17596
|
+
interactiveDisconnectPath: string().min(1).optional(),
|
|
17597
|
+
/**
|
|
17598
|
+
* The kind signs in through a server-held interactive session instead of
|
|
17599
|
+
* (or before) typed credentials. `basePath` is a hub-relative route set
|
|
17600
|
+
* served by the owning addon (`/addon/<id>/...`) speaking the sign-in
|
|
17601
|
+
* contract: `POST {basePath}/start` (body: the form's settings) answers
|
|
17602
|
+
* `{ sessionId, loginUrl }`; `GET {basePath}/status?sessionId=` answers
|
|
17603
|
+
* `{ phase: 'starting' | 'awaiting-login' | 'captured' | 'error' |
|
|
17604
|
+
* 'cancelled', loginUrl, error }`; `POST {basePath}/commit`
|
|
17605
|
+
* (`{ sessionId, name, brokerId? }`) stores the credentials on a new or
|
|
17606
|
+
* existing broker and answers `{ brokerId }`; `POST {basePath}/cancel`
|
|
17607
|
+
* (`{ sessionId }`) drops the session. The dialog that edits a broker
|
|
17608
|
+
* offers it as the default path; the fields the session fills are
|
|
17609
|
+
* marked `filledBySignIn` in the kind's settings schema.
|
|
17610
|
+
*/
|
|
17611
|
+
signIn: object({ basePath: string().min(1) }).optional()
|
|
17597
17612
|
}))
|
|
17598
17613
|
});
|
|
17599
17614
|
var ListInputSchema = object({
|
|
@@ -44261,7 +44276,7 @@ var NetworkAccessStatusSchema = object({
|
|
|
44261
44276
|
});
|
|
44262
44277
|
/**
|
|
44263
44278
|
* Optional, richer endpoint shape returned by providers that expose
|
|
44264
|
-
* MORE than one ingress concurrently (Tailscale
|
|
44279
|
+
* MORE than one ingress concurrently (Tailscale Funnel with mixed
|
|
44265
44280
|
* serve+funnel rules, future ngrok multi-tunnel, …). Each entry carries
|
|
44266
44281
|
* the originating provider config (mode + sourcePort) so the
|
|
44267
44282
|
* orchestrator UI can label rows distinctly. Providers that expose only
|
|
@@ -57374,7 +57389,7 @@ var BatteryStatusSchema = object({
|
|
|
57374
57389
|
*/
|
|
57375
57390
|
binary: boolean().optional().meta({ label: "Binary indicator" })
|
|
57376
57391
|
});
|
|
57377
|
-
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat;
|
|
57392
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, DeviceType.EventEmitter;
|
|
57378
57393
|
method(object({
|
|
57379
57394
|
deviceId: number(),
|
|
57380
57395
|
/** Bound on the wait. Sensible range 3000–10000ms. */
|
|
@@ -61976,9 +61991,9 @@ object({
|
|
|
61976
61991
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
61977
61992
|
kwhTotal: number().optional().meta(readingMeta("energy", { label: "Energy" })),
|
|
61978
61993
|
/** Voltage in volts. */
|
|
61979
|
-
volts: number().optional().meta(readingMeta("voltage")),
|
|
61994
|
+
volts: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
61980
61995
|
/** Current in amperes. */
|
|
61981
|
-
amps: number().optional().meta(readingMeta("current")),
|
|
61996
|
+
amps: number().optional().meta(readingMeta("current", { label: "Current" })),
|
|
61982
61997
|
/** Apparent power in volt-amperes. */
|
|
61983
61998
|
va: number().optional().meta(readingMeta("apparent-power")),
|
|
61984
61999
|
/** Power factor (0..1) if reported. */
|
|
@@ -61986,7 +62001,23 @@ object({
|
|
|
61986
62001
|
/** Ms epoch when the slice was last updated. */
|
|
61987
62002
|
lastFetchedAt: number()
|
|
61988
62003
|
});
|
|
61989
|
-
|
|
62004
|
+
[
|
|
62005
|
+
DeviceType.Sensor,
|
|
62006
|
+
DeviceType.Switch,
|
|
62007
|
+
DeviceType.Light,
|
|
62008
|
+
DeviceType.Fan,
|
|
62009
|
+
DeviceType.Climate,
|
|
62010
|
+
DeviceType.Thermostat,
|
|
62011
|
+
DeviceType.Humidifier,
|
|
62012
|
+
DeviceType.WaterHeater,
|
|
62013
|
+
DeviceType.MediaPlayer,
|
|
62014
|
+
DeviceType.Washer,
|
|
62015
|
+
DeviceType.Dryer,
|
|
62016
|
+
DeviceType.Dishwasher,
|
|
62017
|
+
DeviceType.Vacuum,
|
|
62018
|
+
DeviceType.LawnMower,
|
|
62019
|
+
DeviceType.PetFeeder
|
|
62020
|
+
].filter((type) => type !== DeviceType.Sensor);
|
|
61990
62021
|
/**
|
|
61991
62022
|
* Presence cap. Models HA `person.*` and `device_tracker.*` entities
|
|
61992
62023
|
* on `DeviceType.Presence`. Read-only — no setters: presence is
|
|
@@ -66166,7 +66197,7 @@ method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" })
|
|
|
66166
66197
|
});
|
|
66167
66198
|
DeviceFeature.FanSpeed, DeviceFeature.FanPreset, DeviceFeature.FanDirection, DeviceFeature.FanOscillating, DeviceFeature.CoverPositionable, DeviceFeature.CoverTilt, DeviceFeature.ValvePositionable, DeviceFeature.MediaPlayerVolume, DeviceFeature.ClimateFanMode;
|
|
66168
66199
|
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
66169
|
-
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher, DeviceType.Washer, DeviceType.Dryer, DeviceType.Camera, DeviceType.Camera, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
66200
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, DeviceType.EventEmitter, DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher, DeviceType.Washer, DeviceType.Dryer, DeviceType.Camera, DeviceType.Camera, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
66170
66201
|
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
66171
66202
|
DeviceRole.BinarySensor, DeviceRole.MotionSensor;
|
|
66172
66203
|
new Set(CAP_NAMES);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { S as e, d as t, u as n, v as r } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.mjs";
|
|
2
2
|
import { n as i, r as a, t as o } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
|
|
3
|
-
import { _ as s, g as c } from "./responsive-
|
|
3
|
+
import { _ as s, g as c } from "./responsive-DhsW4w_p.mjs";
|
|
4
4
|
var l = s("chevron-down", [["path", {
|
|
5
5
|
d: "m6 9 6 6 6-6",
|
|
6
6
|
key: "qrunsl"
|
package/dist/remoteEntry.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-
|
|
1
|
+
import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CqZcfvB1.mjs";
|
|
2
2
|
export { t as get, e as init };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
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_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.mjs";
|
|
2
2
|
import "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
|
|
3
|
-
import { S as u } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-
|
|
3
|
+
import { S as u } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BQQ1gj_P.mjs";
|
|
4
4
|
//#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
|
|
5
5
|
e();
|
|
6
6
|
var d = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), f = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), p = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), m = (e) => {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { S as e, g as t, l as n,
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import { S as e, g as t, l as n, u as r, v as i } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.mjs";
|
|
2
|
+
import "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
|
|
3
|
+
import { n as a } from "./ui-text-BqZa5BNK.mjs";
|
|
4
|
+
import { _ as o, g as s } from "./responsive-DhsW4w_p.mjs";
|
|
5
|
+
var c = o("camera", [["path", {
|
|
5
6
|
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
7
|
key: "18u6gg"
|
|
7
8
|
}], ["circle", {
|
|
@@ -9,7 +10,7 @@ var o = a("camera", [["path", {
|
|
|
9
10
|
cy: "13",
|
|
10
11
|
r: "3",
|
|
11
12
|
key: "1vg3eu"
|
|
12
|
-
}]]),
|
|
13
|
+
}]]), l = o("image-off", [
|
|
13
14
|
["line", {
|
|
14
15
|
x1: "2",
|
|
15
16
|
x2: "22",
|
|
@@ -43,7 +44,7 @@ var o = a("camera", [["path", {
|
|
|
43
44
|
d: "M21 15V5a2 2 0 0 0-2-2H9",
|
|
44
45
|
key: "43el77"
|
|
45
46
|
}]
|
|
46
|
-
]),
|
|
47
|
+
]), u = o("rotate-ccw", [["path", {
|
|
47
48
|
d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",
|
|
48
49
|
key: "1357e3"
|
|
49
50
|
}], ["path", {
|
|
@@ -51,53 +52,65 @@ var o = a("camera", [["path", {
|
|
|
51
52
|
key: "1xhq8a"
|
|
52
53
|
}]]);
|
|
53
54
|
//#endregion
|
|
54
|
-
//#region ../ui-library/src/
|
|
55
|
+
//#region ../ui-library/src/composites/confirm-dialog.tsx
|
|
55
56
|
e();
|
|
56
|
-
var
|
|
57
|
-
function f(
|
|
57
|
+
var d = s("camstack:confirm-dialog", null);
|
|
58
|
+
function f() {
|
|
59
|
+
let e = r(d);
|
|
60
|
+
if (!e) throw Error("useConfirm must be used within ConfirmDialogProvider");
|
|
61
|
+
return e;
|
|
62
|
+
}
|
|
63
|
+
function p() {
|
|
64
|
+
return f().confirm;
|
|
65
|
+
}
|
|
66
|
+
//#endregion
|
|
67
|
+
//#region ../ui-library/src/lib/hub-mount.ts
|
|
68
|
+
var m = "camstack-mount", h = /^\/(?:[A-Za-z0-9_\-.]+\/)*$/, g = null;
|
|
69
|
+
function _(e) {
|
|
58
70
|
if (e == null || e === "") return null;
|
|
59
71
|
let t = e.endsWith("/") ? e : `${e}/`;
|
|
60
|
-
return !
|
|
72
|
+
return !h.test(t) || t.includes("/../") || t.includes("/./") ? null : t;
|
|
61
73
|
}
|
|
62
|
-
function
|
|
74
|
+
function v() {
|
|
63
75
|
if (typeof document > "u") return "/";
|
|
64
|
-
let e =
|
|
76
|
+
let e = _(document.querySelector(`meta[name="${m}"]`)?.getAttribute("content"));
|
|
65
77
|
if (e !== null) return e;
|
|
66
78
|
if (document.querySelector("base[href]") !== null) try {
|
|
67
79
|
let e = new URL(document.baseURI);
|
|
68
80
|
if (e.origin === window.location.origin) {
|
|
69
|
-
let t =
|
|
81
|
+
let t = _(e.pathname);
|
|
70
82
|
if (t !== null) return t;
|
|
71
83
|
}
|
|
72
84
|
} catch {}
|
|
73
85
|
return "/";
|
|
74
86
|
}
|
|
75
|
-
function
|
|
76
|
-
return
|
|
87
|
+
function y() {
|
|
88
|
+
return g === null && (g = v()), g;
|
|
77
89
|
}
|
|
78
|
-
function
|
|
79
|
-
return
|
|
90
|
+
function b() {
|
|
91
|
+
return y().replace(/\/$/, "");
|
|
80
92
|
}
|
|
81
|
-
function
|
|
93
|
+
function x(e) {
|
|
82
94
|
return /^[a-z][a-z0-9+.-]*:/i.test(e) || e.startsWith("//");
|
|
83
95
|
}
|
|
84
|
-
function
|
|
85
|
-
if (
|
|
86
|
-
let t =
|
|
87
|
-
return t !== "/" && (e ===
|
|
96
|
+
function S(e) {
|
|
97
|
+
if (x(e)) return e;
|
|
98
|
+
let t = y(), n = e.replace(/^\/+/, "");
|
|
99
|
+
return t !== "/" && (e === b() || e.startsWith(t)) ? e : `${t}${n}`;
|
|
88
100
|
}
|
|
89
101
|
//#endregion
|
|
90
102
|
//#region ../ui-library/src/hooks/use-device-snapshot.ts
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
103
|
+
e();
|
|
104
|
+
var C = "/addon/snapshot/media";
|
|
105
|
+
function w(e, r = {}) {
|
|
106
|
+
let { width: a, baseUrl: o } = r, [s, c] = i(0);
|
|
94
107
|
return {
|
|
95
108
|
src: t(() => {
|
|
96
109
|
if (e === null || e <= 0) return null;
|
|
97
|
-
let t = o === void 0 ?
|
|
110
|
+
let t = o === void 0 ? b() : o.replace(/\/+$/, ""), n = new URLSearchParams();
|
|
98
111
|
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
112
|
let r = n.toString();
|
|
100
|
-
return `${t}${
|
|
113
|
+
return `${t}${C}/${String(e)}.jpg${r.length > 0 ? `?${r}` : ""}`;
|
|
101
114
|
}, [
|
|
102
115
|
e,
|
|
103
116
|
a,
|
|
@@ -112,7 +125,7 @@ function y(e, i = {}) {
|
|
|
112
125
|
}
|
|
113
126
|
//#endregion
|
|
114
127
|
//#region ../ui-library/src/composites/cap-settings/scene-monitor-copy.ts
|
|
115
|
-
var
|
|
128
|
+
var T = ["day", "ir"], E = {
|
|
116
129
|
day: {
|
|
117
130
|
labelKey: "uiLibrary.sceneMonitor.variant.day",
|
|
118
131
|
labelFallback: "Daylight"
|
|
@@ -134,17 +147,17 @@ var b = ["day", "ir"], x = {
|
|
|
134
147
|
labelFallback: "Dusk"
|
|
135
148
|
}
|
|
136
149
|
};
|
|
137
|
-
function
|
|
138
|
-
let n =
|
|
150
|
+
function D(e, t = a) {
|
|
151
|
+
let n = E[e];
|
|
139
152
|
return n === void 0 ? e : t(n.labelKey, n.labelFallback);
|
|
140
153
|
}
|
|
141
|
-
function
|
|
142
|
-
let n = new Set(e.coveredConditions), r =
|
|
143
|
-
for (let e of
|
|
144
|
-
let o =
|
|
154
|
+
function O(e, t = a) {
|
|
155
|
+
let n = new Set(e.coveredConditions), r = T.map((e) => `${D(e, t)} ${n.has(e) ? "✓" : "✗"}`), i = [...n].filter((e) => !T.some((t) => t === e));
|
|
156
|
+
for (let e of i) r.push(`${D(e, t)} ✓`);
|
|
157
|
+
let o = T.filter((e) => !n.has(e));
|
|
145
158
|
if (o.length === 0) return r.join(" · ");
|
|
146
159
|
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) =>
|
|
160
|
+
let [s = "", c] = o.map((e) => D(e, t).toLowerCase()), l = c === void 0 ? s : t("uiLibrary.sceneMonitor.coverage.namesJoin", "{{first}} and {{second}}", {
|
|
148
161
|
first: s,
|
|
149
162
|
second: c
|
|
150
163
|
}), u = {
|
|
@@ -153,10 +166,10 @@ function C(e, t = i) {
|
|
|
153
166
|
};
|
|
154
167
|
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
168
|
}
|
|
156
|
-
function
|
|
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:
|
|
169
|
+
function k(e, t = a) {
|
|
170
|
+
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: D(e.suspendedCondition, t).toLowerCase() });
|
|
158
171
|
}
|
|
159
|
-
var
|
|
172
|
+
var A = {
|
|
160
173
|
"no-reference-for-condition": {
|
|
161
174
|
key: "uiLibrary.sceneMonitor.unavailable.no_reference_for_condition",
|
|
162
175
|
fallback: "can’t tell — nothing has been captured for this scene yet. Press “Capture daylight” to photograph what normal looks like."
|
|
@@ -178,19 +191,19 @@ var T = {
|
|
|
178
191
|
fallback: "can’t tell — this camera did not return a frame."
|
|
179
192
|
}
|
|
180
193
|
};
|
|
181
|
-
function
|
|
194
|
+
function j(e, t, n = a) {
|
|
182
195
|
if (e.states.length === 0) return n("uiLibrary.sceneMonitor.status.notArmed", "Not armed yet — capture the initial state to start watching.");
|
|
183
196
|
if (e.verdict === "unknown") {
|
|
184
197
|
if (e.unavailable === null) return n("uiLibrary.sceneMonitor.status.cantTellNow", "can’t tell right now.");
|
|
185
|
-
let t =
|
|
198
|
+
let t = A[e.unavailable];
|
|
186
199
|
return n(t.key, t.fallback);
|
|
187
200
|
}
|
|
188
|
-
let r = e.verdict === "diverged" ? e.divergedAt : e.armedAt,
|
|
189
|
-
if (e.latched) return e.verdict === "diverged" ? n("uiLibrary.sceneMonitor.status.changedLatched", "CHANGED{{held}} — press Reset when you have dealt with it.", { held:
|
|
190
|
-
let o =
|
|
191
|
-
return o === null ? e.verdict === "diverged" ? n("uiLibrary.sceneMonitor.status.changed", "CHANGED{{held}}", { held:
|
|
201
|
+
let r = e.verdict === "diverged" ? e.divergedAt : e.armedAt, i = r === null ? "" : ` ${n("uiLibrary.sceneMonitor.status.heldFor", "for {{duration}}", { duration: F(Math.max(0, t - r)) })}`;
|
|
202
|
+
if (e.latched) return e.verdict === "diverged" ? n("uiLibrary.sceneMonitor.status.changedLatched", "CHANGED{{held}} — press Reset when you have dealt with it.", { held: i }) : n("uiLibrary.sceneMonitor.status.backToNormal", "Back to normal, but still flagged as changed{{held}}. Press Reset to clear it.", { held: i });
|
|
203
|
+
let o = k(e, n);
|
|
204
|
+
return o === null ? e.verdict === "diverged" ? n("uiLibrary.sceneMonitor.status.changed", "CHANGED{{held}}", { held: i }) : n("uiLibrary.sceneMonitor.status.normal", "Normal{{held}}", { held: i }) : o;
|
|
192
205
|
}
|
|
193
|
-
function
|
|
206
|
+
function M(e, t = a) {
|
|
194
207
|
return e.states.length === 0 ? {
|
|
195
208
|
text: t("uiLibrary.sceneMonitor.badge.notArmed", "Not armed"),
|
|
196
209
|
tone: "unknown"
|
|
@@ -211,11 +224,11 @@ function D(e, t = i) {
|
|
|
211
224
|
tone: "unknown"
|
|
212
225
|
};
|
|
213
226
|
}
|
|
214
|
-
var
|
|
215
|
-
function
|
|
216
|
-
return e.width * e.height >
|
|
227
|
+
var N = .4;
|
|
228
|
+
function P(e) {
|
|
229
|
+
return e.width * e.height > N;
|
|
217
230
|
}
|
|
218
|
-
function
|
|
231
|
+
function F(e) {
|
|
219
232
|
let t = Math.floor(e / 1e3);
|
|
220
233
|
if (t < 60) return `${t}s`;
|
|
221
234
|
let n = Math.floor(t / 60);
|
|
@@ -224,4 +237,4 @@ function A(e) {
|
|
|
224
237
|
return r < 48 ? `${r}h` : `${Math.floor(r / 24)}d`;
|
|
225
238
|
}
|
|
226
239
|
//#endregion
|
|
227
|
-
export {
|
|
240
|
+
export { j as a, S as c, l as d, c as f, P as i, p as l, M as n, D as o, O as r, w as s, T as t, u };
|
|
@@ -2753,7 +2753,7 @@ async function rr(e) {
|
|
|
2753
2753
|
}
|
|
2754
2754
|
}
|
|
2755
2755
|
async function ir() {
|
|
2756
|
-
return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-
|
|
2756
|
+
return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-DHIXnmpZ.mjs")).catch((e) => {
|
|
2757
2757
|
throw tr = void 0, e;
|
|
2758
2758
|
}), tr;
|
|
2759
2759
|
}
|