@camstack/ui-library 1.2.256 → 1.2.258
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/composites/accelerator-label.d.ts +9 -9
- package/dist/composites/adaptive-downlink.d.ts +141 -143
- package/dist/composites/addon-global-settings-form.d.ts +73 -60
- package/dist/composites/addon-page-props.d.ts +34 -10
- package/dist/composites/agent-step-editor.d.ts +48 -47
- package/dist/composites/app-shell/app-shell.d.ts +17 -17
- package/dist/composites/app-shell/index.d.ts +3 -3
- package/dist/composites/app-shell/sidebar-item.d.ts +9 -8
- package/dist/composites/app-shell/sidebar.d.ts +10 -10
- package/dist/composites/audio-classification-list.d.ts +16 -15
- package/dist/composites/audio-level-waveform.d.ts +31 -30
- package/dist/composites/audio-waveform.d.ts +18 -17
- package/dist/composites/battery-badge.d.ts +27 -13
- package/dist/composites/breadcrumb.d.ts +21 -21
- package/dist/composites/camera-stream-player.d.ts +309 -309
- package/dist/composites/cap-settings/AutotrackSection.d.ts +19 -2
- package/dist/composites/cap-settings/CameraGridLayoutEditor.d.ts +24 -2
- package/dist/composites/cap-settings/ConsumablesPanel.d.ts +21 -2
- package/dist/composites/cap-settings/CoverageTrack.d.ts +21 -20
- package/dist/composites/cap-settings/EventBucketStrip.d.ts +21 -20
- package/dist/composites/cap-settings/EventHeatmap.d.ts +8 -7
- package/dist/composites/cap-settings/HomePresetPicker.d.ts +2 -2
- package/dist/composites/cap-settings/MaskShapeCanvas.d.ts +143 -41
- package/dist/composites/cap-settings/MotionZonesSettings.d.ts +41 -2
- package/dist/composites/cap-settings/NavigationPanel.d.ts +14 -2
- package/dist/composites/cap-settings/PrivacyMaskSettings.d.ts +3 -2
- package/dist/composites/cap-settings/PtzPanel.d.ts +15 -2
- package/dist/composites/cap-settings/RecordingBandsEditor.d.ts +33 -32
- package/dist/composites/cap-settings/RecordingPanel.d.ts +3 -2
- package/dist/composites/cap-settings/RecordingSettings.d.ts +11 -10
- package/dist/composites/cap-settings/RecordingTimeline.d.ts +3 -2
- package/dist/composites/cap-settings/SceneMonitorEditor.d.ts +3 -51
- package/dist/composites/cap-settings/SceneReferenceGallery.d.ts +62 -23
- package/dist/composites/cap-settings/SceneSettingsForm.d.ts +52 -16
- package/dist/composites/cap-settings/TimelineControls.d.ts +21 -20
- package/dist/composites/cap-settings/camera-grid-layout.d.ts +95 -95
- package/dist/composites/cap-settings/event-thumb.d.ts +9 -8
- package/dist/composites/cap-settings/index.d.ts +20 -20
- package/dist/composites/cap-settings/privacy-mask-audio.d.ts +47 -47
- package/dist/composites/cap-settings/recording-config-form.d.ts +25 -25
- package/dist/composites/cap-settings/recording-spans.d.ts +14 -14
- package/dist/composites/cap-settings/recording-timeline-model.d.ts +57 -57
- package/dist/composites/cap-settings/scene-monitor-copy.d.ts +58 -49
- package/dist/composites/client-network-sample.d.ts +41 -41
- package/dist/composites/clips/ClipBandBar.d.ts +44 -14
- package/dist/composites/clips/ClipPanel.d.ts +30 -6
- package/dist/composites/clips/ClipTile.d.ts +26 -5
- package/dist/composites/clips/ClipsSection.d.ts +107 -2
- package/dist/composites/clips/clip-band.d.ts +72 -38
- package/dist/composites/clips/clip-day-window.d.ts +7 -30
- package/dist/composites/clips/clip-source-state.d.ts +55 -26
- package/dist/composites/clips/clip-still-retry.d.ts +39 -39
- package/dist/composites/clips/clip-thumbnail-fetch.d.ts +9 -9
- package/dist/composites/clips/clip-tile-media.d.ts +64 -32
- package/dist/composites/clips/clip-view-state.d.ts +76 -46
- package/dist/composites/code-block.d.ts +5 -4
- package/dist/composites/config-form-builder.d.ts +14 -13
- package/dist/composites/config-form-field.d.ts +63 -62
- package/dist/composites/config-icon-field.d.ts +10 -9
- package/dist/composites/config-secret-field.d.ts +51 -27
- package/dist/composites/confirm-action-button.d.ts +52 -39
- package/dist/composites/confirm-dialog.d.ts +110 -48
- package/dist/composites/copy-button.d.ts +25 -19
- package/dist/composites/data-table/data-table-header.d.ts +8 -7
- package/dist/composites/data-table/data-table-pagination.d.ts +7 -6
- package/dist/composites/data-table/data-table-row.d.ts +8 -7
- package/dist/composites/data-table/data-table.d.ts +3 -2
- package/dist/composites/data-table/index.d.ts +2 -2
- package/dist/composites/data-table/types.d.ts +29 -29
- package/dist/composites/data-table-filter-bar.d.ts +30 -29
- package/dist/composites/data-table-filter.d.ts +34 -34
- package/dist/composites/data-table-layout.d.ts +24 -24
- package/dist/composites/data-table-pager.d.ts +5 -5
- package/dist/composites/data-table-pagination.d.ts +23 -23
- package/dist/composites/data-table-selection.d.ts +10 -10
- package/dist/composites/data-table.d.ts +167 -118
- package/dist/composites/detection-canvas.d.ts +34 -25
- package/dist/composites/detection-colors.d.ts +9 -9
- package/dist/composites/detection-overlay.d.ts +33 -32
- package/dist/composites/detection-result-tree.d.ts +22 -9
- package/dist/composites/dev-shell.d.ts +15 -14
- package/dist/composites/device-activity-panel.d.ts +37 -31
- package/dist/composites/device-card.d.ts +32 -32
- package/dist/composites/device-controls/ac-panel.d.ts +2 -2
- package/dist/composites/device-controls/alarm-hero-card.d.ts +42 -42
- package/dist/composites/device-controls/atoms.d.ts +50 -50
- package/dist/composites/device-controls/brightness-panel.d.ts +3 -3
- package/dist/composites/device-controls/button-control.d.ts +14 -14
- package/dist/composites/device-controls/climate-panel.d.ts +12 -12
- package/dist/composites/device-controls/container-primary-hero.d.ts +33 -16
- package/dist/composites/device-controls/container-primary.d.ts +68 -39
- package/dist/composites/device-controls/control-panel.d.ts +4 -4
- package/dist/composites/device-controls/control-registry.d.ts +81 -70
- package/dist/composites/device-controls/cover-hero-card.d.ts +26 -26
- package/dist/composites/device-controls/cover-inline.d.ts +20 -20
- package/dist/composites/device-controls/cover-panel.d.ts +2 -2
- package/dist/composites/device-controls/dummy-hero-card.d.ts +2 -2
- package/dist/composites/device-controls/fan-hero-card.d.ts +20 -20
- package/dist/composites/device-controls/fan-panel.d.ts +3 -3
- package/dist/composites/device-controls/humidifier-control.d.ts +46 -29
- package/dist/composites/device-controls/image-control.d.ts +41 -27
- package/dist/composites/device-controls/index.d.ts +34 -34
- package/dist/composites/device-controls/lawn-mower-control.d.ts +30 -16
- package/dist/composites/device-controls/light-hero-card.d.ts +15 -15
- package/dist/composites/device-controls/lock-hero-card.d.ts +14 -14
- package/dist/composites/device-controls/lock-panel.d.ts +3 -3
- package/dist/composites/device-controls/media-player-hero-card.d.ts +16 -16
- package/dist/composites/device-controls/media-player-panel.d.ts +7 -7
- package/dist/composites/device-controls/offline-badge.d.ts +23 -8
- package/dist/composites/device-controls/panel-controls.d.ts +39 -20
- package/dist/composites/device-controls/pet-feeder-panel.d.ts +27 -9
- package/dist/composites/device-controls/popover-row-action.d.ts +18 -6
- package/dist/composites/device-controls/primary-child-picker.d.ts +31 -15
- package/dist/composites/device-controls/primary-child.d.ts +14 -25
- package/dist/composites/device-controls/radial-gauge.d.ts +17 -17
- package/dist/composites/device-controls/script-automation-controls.d.ts +9 -9
- package/dist/composites/device-controls/sensor-hero-card.d.ts +26 -8
- package/dist/composites/device-controls/sensor-inline-control.d.ts +21 -9
- package/dist/composites/device-controls/sensor-value-atom.d.ts +97 -76
- package/dist/composites/device-controls/switch-hero-card.d.ts +11 -11
- package/dist/composites/device-controls/switch-panel.d.ts +2 -2
- package/dist/composites/device-controls/tap-toggle.d.ts +13 -13
- package/dist/composites/device-controls/thermostat-hero-card.d.ts +16 -16
- package/dist/composites/device-controls/types.d.ts +11 -11
- package/dist/composites/device-controls/update-control.d.ts +20 -7
- package/dist/composites/device-controls/vacuum-control.d.ts +41 -25
- package/dist/composites/device-controls/valve-control.d.ts +51 -35
- package/dist/composites/device-controls/water-heater-control.d.ts +48 -31
- package/dist/composites/device-controls/weather-control.d.ts +46 -28
- package/dist/composites/device-export-panel.d.ts +34 -34
- package/dist/composites/device-grid.d.ts +10 -10
- package/dist/composites/device-item/actions.d.ts +40 -18
- package/dist/composites/device-item/admin-link-quick-action.d.ts +66 -26
- package/dist/composites/device-item/child-layout.d.ts +43 -26
- package/dist/composites/device-item/child-section-accordion.d.ts +20 -6
- package/dist/composites/device-item/children-accordion.d.ts +11 -11
- package/dist/composites/device-item/container-children-context.d.ts +28 -11
- package/dist/composites/device-item/device-delete-action.d.ts +23 -5
- package/dist/composites/device-item/features.d.ts +33 -15
- package/dist/composites/device-item/header.d.ts +53 -31
- package/dist/composites/device-item/helpers.d.ts +291 -274
- package/dist/composites/device-item/index.d.ts +18 -9
- package/dist/composites/device-item/preview.d.ts +41 -21
- package/dist/composites/device-item/quick-detail-action.d.ts +4 -4
- package/dist/composites/device-item/reboot-quick-action.d.ts +28 -7
- package/dist/composites/device-item/role-display-defaults-context.d.ts +28 -12
- package/dist/composites/device-item/status-dot.d.ts +24 -6
- package/dist/composites/device-list/batch-actions-bar.d.ts +23 -12
- package/dist/composites/device-list/batch-toolbar.d.ts +13 -13
- package/dist/composites/device-list/columns.d.ts +108 -108
- package/dist/composites/device-list/device-integration.d.ts +48 -58
- package/dist/composites/device-list/device-mode.d.ts +121 -121
- package/dist/composites/device-list/empty-state.d.ts +14 -3
- package/dist/composites/device-list/filter-chips.d.ts +42 -29
- package/dist/composites/device-list/fuzzy-match.d.ts +22 -22
- package/dist/composites/device-list/generic-mode.d.ts +88 -88
- package/dist/composites/device-list/group.d.ts +62 -35
- package/dist/composites/device-list/hardware-cell.d.ts +14 -3
- package/dist/composites/device-list/hardware.d.ts +29 -11
- package/dist/composites/device-list/icon-action.d.ts +27 -15
- package/dist/composites/device-list/index.d.ts +46 -23
- package/dist/composites/device-list/multi-select.d.ts +17 -17
- package/dist/composites/device-list/page-size-select.d.ts +13 -7
- package/dist/composites/device-list/pagination.d.ts +19 -12
- package/dist/composites/device-list/sort.d.ts +28 -15
- package/dist/composites/device-list/sortable-header.d.ts +20 -7
- package/dist/composites/device-list/table-layout.d.ts +44 -44
- package/dist/composites/device-list/type-filter.d.ts +16 -16
- package/dist/composites/device-list/url-state.d.ts +35 -35
- package/dist/composites/device-meta.d.ts +43 -43
- package/dist/composites/device-picker/DevicePicker.d.ts +72 -33
- package/dist/composites/device-picker/SelectedChip.d.ts +10 -9
- package/dist/composites/device-picker/device-filter-bar.d.ts +19 -18
- package/dist/composites/device-picker/device-fleet-view.d.ts +11 -3
- package/dist/composites/device-picker/device-parent.d.ts +27 -27
- package/dist/composites/device-picker/device-picker-grouping.d.ts +3 -3
- package/dist/composites/device-picker/device-picker-model.d.ts +140 -140
- package/dist/composites/device-picker/device-selection-rows.d.ts +31 -24
- package/dist/composites/device-picker/device-selection.d.ts +43 -43
- package/dist/composites/device-picker/index.d.ts +9 -9
- package/dist/composites/device-select-field.d.ts +17 -16
- package/dist/composites/device-select-filter.d.ts +78 -78
- package/dist/composites/device-selector-picker.d.ts +25 -25
- package/dist/composites/device-step-matrix.d.ts +54 -28
- package/dist/composites/discovery-panel.d.ts +22 -22
- package/dist/composites/doorbell-recent-panel.d.ts +9 -8
- package/dist/composites/empty-state.d.ts +8 -8
- package/dist/composites/error-box.d.ts +32 -17
- package/dist/composites/event-kind-visuals.d.ts +29 -18
- package/dist/composites/event-stream.d.ts +59 -42
- package/dist/composites/extensions/AssociationSlotCard.d.ts +45 -24
- package/dist/composites/extensions/ExtensionsPanel.d.ts +41 -18
- package/dist/composites/extensions/extensions-view-state.d.ts +71 -53
- package/dist/composites/filter-bar.d.ts +22 -21
- package/dist/composites/form-field.d.ts +9 -9
- package/dist/composites/format-state-value.d.ts +23 -51
- package/dist/composites/grouped-model-selector.d.ts +7 -6
- package/dist/composites/hls-quality.d.ts +26 -26
- package/dist/composites/hls-video.d.ts +62 -39
- package/dist/composites/hover-zoom-image.d.ts +35 -16
- package/dist/composites/icon-picker.d.ts +86 -50
- package/dist/composites/image-selector.d.ts +21 -20
- package/dist/composites/index.d.ts +204 -204
- package/dist/composites/inference-config-selector.d.ts +36 -35
- package/dist/composites/kebab-menu.d.ts +53 -35
- package/dist/composites/key-value-list.d.ts +14 -14
- package/dist/composites/log-stream-scroll.d.ts +24 -24
- package/dist/composites/log-stream.d.ts +81 -70
- package/dist/composites/login-form.d.ts +7 -6
- package/dist/composites/model-bound-slider.d.ts +46 -26
- package/dist/composites/model-picker.d.ts +20 -19
- package/dist/composites/mount-addon-page.d.ts +12 -12
- package/dist/composites/network-link-badge.d.ts +7 -6
- package/dist/composites/node-picker.d.ts +14 -13
- package/dist/composites/notification-targets-field.d.ts +76 -58
- package/dist/composites/notification-targets-options.d.ts +9 -6
- package/dist/composites/option-select/OptionSelect.d.ts +23 -22
- package/dist/composites/option-select/index.d.ts +4 -4
- package/dist/composites/option-select/option-select-model.d.ts +35 -35
- package/dist/composites/page-header.d.ts +6 -6
- package/dist/composites/peer-connection-config.d.ts +9 -9
- package/dist/composites/phase-icon.d.ts +10 -3
- package/dist/composites/pipeline-builder.d.ts +21 -13
- package/dist/composites/pipeline-matrix-shared.d.ts +159 -150
- package/dist/composites/pipeline-runtime-selector.d.ts +12 -11
- package/dist/composites/pipeline-step.d.ts +39 -31
- package/dist/composites/placeholder-field/PlaceholderChipField.d.ts +23 -22
- package/dist/composites/placeholder-field/index.d.ts +1 -1
- package/dist/composites/provider-badge.d.ts +6 -5
- package/dist/composites/ptz-overlay.d.ts +38 -18
- package/dist/composites/qr-code.d.ts +24 -10
- package/dist/composites/reconnect-schedule.d.ts +22 -22
- package/dist/composites/resolve-step-default-model.d.ts +94 -94
- package/dist/composites/response-log.d.ts +7 -6
- package/dist/composites/root-model-source.d.ts +21 -10
- package/dist/composites/scope-picker.d.ts +49 -25
- package/dist/composites/section-card.d.ts +19 -11
- package/dist/composites/setting-row.d.ts +39 -21
- package/dist/composites/snapshot-button.d.ts +23 -19
- package/dist/composites/sort-header-button.d.ts +25 -8
- package/dist/composites/stat-card.d.ts +20 -8
- package/dist/composites/state-values-stream.d.ts +49 -24
- package/dist/composites/status-badge.d.ts +10 -8
- package/dist/composites/step-inspector/gate-control.d.ts +13 -12
- package/dist/composites/step-inspector/index.d.ts +8 -8
- package/dist/composites/step-inspector/layered-settings-form.d.ts +41 -30
- package/dist/composites/step-inspector/segmented-choice.d.ts +8 -7
- package/dist/composites/step-inspector/setting-values.d.ts +13 -8
- package/dist/composites/step-inspector/step-detail-dock.d.ts +39 -23
- package/dist/composites/step-inspector/step-inspector-panel.d.ts +34 -28
- package/dist/composites/step-inspector/step-model-row.d.ts +29 -24
- package/dist/composites/step-inspector/step-search.d.ts +11 -11
- package/dist/composites/step-timings.d.ts +7 -6
- package/dist/composites/step-tree.d.ts +17 -12
- package/dist/composites/stream-broker-selector.d.ts +29 -8
- package/dist/composites/stream-debug/stream-debug-overlay.d.ts +40 -40
- package/dist/composites/stream-debug/webrtc-debug-stats.d.ts +144 -129
- package/dist/composites/stream-panel.d.ts +212 -201
- package/dist/composites/table-sort.d.ts +61 -61
- package/dist/composites/timezone-selector.d.ts +15 -13
- package/dist/composites/training/send-frame-to-training.d.ts +5 -4
- package/dist/composites/training/training-collection-picker.d.ts +4 -3
- package/dist/composites/training/training-refusal-text.d.ts +6 -6
- package/dist/composites/unit-picker/UnitPicker.d.ts +19 -14
- package/dist/composites/unit-picker/index.d.ts +1 -1
- package/dist/composites/use-data-table-filter.d.ts +19 -19
- package/dist/composites/version-badge.d.ts +19 -18
- package/dist/composites/webrtc-diagnostics/EndpointTestCard.d.ts +7 -7
- package/dist/composites/webrtc-diagnostics/HubSessionTestCard.d.ts +14 -14
- package/dist/composites/webrtc-diagnostics/RunReport.d.ts +10 -5
- package/dist/composites/webrtc-diagnostics/endpoint-probe.d.ts +41 -21
- package/dist/composites/webrtc-diagnostics/endpoint-test.d.ts +37 -32
- package/dist/composites/webrtc-diagnostics/format.d.ts +3 -3
- package/dist/composites/webrtc-diagnostics/ice-candidates.d.ts +49 -49
- package/dist/composites/webrtc-diagnostics/nat-mapping.d.ts +36 -36
- package/dist/composites/webrtc-diagnostics/session-run.d.ts +108 -95
- package/dist/composites/webrtc-diagnostics/session-verdict.d.ts +29 -20
- package/dist/composites/widget-panel.d.ts +23 -23
- package/dist/composites/widget-slot.d.ts +35 -17
- package/dist/contexts/custom-field-renderers.d.ts +53 -17
- package/dist/contexts/device-context.d.ts +32 -12
- package/dist/contexts/device-quick-detail.d.ts +13 -4
- package/dist/contexts/player-overlays.d.ts +82 -42
- package/dist/contexts/recorded-playback.d.ts +40 -18
- package/dist/contexts/system-context.d.ts +28 -13
- package/dist/contexts/vod-playback.d.ts +39 -22
- package/dist/contexts/widget-registry.d.ts +139 -102
- package/dist/contexts/zone-editing.d.ts +69 -46
- package/dist/generated/system-hooks.d.ts +17 -1
- package/dist/hooks/index.d.ts +43 -43
- package/dist/hooks/turn-server-cache.d.ts +69 -69
- package/dist/hooks/use-capability-presence.d.ts +65 -28
- package/dist/hooks/use-cluster-nodes.d.ts +54 -27
- package/dist/hooks/use-device-autotrack.d.ts +7 -7
- package/dist/hooks/use-device-battery.d.ts +24 -11
- package/dist/hooks/use-device-cap-slice.d.ts +15 -15
- package/dist/hooks/use-device-capability.d.ts +61 -27
- package/dist/hooks/use-device-detections.d.ts +32 -32
- package/dist/hooks/use-device-features.d.ts +18 -18
- package/dist/hooks/use-device-list-page-size.d.ts +19 -6
- package/dist/hooks/use-device-network-link.d.ts +15 -7
- package/dist/hooks/use-device-proxy.d.ts +98 -92
- package/dist/hooks/use-device-snapshot.d.ts +23 -23
- package/dist/hooks/use-device-webrtc.d.ts +211 -205
- package/dist/hooks/use-devices.d.ts +9 -9
- package/dist/hooks/use-doorbell-events.d.ts +13 -13
- package/dist/hooks/use-event-stream.d.ts +6 -3
- package/dist/hooks/use-is-mobile.d.ts +5 -5
- package/dist/hooks/use-live-buffer.d.ts +5 -5
- package/dist/hooks/use-live-event.d.ts +1 -1
- package/dist/hooks/use-navigation.d.ts +20 -20
- package/dist/hooks/use-optimistic-slice.d.ts +13 -13
- package/dist/hooks/use-persisted-page-size.d.ts +10 -10
- package/dist/hooks/use-ptz.d.ts +108 -108
- package/dist/hooks/use-stationary-overlay.d.ts +37 -37
- package/dist/hooks/use-system-query.d.ts +33 -10
- package/dist/hooks/use-url-query.d.ts +3 -3
- package/dist/icons/index.d.ts +2 -2
- package/dist/icons/provider-icons.d.ts +2 -2
- package/dist/icons/status-icons.d.ts +2 -2
- package/dist/index.cjs +123 -69
- package/dist/index.d.ts +31 -27
- package/dist/index.js +123 -69
- package/dist/lib/cap-error.d.ts +18 -39
- package/dist/lib/cn.d.ts +1 -1
- package/dist/lib/fleet-query-defaults.d.ts +68 -34
- package/dist/lib/format-control-datetime.d.ts +16 -16
- package/dist/lib/format-duration.d.ts +12 -12
- package/dist/lib/format-last-seen.d.ts +5 -18
- package/dist/lib/format-numeric.d.ts +7 -7
- package/dist/lib/hub-mount.d.ts +8 -42
- package/dist/lib/index.d.ts +21 -21
- package/dist/lib/phase-config.d.ts +24 -11
- package/dist/lib/pipeline-mirror.d.ts +16 -16
- package/dist/lib/recorded-control-protocol.d.ts +41 -43
- package/dist/lib/resolve-sensor-display.d.ts +36 -20
- package/dist/lib/responsive.d.ts +54 -54
- package/dist/lib/scrub-controller.d.ts +75 -78
- package/dist/lib/shared-context.d.ts +27 -2
- package/dist/lib/tailwind-variants.d.ts +20 -20
- package/dist/primitives/badge.d.ts +5 -10
- package/dist/primitives/bottom-sheet.d.ts +7 -7
- package/dist/primitives/button.d.ts +5 -9
- package/dist/primitives/card.d.ts +4 -8
- package/dist/primitives/checkbox.d.ts +3 -4
- package/dist/primitives/collapsible-card.d.ts +23 -13
- package/dist/primitives/dialog.d.ts +33 -59
- package/dist/primitives/dropdown.d.ts +13 -13
- package/dist/primitives/floating-panel.d.ts +41 -20
- package/dist/primitives/icon-button.d.ts +8 -12
- package/dist/primitives/index.d.ts +22 -22
- package/dist/primitives/input.d.ts +6 -16
- package/dist/primitives/label.d.ts +3 -4
- package/dist/primitives/mobile-drawer.d.ts +8 -8
- package/dist/primitives/password-input.d.ts +18 -18
- package/dist/primitives/popover.d.ts +7 -7
- package/dist/primitives/scroll-area.d.ts +3 -4
- package/dist/primitives/select.d.ts +20 -20
- package/dist/primitives/separator.d.ts +4 -8
- package/dist/primitives/skeleton.d.ts +3 -4
- package/dist/primitives/switch.d.ts +6 -6
- package/dist/primitives/tabs.d.ts +26 -26
- package/dist/primitives/tooltip.d.ts +12 -12
- package/dist/theme/create-theme.d.ts +1 -1
- package/dist/theme/defaults.d.ts +1 -1
- package/dist/theme/index.d.ts +6 -6
- package/dist/theme/theme-provider.d.ts +8 -7
- package/dist/theme/theme-to-css.d.ts +1 -1
- package/dist/theme/types.d.ts +98 -100
- package/dist/theme/use-theme-mode.d.ts +1 -1
- package/dist/trpc-react.d.ts +23 -3
- package/dist/widgets/host-widgets.d.ts +4 -4
- package/package.json +8 -4
- package/src/tailwind/camstack-theme.css +11 -0
- package/dist/composites/unit-picker/UnitPicker.spec.d.ts +0 -1
|
@@ -1,5 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Autotrack settings card — rendered inside the PTZ panel when the
|
|
3
|
+
* device has `DeviceFeature.PtzAutotrack`. Three knobs (cross-vendor
|
|
4
|
+
* schema): target type, stop delay, disappear delay, plus an enable /
|
|
5
|
+
* disable toggle that drives the `ptz-autotrack` cap directly.
|
|
6
|
+
*
|
|
7
|
+
* Save semantics:
|
|
8
|
+
* - Toggle (enable/disable) calls `setEnabled` immediately.
|
|
9
|
+
* - Form fields debounce-save on blur — no explicit Save button.
|
|
10
|
+
*
|
|
11
|
+
* Vendor capability hints:
|
|
12
|
+
* - The cap's status carries `currentSettings` from the camera's
|
|
13
|
+
* own GET; rendered on every poll so the operator sees what's
|
|
14
|
+
* really applied vs what they typed.
|
|
15
|
+
* - When the firmware ignored a setting, the field stays editable.
|
|
16
|
+
*/
|
|
17
|
+
import { type JSX } from "react";
|
|
1
18
|
interface AutotrackSectionProps {
|
|
2
|
-
|
|
19
|
+
readonly deviceId: number;
|
|
3
20
|
}
|
|
4
|
-
export declare function AutotrackSection({ deviceId }: AutotrackSectionProps):
|
|
21
|
+
export declare function AutotrackSection({ deviceId }: AutotrackSectionProps): JSX.Element;
|
|
5
22
|
export {};
|
|
@@ -1,4 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The camera-grid layout editor.
|
|
3
|
+
*
|
|
4
|
+
* A grid's geometry is the one thing a DERIVED settings form cannot express: a
|
|
5
|
+
* generated form renders "cell 1 source = 592, cell 1 crop x = 0.25, cell 1 crop
|
|
6
|
+
* width = 0.5…" and nobody can hold a picture in their head from that. So the
|
|
7
|
+
* geometry gets a widget — the canvas, drawn at the grid's own aspect ratio,
|
|
8
|
+
* with the cells on it — while the knobs that ARE ordinary fields (the name,
|
|
9
|
+
* the canvas size, the frame rate) sit beside it in the same panel.
|
|
10
|
+
*
|
|
11
|
+
* Every rectangle in here is NORMALIZED [0,1], on both sides: the crop taken
|
|
12
|
+
* out of a source, and the cell it lands in. That is how the addon stores them
|
|
13
|
+
* (a source camera can change resolution, and a stored pixel rectangle would
|
|
14
|
+
* quietly start cutting the wrong region), so the editor speaks the same
|
|
15
|
+
* language rather than converting at the boundary.
|
|
16
|
+
*
|
|
17
|
+
* The preview is the source cameras' own snapshots, positioned by CSS from the
|
|
18
|
+
* SAME normalized numbers that will become the ffmpeg `crop`/`overlay`. It costs
|
|
19
|
+
* the server nothing and it is wrong in exactly the ways the real composition
|
|
20
|
+
* would be wrong.
|
|
21
|
+
*/
|
|
22
|
+
import { type JSX } from "react";
|
|
1
23
|
export interface CameraGridLayoutEditorProps {
|
|
2
|
-
|
|
24
|
+
readonly deviceId: number;
|
|
3
25
|
}
|
|
4
|
-
export declare function CameraGridLayoutEditor({ deviceId }: CameraGridLayoutEditorProps):
|
|
26
|
+
export declare function CameraGridLayoutEditor({ deviceId }: CameraGridLayoutEditorProps): JSX.Element;
|
|
@@ -1,2 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* ConsumablesPanel — maintenance-items surface for the generic
|
|
3
|
+
* `consumables` capability. A cap-settings component (ui-library),
|
|
4
|
+
* mounted as a cap-contributed top-level device-detail tab via the
|
|
5
|
+
* cap-UI contribution mechanism (the `consumables` cap declares
|
|
6
|
+
* `ui: { kind:'widget', widgetId:'host/consumables-panel', tab:'consumables', topTab:true, ... }`).
|
|
7
|
+
*
|
|
8
|
+
* Reads the cap's pushed runtime-state slice via `useDeviceCapability`
|
|
9
|
+
* and renders one row per item: a fill bar + percentage when `level` is
|
|
10
|
+
* known, else an `ok`/`replace` status pill when `status` is known, else
|
|
11
|
+
* a muted em-dash. When a provider also reports `remaining` (a count in
|
|
12
|
+
* days/hours/cycles), its value is shown alongside — `null` renders a
|
|
13
|
+
* muted em-dash, never a fake `0` (D393); absent `remaining` renders
|
|
14
|
+
* nothing, exactly as before this field existed. A per-item "Replaced"
|
|
15
|
+
* button calls `cap.reset` when the item is `resettable`. The cap is
|
|
16
|
+
* inert until a provider sets items — an empty list renders a muted
|
|
17
|
+
* placeholder.
|
|
18
|
+
*/
|
|
19
|
+
import { type JSX } from "react";
|
|
20
|
+
import type { CapSettingsComponentProps } from "./index";
|
|
21
|
+
export declare function ConsumablesPanel({ deviceId }: CapSettingsComponentProps): JSX.Element;
|
|
@@ -1,23 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type JSX } from "react";
|
|
2
|
+
import type { PlaybackSpan } from "./recording-spans";
|
|
2
3
|
interface CoverageTrackProps {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
4
|
+
readonly windowFrom: number;
|
|
5
|
+
readonly windowTo: number;
|
|
6
|
+
readonly spans: readonly PlaybackSpan[];
|
|
7
|
+
/** Last-seeked position to mark with the playhead, or null. */
|
|
8
|
+
readonly playheadMs: number | null;
|
|
9
|
+
/** Called with the absolute ms a click maps to within the window. */
|
|
10
|
+
readonly onSeek: (clickMs: number) => void;
|
|
11
|
+
/**
|
|
12
|
+
* Drag-scrub callbacks (R9, frame-push mode). When `onScrubEnd` is
|
|
13
|
+
* provided the track switches to pointer-driven scrubbing: pointer-down
|
|
14
|
+
* begins a drag, moves report the hovered epoch, release commits it —
|
|
15
|
+
* a motionless press+release behaves like a seek. `onSeek` is then
|
|
16
|
+
* suppressed (the pointer flow owns the gesture). Omit all three for the
|
|
17
|
+
* classic click-to-seek behaviour.
|
|
18
|
+
*/
|
|
19
|
+
readonly onScrubStart?: () => void;
|
|
20
|
+
readonly onScrubMove?: (ms: number) => void;
|
|
21
|
+
readonly onScrubEnd?: (ms: number) => void;
|
|
21
22
|
}
|
|
22
|
-
export declare function CoverageTrack({ windowFrom, windowTo, spans, playheadMs, onSeek, onScrubStart, onScrubMove, onScrubEnd
|
|
23
|
+
export declare function CoverageTrack({ windowFrom, windowTo, spans, playheadMs, onSeek, onScrubStart, onScrubMove, onScrubEnd }: CoverageTrackProps): JSX.Element | null;
|
|
23
24
|
export {};
|
|
@@ -1,25 +1,26 @@
|
|
|
1
|
-
import { ClipKind } from
|
|
1
|
+
import { type ClipKind } from "./event-thumb";
|
|
2
|
+
import { type JSX } from "react";
|
|
2
3
|
export interface BucketClip {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly timestamp: number;
|
|
6
|
+
readonly kind: ClipKind;
|
|
7
|
+
readonly label: string;
|
|
8
|
+
readonly mediaUrl?: string;
|
|
8
9
|
}
|
|
9
10
|
interface EventBucketStripProps {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
11
|
+
readonly clips: readonly BucketClip[];
|
|
12
|
+
readonly loading: boolean;
|
|
13
|
+
/** Key of the clip whose manifest is resolving, for the spinner. */
|
|
14
|
+
readonly busyKey: string | null;
|
|
15
|
+
readonly onPlay: (clip: BucketClip) => void;
|
|
16
|
+
/** Which kinds are currently enabled for display. */
|
|
17
|
+
readonly enabledKinds: ReadonlySet<ClipKind>;
|
|
18
|
+
/** Called when the user toggles a kind checkbox. */
|
|
19
|
+
readonly onToggleKind: (kind: ClipKind) => void;
|
|
20
|
+
/** True when more results may exist beyond the current page. */
|
|
21
|
+
readonly hasMore: boolean;
|
|
22
|
+
/** Called when the user clicks "Load more". */
|
|
23
|
+
readonly onLoadMore: () => void;
|
|
23
24
|
}
|
|
24
|
-
export declare function EventBucketStrip({ clips, loading, busyKey, onPlay, enabledKinds, onToggleKind, hasMore, onLoadMore
|
|
25
|
+
export declare function EventBucketStrip({ clips, loading, busyKey, onPlay, enabledKinds, onToggleKind, hasMore, onLoadMore }: EventBucketStripProps): JSX.Element;
|
|
25
26
|
export {};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { DensityBucket } from
|
|
1
|
+
import type { DensityBucket } from "./recording-timeline-model";
|
|
2
|
+
import { type JSX } from "react";
|
|
2
3
|
interface EventHeatmapProps {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
readonly windowFrom: number;
|
|
5
|
+
readonly windowTo: number;
|
|
6
|
+
readonly buckets: readonly DensityBucket[];
|
|
7
|
+
readonly selectedIndex: number | null;
|
|
8
|
+
readonly onSelectBucket: (index: number) => void;
|
|
8
9
|
}
|
|
9
|
-
export declare function EventHeatmap({ windowFrom, windowTo, buckets, selectedIndex, onSelectBucket
|
|
10
|
+
export declare function EventHeatmap({ windowFrom, windowTo, buckets, selectedIndex, onSelectBucket }: EventHeatmapProps): JSX.Element | null;
|
|
10
11
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { UsePTZResult } from
|
|
1
|
+
import type { UsePTZResult } from "../../hooks/use-ptz";
|
|
2
2
|
interface HomePresetPickerProps {
|
|
3
|
-
|
|
3
|
+
readonly controls: UsePTZResult;
|
|
4
4
|
}
|
|
5
5
|
export declare function HomePresetPicker({ controls }: HomePresetPickerProps): React.ReactElement | null;
|
|
6
6
|
export {};
|
|
@@ -1,48 +1,150 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* MaskShapeCanvas — ONE shared, Konva-based on-frame "drawing plane" editor
|
|
3
|
+
* that handles ALL four `MaskShape` kinds: `rect`, `polygon`, `grid`, `line`.
|
|
4
|
+
*
|
|
5
|
+
* It is a generalization of the detection `ZoneCanvas` (orchestrator) so that
|
|
6
|
+
* privacy-mask (rect/polygon), motion-zones (grid), and the
|
|
7
|
+
* pipeline-orchestrator zones/lines editor can eventually all share a single
|
|
8
|
+
* editor instead of three bespoke ones. Every coordinate is normalized 0..1 of
|
|
9
|
+
* the camera frame (top-left origin), like every existing on-frame editor.
|
|
10
|
+
*
|
|
11
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
12
|
+
* Behaviours ported (the references are NOT edited — this generalizes them):
|
|
13
|
+
*
|
|
14
|
+
* - From `ZoneCanvas` (orchestrator zone-editor):
|
|
15
|
+
* • ResizeObserver-sized `<Stage>`, `transparent` absolute-fill overlay
|
|
16
|
+
* mode for layering over a stream player, optional `backdrop` slot,
|
|
17
|
+
* pointer-events pass-through while not editing.
|
|
18
|
+
* • polygon draw / vertex-drag / body-drag with optimistic local override
|
|
19
|
+
* + the `useEffect` that drops the override once the controlled prop
|
|
20
|
+
* echoes the commit back, the rAF-throttled cursor ghost-line preview,
|
|
21
|
+
* the `Arrow` tripwire, and the memoised export.
|
|
22
|
+
* - From `PrivacyMaskCanvas`:
|
|
23
|
+
* • rect move + bottom-right-handle resize with 0..1 clamp, polygon
|
|
24
|
+
* vertex add (edge midpoint) / remove (✕, gated by min/max), and the
|
|
25
|
+
* `polygonVertices` {min,max} gate (e.g. Hikvision {min:4,max:4}).
|
|
26
|
+
* - From `MotionGridCanvas`:
|
|
27
|
+
* • grid cell-paint gesture (press-drag paints every touched cell to the
|
|
28
|
+
* value the first-touched cell flipped to), row-major `cells`.
|
|
29
|
+
*
|
|
30
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
31
|
+
* Usage — each consumer maps its own model onto `MaskShapeItem[]` and gates the
|
|
32
|
+
* editor with `supportedShapes`:
|
|
33
|
+
*
|
|
34
|
+
* @example privacy-mask (rect + polygon)
|
|
35
|
+
* ```tsx
|
|
36
|
+
* const items: MaskShapeItem[] = regions.map((r) => ({ id: r.id, shape: r.shape }))
|
|
37
|
+
* <MaskShapeCanvas
|
|
38
|
+
* transparent
|
|
39
|
+
* items={items}
|
|
40
|
+
* supportedShapes={['rect', 'polygon']}
|
|
41
|
+
* polygonVertices={options.polygonVertices} // Hikvision {min:4,max:4}
|
|
42
|
+
* selectedId={selectedId}
|
|
43
|
+
* onSelect={setSelectedId}
|
|
44
|
+
* onShapeChange={(id, shape) =>
|
|
45
|
+
* onRegionsChange(regions.map((r) => (r.id === id ? { ...r, shape } : r)))}
|
|
46
|
+
* onDrawComplete={(shape) => onRegionsChange([...regions, { id: nextId(), shape }])}
|
|
47
|
+
* drawingKind={drawing ? 'rect' : null}
|
|
48
|
+
* />
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @example motion-zones (grid)
|
|
52
|
+
* ```tsx
|
|
53
|
+
* const items: MaskShapeItem[] = [{
|
|
54
|
+
* id: 'motion',
|
|
55
|
+
* shape: { kind: 'grid', gridWidth: w, gridHeight: h, cells },
|
|
56
|
+
* }]
|
|
57
|
+
* <MaskShapeCanvas
|
|
58
|
+
* transparent
|
|
59
|
+
* items={items}
|
|
60
|
+
* supportedShapes={['grid']}
|
|
61
|
+
* grid={{ width: w, height: h }}
|
|
62
|
+
* selectedId="motion"
|
|
63
|
+
* onSelect={() => {}}
|
|
64
|
+
* onShapeChange={(_id, shape) => {
|
|
65
|
+
* if (shape.kind === 'grid') onCellsChange(shape.cells)
|
|
66
|
+
* }}
|
|
67
|
+
* onDrawComplete={() => {}}
|
|
68
|
+
* drawingKind={null}
|
|
69
|
+
* />
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* @example orchestrator (polygon + line/tripwire)
|
|
73
|
+
* ```tsx
|
|
74
|
+
* const items: MaskShapeItem[] = zones.map((z) => ({
|
|
75
|
+
* id: z.id,
|
|
76
|
+
* label: z.name,
|
|
77
|
+
* color: z.color,
|
|
78
|
+
* shape: z.kind === 'tripwire'
|
|
79
|
+
* ? { kind: 'line', points: z.points }
|
|
80
|
+
* : { kind: 'polygon', points: z.points },
|
|
81
|
+
* }))
|
|
82
|
+
* <MaskShapeCanvas
|
|
83
|
+
* transparent
|
|
84
|
+
* items={items}
|
|
85
|
+
* supportedShapes={['polygon', 'line']}
|
|
86
|
+
* selectedId={selectedZoneId}
|
|
87
|
+
* onSelect={onSelectZone}
|
|
88
|
+
* onShapeChange={(id, shape) => {
|
|
89
|
+
* if (shape.kind === 'polygon' || shape.kind === 'line')
|
|
90
|
+
* onZonePointsChange(id, shape.points)
|
|
91
|
+
* }}
|
|
92
|
+
* onDrawComplete={(shape) => onZoneComplete(shape)}
|
|
93
|
+
* drawingKind={drawingKind === 'tripwire' ? 'line' : drawingKind}
|
|
94
|
+
* backdrop={<CameraStreamPlayer ... />}
|
|
95
|
+
* />
|
|
96
|
+
* ```
|
|
97
|
+
*
|
|
98
|
+
* Purely controlled — the parent owns the truth. Every edit fires
|
|
99
|
+
* `onShapeChange(id, shape)` (or `onDrawComplete(shape)` for a freshly-drawn
|
|
100
|
+
* shape) with a brand-new immutable shape object; points and cells are never
|
|
101
|
+
* mutated in place.
|
|
102
|
+
*/
|
|
103
|
+
import { type JSX, type MemoExoticComponent, type ReactNode } from "react";
|
|
104
|
+
import type { MaskShape, MaskShapeKind } from "@camstack/types";
|
|
3
105
|
/** One editable item on the drawing plane. */
|
|
4
106
|
export interface MaskShapeItem {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
107
|
+
readonly id: string | number;
|
|
108
|
+
readonly shape: MaskShape;
|
|
109
|
+
/** Small text label rendered near the shape. */
|
|
110
|
+
readonly label?: string;
|
|
111
|
+
/** Stroke/fill color. Falls back to a sensible per-kind default. */
|
|
112
|
+
readonly color?: string;
|
|
113
|
+
/** `false` → rendered dimmed (and skipped for hit-testing of editing chrome). */
|
|
114
|
+
readonly enabled?: boolean;
|
|
13
115
|
}
|
|
14
116
|
export interface MaskShapeCanvasProps {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
117
|
+
readonly items: MaskShapeItem[];
|
|
118
|
+
readonly selectedId: string | number | null;
|
|
119
|
+
readonly onSelect: (id: string | number | null) => void;
|
|
120
|
+
/** Fired on every edit (controlled — parent owns truth, immutable updates). */
|
|
121
|
+
readonly onShapeChange: (id: string | number, shape: MaskShape) => void;
|
|
122
|
+
/** Fired when a new shape is finished while drawing. */
|
|
123
|
+
readonly onDrawComplete: (shape: MaskShape) => void;
|
|
124
|
+
/** When set, clicks draw a new shape of that kind. */
|
|
125
|
+
readonly drawingKind: MaskShapeKind | null;
|
|
126
|
+
/** Which kinds this mount allows. */
|
|
127
|
+
readonly supportedShapes: readonly MaskShapeKind[];
|
|
128
|
+
/** Transparent absolute-fill overlay mode (layer over a stream player). */
|
|
129
|
+
readonly transparent?: boolean;
|
|
130
|
+
/** Backdrop element rendered behind the Stage in standalone mode. */
|
|
131
|
+
readonly backdrop?: ReactNode;
|
|
132
|
+
/** Gate polygon vertex add/remove (e.g. Hikvision {min:4,max:4}). */
|
|
133
|
+
readonly polygonVertices?: {
|
|
134
|
+
readonly min: number;
|
|
135
|
+
readonly max: number;
|
|
136
|
+
};
|
|
137
|
+
/** Grid dims when drawing/seeding a `grid` shape. */
|
|
138
|
+
readonly grid?: {
|
|
139
|
+
readonly width: number;
|
|
140
|
+
readonly height: number;
|
|
141
|
+
};
|
|
40
142
|
}
|
|
41
|
-
declare function MaskShapeCanvasImpl({ items, selectedId, onSelect, onShapeChange, onDrawComplete, drawingKind, supportedShapes, transparent, backdrop, polygonVertices, grid
|
|
143
|
+
declare function MaskShapeCanvasImpl({ items, selectedId, onSelect, onShapeChange, onDrawComplete, drawingKind, supportedShapes, transparent, backdrop, polygonVertices, grid }: MaskShapeCanvasProps): JSX.Element;
|
|
42
144
|
/**
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
export declare const MaskShapeCanvas:
|
|
145
|
+
* Memoised export. The Konva scene is expensive to re-evaluate (many nodes per
|
|
146
|
+
* item + per-item drag-bound closures) and overlay parents re-render on every
|
|
147
|
+
* detection/motion event. Mirrors ZoneCanvas's `memo`.
|
|
148
|
+
*/
|
|
149
|
+
export declare const MaskShapeCanvas: MemoExoticComponent<typeof MaskShapeCanvasImpl>;
|
|
48
150
|
export {};
|
|
@@ -1,2 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* MotionZonesSettings — management surface for the on-camera
|
|
3
|
+
* `motion-zones` capability. A cap-settings component (ui-library),
|
|
4
|
+
* mounted into the device-detail Config tab via the cap-UI
|
|
5
|
+
* contribution mechanism (the `motion-zones` cap declares a `ui` block).
|
|
6
|
+
*
|
|
7
|
+
* The on-camera motion mask is a SINGLE `grid` region in the shared
|
|
8
|
+
* MaskShape vocabulary (a row-major boolean cell lattice). This component
|
|
9
|
+
* owns its own control panel (Edit toggle, All on / All off / Invert,
|
|
10
|
+
* count, Revert, Save) and paints the editable lattice over the live frame
|
|
11
|
+
* with the shared `MaskShapeCanvas` drawing-plane — registered as a
|
|
12
|
+
* player-overlay layer ONLY while "Edit grid" is toggled on (OFF by
|
|
13
|
+
* default — nothing draws on mount).
|
|
14
|
+
*
|
|
15
|
+
* Detection enable + sensitivity are NOT edited here — they are the
|
|
16
|
+
* camera's on-board motion master switch, owned by the driver's
|
|
17
|
+
* "On-camera motion" settings section. Saving sends a `cells`-only patch
|
|
18
|
+
* (one grid region); enable / sensitivity are left untouched camera-side.
|
|
19
|
+
*
|
|
20
|
+
* ── Resizable input grid (resampled to the camera grid on save) ──────────────
|
|
21
|
+
* The camera's native motion grid (`getOptions().grid`, e.g. 22×18) is the
|
|
22
|
+
* FINEST resolution that round-trips — painting finer than it can't be stored
|
|
23
|
+
* (not reconstructible). So the camera grid is the FLOOR (×1) and the operator
|
|
24
|
+
* picks BIGGER cells: an integer cell-size multiplier (×1/×2/×3) where a UI cell
|
|
25
|
+
* spans an m×m block of camera cells (×2 → quarter as many, ×3 → ninth). The
|
|
26
|
+
* CAMERA grid stays authoritative:
|
|
27
|
+
* - LOAD: the camera grid is COARSENED into the chosen UI resolution (a UI
|
|
28
|
+
* cell is `true` if ANY camera cell in its block is painted) so existing
|
|
29
|
+
* masks display on the bigger-celled surface.
|
|
30
|
+
* - SAVE: the UI grid is EXPANDED back to camera gridWidth×gridHeight — every
|
|
31
|
+
* camera cell takes the value of the UI cell whose block covers it.
|
|
32
|
+
* At ×1 both transforms are the identity, so the camera-grid round-trip is
|
|
33
|
+
* exact; at higher multipliers `coarsen(expand(uiCells)) === uiCells`, so an
|
|
34
|
+
* edit made at the chosen resolution survives the round-trip exactly. The
|
|
35
|
+
* component's draft (`uiCells`) lives at the UI resolution; the last-saved truth
|
|
36
|
+
* (`committedCamera`) and every comparison stay anchored to the camera-native
|
|
37
|
+
* grid so `dirty`/Save/Revert math is resolution-independent.
|
|
38
|
+
*/
|
|
39
|
+
import { type JSX } from "react";
|
|
40
|
+
import type { CapSettingsComponentProps } from "./index";
|
|
41
|
+
export declare function MotionZonesSettings({ deviceId }: CapSettingsComponentProps): JSX.Element | null;
|
|
@@ -1,2 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* NavigationPanel — the `navigation` cap's own panel (`host/navigation-panel`):
|
|
3
|
+
* a drive pad, the data-driven action and sound buttons, the fill light.
|
|
4
|
+
*
|
|
5
|
+
* Nothing here knows a vendor: the buttons come from `listActions()` (enabled
|
|
6
|
+
* entries only, icons mapped from the entry's lucide hint), the primitives
|
|
7
|
+
* from `getFeatures()`, and the live chips from the `navigation` slice. Hold
|
|
8
|
+
* a drive button to move — the hook nudges at 1 Hz and stops on release, like
|
|
9
|
+
* the robot app's joystick. The manual level slider appears only in manual
|
|
10
|
+
* mode, as the cap's own contract asks.
|
|
11
|
+
*/
|
|
12
|
+
import { type JSX } from "react";
|
|
13
|
+
import type { CapSettingsComponentProps } from "./index";
|
|
14
|
+
export declare function NavigationPanel({ deviceId }: CapSettingsComponentProps): JSX.Element;
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { type JSX } from "react";
|
|
2
|
+
import type { CapSettingsComponentProps } from "./index";
|
|
3
|
+
export declare function PrivacyMaskSettings({ deviceId }: CapSettingsComponentProps): JSX.Element | null;
|
|
@@ -1,2 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* PtzPanel — live pan/tilt/zoom controls for the `ptz` capability. A
|
|
3
|
+
* cap-settings component (ui-library), mounted as a cap-contributed
|
|
4
|
+
* top-level device-detail tab via the cap-UI contribution mechanism
|
|
5
|
+
* (the `ptz` cap declares `ui: { tab: 'ptz', kind: 'static', ... }`).
|
|
6
|
+
*
|
|
7
|
+
* Consolidates the former admin-ui `PTZPanelContent`: `usePTZ` drives
|
|
8
|
+
* the controls, `PTZOverlay` renders them (`mode='panel'`), and an
|
|
9
|
+
* Autofocus toggle is shown only when `getOptions().hasAutofocus`.
|
|
10
|
+
* Autotrack is its own cap-UI contribution (`ptz-autotrack`), mounted
|
|
11
|
+
* independently by the contribution mechanism — not nested here.
|
|
12
|
+
*/
|
|
13
|
+
import { type JSX } from "react";
|
|
14
|
+
import type { CapSettingsComponentProps } from "./index";
|
|
15
|
+
export declare function PtzPanel({ deviceId }: CapSettingsComponentProps): JSX.Element | null;
|
|
@@ -1,40 +1,41 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { JSX } from "react";
|
|
2
|
+
import type { RecordingBand } from "@camstack/types";
|
|
2
3
|
interface RecordingBandsEditorProps {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
readonly bands: readonly RecordingBand[];
|
|
5
|
+
readonly onChange: (bands: RecordingBand[]) => void;
|
|
6
|
+
/** Present when the host knows the camera — enables the sensor picker on events bands. */
|
|
7
|
+
readonly sensorContext?: RecordingSensorContext;
|
|
7
8
|
}
|
|
8
9
|
/**
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
export declare function RecordingBandsEditor({ bands, onChange, sensorContext
|
|
10
|
+
* The band table — the ONLY authoring surface for recording intent since the
|
|
11
|
+
* legacy mode/schedules/triggers/rules model was retired (2026-07-30).
|
|
12
|
+
*
|
|
13
|
+
* Each row is one `RecordingBand`: when it applies (weekdays + `HH:MM` span,
|
|
14
|
+
* `end <= start` wraps past midnight) and how it records (continuous, or events
|
|
15
|
+
* with its own triggers and pre/post buffers). No band covering *now* = nothing
|
|
16
|
+
* is recorded then; "off" is the absence of a band, never a band value.
|
|
17
|
+
*/
|
|
18
|
+
export declare function RecordingBandsEditor({ bands, onChange, sensorContext }: RecordingBandsEditorProps): JSX.Element;
|
|
18
19
|
/**
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
* The camera a band belongs to, for the sensor picker: its own id is never a
|
|
21
|
+
* sensor of itself, and its location is what the picker suggests first.
|
|
22
|
+
*/
|
|
22
23
|
export interface RecordingSensorContext {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
24
|
+
readonly cameraId: number;
|
|
25
|
+
readonly location: string | null;
|
|
26
|
+
/**
|
|
27
|
+
* Does this camera publish its own `recording-signal` — the LEVEL the
|
|
28
|
+
* `on-device-decision` MODE follows (D380)? Asked of the camera's bindings by
|
|
29
|
+
* the host, and read by `RecordingSettings` to decide whether that mode can
|
|
30
|
+
* be picked. It is no longer a band trigger: a band is an HOUR, and this
|
|
31
|
+
* feature has none to program. Absent = the host did not ask.
|
|
32
|
+
*/
|
|
33
|
+
readonly deviceSignal?: DeviceSignalPresence;
|
|
33
34
|
}
|
|
34
35
|
/**
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
export type DeviceSignalPresence =
|
|
36
|
+
* What the host knows about the camera's `recording-signal` binding. Four
|
|
37
|
+
* states, not a boolean (D315): `pending` and `unknown` must render as
|
|
38
|
+
* "not yet known", never as "this camera has no signal".
|
|
39
|
+
*/
|
|
40
|
+
export type DeviceSignalPresence = "pending" | "present" | "absent" | "unknown";
|
|
40
41
|
export {};
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { type JSX } from "react";
|
|
2
|
+
import type { HostWidgetProps } from "../../widgets/host-widgets";
|
|
3
|
+
export declare function RecordingPanel({ deviceId }: HostWidgetProps): JSX.Element;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { type JSX } from "react";
|
|
2
|
+
import type { RecordingConfig, CamProfile } from "@camstack/types";
|
|
3
|
+
import { type RecordingSensorContext } from "./RecordingBandsEditor";
|
|
3
4
|
interface RecordingSettingsProps {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
readonly initial: RecordingConfig;
|
|
6
|
+
/** Broker-assigned profile slots for this camera (already deduped). */
|
|
7
|
+
readonly availableProfiles: readonly CamProfile[];
|
|
8
|
+
readonly saving: boolean;
|
|
9
|
+
readonly onSave: (config: RecordingConfig) => void;
|
|
10
|
+
/** The camera this config belongs to — enables the sensor picker on events bands. */
|
|
11
|
+
readonly sensorContext?: RecordingSensorContext;
|
|
11
12
|
}
|
|
12
|
-
export declare function RecordingSettings({ initial, availableProfiles, saving, onSave, sensorContext
|
|
13
|
+
export declare function RecordingSettings({ initial, availableProfiles, saving, onSave, sensorContext }: RecordingSettingsProps): JSX.Element | null;
|
|
13
14
|
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { type JSX } from "react";
|
|
1
2
|
interface RecordingTimelineProps {
|
|
2
|
-
|
|
3
|
+
readonly deviceId: number;
|
|
3
4
|
}
|
|
4
|
-
export declare function RecordingTimeline({ deviceId }: RecordingTimelineProps):
|
|
5
|
+
export declare function RecordingTimeline({ deviceId }: RecordingTimelineProps): JSX.Element;
|
|
5
6
|
export {};
|