@camstack/addon-training 0.1.46 → 0.1.48
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/{MaskShapeCanvas-Kfg9dl6B.mjs → MaskShapeCanvas-HNL0xNpy.mjs} +229 -228
- package/dist/MotionZonesSettings-B1g6IUfQ.mjs +291 -0
- package/dist/PrivacyMaskSettings-D4WRZZeD.mjs +339 -0
- package/dist/{ReactKonva-DGuYUN0L.mjs → ReactKonva-DzGysLZQ.mjs} +28 -28
- package/dist/SceneMonitorEditor-pYZfyXtn.mjs +825 -0
- package/dist/_stub.js +11524 -10177
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-BaP91ViK.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-BclY1R96.mjs} +4 -4
- package/dist/_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BVsoOuTM.mjs +26 -0
- package/dist/{_virtual_mf___mfe_internal__addon_training_page__loadShare__react__loadShare__.js-DeDbF7NI.mjs → _virtual_mf___mfe_internal__addon_training_page__loadShare__react__loadShare__.js-CEvdvp1T.mjs} +1 -1
- package/dist/addon-training.css +1 -1
- package/dist/{chevron-right-D3StkdcR.mjs → chevron-right-cA8Hucbi.mjs} +1 -1
- package/dist/{createLucideIcon-CPP1Jzoz.mjs → createLucideIcon-C0bBNRpC.mjs} +8 -8
- package/dist/{dist-BkEnS7-I.js → dist-DxTjO9kC.js} +198 -5
- package/dist/{dist-CcO4XtoH.mjs → dist-GI2KEl-e.mjs} +198 -5
- package/dist/{grid-2x2-Yngdckwo.mjs → grid-2x2-CHuMzRxF.mjs} +1 -1
- package/dist/{hostInit-wQjEMX_J.mjs → hostInit-BHX8oN7K.mjs} +3 -3
- package/dist/{icons-C4_Ji5S0.mjs → icons-BwkaMam3.mjs} +9 -9
- package/dist/index.js +1 -1
- package/dist/{mic-off-DPNSd6G7.mjs → mic-off-2uHAsVtR.mjs} +1 -1
- package/dist/orchestrator/training.addon.js +1 -1
- package/dist/orchestrator/training.addon.mjs +1 -1
- package/dist/{player-overlays-D14TtzYY.mjs → player-overlays-B4V_uIvb.mjs} +25 -25
- package/dist/providers/modal/training-modal.addon.js +1 -1
- package/dist/providers/modal/training-modal.addon.mjs +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-BLkfTned.mjs → responsive-1iwc-rj2.mjs} +26 -26
- package/dist/{rotate-ccw-Dak-lXgZ.mjs → rotate-ccw-Cu6tGrgG.mjs} +1 -1
- package/dist/scene-monitor-copy-Cqfs4Vng.mjs +176 -0
- package/dist/{settings-2-Cgiv3kQb.mjs → settings-2-xV0I5Y5U.mjs} +1 -1
- package/dist/{square-B_679zIX.mjs → square-ZPUterXM.mjs} +1 -1
- package/dist/{trash-2-DC8LDYlI.mjs → trash-2-BKfuhsgY.mjs} +1 -1
- package/dist/ui-text-CqJgUCKX.mjs +34 -0
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-DNOZs2VX.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-D5OhZIRm.mjs} +1 -1
- package/dist/{zoom-out-BJoVDYa3.mjs → zoom-out-DDZCsqkQ.mjs} +1 -1
- package/package.json +1 -1
- package/dist/MotionZonesSettings-D6Lcv5P6.mjs +0 -292
- package/dist/PrivacyMaskSettings-BoMc1LXD.mjs +0 -348
- package/dist/SceneMonitorEditor-BiLUxNnT.mjs +0 -810
- package/dist/_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CyW0FqIn.mjs +0 -26
- package/dist/scene-monitor-copy-DX2u-htD.mjs +0 -136
|
@@ -5387,7 +5387,7 @@ var ZodIssueCode = {
|
|
|
5387
5387
|
var ZodFirstPartyTypeKind;
|
|
5388
5388
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5389
5389
|
//#endregion
|
|
5390
|
-
//#region ../types/dist/sleep-
|
|
5390
|
+
//#region ../types/dist/sleep-DRqxtc0C.mjs
|
|
5391
5391
|
/**
|
|
5392
5392
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5393
5393
|
* window to float samples (D455).
|
|
@@ -8155,8 +8155,12 @@ method(object({ deviceId: number() }), array(StreamSourceEntrySchema)), method(o
|
|
|
8155
8155
|
kind: "mutation",
|
|
8156
8156
|
auth: "admin"
|
|
8157
8157
|
}), method(object({ deviceId: number() }), unknown().nullable()), method(object({ deviceId: number() }), RawStateResultSchema.nullable(), { auth: "protected" });
|
|
8158
|
+
object({
|
|
8159
|
+
code: string().regex(/^[a-z][a-z0-9-]*(\.[a-z0-9-]+)+$/),
|
|
8160
|
+
params: record(string(), union([string(), number()])).optional()
|
|
8161
|
+
});
|
|
8158
8162
|
//#endregion
|
|
8159
|
-
//#region ../types/dist/err-msg-
|
|
8163
|
+
//#region ../types/dist/err-msg-DLerKiVO.mjs
|
|
8160
8164
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
8161
8165
|
DeviceType["Camera"] = "camera";
|
|
8162
8166
|
DeviceType["Hub"] = "hub";
|
|
@@ -8406,6 +8410,22 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
8406
8410
|
DeviceRole["Nightvision"] = "nightvision";
|
|
8407
8411
|
DeviceRole["PrivacyMask"] = "privacy-mask";
|
|
8408
8412
|
DeviceRole["Doorbell"] = "doorbell";
|
|
8413
|
+
/** Interior blind / shade / roller blind. HA `device_class: blind|shade`. */
|
|
8414
|
+
DeviceRole["CoverBlind"] = "cover-blind";
|
|
8415
|
+
/** Exterior roller shutter. HA `device_class: shutter`; Homematic BROLL. */
|
|
8416
|
+
DeviceRole["CoverShutter"] = "cover-shutter";
|
|
8417
|
+
/** Exterior awning. HA `device_class: awning`. */
|
|
8418
|
+
DeviceRole["CoverAwning"] = "cover-awning";
|
|
8419
|
+
/** Curtain / drape. HA `device_class: curtain`. */
|
|
8420
|
+
DeviceRole["CoverCurtain"] = "cover-curtain";
|
|
8421
|
+
/** Garage door. HA `device_class: garage`. A security actuator: exports gate it. */
|
|
8422
|
+
DeviceRole["CoverGarage"] = "cover-garage";
|
|
8423
|
+
/** Gate. HA `device_class: gate`. A security actuator: exports gate it. */
|
|
8424
|
+
DeviceRole["CoverGate"] = "cover-gate";
|
|
8425
|
+
/** Door. HA `device_class: door`. A security actuator: exports gate it. */
|
|
8426
|
+
DeviceRole["CoverDoor"] = "cover-door";
|
|
8427
|
+
/** Window. HA `device_class: window`. */
|
|
8428
|
+
DeviceRole["CoverWindow"] = "cover-window";
|
|
8409
8429
|
/** Virtual HA toggle (input_boolean.*) — distinguishable from a
|
|
8410
8430
|
* real Switch device for UI rendering / export adapters. */
|
|
8411
8431
|
DeviceRole["BinaryHelper"] = "binary-helper";
|
|
@@ -8476,7 +8496,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
8476
8496
|
return DeviceRole;
|
|
8477
8497
|
}({});
|
|
8478
8498
|
//#endregion
|
|
8479
|
-
//#region ../types/dist/composition-
|
|
8499
|
+
//#region ../types/dist/composition-EQ9Ok0Ee.mjs
|
|
8480
8500
|
/**
|
|
8481
8501
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
8482
8502
|
*
|
|
@@ -12171,6 +12191,8 @@ var ConvertResultSchema = object({
|
|
|
12171
12191
|
})).readonly()
|
|
12172
12192
|
});
|
|
12173
12193
|
_enum(["new-session", "step-up"]);
|
|
12194
|
+
/** The languages the hub's app landing pages are written in (D858). */
|
|
12195
|
+
var AppPageLangSchema = _enum(["en", "it"]);
|
|
12174
12196
|
/** How a native app starts one login method (D858), as `auth.listLoginMethods` reports it. */
|
|
12175
12197
|
var AppLoginPathSchema = discriminatedUnion("kind", [object({ kind: literal("native") }), object({
|
|
12176
12198
|
kind: literal("browser"),
|
|
@@ -12684,7 +12706,9 @@ var ConfigTabDeclarationSchema = object({
|
|
|
12684
12706
|
var ConfigSectionWithValuesSchema = object({
|
|
12685
12707
|
id: string(),
|
|
12686
12708
|
title: string(),
|
|
12709
|
+
titleKey: string().optional(),
|
|
12687
12710
|
description: string().optional(),
|
|
12711
|
+
descriptionKey: string().optional(),
|
|
12688
12712
|
style: _enum(["card", "accordion"]).optional(),
|
|
12689
12713
|
defaultCollapsed: boolean().optional(),
|
|
12690
12714
|
columns: union([
|
|
@@ -15910,6 +15934,9 @@ method(object({
|
|
|
15910
15934
|
}), method(object({ refs: RefListSchema }), KeychainResolveResultSchema, { auth: "admin" }), method(object({ refs: RefListSchema }), object({ deleted: number().int() }), {
|
|
15911
15935
|
kind: "mutation",
|
|
15912
15936
|
auth: "admin"
|
|
15937
|
+
}), method(object({ deviceId: number().int() }), object({ refs: array(string()).readonly() }), {
|
|
15938
|
+
kind: "mutation",
|
|
15939
|
+
auth: "admin"
|
|
15913
15940
|
}), method(object({}), array(KeychainSecretMetaSchema).readonly(), { auth: "admin" }), method(object({}), KeychainStateSchema, { auth: "admin" });
|
|
15914
15941
|
/**
|
|
15915
15942
|
* device-history — the ONE mechanism for numeric history (D850).
|
|
@@ -37313,6 +37340,38 @@ var DeviceRegisterPayloadSchema = object({
|
|
|
37313
37340
|
* omits it and the keyword backstop applies. */
|
|
37314
37341
|
secretConfigPaths: array(string()).optional()
|
|
37315
37342
|
});
|
|
37343
|
+
/** One deleted device, kept by device-manager so an addon that missed the
|
|
37344
|
+
* deletion can still learn of it (D865). Written by the delete path ONLY. */
|
|
37345
|
+
var DeviceTombstoneSchema = object({
|
|
37346
|
+
deviceId: number().int().positive(),
|
|
37347
|
+
/** Epoch ms the device was deleted. */
|
|
37348
|
+
deletedAt: number(),
|
|
37349
|
+
/** The addon that owned the device when it was deleted. */
|
|
37350
|
+
providerAddonId: string()
|
|
37351
|
+
});
|
|
37352
|
+
/** Data held for one device that device-manager no longer knows. */
|
|
37353
|
+
var OrphanDeviceDataSchema = object({
|
|
37354
|
+
deviceId: number().int().positive(),
|
|
37355
|
+
/** Rows/files per store (`<addonId>:<store>`). */
|
|
37356
|
+
stores: record(string(), number().int().nonnegative())
|
|
37357
|
+
});
|
|
37358
|
+
var CleanupDeletedDevicesResultSchema = object({
|
|
37359
|
+
/**
|
|
37360
|
+
* `skipped` — the absence check could not be trusted (a device-list read
|
|
37361
|
+
* failed or the two reads disagreed); nothing was listed or deleted.
|
|
37362
|
+
* `dry-run` — `devices` is what a confirmed run would delete.
|
|
37363
|
+
* `cleaned` — `devices` is what was deleted.
|
|
37364
|
+
*/
|
|
37365
|
+
status: _enum([
|
|
37366
|
+
"skipped",
|
|
37367
|
+
"dry-run",
|
|
37368
|
+
"cleaned"
|
|
37369
|
+
]),
|
|
37370
|
+
reason: string().nullable(),
|
|
37371
|
+
devices: array(OrphanDeviceDataSchema),
|
|
37372
|
+
/** Implementers that could not be asked (their stores are not in `devices`). */
|
|
37373
|
+
unreachable: array(string())
|
|
37374
|
+
});
|
|
37316
37375
|
var DeviceRemovePayloadSchema = object({ deviceId: number() });
|
|
37317
37376
|
var DevicePersistConfigPayloadSchema = object({
|
|
37318
37377
|
deviceId: number(),
|
|
@@ -37551,6 +37610,9 @@ method(object({
|
|
|
37551
37610
|
}), method(object({ deviceId: number() }), object({ success: literal(true) }), {
|
|
37552
37611
|
kind: "mutation",
|
|
37553
37612
|
auth: "admin"
|
|
37613
|
+
}), method(object({ sinceMs: number() }), array(DeviceTombstoneSchema).readonly(), { auth: "admin" }), method(object({ confirm: boolean() }), CleanupDeletedDevicesResultSchema, {
|
|
37614
|
+
kind: "mutation",
|
|
37615
|
+
auth: "admin"
|
|
37554
37616
|
}), method(object({ integrationId: string() }), object({ removed: number() }), {
|
|
37555
37617
|
kind: "mutation",
|
|
37556
37618
|
auth: "admin"
|
|
@@ -38013,6 +38075,72 @@ method(object({
|
|
|
38013
38075
|
auth: "admin"
|
|
38014
38076
|
});
|
|
38015
38077
|
/**
|
|
38078
|
+
* `device-removal-hook` — the reliable way an addon learns a device was DELETED,
|
|
38079
|
+
* so it can delete what it keeps for that device (D865).
|
|
38080
|
+
*
|
|
38081
|
+
* ## Why an event was not enough
|
|
38082
|
+
*
|
|
38083
|
+
* `DeviceUnregistered` is telemetry and may be dropped (D8, D11). An addon that
|
|
38084
|
+
* hung its per-device clean-up on it left durable garbage whenever the event was
|
|
38085
|
+
* lost, the addon was down, or it was restarting at that moment — footage,
|
|
38086
|
+
* analytics rows and settings of device 4483 outlived the device. Loss of this
|
|
38087
|
+
* signal corrupts durable state, so it travels by RPC with a recorded fact
|
|
38088
|
+
* behind it (D8: "if loss would corrupt durable state, use RPC plus a reconcile").
|
|
38089
|
+
*
|
|
38090
|
+
* ## The three pieces
|
|
38091
|
+
*
|
|
38092
|
+
* 1. device-manager records a TOMBSTONE per deleted device
|
|
38093
|
+
* (`deviceManager.listDeletedSince`). The tombstone is written by the delete
|
|
38094
|
+
* path only — a device that is unregistered, offline or whose provider is
|
|
38095
|
+
* restarting is NOT deleted and gets none.
|
|
38096
|
+
* 2. After a delete, device-manager calls `onDeviceRemoved` on EVERY provider of
|
|
38097
|
+
* this collection, one by one, with bounded retries, logged.
|
|
38098
|
+
* 3. An implementer that was down asks `deviceManager.listDeletedSince` at start
|
|
38099
|
+
* (and periodically) and runs its own `onDeviceRemoved` for each tombstone it
|
|
38100
|
+
* may have missed. Reconcile is driven by tombstones, never by "the device is
|
|
38101
|
+
* not in the current list": a failed or partial list read must not destroy data.
|
|
38102
|
+
*
|
|
38103
|
+
* ## Contract for an implementer
|
|
38104
|
+
*
|
|
38105
|
+
* - **Idempotent.** It is called again by a retry, by a reconcile and by the
|
|
38106
|
+
* admin cleanup of data that predates tombstones. A device with nothing left
|
|
38107
|
+
* answers zero counts.
|
|
38108
|
+
* - **One key per store** in `counts`, deleted rows/files per store, so the log
|
|
38109
|
+
* line and the admin dry run can say where the data was.
|
|
38110
|
+
* - **Training datasets are NOT device data** and are never deleted by a hook.
|
|
38111
|
+
* - **Per-device SETTINGS are not hooked.** Configuration lives in the standard
|
|
38112
|
+
* per-device store (`ctx.settings.*DeviceStore`), which device-manager clears
|
|
38113
|
+
* for every addon centrally at delete time. This hook is for device DATA
|
|
38114
|
+
* that is not settings: footage, event media, analytics rows, history.
|
|
38115
|
+
* - A provider that cannot tell is allowed to throw; the caller retries it.
|
|
38116
|
+
*
|
|
38117
|
+
* `listDeviceData` is the read side of the admin "Clean data of deleted devices"
|
|
38118
|
+
* action: which device ids this addon holds data for, and how much per store. It
|
|
38119
|
+
* never deletes. device-manager decides which of those ids are absent from the
|
|
38120
|
+
* fleet, from TWO consistent reads of the device list (D49).
|
|
38121
|
+
*/
|
|
38122
|
+
/** What a hook is told about the deletion. */
|
|
38123
|
+
var DeviceRemovedInputSchema = object({
|
|
38124
|
+
deviceId: number().int().positive(),
|
|
38125
|
+
/** Epoch ms the device was deleted (the tombstone's `deletedAt`). */
|
|
38126
|
+
deletedAt: number(),
|
|
38127
|
+
/** The addon that owned the device, as device-manager last knew it. */
|
|
38128
|
+
providerAddonId: string()
|
|
38129
|
+
});
|
|
38130
|
+
/** Rows/files/refs deleted, per store this implementer owns. */
|
|
38131
|
+
var DeviceRemovedResultSchema = object({ counts: record(string(), number().int().nonnegative()) });
|
|
38132
|
+
/** One (store, device) pair an implementer holds data for. */
|
|
38133
|
+
var DeviceDataEntrySchema = object({
|
|
38134
|
+
store: string(),
|
|
38135
|
+
deviceId: number().int().positive(),
|
|
38136
|
+
/** Rows (or files) held for the device in the store. */
|
|
38137
|
+
count: number().int().nonnegative()
|
|
38138
|
+
});
|
|
38139
|
+
method(DeviceRemovedInputSchema, DeviceRemovedResultSchema, {
|
|
38140
|
+
kind: "mutation",
|
|
38141
|
+
auth: "admin"
|
|
38142
|
+
}), method(_void(), array(DeviceDataEntrySchema).readonly(), { auth: "admin" });
|
|
38143
|
+
/**
|
|
38016
38144
|
* `failure-contribution` — the capability an addon reports its OWN losses
|
|
38017
38145
|
* through, per camera, with the denominator attached. It stores nothing.
|
|
38018
38146
|
*
|
|
@@ -49573,7 +49701,9 @@ var SsoBridgeClaimsSchema = object({
|
|
|
49573
49701
|
codeChallenge: string(),
|
|
49574
49702
|
state: string(),
|
|
49575
49703
|
purpose: _enum(["new-session", "step-up"]),
|
|
49576
|
-
redirect: string()
|
|
49704
|
+
redirect: string(),
|
|
49705
|
+
/** The page language the app asked for (D858); the confirm page speaks it. */
|
|
49706
|
+
lang: _enum(["en", "it"]).optional()
|
|
49577
49707
|
}).optional()
|
|
49578
49708
|
});
|
|
49579
49709
|
method(object({
|
|
@@ -58937,6 +59067,21 @@ DeviceType.Switch, DeviceType.Siren, DeviceType.Light, method(object({
|
|
|
58937
59067
|
on: boolean(),
|
|
58938
59068
|
lastChangedAt: number()
|
|
58939
59069
|
});
|
|
59070
|
+
/** C0 controls, DEL and the C1 range: none of them belongs in a name. */
|
|
59071
|
+
function hasControlCharacter(value) {
|
|
59072
|
+
for (const char of value) {
|
|
59073
|
+
const code = char.codePointAt(0) ?? 0;
|
|
59074
|
+
if (code <= 31 || code >= 127 && code <= 159) return true;
|
|
59075
|
+
}
|
|
59076
|
+
return false;
|
|
59077
|
+
}
|
|
59078
|
+
string().transform((value) => value.trim()).pipe(string().min(1, "The server name cannot be empty").max(48, `The server name is at most 48 characters`).refine((value) => !hasControlCharacter(value), { message: "The server name cannot contain control characters" }));
|
|
59079
|
+
/** What every reader gets: the name to show, and whether the hub chose it itself. */
|
|
59080
|
+
var ServerNameInfoSchema = object({
|
|
59081
|
+
name: string(),
|
|
59082
|
+
/** `true` when nobody named the hub: `name` is the machine hostname. */
|
|
59083
|
+
isDefault: boolean()
|
|
59084
|
+
});
|
|
58940
59085
|
/**
|
|
58941
59086
|
* system — system-scoped singleton capability exposing hub-level
|
|
58942
59087
|
* health, feature flags, network interface enumeration, and the
|
|
@@ -58966,6 +59111,12 @@ var FeatureManifestSchema = object({
|
|
|
58966
59111
|
backup: boolean(),
|
|
58967
59112
|
repl: boolean()
|
|
58968
59113
|
});
|
|
59114
|
+
/**
|
|
59115
|
+
* `system.info`: the feature flags plus the hub's human name (D861). The name is
|
|
59116
|
+
* `{ name, isDefault }` — `isDefault: true` means nobody named the hub and `name`
|
|
59117
|
+
* is the machine hostname.
|
|
59118
|
+
*/
|
|
59119
|
+
var SystemInfoSchema = FeatureManifestSchema.extend({ serverName: ServerNameInfoSchema });
|
|
58969
59120
|
var HealthStatusSchema = object({
|
|
58970
59121
|
status: literal("ok"),
|
|
58971
59122
|
uptime: number()
|
|
@@ -59438,7 +59589,7 @@ var LoggingSettingsStateSchema = object({
|
|
|
59438
59589
|
opsLogRetentionDays: number().int().min(0),
|
|
59439
59590
|
persisted: boolean()
|
|
59440
59591
|
});
|
|
59441
|
-
method(_void(),
|
|
59592
|
+
method(_void(), SystemInfoSchema), method(_void(), HealthStatusSchema), method(_void(), FeatureManifestSchema), method(_void(), array(NetworkAddressSchema).readonly()), method(_void(), unknown().nullable(), { auth: "admin" }), method(record(string(), unknown()), _null(), {
|
|
59442
59593
|
kind: "mutation",
|
|
59443
59594
|
auth: "admin"
|
|
59444
59595
|
}), method(_void(), _void(), {
|
|
@@ -62589,6 +62740,12 @@ Object.freeze({
|
|
|
62589
62740
|
addonId: null,
|
|
62590
62741
|
access: "create"
|
|
62591
62742
|
},
|
|
62743
|
+
"deviceManager.cleanupDeletedDevicesData": {
|
|
62744
|
+
capName: "device-manager",
|
|
62745
|
+
capScope: "system",
|
|
62746
|
+
addonId: null,
|
|
62747
|
+
access: "create"
|
|
62748
|
+
},
|
|
62592
62749
|
"deviceManager.createDevice": {
|
|
62593
62750
|
capName: "device-manager",
|
|
62594
62751
|
capScope: "system",
|
|
@@ -62769,6 +62926,12 @@ Object.freeze({
|
|
|
62769
62926
|
addonId: null,
|
|
62770
62927
|
access: "view"
|
|
62771
62928
|
},
|
|
62929
|
+
"deviceManager.listDeletedSince": {
|
|
62930
|
+
capName: "device-manager",
|
|
62931
|
+
capScope: "system",
|
|
62932
|
+
addonId: null,
|
|
62933
|
+
access: "view"
|
|
62934
|
+
},
|
|
62772
62935
|
"deviceManager.listDeviceIdsByCaps": {
|
|
62773
62936
|
capName: "device-manager",
|
|
62774
62937
|
capScope: "system",
|
|
@@ -63177,6 +63340,18 @@ Object.freeze({
|
|
|
63177
63340
|
addonId: null,
|
|
63178
63341
|
access: "create"
|
|
63179
63342
|
},
|
|
63343
|
+
"deviceRemovalHook.listDeviceData": {
|
|
63344
|
+
capName: "device-removal-hook",
|
|
63345
|
+
capScope: "system",
|
|
63346
|
+
addonId: null,
|
|
63347
|
+
access: "view"
|
|
63348
|
+
},
|
|
63349
|
+
"deviceRemovalHook.onDeviceRemoved": {
|
|
63350
|
+
capName: "device-removal-hook",
|
|
63351
|
+
capScope: "system",
|
|
63352
|
+
addonId: null,
|
|
63353
|
+
access: "create"
|
|
63354
|
+
},
|
|
63180
63355
|
"deviceState.claimFields": {
|
|
63181
63356
|
capName: "device-state",
|
|
63182
63357
|
capScope: "system",
|
|
@@ -63609,6 +63784,12 @@ Object.freeze({
|
|
|
63609
63784
|
addonId: null,
|
|
63610
63785
|
access: "delete"
|
|
63611
63786
|
},
|
|
63787
|
+
"keychain.deleteDeviceScope": {
|
|
63788
|
+
capName: "keychain",
|
|
63789
|
+
capScope: "system",
|
|
63790
|
+
addonId: null,
|
|
63791
|
+
access: "delete"
|
|
63792
|
+
},
|
|
63612
63793
|
"keychain.getState": {
|
|
63613
63794
|
capName: "keychain",
|
|
63614
63795
|
capScope: "system",
|
|
@@ -69621,6 +69802,11 @@ Object.freeze({
|
|
|
69621
69802
|
form: "single",
|
|
69622
69803
|
optional: false
|
|
69623
69804
|
}],
|
|
69805
|
+
"deviceRemovalHook.onDeviceRemoved": [{
|
|
69806
|
+
name: "deviceId",
|
|
69807
|
+
form: "single",
|
|
69808
|
+
optional: false
|
|
69809
|
+
}],
|
|
69624
69810
|
"deviceState.claimFields": [{
|
|
69625
69811
|
name: "deviceId",
|
|
69626
69812
|
form: "single",
|
|
@@ -69810,6 +69996,11 @@ Object.freeze({
|
|
|
69810
69996
|
form: "single",
|
|
69811
69997
|
optional: false
|
|
69812
69998
|
}],
|
|
69999
|
+
"keychain.deleteDeviceScope": [{
|
|
70000
|
+
name: "deviceId",
|
|
70001
|
+
form: "single",
|
|
70002
|
+
optional: false
|
|
70003
|
+
}],
|
|
69813
70004
|
"lawnMowerControl.dock": [{
|
|
69814
70005
|
name: "deviceId",
|
|
69815
70006
|
form: "single",
|
|
@@ -72158,6 +72349,8 @@ new Set([
|
|
|
72158
72349
|
"audio-tools",
|
|
72159
72350
|
"audio-silence"
|
|
72160
72351
|
]);
|
|
72352
|
+
AppPageLangSchema.options;
|
|
72353
|
+
record(string().min(1), string());
|
|
72161
72354
|
/**
|
|
72162
72355
|
* TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
|
|
72163
72356
|
*
|
|
@@ -36,7 +36,7 @@ async function r() {
|
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
"@camstack/types": {
|
|
39
|
-
version: "1.2.
|
|
39
|
+
version: "1.2.374",
|
|
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.132",
|
|
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.292",
|
|
85
85
|
scope: "default",
|
|
86
86
|
shareConfig: {
|
|
87
87
|
singleton: !0,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { t as e } from "./createLucideIcon-
|
|
2
|
-
import { $ as t, $n as n, $t as r, A as i, An as a, At as o, B as s, Bn as c, Bt as l, C as u, Cn as d, Ct as f, D as p, Dn as m, Dt as h, E as g, En as _, Et as v, F as y, Fn as b, Ft as x, G as S, Gn as C, Gt as w, H as T, Hn as E, Ht as D, I as O, In as k, It as A, J as j, Jn as M, Jt as N, K as P, Kn as F, Kt as I, L, Ln as R, Lt as z, M as B, Mn as V, Mt as H, N as U, Nn as W, Nt as G, O as K, On as q, Ot as J, P as Y, Pn as X, Pt as Z, Q, Qn as $, Qt as ee, R as te, Rn as ne, Rt as re, S as ie, Sn as ae, St as oe, T as se, Tn as ce, Tt as le, U as ue, Un as de, Ut as fe, V as pe, Vn as me, Vt as he, W as ge, Wn as _e, Wt as ve, X as ye, Xn as be, Xt as xe, Y as Se, Yn as Ce, Yt as we, Z as Te, Zn as Ee, Zt as De, _ as Oe, _n as ke, _t as Ae, a as je, an as Me, ar as Ne, at as Pe, b as Fe, bn as Ie, bt as Le, c as Re, cn as ze, cr as Be, ct as Ve, d as He, dn as Ue, dr as We, dt as Ge, en as Ke, er as qe, et as Je, f as Ye, fn as Xe, fr as Ze, ft as Qe, g as $e, gn as et, gt as tt, h as nt, hn as rt, ht as it, i as at, in as ot, ir as st, it as ct, j as lt, jn as ut, jt as dt, k as ft, kn as pt, kt as mt, l as ht, ln as gt, lr as _t, lt as vt, m as yt, mn as bt, mt as xt, n as St, nn as Ct, nr as wt, nt as Tt, o as Et, on as Dt, or as Ot, ot as kt, p as At, pn as jt, pt as Mt, q as Nt, qn as Pt, qt as Ft, r as It, rn as Lt, rr as Rt, rt as zt, s as Bt, sn as Vt, sr as Ht, st as Ut, t as Wt, tn as Gt, tr as Kt, tt as qt, u as Jt, un as Yt, ur as Xt, ut as Zt, v as Qt, vn as $t, vt as en, w as tn, wn as nn, wt as rn, x as an, xn as on, xt as sn, y as cn, yn as ln, yt as un, z as dn, zn as fn, zt as pn } from "./zoom-out-
|
|
3
|
-
import { n as mn, r as hn, t as gn } from "./rotate-ccw-
|
|
4
|
-
import { n as _n, t as vn } from "./chevron-right-
|
|
5
|
-
import { n as yn, r as bn, t as xn } from "./square-
|
|
6
|
-
import { t as Sn } from "./grid-2x2-
|
|
7
|
-
import { n as Cn, t as wn } from "./mic-off-
|
|
8
|
-
import { t as Tn } from "./settings-2-
|
|
9
|
-
import { t as En } from "./trash-2-
|
|
1
|
+
import { t as e } from "./createLucideIcon-C0bBNRpC.mjs";
|
|
2
|
+
import { $ as t, $n as n, $t as r, A as i, An as a, At as o, B as s, Bn as c, Bt as l, C as u, Cn as d, Ct as f, D as p, Dn as m, Dt as h, E as g, En as _, Et as v, F as y, Fn as b, Ft as x, G as S, Gn as C, Gt as w, H as T, Hn as E, Ht as D, I as O, In as k, It as A, J as j, Jn as M, Jt as N, K as P, Kn as F, Kt as I, L, Ln as R, Lt as z, M as B, Mn as V, Mt as H, N as U, Nn as W, Nt as G, O as K, On as q, Ot as J, P as Y, Pn as X, Pt as Z, Q, Qn as $, Qt as ee, R as te, Rn as ne, Rt as re, S as ie, Sn as ae, St as oe, T as se, Tn as ce, Tt as le, U as ue, Un as de, Ut as fe, V as pe, Vn as me, Vt as he, W as ge, Wn as _e, Wt as ve, X as ye, Xn as be, Xt as xe, Y as Se, Yn as Ce, Yt as we, Z as Te, Zn as Ee, Zt as De, _ as Oe, _n as ke, _t as Ae, a as je, an as Me, ar as Ne, at as Pe, b as Fe, bn as Ie, bt as Le, c as Re, cn as ze, cr as Be, ct as Ve, d as He, dn as Ue, dr as We, dt as Ge, en as Ke, er as qe, et as Je, f as Ye, fn as Xe, fr as Ze, ft as Qe, g as $e, gn as et, gt as tt, h as nt, hn as rt, ht as it, i as at, in as ot, ir as st, it as ct, j as lt, jn as ut, jt as dt, k as ft, kn as pt, kt as mt, l as ht, ln as gt, lr as _t, lt as vt, m as yt, mn as bt, mt as xt, n as St, nn as Ct, nr as wt, nt as Tt, o as Et, on as Dt, or as Ot, ot as kt, p as At, pn as jt, pt as Mt, q as Nt, qn as Pt, qt as Ft, r as It, rn as Lt, rr as Rt, rt as zt, s as Bt, sn as Vt, sr as Ht, st as Ut, t as Wt, tn as Gt, tr as Kt, tt as qt, u as Jt, un as Yt, ur as Xt, ut as Zt, v as Qt, vn as $t, vt as en, w as tn, wn as nn, wt as rn, x as an, xn as on, xt as sn, y as cn, yn as ln, yt as un, z as dn, zn as fn, zt as pn } from "./zoom-out-DDZCsqkQ.mjs";
|
|
3
|
+
import { n as mn, r as hn, t as gn } from "./rotate-ccw-Cu6tGrgG.mjs";
|
|
4
|
+
import { n as _n, t as vn } from "./chevron-right-cA8Hucbi.mjs";
|
|
5
|
+
import { n as yn, r as bn, t as xn } from "./square-ZPUterXM.mjs";
|
|
6
|
+
import { t as Sn } from "./grid-2x2-CHuMzRxF.mjs";
|
|
7
|
+
import { n as Cn, t as wn } from "./mic-off-2uHAsVtR.mjs";
|
|
8
|
+
import { t as Tn } from "./settings-2-xV0I5Y5U.mjs";
|
|
9
|
+
import { t as En } from "./trash-2-BKfuhsgY.mjs";
|
|
10
10
|
var Dn = e("a-arrow-down", [
|
|
11
11
|
["path", {
|
|
12
12
|
d: "m14 12 4 4 4-4",
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
require("./dist-
|
|
2
|
+
require("./dist-DxTjO9kC.js");
|
|
3
3
|
const require_orchestrator_training_addon = require("./orchestrator/training.addon.js");
|
|
4
4
|
const require_providers_modal_training_modal_addon = require("./providers/modal/training-modal.addon.js");
|
|
5
5
|
//#region src/providers/fake/fake-provider.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as e } from "./createLucideIcon-
|
|
1
|
+
import { t as e } from "./createLucideIcon-C0bBNRpC.mjs";
|
|
2
2
|
var t = e("hexagon", [["path", {
|
|
3
3
|
d: "M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z",
|
|
4
4
|
key: "yt0hxn"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_dist = require("../dist-
|
|
2
|
+
const require_dist = require("../dist-DxTjO9kC.js");
|
|
3
3
|
let node_path = require("node:path");
|
|
4
4
|
node_path = require_dist.__toESM(node_path);
|
|
5
5
|
let node_crypto = require("node:crypto");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as addonPagesSourceCapability, i as TrainingResultSchema, l as BaseAddon, n as TrainingJobSchema, o as parseTrainingEventLine, r as TrainingJobSpecSchema, s as trainingCapability, t as TRAINING_JOB_SCHEMA } from "../dist-
|
|
1
|
+
import { a as addonPagesSourceCapability, i as TrainingResultSchema, l as BaseAddon, n as TrainingJobSchema, o as parseTrainingEventLine, r as TrainingJobSpecSchema, s as trainingCapability, t as TRAINING_JOB_SCHEMA } from "../dist-GI2KEl-e.mjs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { createHash } from "node:crypto";
|
|
4
4
|
import { createReadStream } from "node:fs";
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as i,
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { d as e, u as t, w as n, y as r } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare__react__loadShare__.js-CEvdvp1T.mjs";
|
|
2
|
+
import { n as i, r as a, t as o } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DnrbBvrw.mjs";
|
|
3
|
+
import { n as s, t as c } from "./chevron-right-cA8Hucbi.mjs";
|
|
4
|
+
import { h as l } from "./responsive-1iwc-rj2.mjs";
|
|
5
5
|
//#region ../ui-library/src/composites/widget-panel.tsx
|
|
6
|
-
|
|
7
|
-
function u({ title: e, icon:
|
|
8
|
-
let [p, m] =
|
|
6
|
+
n();
|
|
7
|
+
function u({ title: e, icon: t, headerRight: n, collapsible: l = !1, defaultOpen: u = !0, bodyClassName: d = "p-3", children: f }) {
|
|
8
|
+
let [p, m] = r(u), h = !l || p, g = /* @__PURE__ */ a(o, { children: [/* @__PURE__ */ a("span", {
|
|
9
9
|
className: "flex items-center gap-2 text-xs font-semibold uppercase tracking-wider text-foreground",
|
|
10
|
-
children: [
|
|
11
|
-
}),
|
|
12
|
-
return /* @__PURE__ */
|
|
10
|
+
children: [t, e]
|
|
11
|
+
}), l ? i(p ? s : c, { className: "h-3.5 w-3.5 text-foreground-subtle" }) : n] }), _ = `px-4 py-2 flex items-center justify-between ${h ? "border-b border-border" : ""}`;
|
|
12
|
+
return /* @__PURE__ */ a("div", {
|
|
13
13
|
className: "rounded-lg border border-border bg-surface overflow-hidden",
|
|
14
|
-
children: [
|
|
14
|
+
children: [l ? /* @__PURE__ */ i("button", {
|
|
15
15
|
type: "button",
|
|
16
16
|
onClick: () => m((e) => !e),
|
|
17
17
|
className: `w-full text-left ${_}`,
|
|
18
18
|
children: g
|
|
19
|
-
}) : /* @__PURE__ */
|
|
19
|
+
}) : /* @__PURE__ */ i("div", {
|
|
20
20
|
className: _,
|
|
21
21
|
children: g
|
|
22
|
-
}), h ? /* @__PURE__ */
|
|
22
|
+
}), h ? /* @__PURE__ */ i("div", {
|
|
23
23
|
className: d,
|
|
24
24
|
children: f
|
|
25
25
|
}) : null]
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
28
|
function d({ label: e, icon: t, children: n, footer: r }) {
|
|
29
|
-
return /* @__PURE__ */
|
|
29
|
+
return /* @__PURE__ */ a("div", {
|
|
30
30
|
className: "min-w-0 rounded-lg border border-border bg-surface p-2 sm:p-2.5",
|
|
31
31
|
children: [
|
|
32
|
-
/* @__PURE__ */
|
|
32
|
+
/* @__PURE__ */ a("div", {
|
|
33
33
|
className: "mb-0.5 flex min-w-0 items-center gap-1.5 text-[10px] uppercase tracking-wider text-foreground-subtle",
|
|
34
|
-
children: [t, /* @__PURE__ */
|
|
34
|
+
children: [t, /* @__PURE__ */ i("span", {
|
|
35
35
|
className: "min-w-0 truncate",
|
|
36
36
|
children: e
|
|
37
37
|
})]
|
|
38
38
|
}),
|
|
39
|
-
/* @__PURE__ */
|
|
39
|
+
/* @__PURE__ */ i("div", {
|
|
40
40
|
className: "truncate text-lg font-semibold leading-tight text-foreground",
|
|
41
41
|
children: n
|
|
42
42
|
}),
|
|
43
|
-
r == null ? null : /* @__PURE__ */
|
|
43
|
+
r == null ? null : /* @__PURE__ */ i("div", {
|
|
44
44
|
className: "mt-0.5 truncate text-[10px] text-foreground-subtle",
|
|
45
45
|
children: r
|
|
46
46
|
})
|
|
47
47
|
]
|
|
48
48
|
});
|
|
49
49
|
}
|
|
50
|
-
|
|
51
|
-
var f =
|
|
52
|
-
function p(
|
|
53
|
-
let
|
|
54
|
-
|
|
55
|
-
if (!(!
|
|
56
|
-
}, [
|
|
50
|
+
n(), l("camstack:player-overlays-state", null);
|
|
51
|
+
var f = l("camstack:player-overlays-actions", null);
|
|
52
|
+
function p(n) {
|
|
53
|
+
let r = t(f);
|
|
54
|
+
e(() => {
|
|
55
|
+
if (!(!r || !n)) return r.setLayer(n), () => r.removeLayer(n.id);
|
|
56
|
+
}, [r, n]);
|
|
57
57
|
}
|
|
58
58
|
//#endregion
|
|
59
59
|
export { d as n, u as r, p as t };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_dist = require("../../dist-
|
|
2
|
+
const require_dist = require("../../dist-DxTjO9kC.js");
|
|
3
3
|
let node_path = require("node:path");
|
|
4
4
|
node_path = require_dist.__toESM(node_path, 1);
|
|
5
5
|
let node_crypto = require("node:crypto");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as number, b as string, c as trainingProviderCapability, d as arrayItemFieldPath, f as globalSecretScope, g as boolean, h as toSecretFieldView, l as BaseAddon, m as isSecretMarker, p as isSecretClear, u as SECRET_CLEAR, v as object, y as record } from "../../dist-
|
|
1
|
+
import { _ as number, b as string, c as trainingProviderCapability, d as arrayItemFieldPath, f as globalSecretScope, g as boolean, h as toSecretFieldView, l as BaseAddon, m as isSecretMarker, p as isSecretClear, u as SECRET_CLEAR, v as object, y as record } from "../../dist-GI2KEl-e.mjs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import path, { dirname, posix } from "node:path";
|
|
4
4
|
import { createHash, createPrivateKey, createPublicKey, createSign, randomBytes, randomUUID } from "node:crypto";
|
package/dist/remoteEntry.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-
|
|
1
|
+
import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-D5OhZIRm.mjs";
|
|
2
2
|
export { t as get, e as init };
|
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { y as c } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CyW0FqIn.mjs";
|
|
1
|
+
import { b as e, d as t, g as n, l as r, n as i, u as a, w as o, y as s } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare__react__loadShare__.js-CEvdvp1T.mjs";
|
|
3
2
|
import "./_virtual_mf___mfe_internal__addon_training_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DnrbBvrw.mjs";
|
|
3
|
+
import { y as c } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BVsoOuTM.mjs";
|
|
4
4
|
//#region ../ui-library/src/lib/shared-context.ts
|
|
5
|
-
|
|
5
|
+
o();
|
|
6
6
|
function l(e, t) {
|
|
7
|
-
if (typeof globalThis > "u") return
|
|
7
|
+
if (typeof globalThis > "u") return i(t);
|
|
8
8
|
let n = globalThis.__camstackSharedContexts, r = n ?? /* @__PURE__ */ new Map();
|
|
9
9
|
n || (globalThis.__camstackSharedContexts = r);
|
|
10
|
-
let
|
|
11
|
-
if (
|
|
12
|
-
let o =
|
|
10
|
+
let a = r.get(e);
|
|
11
|
+
if (a) return a;
|
|
12
|
+
let o = i(t);
|
|
13
13
|
return r.set(e, o), o;
|
|
14
14
|
}
|
|
15
15
|
//#endregion
|
|
16
16
|
//#region ../ui-library/src/contexts/system-context.tsx
|
|
17
|
-
|
|
17
|
+
o();
|
|
18
18
|
var u = l("camstack:system", null);
|
|
19
19
|
function d() {
|
|
20
|
-
let e =
|
|
20
|
+
let e = a(u);
|
|
21
21
|
if (!e) throw Error("useSystem(): no <SystemProvider> in tree");
|
|
22
22
|
return e;
|
|
23
23
|
}
|
|
24
24
|
//#endregion
|
|
25
25
|
//#region ../ui-library/src/hooks/use-device-proxy.ts
|
|
26
|
-
|
|
26
|
+
o();
|
|
27
27
|
var f = "capability.binding-changed";
|
|
28
|
-
function p(e,
|
|
29
|
-
let [
|
|
30
|
-
return
|
|
31
|
-
if (
|
|
28
|
+
function p(e, r) {
|
|
29
|
+
let [i, a] = s(null);
|
|
30
|
+
return t(() => {
|
|
31
|
+
if (r === null) {
|
|
32
32
|
a(null);
|
|
33
33
|
return;
|
|
34
34
|
}
|
|
35
|
-
let t = !1,
|
|
35
|
+
let t = !1, n = async () => {
|
|
36
36
|
try {
|
|
37
|
-
let
|
|
38
|
-
t || a(
|
|
37
|
+
let n = await e.deviceManager.getBindings.query({ deviceId: r });
|
|
38
|
+
t || a(n);
|
|
39
39
|
} catch {
|
|
40
40
|
t || a((e) => e);
|
|
41
41
|
}
|
|
42
42
|
};
|
|
43
|
-
|
|
43
|
+
n();
|
|
44
44
|
let i = e.live?.onEvent.subscribe({ category: f }, { onData: (e) => {
|
|
45
45
|
let t = e.data?.source;
|
|
46
46
|
if (!t) {
|
|
47
|
-
|
|
47
|
+
n();
|
|
48
48
|
return;
|
|
49
49
|
}
|
|
50
|
-
t.type === "device" && t.id ===
|
|
50
|
+
t.type === "device" && t.id === r && n();
|
|
51
51
|
} });
|
|
52
52
|
return () => {
|
|
53
53
|
t = !0, i?.unsubscribe();
|
|
54
54
|
};
|
|
55
|
-
}, [e,
|
|
55
|
+
}, [e, r]), n(() => i ? c(e, i) : null, [e, i]);
|
|
56
56
|
}
|
|
57
|
-
function m(
|
|
58
|
-
let
|
|
59
|
-
return
|
|
57
|
+
function m(t) {
|
|
58
|
+
let n = r((e) => t ? t.subscribe(() => e()) : () => void 0, [t]), i = r(() => t?.value, [t]);
|
|
59
|
+
return e(n, i, i);
|
|
60
60
|
}
|
|
61
61
|
function h(e, t, n) {
|
|
62
62
|
let r = p(e, t);
|
|
@@ -79,6 +79,6 @@ function _(e) {
|
|
|
79
79
|
}
|
|
80
80
|
//#endregion
|
|
81
81
|
//#region ../ui-library/src/lib/responsive.ts
|
|
82
|
-
var v = "rounded-lg border border-border bg-surface overflow-hidden", y = "border-b border-border px-3 sm:px-4 py-1.5 sm:py-2", b = "p-2 sm:p-3 lg:p-4", x = "grid grid-cols-2 sm:grid-cols-2 lg:grid-cols-4", S = "
|
|
82
|
+
var v = "rounded-lg border border-border bg-surface overflow-hidden", y = "border-b border-border px-3 sm:px-4 py-1.5 sm:py-2", b = "p-2 sm:p-3 lg:p-4", x = "grid grid-cols-2 sm:grid-cols-2 lg:grid-cols-4", S = "text-[10px] sm:text-[11px] font-semibold text-foreground uppercase tracking-wider", C = "text-[10px] text-foreground-subtle", w = "inline-flex items-center gap-1 rounded-full border px-1.5 py-0.5 text-[10px] font-medium transition-colors", T = "border-primary/50 bg-primary/15 text-primary", E = "border-border bg-surface text-foreground-subtle hover:bg-surface-hover";
|
|
83
83
|
//#endregion
|
|
84
|
-
export {
|
|
84
|
+
export { b as a, C as c, p as d, h as f, l as h, x as i, S as l, d as m, w as n, v as o, m as p, E as r, y as s, T as t, _ as u };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as e } from "./createLucideIcon-
|
|
1
|
+
import { t as e } from "./createLucideIcon-C0bBNRpC.mjs";
|
|
2
2
|
var t = e("camera", [["path", {
|
|
3
3
|
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",
|
|
4
4
|
key: "18u6gg"
|