@camstack/types 1.2.211 → 1.2.213
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/addon.js +1 -1
- package/dist/addon.mjs +1 -1
- package/dist/capabilities/camera-grid-layout.cap.d.ts +44 -15
- package/dist/capabilities/index.d.ts +1 -1
- package/dist/ffmpeg/invocation.d.ts +15 -2
- package/dist/generated/addon-api.d.ts +21 -0
- package/dist/index.js +28 -13
- package/dist/index.mjs +28 -13
- package/dist/{sleep-Bs3xPtSh.mjs → sleep-GU_us3DG.mjs} +4 -1
- package/dist/{sleep-OPlow2a9.js → sleep-VlZxDyXq.js} +4 -1
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_sleep = require("./sleep-
|
|
2
|
+
const require_sleep = require("./sleep-VlZxDyXq.js");
|
|
3
3
|
const require_event_category = require("./event-category-BVfsrBYA.js");
|
|
4
4
|
const require_err_msg = require("./err-msg-COpsHMw2.js");
|
|
5
5
|
//#region src/generated/cap-input-defaults.ts
|
package/dist/addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as DeviceType, Et as normalizeAddonInitResult, G as ReadinessRegistry, H as nodePin, I as expandCapMethods, K as ReadinessTimeoutError, S as DEVICE_CHILDREN_BATCH_MAX, St as DATAPLANE_SECRET_HEADER, T as describeCustomActions, Tt as BaseAddon, U as readNodePin, Y as scopeKey, a as asJsonObject, b as deviceOpsCapability, d as BOOT_RECOVERY_BACKOFF_MS, f as DEVICE_SCOPED_CAPS, h as createEventBusSliceSource, j as adminUiCapability, kt as emitReadiness, m as createDeviceProxy, p as isDeviceScopedCap, s as asString, t as sleep, u as parseJsonUnknown, wt as DisposerChain, x as viewerUiCapability } from "./sleep-
|
|
1
|
+
import { A as DeviceType, Et as normalizeAddonInitResult, G as ReadinessRegistry, H as nodePin, I as expandCapMethods, K as ReadinessTimeoutError, S as DEVICE_CHILDREN_BATCH_MAX, St as DATAPLANE_SECRET_HEADER, T as describeCustomActions, Tt as BaseAddon, U as readNodePin, Y as scopeKey, a as asJsonObject, b as deviceOpsCapability, d as BOOT_RECOVERY_BACKOFF_MS, f as DEVICE_SCOPED_CAPS, h as createEventBusSliceSource, j as adminUiCapability, kt as emitReadiness, m as createDeviceProxy, p as isDeviceScopedCap, s as asString, t as sleep, u as parseJsonUnknown, wt as DisposerChain, x as viewerUiCapability } from "./sleep-GU_us3DG.mjs";
|
|
2
2
|
import { t as EventCategory } from "./event-category-BVDXG4tB.mjs";
|
|
3
3
|
import { t as errMsg } from "./err-msg-IQTHeDzc.mjs";
|
|
4
4
|
//#region src/generated/cap-input-defaults.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { DeviceType } from '../device/device-type.js';
|
|
3
|
-
import { type InferNativeProvider } from './capability-definition.js';
|
|
3
|
+
import { type InferNativeProvider, type InferProvider } from './capability-definition.js';
|
|
4
4
|
/**
|
|
5
5
|
* camera-grid-layout — the geometry of a COMPOSITE camera, on the camera's own
|
|
6
6
|
* page.
|
|
@@ -17,11 +17,15 @@ import { type InferNativeProvider } from './capability-definition.js';
|
|
|
17
17
|
*
|
|
18
18
|
* Adding a fifth name to that list would have been the wrong fix twice over:
|
|
19
19
|
* that page is per-camera DETECTION tuning, and a grid's geometry belongs
|
|
20
|
-
* beside PTZ and motion zones on the camera itself
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
20
|
+
* beside PTZ and motion zones on the camera itself. The device page is
|
|
21
|
+
* BINDING-driven (D12), so the way in is a capability bound to the device —
|
|
22
|
+
* and this cap carries its section the way `recording` does, by RETURNING it
|
|
23
|
+
* from `getDeviceSettingsContribution`.
|
|
24
|
+
*
|
|
25
|
+
* Seven other widgets are still declared the other way, through a
|
|
26
|
+
* `deviceConfig.ui` block the framework derives a section from. That route
|
|
27
|
+
* gives the addon no say in where its own panel lands and no way to decline
|
|
28
|
+
* for a device the panel does not suit, which is why this one does not use it.
|
|
25
29
|
*
|
|
26
30
|
* ## Why one addon may implement it
|
|
27
31
|
*
|
|
@@ -151,15 +155,24 @@ export declare const cameraGridLayoutCapability: {
|
|
|
151
155
|
readonly deviceNative: true;
|
|
152
156
|
readonly mode: "singleton";
|
|
153
157
|
readonly deviceTypes: readonly [DeviceType.Camera];
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
158
|
+
/**
|
|
159
|
+
* The section is built by the ADDON and returned from
|
|
160
|
+
* `getDeviceSettingsContribution`, not derived by the framework from a
|
|
161
|
+
* `deviceConfig.ui` block.
|
|
162
|
+
*
|
|
163
|
+
* Both mechanisms render the same widget. This one hands the addon two
|
|
164
|
+
* things the framework-derived route cannot give it:
|
|
165
|
+
*
|
|
166
|
+
* - it chooses its own section, `tab`, `location` and `order`, the way any
|
|
167
|
+
* other setting does, instead of receiving them from a cap declaration;
|
|
168
|
+
* - it can DECLINE per device. A camera that is not a grid gets no section
|
|
169
|
+
* at all, rather than a widget that renders its own "not a grid" state.
|
|
170
|
+
*
|
|
171
|
+
* `recording` is the precedent (`recorder/recording-device-settings.ts`): it
|
|
172
|
+
* returns `null` for anything that is not a camera, so the Recording tab
|
|
173
|
+
* never appears there.
|
|
174
|
+
*/
|
|
175
|
+
readonly exposesDeviceSettings: true;
|
|
163
176
|
readonly methods: {
|
|
164
177
|
/**
|
|
165
178
|
* The grid behind this device.
|
|
@@ -258,5 +271,21 @@ export declare const cameraGridLayoutCapability: {
|
|
|
258
271
|
}, z.core.$strip>, "mutation">;
|
|
259
272
|
};
|
|
260
273
|
};
|
|
274
|
+
/**
|
|
275
|
+
* The DEVICE's provider: the data methods only.
|
|
276
|
+
*
|
|
277
|
+
* `InferNativeProvider` deliberately omits the device-settings contribution —
|
|
278
|
+
* the framework expects a native provider to hold the data and a WRAPPER to
|
|
279
|
+
* describe the UI, which is why `getProviderByAddon` (not
|
|
280
|
+
* `getProviderForDevice`) is what the aggregation resolves with.
|
|
281
|
+
*/
|
|
261
282
|
export type ICameraGridLayoutProvider = InferNativeProvider<typeof cameraGridLayoutCapability>;
|
|
283
|
+
/**
|
|
284
|
+
* The ADDON's provider: the same methods plus the contribution surface that
|
|
285
|
+
* `exposesDeviceSettings` adds. This is the one that carries the section, and
|
|
286
|
+
* the one that can decline for a device that is not a grid.
|
|
287
|
+
*
|
|
288
|
+
* Two types for two roles, the same split `doorbell` and `snapshot` use.
|
|
289
|
+
*/
|
|
290
|
+
export type ICameraGridLayoutSettingsProvider = InferProvider<typeof cameraGridLayoutCapability>;
|
|
262
291
|
export {};
|
|
@@ -169,7 +169,7 @@ export { type IMediaPlayerProvider, type MediaInfo, type MediaPlayerRepeat, Medi
|
|
|
169
169
|
export { type IMeshNetworkProvider, type MeshEndpoint, type MeshPeer, MeshPeerSchema, type MeshStatus, MeshStatusSchema, meshNetworkCapability, } from './mesh-network.cap.js';
|
|
170
170
|
export { type IMotionProvider, MOTION_CLOSE_AFTER_MS, type MotionOnMotionChangedData, MotionOnMotionChangedDataSchema, type MotionStatus, MotionStatusSchema, motionCapability, } from './motion.cap.js';
|
|
171
171
|
export { type IMotionTriggerProvider, type MotionTriggerRuntimeState, MotionTriggerRuntimeStateSchema, type MotionTriggerStatus, MotionTriggerStatusSchema, motionTriggerCapability, } from './motion-trigger.cap.js';
|
|
172
|
-
export { type GridLayoutCell, type GridLayoutPatch, GridLayoutPatchSchema, type GridNormalizedRect, type GridProfileOffer, type GridLayoutView, GridLayoutViewSchema, type ICameraGridLayoutProvider, cameraGridLayoutCapability, } from './camera-grid-layout.cap.js';
|
|
172
|
+
export { type GridLayoutCell, type GridLayoutPatch, GridLayoutPatchSchema, type GridNormalizedRect, type GridProfileOffer, type GridLayoutView, GridLayoutViewSchema, type ICameraGridLayoutProvider, type ICameraGridLayoutSettingsProvider, cameraGridLayoutCapability, } from './camera-grid-layout.cap.js';
|
|
173
173
|
export { type IMotionZonesProvider, type MotionZoneOptions, MotionZoneOptionsSchema, type MotionZonePatch, MotionZonePatchSchema, type MotionZoneRegion, MotionZoneRegionSchema, type MotionZoneStatus, MotionZoneStatusSchema, motionZonesCapability, } from './motion-zones.cap.js';
|
|
174
174
|
export { type INativeObjectDetectionProvider, type NativeDetection, NativeDetectionSchema, type NativeObjectClass, NativeObjectClassEnum, type NativeObjectDetectionOptions, NativeObjectDetectionOptionsSchema, type NativeObjectDetectionRuntimeState, NativeObjectDetectionRuntimeStateSchema, type NativeObjectDetectionSettingsPatch, NativeObjectDetectionSettingsPatchSchema, type NativeObjectDetectionStatus, NativeObjectDetectionStatusSchema, type NativeObjectGeometry, NativeObjectGeometryEnum, nativeObjectDetectionCapability, } from './native-object-detection.cap.js';
|
|
175
175
|
export { type INavigationProvider, NAVIGATION_ACTION_CATALOG, NAVIGATION_LIGHT_LEVEL_MAX, NAVIGATION_LIGHT_LEVEL_MIN, type NavigationActionEntry, NavigationActionEntrySchema, type NavigationActionId, NavigationActionIdSchema, type NavigationEntryKind, NavigationEntryKindSchema, type NavigationFeatures, NavigationFeaturesSchema, type NavigationLightMode, NavigationLightModeSchema, type NavigationMode, NavigationModeSchema, type NavigationMoveCommand, NavigationMoveCommandSchema, type NavigationPoint, NavigationPointSchema, type NavigationRuntimeState, NavigationRuntimeStateSchema, type NavigationStatus, NavigationStatusSchema, navigationCapability, } from './navigation.cap.js';
|
|
@@ -210,9 +210,22 @@ export interface FfmpegFmp4Sink {
|
|
|
210
210
|
export type FfmpegSink = {
|
|
211
211
|
readonly kind: 'rtsp-listen';
|
|
212
212
|
readonly url: string;
|
|
213
|
-
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* A container written to stdout.
|
|
216
|
+
*
|
|
217
|
+
* `flv` exists for a producer whose consumer is the broker's ffmpeg source
|
|
218
|
+
* reader: that reader re-muxes with `-c copy -f mpegts`, and the bundled
|
|
219
|
+
* ffmpeg 7.0.2 static SEGFAULTS on an MPEG-TS input on that path — measured
|
|
220
|
+
* on the hub 2026-09-17, on a synthetic three-second stream as readily as on
|
|
221
|
+
* a real one, while RTSP→TS and FLV→TS copy both exit 0. A producer that
|
|
222
|
+
* hands the broker MPEG-TS therefore hands it a crash; FLV is the format the
|
|
223
|
+
* broker already documents as "always ingested through the ffmpeg source
|
|
224
|
+
* reader" (`pull-flv`).
|
|
225
|
+
*/
|
|
226
|
+
| {
|
|
214
227
|
readonly kind: 'stdout';
|
|
215
|
-
readonly container: 'h264' | 'hevc' | 'mpegts';
|
|
228
|
+
readonly container: 'h264' | 'hevc' | 'mpegts' | 'flv';
|
|
216
229
|
} | FfmpegFmp4Sink
|
|
217
230
|
/**
|
|
218
231
|
* Two independent mapped RTP outputs. Generic ffmpeg RTP vocabulary — the
|
|
@@ -1199,6 +1199,27 @@ export type AppRouter = TrpcCoreRouter<{
|
|
|
1199
1199
|
errorShape: AugmentedErrorShape;
|
|
1200
1200
|
transformer: true;
|
|
1201
1201
|
}, TRPCDecorateCreateRouterOptions<{
|
|
1202
|
+
getDeviceSettingsContribution: TRPCQueryProcedure<{
|
|
1203
|
+
input: {
|
|
1204
|
+
[x: string]: unknown;
|
|
1205
|
+
} & z.input<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.getDeviceSettingsContribution.input>;
|
|
1206
|
+
output: z.infer<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.getDeviceSettingsContribution.output>;
|
|
1207
|
+
meta: object;
|
|
1208
|
+
}>;
|
|
1209
|
+
getDeviceLiveContribution: TRPCQueryProcedure<{
|
|
1210
|
+
input: {
|
|
1211
|
+
[x: string]: unknown;
|
|
1212
|
+
} & z.input<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.getDeviceLiveContribution.input>;
|
|
1213
|
+
output: z.infer<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.getDeviceLiveContribution.output>;
|
|
1214
|
+
meta: object;
|
|
1215
|
+
}>;
|
|
1216
|
+
applyDeviceSettingsPatch: TRPCMutationProcedure<{
|
|
1217
|
+
input: {
|
|
1218
|
+
[x: string]: unknown;
|
|
1219
|
+
} & z.input<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.applyDeviceSettingsPatch.input>;
|
|
1220
|
+
output: z.infer<typeof DEVICE_SETTINGS_CONTRIBUTION_METHODS.applyDeviceSettingsPatch.output>;
|
|
1221
|
+
meta: object;
|
|
1222
|
+
}>;
|
|
1202
1223
|
getLayout: TRPCQueryProcedure<{
|
|
1203
1224
|
input: {
|
|
1204
1225
|
[x: string]: unknown;
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_sleep = require("./sleep-
|
|
2
|
+
const require_sleep = require("./sleep-VlZxDyXq.js");
|
|
3
3
|
const require_event_category = require("./event-category-BVfsrBYA.js");
|
|
4
4
|
const require_canonical_hash = require("./canonical-hash-CZ2JqJc3.js");
|
|
5
5
|
const require_enums = require("./enums.js");
|
|
@@ -32455,11 +32455,15 @@ var motionTriggerCapability = {
|
|
|
32455
32455
|
*
|
|
32456
32456
|
* Adding a fifth name to that list would have been the wrong fix twice over:
|
|
32457
32457
|
* that page is per-camera DETECTION tuning, and a grid's geometry belongs
|
|
32458
|
-
* beside PTZ and motion zones on the camera itself
|
|
32459
|
-
*
|
|
32460
|
-
*
|
|
32461
|
-
*
|
|
32462
|
-
*
|
|
32458
|
+
* beside PTZ and motion zones on the camera itself. The device page is
|
|
32459
|
+
* BINDING-driven (D12), so the way in is a capability bound to the device —
|
|
32460
|
+
* and this cap carries its section the way `recording` does, by RETURNING it
|
|
32461
|
+
* from `getDeviceSettingsContribution`.
|
|
32462
|
+
*
|
|
32463
|
+
* Seven other widgets are still declared the other way, through a
|
|
32464
|
+
* `deviceConfig.ui` block the framework derives a section from. That route
|
|
32465
|
+
* gives the addon no say in where its own panel lands and no way to decline
|
|
32466
|
+
* for a device the panel does not suit, which is why this one does not use it.
|
|
32463
32467
|
*
|
|
32464
32468
|
* ## Why one addon may implement it
|
|
32465
32469
|
*
|
|
@@ -32549,13 +32553,24 @@ var cameraGridLayoutCapability = {
|
|
|
32549
32553
|
deviceNative: true,
|
|
32550
32554
|
mode: "singleton",
|
|
32551
32555
|
deviceTypes: [require_sleep.DeviceType.Camera],
|
|
32552
|
-
|
|
32553
|
-
|
|
32554
|
-
|
|
32555
|
-
|
|
32556
|
-
|
|
32557
|
-
|
|
32558
|
-
|
|
32556
|
+
/**
|
|
32557
|
+
* The section is built by the ADDON and returned from
|
|
32558
|
+
* `getDeviceSettingsContribution`, not derived by the framework from a
|
|
32559
|
+
* `deviceConfig.ui` block.
|
|
32560
|
+
*
|
|
32561
|
+
* Both mechanisms render the same widget. This one hands the addon two
|
|
32562
|
+
* things the framework-derived route cannot give it:
|
|
32563
|
+
*
|
|
32564
|
+
* - it chooses its own section, `tab`, `location` and `order`, the way any
|
|
32565
|
+
* other setting does, instead of receiving them from a cap declaration;
|
|
32566
|
+
* - it can DECLINE per device. A camera that is not a grid gets no section
|
|
32567
|
+
* at all, rather than a widget that renders its own "not a grid" state.
|
|
32568
|
+
*
|
|
32569
|
+
* `recording` is the precedent (`recorder/recording-device-settings.ts`): it
|
|
32570
|
+
* returns `null` for anything that is not a camera, so the Recording tab
|
|
32571
|
+
* never appears there.
|
|
32572
|
+
*/
|
|
32573
|
+
exposesDeviceSettings: true,
|
|
32559
32574
|
methods: {
|
|
32560
32575
|
/**
|
|
32561
32576
|
* The grid behind this device.
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as CAM_PROFILE_ORDER, A as DeviceType, At as isEvent, B as systemMethod, Bt as isAudioChunkFormat, C as customAction, Ct as SHARE_VIEW_KINDS, D as ChargingStatus, Dt as createDurableState, E as deviceCustomAction, Et as normalizeAddonInitResult, F as event, Ft as hydrateSchema, G as ReadinessRegistry, H as nodePin, I as expandCapMethods, It as resolveHydratedFieldValue, J as readinessKey, K as ReadinessTimeoutError, L as isDeviceConfigCap, Lt as AUDIO_CHUNK_FORMATS, M as DEFAULT_RUNTIME_STATE_DURABILITY, Mt as WELL_KNOWN_TAB_MAP, N as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Nt as collectHydratedFieldEntries, O as DeviceFeature, Ot as createEvent, P as DEVICE_STATUS_METHOD, Pt as collectHydratedFieldValues, Q as BrokerStatusSchema, R as method, Rt as audioChunkBytesPerSample, S as DEVICE_CHILDREN_BATCH_MAX, St as DATAPLANE_SECRET_HEADER, T as describeCustomActions, Tt as BaseAddon, U as readNodePin, V as CAP_NODE_PIN_CONTEXT_KEY, W as toNodeId, X as AudioChunkFormatSchema, Y as scopeKey, Z as BrokerStatsSchema, _ as createMirrorSource, _t as SubscribeFramesResultSchema, a as asJsonObject, at as DecodedFrameSchema, b as deviceOpsCapability, bt as parseProfileBrokerId, c as parseJsonArray, ct as FrameHandleSchema, d as BOOT_RECOVERY_BACKOFF_MS, dt as ProfileSlotStatusSchema, et as CamProfileSchema, f as DEVICE_SCOPED_CAPS, ft as StreamSourceEntrySchema, g as createLazyTrpcSource, gt as SubscribeFramesInputSchema, h as createEventBusSliceSource, ht as SubscribeAudioChunksResultSchema, i as asJsonArray, it as DecodedAudioChunkSchema, j as adminUiCapability, jt as WELL_KNOWN_TABS, k as DeviceRole, kt as emitReadiness, l as parseJsonObject, lt as ProfileRtspEntrySchema, m as createDeviceProxy, mt as SubscribeAudioChunksInputSchema, n as sleepCancellable, nt as CamStreamResolutionSchema, o as asNumber, ot as EncodedPacketSchema, p as isDeviceScopedCap, pt as StreamSourceSchema, q as emitDownForOwnedCaps, r as asBoolean, rt as CameraStreamSchema, s as asString, st as FrameHandleFormatSchema, t as sleep, tt as CamStreamKindSchema, u as parseJsonUnknown, ut as ProfileSlotSchema, v as createSliceHandle, vt as makeProfileBrokerId, w as defineCustomActions, wt as DisposerChain, x as viewerUiCapability, xt as selectAssignedProfileSlots, y as RawStateResultSchema, yt as makeSourceBrokerId, z as resolveCapMount, zt as expandAudioChunkToF32le } from "./sleep-
|
|
1
|
+
import { $ as CAM_PROFILE_ORDER, A as DeviceType, At as isEvent, B as systemMethod, Bt as isAudioChunkFormat, C as customAction, Ct as SHARE_VIEW_KINDS, D as ChargingStatus, Dt as createDurableState, E as deviceCustomAction, Et as normalizeAddonInitResult, F as event, Ft as hydrateSchema, G as ReadinessRegistry, H as nodePin, I as expandCapMethods, It as resolveHydratedFieldValue, J as readinessKey, K as ReadinessTimeoutError, L as isDeviceConfigCap, Lt as AUDIO_CHUNK_FORMATS, M as DEFAULT_RUNTIME_STATE_DURABILITY, Mt as WELL_KNOWN_TAB_MAP, N as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Nt as collectHydratedFieldEntries, O as DeviceFeature, Ot as createEvent, P as DEVICE_STATUS_METHOD, Pt as collectHydratedFieldValues, Q as BrokerStatusSchema, R as method, Rt as audioChunkBytesPerSample, S as DEVICE_CHILDREN_BATCH_MAX, St as DATAPLANE_SECRET_HEADER, T as describeCustomActions, Tt as BaseAddon, U as readNodePin, V as CAP_NODE_PIN_CONTEXT_KEY, W as toNodeId, X as AudioChunkFormatSchema, Y as scopeKey, Z as BrokerStatsSchema, _ as createMirrorSource, _t as SubscribeFramesResultSchema, a as asJsonObject, at as DecodedFrameSchema, b as deviceOpsCapability, bt as parseProfileBrokerId, c as parseJsonArray, ct as FrameHandleSchema, d as BOOT_RECOVERY_BACKOFF_MS, dt as ProfileSlotStatusSchema, et as CamProfileSchema, f as DEVICE_SCOPED_CAPS, ft as StreamSourceEntrySchema, g as createLazyTrpcSource, gt as SubscribeFramesInputSchema, h as createEventBusSliceSource, ht as SubscribeAudioChunksResultSchema, i as asJsonArray, it as DecodedAudioChunkSchema, j as adminUiCapability, jt as WELL_KNOWN_TABS, k as DeviceRole, kt as emitReadiness, l as parseJsonObject, lt as ProfileRtspEntrySchema, m as createDeviceProxy, mt as SubscribeAudioChunksInputSchema, n as sleepCancellable, nt as CamStreamResolutionSchema, o as asNumber, ot as EncodedPacketSchema, p as isDeviceScopedCap, pt as StreamSourceSchema, q as emitDownForOwnedCaps, r as asBoolean, rt as CameraStreamSchema, s as asString, st as FrameHandleFormatSchema, t as sleep, tt as CamStreamKindSchema, u as parseJsonUnknown, ut as ProfileSlotSchema, v as createSliceHandle, vt as makeProfileBrokerId, w as defineCustomActions, wt as DisposerChain, x as viewerUiCapability, xt as selectAssignedProfileSlots, y as RawStateResultSchema, yt as makeSourceBrokerId, z as resolveCapMount, zt as expandAudioChunkToF32le } from "./sleep-GU_us3DG.mjs";
|
|
2
2
|
import { t as EventCategory } from "./event-category-BVDXG4tB.mjs";
|
|
3
3
|
import { a as buildAudioArgs, c as buildVideoArgs, d as logBannerArgs, f as pickVideoEncoder, i as audioPlanFromEncodeProfile, l as invocationFromEncodeProfile, n as Fmp4BoxSplitter, o as buildFfmpegArgs, p as resolveStreamMaps, r as AUDIO_PRESETS, s as buildInputArgs, t as canonicalHash, u as isSoftwareDecode } from "./canonical-hash-DBkl8q6V.mjs";
|
|
4
4
|
import { EventSourceType } from "./enums.mjs";
|
|
@@ -32454,11 +32454,15 @@ var motionTriggerCapability = {
|
|
|
32454
32454
|
*
|
|
32455
32455
|
* Adding a fifth name to that list would have been the wrong fix twice over:
|
|
32456
32456
|
* that page is per-camera DETECTION tuning, and a grid's geometry belongs
|
|
32457
|
-
* beside PTZ and motion zones on the camera itself
|
|
32458
|
-
*
|
|
32459
|
-
*
|
|
32460
|
-
*
|
|
32461
|
-
*
|
|
32457
|
+
* beside PTZ and motion zones on the camera itself. The device page is
|
|
32458
|
+
* BINDING-driven (D12), so the way in is a capability bound to the device —
|
|
32459
|
+
* and this cap carries its section the way `recording` does, by RETURNING it
|
|
32460
|
+
* from `getDeviceSettingsContribution`.
|
|
32461
|
+
*
|
|
32462
|
+
* Seven other widgets are still declared the other way, through a
|
|
32463
|
+
* `deviceConfig.ui` block the framework derives a section from. That route
|
|
32464
|
+
* gives the addon no say in where its own panel lands and no way to decline
|
|
32465
|
+
* for a device the panel does not suit, which is why this one does not use it.
|
|
32462
32466
|
*
|
|
32463
32467
|
* ## Why one addon may implement it
|
|
32464
32468
|
*
|
|
@@ -32548,13 +32552,24 @@ var cameraGridLayoutCapability = {
|
|
|
32548
32552
|
deviceNative: true,
|
|
32549
32553
|
mode: "singleton",
|
|
32550
32554
|
deviceTypes: [DeviceType.Camera],
|
|
32551
|
-
|
|
32552
|
-
|
|
32553
|
-
|
|
32554
|
-
|
|
32555
|
-
|
|
32556
|
-
|
|
32557
|
-
|
|
32555
|
+
/**
|
|
32556
|
+
* The section is built by the ADDON and returned from
|
|
32557
|
+
* `getDeviceSettingsContribution`, not derived by the framework from a
|
|
32558
|
+
* `deviceConfig.ui` block.
|
|
32559
|
+
*
|
|
32560
|
+
* Both mechanisms render the same widget. This one hands the addon two
|
|
32561
|
+
* things the framework-derived route cannot give it:
|
|
32562
|
+
*
|
|
32563
|
+
* - it chooses its own section, `tab`, `location` and `order`, the way any
|
|
32564
|
+
* other setting does, instead of receiving them from a cap declaration;
|
|
32565
|
+
* - it can DECLINE per device. A camera that is not a grid gets no section
|
|
32566
|
+
* at all, rather than a widget that renders its own "not a grid" state.
|
|
32567
|
+
*
|
|
32568
|
+
* `recording` is the precedent (`recorder/recording-device-settings.ts`): it
|
|
32569
|
+
* returns `null` for anything that is not a camera, so the Recording tab
|
|
32570
|
+
* never appears there.
|
|
32571
|
+
*/
|
|
32572
|
+
exposesDeviceSettings: true,
|
|
32558
32573
|
methods: {
|
|
32559
32574
|
/**
|
|
32560
32575
|
* The grid behind this device.
|
|
@@ -3459,7 +3459,10 @@ function createDeviceProxy(api, binding, opts) {
|
|
|
3459
3459
|
},
|
|
3460
3460
|
cameraGridLayout: {
|
|
3461
3461
|
getLayout: (input) => dispatch("camera-grid-layout", "cameraGridLayout", "getLayout", "query", input),
|
|
3462
|
-
saveLayout: (input) => dispatch("camera-grid-layout", "cameraGridLayout", "saveLayout", "mutation", input)
|
|
3462
|
+
saveLayout: (input) => dispatch("camera-grid-layout", "cameraGridLayout", "saveLayout", "mutation", input),
|
|
3463
|
+
getDeviceSettingsContribution: (input) => dispatch("camera-grid-layout", "cameraGridLayout", "getDeviceSettingsContribution", "query", input),
|
|
3464
|
+
getDeviceLiveContribution: (input) => dispatch("camera-grid-layout", "cameraGridLayout", "getDeviceLiveContribution", "query", input),
|
|
3465
|
+
applyDeviceSettingsPatch: (input) => dispatch("camera-grid-layout", "cameraGridLayout", "applyDeviceSettingsPatch", "mutation", input)
|
|
3463
3466
|
},
|
|
3464
3467
|
cameraStreams: {
|
|
3465
3468
|
getCameraStreams: (input) => dispatch("camera-streams", "cameraStreams", "getCameraStreams", "query", input),
|
|
@@ -3459,7 +3459,10 @@ function createDeviceProxy(api, binding, opts) {
|
|
|
3459
3459
|
},
|
|
3460
3460
|
cameraGridLayout: {
|
|
3461
3461
|
getLayout: (input) => dispatch("camera-grid-layout", "cameraGridLayout", "getLayout", "query", input),
|
|
3462
|
-
saveLayout: (input) => dispatch("camera-grid-layout", "cameraGridLayout", "saveLayout", "mutation", input)
|
|
3462
|
+
saveLayout: (input) => dispatch("camera-grid-layout", "cameraGridLayout", "saveLayout", "mutation", input),
|
|
3463
|
+
getDeviceSettingsContribution: (input) => dispatch("camera-grid-layout", "cameraGridLayout", "getDeviceSettingsContribution", "query", input),
|
|
3464
|
+
getDeviceLiveContribution: (input) => dispatch("camera-grid-layout", "cameraGridLayout", "getDeviceLiveContribution", "query", input),
|
|
3465
|
+
applyDeviceSettingsPatch: (input) => dispatch("camera-grid-layout", "cameraGridLayout", "applyDeviceSettingsPatch", "mutation", input)
|
|
3463
3466
|
},
|
|
3464
3467
|
cameraStreams: {
|
|
3465
3468
|
getCameraStreams: (input) => dispatch("camera-streams", "cameraStreams", "getCameraStreams", "query", input),
|