@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,53 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
* SceneMonitorEditor — the per-camera half of the Scenes surface.
|
|
3
|
-
*
|
|
4
|
-
* **Imported directly, not resolved as a widget.** It briefly lived behind the
|
|
5
|
-
* host widget `host/scene-monitor-editor`, mounted as a "Scenes" tab on one
|
|
6
|
-
* camera's detail page. That put a standing question about the property ("is
|
|
7
|
-
* the bin still out") one camera deep, where the operator's actual question —
|
|
8
|
-
* "which of my scenes have tripped" — could not be asked at all. The overview
|
|
9
|
-
* is now the top-level `/scenes` page; this component is what that page opens
|
|
10
|
-
* once a camera is chosen, in a dialog. The widget id and its `deviceConfig`
|
|
11
|
-
* declaration are both gone, in the same commit, because
|
|
12
|
-
* `scripts/check-host-widget-resolves.ts` checks both directions.
|
|
13
|
-
*
|
|
14
|
-
* It renders BARE — no `WidgetPanel` — because its only caller supplies a
|
|
15
|
-
* dialog header, and two stacked titles read as a layout bug.
|
|
16
|
-
*
|
|
17
|
-
* ## The flow, in the order the operator meets it
|
|
18
|
-
*
|
|
19
|
-
* 1. **Draw a region on the still frame.** A rect over a SNAPSHOT, not the live
|
|
20
|
-
* player: a scene is defined against a photograph, and drawing on a moving
|
|
21
|
-
* picture makes it impossible to see whether the box actually contains the
|
|
22
|
-
* bin. The editor starts in draw mode and warns above ~40 % of the frame,
|
|
23
|
-
* because a full-frame scene is dominated by weather, sky and parked cars —
|
|
24
|
-
* it will not work, and it will look broken rather than misconfigured.
|
|
25
|
-
* 2. **Capture the initial state, per lighting variant.** Two buttons, Daylight
|
|
26
|
-
* and Night (IR), each forcing a fresh snapshot. The variant is DETECTED
|
|
27
|
-
* from the frame and shown rather than asked; the buttons exist so the
|
|
28
|
-
* operator can say "capture this as the night reference" while standing
|
|
29
|
-
* outside at 22:00 — which is exactly why **Night (IR) is labelled
|
|
30
|
-
* optional**. Almost nobody does that, and a scene captured only in daylight
|
|
31
|
-
* is a configuration, not a defect: under the default
|
|
32
|
-
* `onUncoveredCondition: 'skip'` the infrared hours are simply sat out.
|
|
33
|
-
* 3. **Read the coverage line.** "Daylight ✓ · Night (IR) ✗ — optional; checks
|
|
34
|
-
* in night (ir) are skipped". This feature's failure mode is silence that
|
|
35
|
-
* reads as "nothing has happened", and that one line is the difference
|
|
36
|
-
* between a five-minute fix and a session of guessing — but it must say what
|
|
37
|
-
* HAPPENS, not complain. It used to end "reports 'can't tell'", which made a
|
|
38
|
-
* correctly configured scene look broken every night.
|
|
39
|
-
* 4. **Reset.** Clears the flag AND re-captures the baseline for the current
|
|
40
|
-
* light, because the bin never goes back in exactly the same spot.
|
|
41
|
-
* 5. **Settings.** Every knob the model has actually carried since the provider
|
|
42
|
-
* shipped — how often it looks, how closely it has to match, how many
|
|
43
|
-
* agreeing checks a change costs, what a missing light means, which boolean
|
|
44
|
-
* drives notifications, and whether a vision model adjudicates a flip. None
|
|
45
|
-
* of it was reachable before; see `SceneSettingsForm`.
|
|
46
|
-
*
|
|
47
|
-
* Live state arrives through the cap's `status.kind: 'push'` runtime slice, so
|
|
48
|
-
* the card updates itself without polling.
|
|
49
|
-
*/
|
|
1
|
+
import { type JSX } from "react";
|
|
50
2
|
export interface SceneMonitorEditorProps {
|
|
51
|
-
|
|
3
|
+
readonly deviceId: number;
|
|
52
4
|
}
|
|
53
|
-
export declare function SceneMonitorEditor({ deviceId }: SceneMonitorEditorProps):
|
|
5
|
+
export declare function SceneMonitorEditor({ deviceId }: SceneMonitorEditorProps): JSX.Element | null;
|
|
@@ -1,36 +1,75 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* SceneReferenceGallery — the photographs a scene is actually judging against,
|
|
3
|
+
* grouped by lighting variant, each individually deletable.
|
|
4
|
+
*
|
|
5
|
+
* ## Why it has to exist
|
|
6
|
+
*
|
|
7
|
+
* A scene's whole answer is "does this region still look like the photograph".
|
|
8
|
+
* Until now the operator could see a COUNT of references and never the
|
|
9
|
+
* references themselves, which makes the two failure modes indistinguishable
|
|
10
|
+
* from the outside: a blurry capture taken while a van was in the way poisons a
|
|
11
|
+
* condition forever, and from a cosine score there is no way to tell which one
|
|
12
|
+
* it was. `deleteReference` shipped with the cap for exactly this and had no
|
|
13
|
+
* caller.
|
|
14
|
+
*
|
|
15
|
+
* ## The image
|
|
16
|
+
*
|
|
17
|
+
* A bare `<img>` against the `event-media` data plane
|
|
18
|
+
* (`/addon/pipeline-analytics/event-media/m/<mediaId>` — D482), which is
|
|
19
|
+
* `access: 'authenticated'` — that accepts the `camstack_session` cookie, and a
|
|
20
|
+
* cookie is the only credential an `<img>` can send. Same mechanism, and the
|
|
21
|
+
* same reasoning, as `use-device-snapshot`; no bearer-token blob fetch is
|
|
22
|
+
* needed and no second copy of the auth plumbing is introduced here.
|
|
23
|
+
*
|
|
24
|
+
* `SceneReference.thumbnailMediaId` finally IS a media row id (D482). It was
|
|
25
|
+
* named `…MediaId` while holding a composite MediaStore key
|
|
26
|
+
* (`scene:<ownerId>:thumbnailSmall:<ts>`), which this component read
|
|
27
|
+
* POSITIONALLY for its owner id — a name that described the right design
|
|
28
|
+
* beside a value that did not, which is the shape of leftover this repo has
|
|
29
|
+
* been bitten by three times. The tile now addresses the row.
|
|
30
|
+
*
|
|
31
|
+
* **A missing blob is normal, not exceptional.** Reference thumbnails written
|
|
32
|
+
* before the `ownerKind: 'scene'` fix carried an `ownerId` no event row backs,
|
|
33
|
+
* which made them eligible for the orphan sweep — so on an existing install
|
|
34
|
+
* some of these ids resolve to nothing. That must degrade to a dated
|
|
35
|
+
* placeholder: the reference is still real, still being scored against, and
|
|
36
|
+
* still deletable. A gallery that blanks or throws over a missing picture would
|
|
37
|
+
* take the delete button away exactly when it is needed.
|
|
38
|
+
*/
|
|
39
|
+
import type { SceneMonitor, SceneReference } from "@camstack/types";
|
|
40
|
+
import { type JSX } from "react";
|
|
2
41
|
/** The hub-proxied prefix for the pipeline-analytics event-media data plane. */
|
|
3
42
|
export declare const SCENE_MEDIA_BASE: string;
|
|
4
43
|
/** One reference, with the coordinates `deleteReference` addresses it by. */
|
|
5
44
|
export interface SceneReferenceTile {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
45
|
+
readonly stateId: string;
|
|
46
|
+
/** Index into THAT state's `references` array — the cap's own addressing. */
|
|
47
|
+
readonly index: number;
|
|
48
|
+
readonly reference: SceneReference;
|
|
10
49
|
}
|
|
11
50
|
export interface SceneReferenceGroup {
|
|
12
|
-
|
|
13
|
-
|
|
51
|
+
readonly condition: string;
|
|
52
|
+
readonly tiles: readonly SceneReferenceTile[];
|
|
14
53
|
}
|
|
15
54
|
/**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
55
|
+
* Flatten `states[].references[]` into per-condition groups while keeping each
|
|
56
|
+
* reference's `(stateId, index)` — the pair `deleteReference` takes.
|
|
57
|
+
*
|
|
58
|
+
* The index is deliberately the position in the state's OWN array rather than
|
|
59
|
+
* anything derived from the grouping: an index computed over the grouped view
|
|
60
|
+
* would address a different reference the moment a scene holds two conditions,
|
|
61
|
+
* and the operator would delete the wrong photograph with no way to tell.
|
|
62
|
+
*/
|
|
24
63
|
export declare function groupReferences(monitor: SceneMonitor): readonly SceneReferenceGroup[];
|
|
25
64
|
/** Total references across every state — the count that decides whether a
|
|
26
|
-
|
|
65
|
+
* delete leaves the scene with no idea what "normal" looks like. */
|
|
27
66
|
export declare function totalReferences(monitor: SceneMonitor): number;
|
|
28
67
|
export interface SceneReferenceGalleryProps {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
68
|
+
readonly monitor: SceneMonitor;
|
|
69
|
+
readonly disabled: boolean;
|
|
70
|
+
readonly onDelete: (input: {
|
|
71
|
+
stateId: string;
|
|
72
|
+
index: number;
|
|
73
|
+
}) => void;
|
|
35
74
|
}
|
|
36
|
-
export declare function SceneReferenceGallery({ monitor, disabled, onDelete }: SceneReferenceGalleryProps):
|
|
75
|
+
export declare function SceneReferenceGallery({ monitor, disabled, onDelete }: SceneReferenceGalleryProps): JSX.Element;
|
|
@@ -1,21 +1,57 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* SceneSettingsForm — every knob a scene actually has, per scene.
|
|
3
|
+
*
|
|
4
|
+
* ## Why this exists
|
|
5
|
+
*
|
|
6
|
+
* The model has carried `enabled`, `triggerMode`, `checkIntervalSec`,
|
|
7
|
+
* `check.threshold`, `check.hysteresisCount`, `quietSeconds`,
|
|
8
|
+
* `minObservationSpacingSec`, `emit`, `autoRestore` and `confirm` since the
|
|
9
|
+
* provider shipped, and `updateScene` has accepted a patch for all of them —
|
|
10
|
+
* but the editor exposed **none**. Every scene therefore ran on the creation
|
|
11
|
+
* defaults, and an operator whose scene fired too eagerly (or not at all) had
|
|
12
|
+
* no move available except deleting it and drawing it again. Tuning knobs that
|
|
13
|
+
* exist and cannot be reached are worse than absent ones: they read, from the
|
|
14
|
+
* code, as a feature that shipped.
|
|
15
|
+
*
|
|
16
|
+
* ## What is deliberately NOT here
|
|
17
|
+
*
|
|
18
|
+
* `check.mode: 'llm'`. The cap declares it and the engine has an adapter seam
|
|
19
|
+
* for it, but no production caller supplies `SceneEngineDeps.llm` — an
|
|
20
|
+
* `llm`-mode scene reports `availability: 'unavailable'` forever. Offering the
|
|
21
|
+
* switch would let an operator convert a working scene into a permanently
|
|
22
|
+
* broken one in one click. The vision model reaches a scene through the
|
|
23
|
+
* **`confirm`** adjudicator instead, which IS wired (`SceneConfirmGate`, built
|
|
24
|
+
* unconditionally at the engine's construction site) and is the better
|
|
25
|
+
* topology anyway: CLIP proposes at the poll cadence, the model is asked only
|
|
26
|
+
* on a candidate flip.
|
|
27
|
+
*
|
|
28
|
+
* ## Editing model
|
|
29
|
+
*
|
|
30
|
+
* Local draft, committed on blur when it differs — the `AutotrackSection`
|
|
31
|
+
* shape. Selects and checkboxes commit on change, because there is no
|
|
32
|
+
* intermediate state worth protecting. There is no second store and no "save"
|
|
33
|
+
* button: `updateScene` writes the authority the provider already owns and the
|
|
34
|
+
* caller refetches (D62).
|
|
35
|
+
*/
|
|
36
|
+
import type { SceneCheck, SceneMonitor, SceneUncoveredPolicy } from "@camstack/types";
|
|
37
|
+
import { type JSX } from "react";
|
|
2
38
|
/** The subset of `updateScene`'s patch this form can produce. */
|
|
3
39
|
export interface SceneSettingsPatch {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
40
|
+
readonly label?: string;
|
|
41
|
+
readonly enabled?: boolean;
|
|
42
|
+
readonly triggerMode?: SceneMonitor["triggerMode"];
|
|
43
|
+
readonly checkIntervalSec?: number;
|
|
44
|
+
readonly check?: SceneCheck;
|
|
45
|
+
readonly quietSeconds?: number;
|
|
46
|
+
readonly minObservationSpacingSec?: number;
|
|
47
|
+
readonly emit?: SceneMonitor["emit"];
|
|
48
|
+
readonly autoRestore?: boolean;
|
|
49
|
+
readonly onUncoveredCondition?: SceneUncoveredPolicy;
|
|
50
|
+
readonly confirm?: SceneMonitor["confirm"] | null;
|
|
15
51
|
}
|
|
16
52
|
export interface SceneSettingsFormProps {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
53
|
+
readonly monitor: SceneMonitor;
|
|
54
|
+
readonly disabled: boolean;
|
|
55
|
+
readonly onPatch: (patch: SceneSettingsPatch) => void;
|
|
20
56
|
}
|
|
21
|
-
export declare function SceneSettingsForm({ monitor, disabled, onPatch }: SceneSettingsFormProps):
|
|
57
|
+
export declare function SceneSettingsForm({ monitor, disabled, onPatch }: SceneSettingsFormProps): JSX.Element;
|
|
@@ -1,24 +1,25 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type JSX } from "react";
|
|
2
|
+
import { type DayWindow } from "./recording-timeline-model";
|
|
2
3
|
interface TimelineControlsProps {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
4
|
+
/** Currently selected calendar day. */
|
|
5
|
+
readonly day: Date;
|
|
6
|
+
/** Called when the user picks a new day. */
|
|
7
|
+
readonly onDayChange: (d: Date) => void;
|
|
8
|
+
/** Current zoom+pan view window. */
|
|
9
|
+
readonly view: DayWindow;
|
|
10
|
+
/** Full day bounds (used for zoom/pan clamping). */
|
|
11
|
+
readonly dayBounds: DayWindow;
|
|
12
|
+
/** Called when zoom changes the view. */
|
|
13
|
+
readonly onViewChange: (w: DayWindow) => void;
|
|
13
14
|
}
|
|
14
15
|
/**
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
export declare function TimelineControls({ day, onDayChange, view, dayBounds, onViewChange
|
|
16
|
+
* Date selector + prev/next pan + zoom-in / zoom-out buttons for the recording
|
|
17
|
+
* timeline. Zoom cycles through ZOOM_LEVELS (widest → narrowest), anchored on
|
|
18
|
+
* the view's RIGHT edge — so on today's timeline "now" stays pinned to the right
|
|
19
|
+
* instead of drifting to a midday range. The ◀ / ▶ buttons step the visible
|
|
20
|
+
* window earlier/later within the day (the discoverable equivalent of the
|
|
21
|
+
* horizontal wheel-pan wired in RecordingTimeline), so a zoomed-in day can be
|
|
22
|
+
* navigated back and forth without a mouse wheel.
|
|
23
|
+
*/
|
|
24
|
+
export declare function TimelineControls({ day, onDayChange, view, dayBounds, onViewChange }: TimelineControlsProps): JSX.Element | null;
|
|
24
25
|
export {};
|
|
@@ -1,119 +1,119 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
* The pure half of the camera-grid layout editor: what a grid IS on this side
|
|
3
|
+
* of the wire, and the geometry the drag handles apply.
|
|
4
|
+
*
|
|
5
|
+
* Both rectangles an editor manipulates are NORMALIZED [0,1] — the crop taken
|
|
6
|
+
* out of a source, and the cell it lands in. The addon stores them that way so
|
|
7
|
+
* a source camera that changes resolution does not silently start cutting the
|
|
8
|
+
* wrong part of the picture, and the editor has to speak the same language or
|
|
9
|
+
* the conversion becomes a second place the convention can drift.
|
|
10
|
+
*/
|
|
11
11
|
export interface GridNormalizedRect {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
readonly x: number;
|
|
13
|
+
readonly y: number;
|
|
14
|
+
readonly width: number;
|
|
15
|
+
readonly height: number;
|
|
16
16
|
}
|
|
17
17
|
export interface GridLayoutCell {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
readonly deviceId: number;
|
|
19
|
+
/** The part of the SOURCE taken, normalized against the source. */
|
|
20
|
+
readonly source: GridNormalizedRect;
|
|
21
|
+
/** Where it lands, normalized against the CANVAS. */
|
|
22
|
+
readonly cell: GridNormalizedRect;
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
* Which profiles this grid can compose, and which sources stop it.
|
|
26
|
+
*
|
|
27
|
+
* Read-only in the editor. The operator does not choose what is on offer — the
|
|
28
|
+
* source cameras do, by what they have assigned — and a checkbox that pretended
|
|
29
|
+
* otherwise would publish a composition with a hole in it.
|
|
30
|
+
*/
|
|
31
31
|
export interface GridProfileOffer {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
32
|
+
readonly profile: "high" | "mid" | "low";
|
|
33
|
+
readonly offered: boolean;
|
|
34
|
+
readonly missingSources: readonly number[];
|
|
35
|
+
/**
|
|
36
|
+
* The canvas this profile composes onto, `WxH`, or empty when it is not
|
|
37
|
+
* offered. DERIVED — the operator no longer types a resolution, so this is
|
|
38
|
+
* the only place the grid's actual size is ever stated.
|
|
39
|
+
*/
|
|
40
|
+
readonly canvas: string;
|
|
41
|
+
/**
|
|
42
|
+
* Whether this profile is PUBLISHED, of the ones the grid could serve.
|
|
43
|
+
*
|
|
44
|
+
* A grid's `high` composes its sources' `high`, so on a 4K fleet it is a 4K
|
|
45
|
+
* canvas built from 4K decodes — an opt-in, not something a viewer's adaptive
|
|
46
|
+
* should be handed by climbing to the top rung it can see.
|
|
47
|
+
*/
|
|
48
|
+
readonly published: boolean;
|
|
49
49
|
}
|
|
50
50
|
export interface GridLayoutView {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
51
|
+
readonly instanceId: string;
|
|
52
|
+
readonly deviceId: number;
|
|
53
|
+
readonly name: string;
|
|
54
|
+
readonly fps: number;
|
|
55
|
+
readonly cells: readonly GridLayoutCell[];
|
|
56
|
+
readonly profiles: readonly GridProfileOffer[];
|
|
57
57
|
}
|
|
58
58
|
/**
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
export type GridLayoutReadOutcome = GridLayoutView | null |
|
|
59
|
+
* What a read of the grid can be.
|
|
60
|
+
*
|
|
61
|
+
* Three OUTCOMES, never two: a grid, an answer of "this device is not a grid"
|
|
62
|
+
* (`null`), and a reply this page could not read (`'unreadable'`). Collapsing
|
|
63
|
+
* the last two makes "not yet known" indistinguishable from "not installed",
|
|
64
|
+
* which is exactly the failure D315 exists to stop.
|
|
65
|
+
*/
|
|
66
|
+
export type GridLayoutReadOutcome = GridLayoutView | null | "unreadable";
|
|
67
67
|
/**
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
68
|
+
* Parse the `camera-grid-layout.getLayout` reply. See {@link GridLayoutReadOutcome}.
|
|
69
|
+
*
|
|
70
|
+
* The cap answers the view itself, or `null` — there is no envelope. It used to
|
|
71
|
+
* come back as `{ grid }` from `addons.custom`, which was the mechanism the
|
|
72
|
+
* widget reached the addon through before the geometry had a capability of its
|
|
73
|
+
* own; the widget now asks THE CAMERA and the envelope went with the bridge.
|
|
74
|
+
*/
|
|
75
75
|
export declare function parseGridView(raw: unknown): GridLayoutReadOutcome;
|
|
76
76
|
/**
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
* Keep a rectangle inside the unit square.
|
|
78
|
+
*
|
|
79
|
+
* The addon THROWS on a rectangle that falls outside — a silently clipped
|
|
80
|
+
* picture is worse than a refusal — so the editor must never hand it one.
|
|
81
|
+
*/
|
|
82
82
|
export declare function clampNormalizedRect(rect: GridNormalizedRect): GridNormalizedRect;
|
|
83
83
|
/** Drag: translate by a normalized delta, clamped. */
|
|
84
84
|
export declare function moveNormalizedRect(rect: GridNormalizedRect, dx: number, dy: number): GridNormalizedRect;
|
|
85
85
|
/** Resize from the bottom-right corner: the origin stays put. */
|
|
86
86
|
export declare function resizeNormalizedRect(rect: GridNormalizedRect, dw: number, dh: number): GridNormalizedRect;
|
|
87
87
|
/** The eight grips on a rectangle. A corner moves two edges, an edge one. */
|
|
88
|
-
export type GridResizeHandle =
|
|
88
|
+
export type GridResizeHandle = "nw" | "n" | "ne" | "e" | "se" | "s" | "sw" | "w";
|
|
89
89
|
/**
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
90
|
+
* Resize from ANY handle: the opposite side is the anchor.
|
|
91
|
+
*
|
|
92
|
+
* The editor had one grip, in the bottom-right, which meant a cell could only
|
|
93
|
+
* grow away from its origin — to move its top edge an operator had to drag the
|
|
94
|
+
* whole cell and then resize it back. The rectangle is expressed as its two
|
|
95
|
+
* edges here rather than origin+extent, because that is what makes "the
|
|
96
|
+
* opposite edge does not move" fall out instead of being arithmetic to get
|
|
97
|
+
* wrong. `clampNormalizedRect` still has the last word: the addon THROWS on a
|
|
98
|
+
* rectangle outside the unit square.
|
|
99
|
+
*/
|
|
100
100
|
export declare function resizeNormalizedRectFrom(rect: GridNormalizedRect, handle: GridResizeHandle, dx: number, dy: number): GridNormalizedRect;
|
|
101
101
|
/**
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
102
|
+
* Tile the whole canvas with `count` cells, leaving no gap.
|
|
103
|
+
*
|
|
104
|
+
* Autofill exists because the useful answer to "put these four cameras up" is
|
|
105
|
+
* almost never the one hand-dragging produces: rectangles land a pixel apart
|
|
106
|
+
* and the composition shows black seams the operator cannot see in the editor
|
|
107
|
+
* but will see in the stream.
|
|
108
|
+
*
|
|
109
|
+
* The shape is the near-square one — `ceil(sqrt(n))` columns — and a short last
|
|
110
|
+
* row STRETCHES to the full width rather than leaving a hole. Three cameras
|
|
111
|
+
* become two over one, not a 2x2 with an empty quarter, which is precisely the
|
|
112
|
+
* layout autofill is asked to avoid.
|
|
113
|
+
*
|
|
114
|
+
* Aspect is deliberately not considered: these are CANVAS fractions, and what a
|
|
115
|
+
* source shows inside its cell is the crop's business (the source rectangle),
|
|
116
|
+
* not the placement's. Mixing the two here would silently re-crop every cell
|
|
117
|
+
* whenever the canvas was resized.
|
|
118
|
+
*/
|
|
119
119
|
export declare function autofillCellRects(count: number): readonly GridNormalizedRect[];
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
import { type JSX } from "react";
|
|
2
|
+
export type ClipKind = "motion" | "object" | "audio";
|
|
2
3
|
interface EventThumbProps {
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
readonly mediaUrl?: string;
|
|
5
|
+
readonly kind: ClipKind;
|
|
5
6
|
}
|
|
6
|
-
export declare function EventThumb({ mediaUrl, kind }: EventThumbProps):
|
|
7
|
-
export declare function EventKindIcon({ kind, large
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}):
|
|
7
|
+
export declare function EventThumb({ mediaUrl, kind }: EventThumbProps): JSX.Element;
|
|
8
|
+
export declare function EventKindIcon({ kind, large }: {
|
|
9
|
+
readonly kind: ClipKind;
|
|
10
|
+
readonly large?: boolean;
|
|
11
|
+
}): JSX.Element;
|
|
11
12
|
export {};
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
export { AutotrackSection } from
|
|
2
|
-
export { ConsumablesPanel } from
|
|
3
|
-
export type { MaskShapeCanvasProps, MaskShapeItem } from
|
|
4
|
-
export { MaskShapeCanvas } from
|
|
5
|
-
export { MotionZonesSettings } from
|
|
6
|
-
export { PrivacyMaskSettings } from
|
|
7
|
-
export { NavigationPanel } from
|
|
8
|
-
export { PtzPanel } from
|
|
9
|
-
export { RecordingBandsEditor } from
|
|
10
|
-
export { RecordingPanel } from
|
|
11
|
-
export { RecordingSettings } from
|
|
12
|
-
export { SceneMonitorEditor } from
|
|
1
|
+
export { AutotrackSection } from "./AutotrackSection";
|
|
2
|
+
export { ConsumablesPanel } from "./ConsumablesPanel";
|
|
3
|
+
export type { MaskShapeCanvasProps, MaskShapeItem } from "./MaskShapeCanvas";
|
|
4
|
+
export { MaskShapeCanvas } from "./MaskShapeCanvas";
|
|
5
|
+
export { MotionZonesSettings } from "./MotionZonesSettings";
|
|
6
|
+
export { PrivacyMaskSettings } from "./PrivacyMaskSettings";
|
|
7
|
+
export { NavigationPanel } from "./NavigationPanel";
|
|
8
|
+
export { PtzPanel } from "./PtzPanel";
|
|
9
|
+
export { RecordingBandsEditor } from "./RecordingBandsEditor";
|
|
10
|
+
export { RecordingPanel } from "./RecordingPanel";
|
|
11
|
+
export { RecordingSettings } from "./RecordingSettings";
|
|
12
|
+
export { SceneMonitorEditor } from "./SceneMonitorEditor";
|
|
13
13
|
/**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
* Props every cap-settings component receives.
|
|
15
|
+
*
|
|
16
|
+
* Components are resolved by `componentId` through the admin-ui
|
|
17
|
+
* `UI_COMPONENTS` registry (the cap-name-keyed `CAP_SETTINGS_COMPONENTS`
|
|
18
|
+
* registry has been retired). This shape mirrors the admin-ui
|
|
19
|
+
* `UiComponentProps` contract.
|
|
20
|
+
*/
|
|
21
21
|
export interface CapSettingsComponentProps {
|
|
22
|
-
|
|
22
|
+
readonly deviceId: number;
|
|
23
23
|
}
|