@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,229 +1,235 @@
|
|
|
1
|
-
import { CamProfile, WebrtcSessionDebug } from
|
|
2
|
-
import { StreamChoice } from
|
|
3
|
-
import { ClientStreamHints, SignalingResult, ClientOfferResult } from
|
|
4
|
-
import { ApplyDownlinkProbe, DownlinkProbeAnswer } from
|
|
1
|
+
import type { CamProfile, WebrtcSessionDebug } from "@camstack/types";
|
|
2
|
+
import type { StreamChoice } from "../composites/stream-panel";
|
|
3
|
+
import type { ClientStreamHints, SignalingResult, ClientOfferResult } from "../composites/camera-stream-player";
|
|
4
|
+
import type { ApplyDownlinkProbe, DownlinkProbeAnswer } from "../composites/adaptive-downlink";
|
|
5
5
|
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
* Discriminated WebRTC target — same shape as `WebrtcStreamTarget` on
|
|
7
|
+
* the backend cap. The `profile` tier uses the canonical `CamProfile`
|
|
8
|
+
* enum so an invalid tier is a compile error.
|
|
9
|
+
*/
|
|
10
10
|
export type WebrtcTarget = {
|
|
11
|
-
|
|
11
|
+
readonly kind: "adaptive";
|
|
12
12
|
} | {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
readonly kind: "profile";
|
|
14
|
+
readonly profile: CamProfile;
|
|
15
15
|
} | {
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
readonly kind: "cam-stream";
|
|
17
|
+
readonly camStreamId: string;
|
|
18
18
|
};
|
|
19
19
|
/** Mutation call shape: `.mutate(input)` → Promise. */
|
|
20
|
-
interface MutateFn<
|
|
21
|
-
|
|
20
|
+
interface MutateFn<
|
|
21
|
+
I,
|
|
22
|
+
O
|
|
23
|
+
> {
|
|
24
|
+
mutate(input: I): Promise<O>;
|
|
22
25
|
}
|
|
23
26
|
/** Query call shape: `.query(input?)` → Promise. */
|
|
24
|
-
interface QueryFn<
|
|
25
|
-
|
|
27
|
+
interface QueryFn<
|
|
28
|
+
I,
|
|
29
|
+
O
|
|
30
|
+
> {
|
|
31
|
+
query(input: I): Promise<O>;
|
|
26
32
|
}
|
|
27
33
|
interface StreamChoiceRow {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
readonly id: string;
|
|
35
|
+
readonly label: string;
|
|
36
|
+
readonly target: WebrtcTarget;
|
|
37
|
+
readonly codec: string | null;
|
|
38
|
+
readonly resolution: {
|
|
39
|
+
width: number;
|
|
40
|
+
height: number;
|
|
41
|
+
} | null;
|
|
42
|
+
readonly status: string | null;
|
|
43
|
+
readonly inputFps: number | null;
|
|
44
|
+
readonly bitrateKbps: number | null;
|
|
39
45
|
}
|
|
40
46
|
/**
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
47
|
+
* Minimal subset of the tRPC proxy needed for WebRTC signaling.
|
|
48
|
+
* Both `BackendClient.trpc` and `AddonPageProps['trpc']` satisfy this
|
|
49
|
+
* at runtime.
|
|
50
|
+
*/
|
|
45
51
|
export interface UseDeviceWebrtcTrpc {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
52
|
+
webrtcSession: {
|
|
53
|
+
listStreams: QueryFn<{
|
|
54
|
+
deviceId: number;
|
|
55
|
+
}, readonly StreamChoiceRow[]>;
|
|
56
|
+
createSession: MutateFn<{
|
|
57
|
+
deviceId: number;
|
|
58
|
+
target: WebrtcTarget;
|
|
59
|
+
hints?: ClientStreamHints;
|
|
60
|
+
}, {
|
|
61
|
+
sessionId: string;
|
|
62
|
+
sdpOffer: string;
|
|
63
|
+
}>;
|
|
64
|
+
/**
|
|
65
|
+
* Client-offer signaling: the browser builds the SDP offer (advertising
|
|
66
|
+
* its native decode caps) and the server answers. The dual of
|
|
67
|
+
* `createSession`; lets iOS pass H.264 High/Main through untouched.
|
|
68
|
+
*/
|
|
69
|
+
handleOffer: MutateFn<{
|
|
70
|
+
deviceId: number;
|
|
71
|
+
target: WebrtcTarget;
|
|
72
|
+
sdpOffer: string;
|
|
73
|
+
sessionId?: string;
|
|
74
|
+
hints?: ClientStreamHints;
|
|
75
|
+
}, {
|
|
76
|
+
sessionId: string;
|
|
77
|
+
sdpAnswer: string;
|
|
78
|
+
}>;
|
|
79
|
+
handleAnswer: MutateFn<{
|
|
80
|
+
deviceId: number;
|
|
81
|
+
sessionId: string;
|
|
82
|
+
sdpAnswer: string;
|
|
83
|
+
}, void>;
|
|
84
|
+
/** Trickle ICE — push a client candidate to the server. */
|
|
85
|
+
addIceCandidate: MutateFn<{
|
|
86
|
+
deviceId: number;
|
|
87
|
+
sessionId: string;
|
|
88
|
+
candidate: string;
|
|
89
|
+
sdpMid?: string | null;
|
|
90
|
+
sdpMLineIndex?: number | null;
|
|
91
|
+
}, void>;
|
|
92
|
+
/** Trickle ICE — poll the server's gathered candidates. */
|
|
93
|
+
getIceCandidates: QueryFn<{
|
|
94
|
+
deviceId: number;
|
|
95
|
+
sessionId: string;
|
|
96
|
+
}, {
|
|
97
|
+
candidates: {
|
|
98
|
+
candidate: string;
|
|
99
|
+
sdpMid: string | null;
|
|
100
|
+
sdpMLineIndex: number | null;
|
|
101
|
+
}[];
|
|
102
|
+
done: boolean;
|
|
103
|
+
}>;
|
|
104
|
+
closeSession: MutateFn<{
|
|
105
|
+
deviceId: number;
|
|
106
|
+
sessionId: string;
|
|
107
|
+
}, void>;
|
|
108
|
+
/**
|
|
109
|
+
* Poll the live signaling state of a session. `pendingRenegotiation`
|
|
110
|
+
* is non-null after the server swaps the broker source to a different
|
|
111
|
+
* tier (adaptive downgrade) — the client must re-offer on the same
|
|
112
|
+
* `sessionId`; `epoch` guards against acting on a stale poll twice.
|
|
113
|
+
*/
|
|
114
|
+
getSessionState: QueryFn<{
|
|
115
|
+
deviceId: number;
|
|
116
|
+
sessionId: string;
|
|
117
|
+
}, {
|
|
118
|
+
pendingRenegotiation: {
|
|
119
|
+
target: WebrtcTarget;
|
|
120
|
+
epoch: number;
|
|
121
|
+
} | null;
|
|
122
|
+
}>;
|
|
123
|
+
/** The SERVER's account of a live session, for the stream-debug overlay.
|
|
124
|
+
* Read-only; the overlay polls it at ~1 Hz only while it is visible. */
|
|
125
|
+
getSessionDebug: QueryFn<{
|
|
126
|
+
deviceId: number;
|
|
127
|
+
sessionId: string;
|
|
128
|
+
}, WebrtcSessionDebug>;
|
|
129
|
+
/**
|
|
130
|
+
* Hand the viewer's downlink probe to ONE live session (D733). Optional:
|
|
131
|
+
* a hub built before it has no such route, and the player then keeps its
|
|
132
|
+
* legacy probe climb (a second session).
|
|
133
|
+
*/
|
|
134
|
+
applyDownlinkProbe?: MutateFn<{
|
|
135
|
+
deviceId: number;
|
|
136
|
+
sessionId: string;
|
|
137
|
+
downlinkMbps: number;
|
|
138
|
+
}, DownlinkProbeAnswer>;
|
|
139
|
+
};
|
|
140
|
+
pipelineOrchestrator?: {
|
|
141
|
+
getCameraMetrics: QueryFn<{
|
|
142
|
+
deviceId: number;
|
|
143
|
+
}, {
|
|
144
|
+
phase: string;
|
|
145
|
+
actualFps: number;
|
|
146
|
+
avgInferenceTimeMs: number;
|
|
147
|
+
droppedFrames: number;
|
|
148
|
+
configuredFps: number;
|
|
149
|
+
} | null>;
|
|
150
|
+
};
|
|
151
|
+
/** Optional: aggregated STUN/TURN servers (e.g. cloudflare-turn). When
|
|
152
|
+
* present, the client uses them so it can gather a reachable relay
|
|
153
|
+
* candidate for remote (CGNAT/mobile) viewing. */
|
|
154
|
+
turnProvider?: {
|
|
155
|
+
getTurnServers: QueryFn<void, readonly {
|
|
156
|
+
urls: string | readonly string[];
|
|
157
|
+
username?: string;
|
|
158
|
+
credential?: string;
|
|
159
|
+
}[]>;
|
|
160
|
+
};
|
|
155
161
|
}
|
|
156
162
|
/** Pipeline detection metrics for a device. */
|
|
157
163
|
export interface DevicePipelineMetrics {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
164
|
+
readonly phase: string;
|
|
165
|
+
readonly detectionFps: number;
|
|
166
|
+
readonly avgInferenceMs: number;
|
|
167
|
+
readonly droppedFrames: number;
|
|
162
168
|
}
|
|
163
169
|
export interface DeviceWebrtcResult {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
170
|
+
/** Available stream choices for the dropdown (Adaptive + assigned profiles). */
|
|
171
|
+
readonly streams: readonly StreamChoice[];
|
|
172
|
+
/** Whether the device has at least one assigned profile (can stream). */
|
|
173
|
+
readonly hasWebrtc: boolean;
|
|
174
|
+
/** Live pipeline metrics (phase, detection fps, inference time). */
|
|
175
|
+
readonly pipelineMetrics: DevicePipelineMetrics | null;
|
|
176
|
+
/** Server-offer signaling: create a WebRTC session. */
|
|
177
|
+
readonly createSession: (target: WebrtcTarget, hints?: ClientStreamHints) => Promise<SignalingResult>;
|
|
178
|
+
/** Server-offer signaling: send the client's SDP answer. */
|
|
179
|
+
readonly sendAnswer: (sessionId: string, sdpAnswer: string) => Promise<void>;
|
|
180
|
+
/**
|
|
181
|
+
* Client-offer signaling (preferred for browsers): post a browser-built
|
|
182
|
+
* SDP offer and get the server's answer. The browser advertises its full
|
|
183
|
+
* H.264 decode caps in the offer, so a Main/High (incl. 4K) source passes
|
|
184
|
+
* through with no transcode — the only path that lets iOS decode High.
|
|
185
|
+
*/
|
|
186
|
+
readonly handleOffer: (target: WebrtcTarget, sdpOffer: string, sessionId?: string, hints?: ClientStreamHints) => Promise<ClientOfferResult>;
|
|
187
|
+
/**
|
|
188
|
+
* Fetch the browser-side ICE servers (STUN + TURN from the `turn-provider`
|
|
189
|
+
* cap). Needed for client-offer mode, where the PeerConnection must be
|
|
190
|
+
* built with TURN BEFORE the offer is created so a remote/CGNAT viewer can
|
|
191
|
+
* gather a relay candidate. Best-effort — resolves `undefined` on failure
|
|
192
|
+
* (the player falls back to public STUN).
|
|
193
|
+
*/
|
|
194
|
+
readonly getIceServers: () => Promise<readonly RTCIceServer[] | undefined>;
|
|
195
|
+
/** Trickle ICE — push a client-gathered candidate to the server. */
|
|
196
|
+
readonly addIceCandidate: (sessionId: string, candidate: RTCIceCandidateInit) => Promise<void>;
|
|
197
|
+
/** Trickle ICE — poll the server's gathered candidates for a session. */
|
|
198
|
+
readonly getIceCandidates: (sessionId: string) => Promise<{
|
|
199
|
+
candidates: RTCIceCandidateInit[];
|
|
200
|
+
done: boolean;
|
|
201
|
+
}>;
|
|
202
|
+
/** Close a WebRTC session on the server. */
|
|
203
|
+
readonly closeSession: (sessionId: string) => Promise<void>;
|
|
204
|
+
/**
|
|
205
|
+
* Poll the live signaling state of a session. After an adaptive tier
|
|
206
|
+
* switch the server returns a non-null `pendingRenegotiation` (the new
|
|
207
|
+
* target + a monotonic `epoch`); the player re-offers on the SAME
|
|
208
|
+
* `sessionId` so the session re-negotiates against the new tier. Returns
|
|
209
|
+
* `{ pendingRenegotiation: null }` for non-adaptive / steady sessions.
|
|
210
|
+
*/
|
|
211
|
+
readonly getSessionState: (sessionId: string) => Promise<SessionRenegotiationState>;
|
|
212
|
+
/**
|
|
213
|
+
* The SERVER half of the stream-debug overlay for a session. Unlike
|
|
214
|
+
* `getSessionState`, a failure here THROWS rather than resolving a benign
|
|
215
|
+
* default: this is a diagnostic read, and a swallowed error would render as
|
|
216
|
+
* a confident set of unknowns with no reason attached. The overlay catches
|
|
217
|
+
* it and shows the message.
|
|
218
|
+
*/
|
|
219
|
+
readonly getSessionDebug: (sessionId: string) => Promise<WebrtcSessionDebug>;
|
|
220
|
+
/**
|
|
221
|
+
* Hand the downlink probe to the session it was measured on (D733). Rejects
|
|
222
|
+
* when there is no device or the hub has no such method — the player reads
|
|
223
|
+
* a rejection as "unsupported" and falls back to its legacy climb.
|
|
224
|
+
*/
|
|
225
|
+
readonly applyDownlinkProbe: ApplyDownlinkProbe;
|
|
220
226
|
}
|
|
221
227
|
/** Live signaling state for a session — the adaptive re-offer signal. */
|
|
222
228
|
export interface SessionRenegotiationState {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
229
|
+
readonly pendingRenegotiation: {
|
|
230
|
+
readonly target: WebrtcTarget;
|
|
231
|
+
readonly epoch: number;
|
|
232
|
+
} | null;
|
|
227
233
|
}
|
|
228
234
|
export declare function useDeviceWebrtc(trpc: UseDeviceWebrtcTrpc, deviceId: number | null, pollIntervalMs?: number): DeviceWebrtcResult;
|
|
229
235
|
export {};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { DeviceProxy, DeviceQueryFilters } from
|
|
1
|
+
import type { DeviceProxy, DeviceQueryFilters } from "@camstack/types";
|
|
2
2
|
/**
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
* Reactive list of devices matching the optional filter set. Returns a
|
|
4
|
+
* stable array reference between updates so consumers passing it as a
|
|
5
|
+
* prop don't tear down memoized children.
|
|
6
|
+
*/
|
|
7
7
|
export declare function useDevices(filters?: DeviceQueryFilters): readonly DeviceProxy[];
|
|
8
8
|
/**
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
* Single-device variant. Returns `null` until the device is in the
|
|
10
|
+
* mirror; re-renders when the device is removed (back to `null`) or
|
|
11
|
+
* added.
|
|
12
|
+
*/
|
|
13
13
|
export declare function useDevice(deviceId: number | null): DeviceProxy | null;
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
export interface DoorbellPressEvent {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
readonly deviceId: number;
|
|
3
|
+
readonly timestamp: number;
|
|
4
4
|
}
|
|
5
5
|
export interface UseDoorbellEventsResult {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
/** Most recent press, or null if none observed since mount. */
|
|
7
|
+
readonly latest: DoorbellPressEvent | null;
|
|
8
|
+
/** Recent presses, newest-first. Capped at `historyLimit`. */
|
|
9
|
+
readonly history: readonly DoorbellPressEvent[];
|
|
10
10
|
}
|
|
11
11
|
export interface UseDoorbellEventsOptions {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Scope the subscription to a specific deviceId. Pass `null` (or
|
|
14
|
+
* omit) to receive every press across the cluster.
|
|
15
|
+
*/
|
|
16
|
+
readonly deviceId?: number | null;
|
|
17
|
+
/** Max history entries kept in memory. Defaults to 20. */
|
|
18
|
+
readonly historyLimit?: number;
|
|
19
19
|
}
|
|
20
20
|
export declare function useDoorbellEvents(options?: UseDoorbellEventsOptions): UseDoorbellEventsResult;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export declare function useEventStreamLatest<T>(category: string, filter?: (data: T) => boolean): T | null;
|
|
2
|
-
export declare function useEventStreamMap<
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
export declare function useEventStreamMap<
|
|
3
|
+
T,
|
|
4
|
+
K extends string | number
|
|
5
|
+
>(category: string, keyOf: (data: T) => K, filter?: (data: T) => boolean): {
|
|
6
|
+
readonly map: ReadonlyMap<K, T>;
|
|
7
|
+
readonly values: readonly T[];
|
|
5
8
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export declare function useIsMobile(): boolean;
|
|
2
2
|
/**
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
* True when the viewport is in the medium (`md`) Tailwind range —
|
|
4
|
+
* 768px ≤ width < 1024px. Use to drive layouts that should pack denser
|
|
5
|
+
* than full-desktop but more legibly than mobile (e.g. icons-only
|
|
6
|
+
* sidebar rail, narrower stat tiles).
|
|
7
|
+
*/
|
|
8
8
|
export declare function useIsMidWidth(): boolean;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export interface LiveBuffer<T> {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
readonly entries: readonly T[];
|
|
3
|
+
/** Append one entry; oldest is evicted past `max`. */
|
|
4
|
+
readonly append: (entry: T) => void;
|
|
5
|
+
/** Replace all entries — used by Clear / scope-change resets. */
|
|
6
|
+
readonly reset: () => void;
|
|
7
7
|
}
|
|
8
8
|
export declare function useLiveBuffer<T>(max: number): LiveBuffer<T>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { SystemLiveEvent } from
|
|
1
|
+
import type { SystemLiveEvent } from "@camstack/sdk";
|
|
2
2
|
export type LiveEventCallback<TData = unknown> = (event: SystemLiveEvent<TData>) => void;
|
|
3
3
|
export declare function useLiveEvent<TData = unknown>(category: string, cb: LiveEventCallback<TData>): void;
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import { NavigationActionEntry, NavigationActionId, NavigationFeatures, NavigationLightMode, NavigationStatus } from
|
|
2
|
-
import { UseDeviceProxyTrpc } from
|
|
3
|
-
export type NavigationDirection =
|
|
1
|
+
import type { NavigationActionEntry, NavigationActionId, NavigationFeatures, NavigationLightMode, NavigationStatus } from "@camstack/types";
|
|
2
|
+
import { type UseDeviceProxyTrpc } from "./use-device-proxy";
|
|
3
|
+
export type NavigationDirection = "forward" | "left" | "right" | "spin";
|
|
4
4
|
/** The cadence the robot app drives at while a direction is held. */
|
|
5
|
-
export declare const NAVIGATION_DRIVE_INTERVAL_MS =
|
|
5
|
+
export declare const NAVIGATION_DRIVE_INTERVAL_MS = 1e3;
|
|
6
6
|
export interface UseNavigationOptions {
|
|
7
|
-
|
|
7
|
+
readonly enabled?: boolean;
|
|
8
8
|
}
|
|
9
9
|
export interface UseNavigationResult {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
10
|
+
readonly features: NavigationFeatures | null;
|
|
11
|
+
readonly actions: readonly NavigationActionEntry[];
|
|
12
|
+
readonly status: NavigationStatus | null;
|
|
13
|
+
/** Start nudging in a direction at 1 Hz until `stopDrive`. */
|
|
14
|
+
readonly startDrive: (direction: NavigationDirection) => void;
|
|
15
|
+
readonly stopDrive: () => Promise<void>;
|
|
16
|
+
readonly runAction: (actionId: NavigationActionId) => Promise<void>;
|
|
17
|
+
readonly playSound: (soundId: number) => Promise<void>;
|
|
18
|
+
readonly setLightOn: (on: boolean) => Promise<void>;
|
|
19
|
+
readonly setLightMode: (mode: NavigationLightMode, level?: number) => Promise<void>;
|
|
20
|
+
readonly setLightLevel: (level: number) => Promise<void>;
|
|
21
|
+
readonly busy: boolean;
|
|
22
|
+
readonly error: string | null;
|
|
23
|
+
/** True while a direction is held. */
|
|
24
|
+
readonly driving: NavigationDirection | null;
|
|
25
25
|
}
|
|
26
26
|
export declare function useNavigation(trpc: UseDeviceProxyTrpc, deviceId: number, hookOptions?: UseNavigationOptions): UseNavigationResult;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
export interface UseOptimisticSliceOptions {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
readonly enabled?: boolean;
|
|
3
|
+
readonly timeoutMs?: number;
|
|
4
4
|
}
|
|
5
5
|
export interface UseOptimisticSliceResult<T> {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
6
|
+
/** The slice to RENDER: the optimistic override if active, else the real slice. */
|
|
7
|
+
readonly display: T | undefined;
|
|
8
|
+
/** Apply an optimistic patch (merged onto the current display) after issuing a command. */
|
|
9
|
+
readonly applyOptimistic: (patch: Partial<T>) => void;
|
|
10
|
+
/**
|
|
11
|
+
* Revert immediately to the real slice — a real rollback, not a timer wait.
|
|
12
|
+
* Use this when the command the optimistic patch anticipated is REJECTED
|
|
13
|
+
* (the server refused it), so `display` never keeps showing a state the
|
|
14
|
+
* server never produced.
|
|
15
|
+
*/
|
|
16
|
+
readonly rollback: () => void;
|
|
17
17
|
}
|
|
18
18
|
export declare function useOptimisticSlice<T extends object>(realSlice: T | undefined, opts?: UseOptimisticSliceOptions): UseOptimisticSliceResult<T>;
|