@camstack/ui-library 1.2.257 → 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,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
* The ONE name of an inference accelerator, everywhere it is shown: the step
|
|
3
|
+
* matrix's column headers, the load-balancing rows, the camera assignments
|
|
4
|
+
* table, Model Studio's device chips. Four pages had drifted into four
|
|
5
|
+
* spellings of the same device — the Mac mini's Neural Engine read "Coreml All"
|
|
6
|
+
* in the step matrix and "Apple ANE" on Load balancing.
|
|
7
|
+
*/
|
|
8
8
|
/** What naming needs from a device row (`NodeInferenceDevice` satisfies it). */
|
|
9
9
|
export interface AcceleratorIdentity {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
readonly key: string;
|
|
11
|
+
readonly backend: string;
|
|
12
|
+
readonly device: string;
|
|
13
13
|
}
|
|
14
14
|
/** "Intel NPU", "Apple Neural Engine", "Coral Edge TPU", "CPU" — Auto tune's names too. */
|
|
15
15
|
export declare function acceleratorLabel(device: AcceleratorIdentity): string;
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
* Burst-download the hub's `/adaptive-probe` blob and return Mbps.
|
|
3
|
+
* Used as `hints.downlinkMbps` so adaptive selection is based on a measured
|
|
4
|
+
* path, not viewport size or IP class. Failures return null (caller keeps
|
|
5
|
+
* the default-low / ceiling path and may stay on the lowest rung).
|
|
6
|
+
*
|
|
7
|
+
* D635 (2026-09-25): the probe used to time a 128 KiB blob from the REQUEST,
|
|
8
|
+
* fired in parallel with `createSession` on a hub at ~80 % CPU. It read the
|
|
9
|
+
* LAN as 1.2–1.46 Mbps — the elapsed time was mostly waiting for the first
|
|
10
|
+
* byte, i.e. latency. It now (1) times the body from its FIRST byte, (2) reads
|
|
11
|
+
* a 1 MiB blob so the transfer dominates timer jitter, and (3) runs after the
|
|
12
|
+
* session's first decoded frame, never during session setup.
|
|
13
|
+
*/
|
|
14
14
|
export declare const ADAPTIVE_PROBE_PATH = "/adaptive-probe";
|
|
15
15
|
/**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
* Whole-probe deadline, from the request. A probe cut here is still a
|
|
17
|
+
* measurement of whatever body arrived (see {@link measureDownlinkMbps}).
|
|
18
|
+
*/
|
|
19
19
|
export declare const ADAPTIVE_PROBE_TIMEOUT_MS = 2500;
|
|
20
20
|
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
* Fewest body bytes AFTER the first chunk that make a rate. 64 KiB: at the
|
|
22
|
+
* `high` threshold (8 Mbps) that is 65 ms of transfer — four times a 16 ms
|
|
23
|
+
* WebView timer tick. Less is a guess, and a guess is unknown, not slow.
|
|
24
|
+
*/
|
|
25
25
|
export declare const ADAPTIVE_PROBE_MIN_MEASURED_BYTES: number;
|
|
26
26
|
/** How long the probe waits for the session's first decoded frame. */
|
|
27
|
-
export declare const FIRST_FRAME_PROBE_TIMEOUT_MS =
|
|
28
|
-
export type AdaptiveTier =
|
|
27
|
+
export declare const FIRST_FRAME_PROBE_TIMEOUT_MS = 15e3;
|
|
28
|
+
export type AdaptiveTier = "high" | "mid" | "low";
|
|
29
29
|
/** Mbps needed to attempt each rung (bitrate / 0.6 headroom, rounded). */
|
|
30
30
|
export declare const DOWNLINK_HIGH_MBPS = 8;
|
|
31
31
|
export declare const DOWNLINK_MID_MBPS = 2.5;
|
|
@@ -33,172 +33,170 @@ export declare const DOWNLINK_MID_MBPS = 2.5;
|
|
|
33
33
|
export declare function suggestedAdaptiveTier(mbps: number): AdaptiveTier;
|
|
34
34
|
/** First connect never carries a cached probe — the broker starts lowest. */
|
|
35
35
|
export declare function stripDownlinkForColdStart<T extends {
|
|
36
|
-
|
|
37
|
-
}>(hints: T): Omit<T,
|
|
36
|
+
readonly downlinkMbps?: number;
|
|
37
|
+
}>(hints: T): Omit<T, "downlinkMbps">;
|
|
38
38
|
/** After a probe, only mid/high justify a make-before-break climb. */
|
|
39
39
|
export declare function shouldUpgradeAfterProbe(mbps: number): boolean;
|
|
40
40
|
/**
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
41
|
+
* The origin `/adaptive-probe` must be fetched from — the HUB, not the page.
|
|
42
|
+
*
|
|
43
|
+
* The page origin was the original assumption ("same-origin as the player",
|
|
44
|
+
* `adaptive-probe.routes.ts`) and it is only true for the web viewer and the
|
|
45
|
+
* iframe embed, both served by the hub. The NATIVE viewer loads this same
|
|
46
|
+
* player from an asset bundled with the app (`useNativeEmbedSource` resolves
|
|
47
|
+
* `assets/embed/camstack-embed.html` through `Image.resolveAssetSource`), so
|
|
48
|
+
* inside the WKWebView `window.location.origin` is `file://` — and
|
|
49
|
+
* `file:///adaptive-probe` is not a request any hub can answer. The probe
|
|
50
|
+
* therefore returned null on EVERY native connect, `downlinkMbps` was never
|
|
51
|
+
* sent, `pickAdaptiveTier` scored every session `default-low`, and
|
|
52
|
+
* `shouldUpgradeAfterProbe` was never even reached — so the make-before-break
|
|
53
|
+
* climb that the cold-start default depends on could not run. That is the
|
|
54
|
+
* whole of "the automatic quality always drops to low" on the app.
|
|
55
|
+
*
|
|
56
|
+
* The hub the player is already talking to is the `serverUrl` prop, so it
|
|
57
|
+
* wins; the page origin remains as the fallback for a host that passes a
|
|
58
|
+
* relative/empty `serverUrl`. Null means no probe is possible and the caller
|
|
59
|
+
* must skip it rather than fetch a URL that cannot exist.
|
|
60
|
+
*/
|
|
61
61
|
export declare function resolveProbeOrigin(serverUrl: string | undefined, pageOrigin: string | undefined): string | null;
|
|
62
62
|
/** Which offer composed the hints. A climb and a cold start read identically
|
|
63
|
-
|
|
64
|
-
export type AdaptiveOfferPhase =
|
|
65
|
-
/** The probe went to the session it was measured on; the hub answered (D733). */
|
|
66
|
-
| 'probe-in-session';
|
|
63
|
+
* in the hub's log; only the client knows which one it just sent. */
|
|
64
|
+
export type AdaptiveOfferPhase = "cold-start" | "probe-climb" | "renegotiate" | "probe-refused" | "probe-in-session";
|
|
67
65
|
/**
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
66
|
+
* What the CLIENT sent for one adaptive decision. Deliberately not the hub's
|
|
67
|
+
* verdict — the hub already logs its own pick, and a client line that repeated
|
|
68
|
+
* it would prove nothing about the client. This is the other half of that
|
|
69
|
+
* join: the inputs the hub scored, plus whether the downlink probe had an
|
|
70
|
+
* origin it could even reach.
|
|
71
|
+
*/
|
|
74
72
|
export interface AdaptiveHintsReport {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
73
|
+
readonly phase: AdaptiveOfferPhase;
|
|
74
|
+
/** Null when no http(s) origin resolved — the probe did not run at all. */
|
|
75
|
+
readonly probeOrigin: string | null;
|
|
76
|
+
readonly viewportWidth?: number;
|
|
77
|
+
readonly viewportHeight?: number;
|
|
78
|
+
readonly devicePixelRatio?: number;
|
|
79
|
+
readonly downlinkMbps?: number;
|
|
80
|
+
readonly prefersTier?: string;
|
|
81
|
+
/** For `probe-refused`: the HTTP status the hub answered the probe with (401/429…). */
|
|
82
|
+
readonly probeStatus?: number;
|
|
83
|
+
/** For `probe-in-session`: what the hub did with it — `outcome:tier:reason`. */
|
|
84
|
+
readonly probeAnswer?: string;
|
|
87
85
|
}
|
|
88
86
|
/**
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
87
|
+
* Identity of a decision, for "log once per CHANGE, not per tick".
|
|
88
|
+
*
|
|
89
|
+
* `downlinkMbps` is a fresh measurement on every probe and would otherwise
|
|
90
|
+
* make every offer look like a new decision. What the ladder actually consumes
|
|
91
|
+
* is the RUNG it maps to (`suggestedAdaptiveTier`), so two measurements that
|
|
92
|
+
* pick the same rung are the same decision and must collapse to one line.
|
|
93
|
+
*/
|
|
96
94
|
export declare function adaptiveHintsKey(report: AdaptiveHintsReport): string;
|
|
97
95
|
/** The slice of a body reader the probe uses (a `ReadableStreamDefaultReader` fits). */
|
|
98
96
|
export interface ProbeBodyReader {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
97
|
+
read(): Promise<{
|
|
98
|
+
readonly done: boolean;
|
|
99
|
+
readonly value?: Uint8Array;
|
|
100
|
+
}>;
|
|
101
|
+
cancel(): Promise<void>;
|
|
104
102
|
}
|
|
105
103
|
/** The slice of a fetch `Response` the probe uses. */
|
|
106
104
|
export interface ProbeResponse {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
105
|
+
readonly ok: boolean;
|
|
106
|
+
readonly status?: number;
|
|
107
|
+
readonly body?: {
|
|
108
|
+
getReader(): ProbeBodyReader;
|
|
109
|
+
} | null;
|
|
110
|
+
arrayBuffer(): Promise<ArrayBuffer>;
|
|
113
111
|
}
|
|
114
112
|
export interface DownlinkProbeDeps {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
113
|
+
readonly fetchImpl: (url: string, init: {
|
|
114
|
+
signal: AbortSignal;
|
|
115
|
+
}) => Promise<ProbeResponse>;
|
|
116
|
+
readonly now: () => number;
|
|
117
|
+
/**
|
|
118
|
+
* The hub answered but refused (401 without a session, 429 rate-limited).
|
|
119
|
+
* The reading is still unknown — but a missing token must not be silent,
|
|
120
|
+
* or it is indistinguishable from a failed probe (review N3, D391).
|
|
121
|
+
*/
|
|
122
|
+
readonly onRefused?: (status: number) => void;
|
|
125
123
|
}
|
|
126
124
|
export declare function measureDownlinkMbps(origin: string, deps: DownlinkProbeDeps): Promise<number | null>;
|
|
127
|
-
export type FirstFrameOutcome =
|
|
125
|
+
export type FirstFrameOutcome = "frame" | "timeout" | "aborted";
|
|
128
126
|
export interface FirstFrameDeps {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
127
|
+
/** The live video element's `readyState`, or null when there is none yet. */
|
|
128
|
+
readonly readyState: () => number | null;
|
|
129
|
+
readonly signal: AbortSignal;
|
|
130
|
+
readonly sleep: (ms: number) => Promise<void>;
|
|
131
|
+
readonly now: () => number;
|
|
134
132
|
}
|
|
135
133
|
/**
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
134
|
+
* Resolve once the session presents its first decoded frame — the moment
|
|
135
|
+
* session setup (createSession, ICE, DTLS, the first IDR) is over and a probe
|
|
136
|
+
* no longer competes with it for the hub or the link.
|
|
137
|
+
*/
|
|
140
138
|
export declare function waitForFirstFrame(deps: FirstFrameDeps, timeoutMs?: number): Promise<FirstFrameOutcome>;
|
|
141
139
|
/**
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
140
|
+
* The cold-start probe: measure only once the first frame is up. No frame ⇒
|
|
141
|
+
* no measurement (undefined) — the session is failing for a reason a probe
|
|
142
|
+
* cannot fix, and a climb would only add a second connection to it.
|
|
143
|
+
*/
|
|
146
144
|
export interface ProbeAfterFirstFrameDeps {
|
|
147
|
-
|
|
148
|
-
|
|
145
|
+
readonly waitFrame: () => Promise<FirstFrameOutcome>;
|
|
146
|
+
readonly measure: () => Promise<number | undefined>;
|
|
149
147
|
}
|
|
150
148
|
export declare function probeAfterFirstFrame(deps: ProbeAfterFirstFrameDeps): Promise<number | undefined>;
|
|
151
149
|
/** The latest probe for an origin, whatever it read or how old it is. */
|
|
152
150
|
export interface LatestProbe {
|
|
153
|
-
|
|
154
|
-
|
|
151
|
+
readonly mbps: number;
|
|
152
|
+
readonly ageMs: number;
|
|
155
153
|
}
|
|
156
154
|
export interface DownlinkProbeStoreDeps {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
155
|
+
readonly now: () => number;
|
|
156
|
+
/** How long a reading answers `measured`/`cached` without re-probing. */
|
|
157
|
+
readonly ttlMs: number;
|
|
160
158
|
}
|
|
161
159
|
export interface DownlinkProbeStore {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
160
|
+
/**
|
|
161
|
+
* The cached reading while fresh, else ONE probe for the origin — concurrent
|
|
162
|
+
* callers share the probe in flight (review I6: a grid decoding together
|
|
163
|
+
* fired N 1 MiB probes, each reading the link ÷ N). Undefined = unknown.
|
|
164
|
+
*/
|
|
165
|
+
measured(origin: string, measure: () => Promise<number | null>): Promise<number | undefined>;
|
|
166
|
+
/** The cached reading while fresh — never probes (review I5: renegotiation). */
|
|
167
|
+
cached(origin: string): number | undefined;
|
|
168
|
+
/** The newest reading whatever its age — what the telemetry reports (I4). */
|
|
169
|
+
latest(origin: string): LatestProbe | null;
|
|
170
|
+
/** True the FIRST time `origin` refuses with `status` in this app — say it once. */
|
|
171
|
+
firstRefusal(origin: string, status: number): boolean;
|
|
174
172
|
}
|
|
175
173
|
/** App-wide probe cache + single-flight, one per origin. */
|
|
176
174
|
export declare function createDownlinkProbe(deps: DownlinkProbeStoreDeps): DownlinkProbeStore;
|
|
177
175
|
/** The hub's answer to one session's probe — `webrtcSession.applyDownlinkProbe` (D733). */
|
|
178
176
|
export interface DownlinkProbeAnswer {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
177
|
+
readonly outcome: "switching" | "held";
|
|
178
|
+
readonly tier: string | null;
|
|
179
|
+
readonly reason: string;
|
|
182
180
|
}
|
|
183
181
|
/** Host wiring for `webrtcSession.applyDownlinkProbe`, bound to the device. */
|
|
184
182
|
export type ApplyDownlinkProbe = (sessionId: string, downlinkMbps: number) => Promise<DownlinkProbeAnswer>;
|
|
185
183
|
/** What became of handing a probe to its session. */
|
|
186
184
|
export type ProbeHandoff = {
|
|
187
|
-
|
|
188
|
-
|
|
185
|
+
readonly kind: "answered";
|
|
186
|
+
readonly answer: DownlinkProbeAnswer;
|
|
189
187
|
} | {
|
|
190
|
-
|
|
191
|
-
|
|
188
|
+
readonly kind: "unsupported";
|
|
189
|
+
readonly why: "no-wiring" | "no-session" | "call-failed";
|
|
192
190
|
};
|
|
193
191
|
/**
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
192
|
+
* Hand a probe to the session it was measured on (D733).
|
|
193
|
+
*
|
|
194
|
+
* The probe climb used to be a SECOND session: a make-before-break reconnect
|
|
195
|
+
* carrying `downlinkMbps`, so every adaptive live open cost two sessions. The
|
|
196
|
+
* hub now moves the open session to the probed rung itself. `answered` means
|
|
197
|
+
* the hub owns the climb, WHATEVER it answered — `held` included: a reconnect
|
|
198
|
+
* after a `held` would buy the second session for a rung the hub just refused.
|
|
199
|
+
* Only `unsupported` (no host wiring, no session id yet, or a hub that does not
|
|
200
|
+
* know the method) leaves the caller its legacy reconnect climb.
|
|
201
|
+
*/
|
|
204
202
|
export declare function handProbeToSession(apply: ApplyDownlinkProbe | undefined, sessionId: string | null, downlinkMbps: number): Promise<ProbeHandoff>;
|
|
@@ -1,65 +1,78 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* `AddonGlobalSettingsForm` — mounts an addon's global-settings schema
|
|
3
|
+
* via `api.addonSettings.getGlobalSettings` + `updateGlobalSettings`
|
|
4
|
+
* and renders it with `ConfigFormBuilder`. Single source of truth for
|
|
5
|
+
* the addon's settings — no hardcoded option lists anywhere in the UI.
|
|
6
|
+
*
|
|
7
|
+
* Used wherever an addon's settings need to be edited inline (e.g.
|
|
8
|
+
* benchmark tabs, per-node pipeline editor). The caller passes the
|
|
9
|
+
* tRPC client + (addonId, nodeId); the component handles the fetch
|
|
10
|
+
* + patch loop. `onAfterChange` fires once the patch is applied so
|
|
11
|
+
* consumers can re-read any derived state.
|
|
12
|
+
*/
|
|
13
|
+
import { type JSX } from "react";
|
|
14
|
+
import type { ConfigUISchemaWithValues } from "@camstack/types";
|
|
2
15
|
interface AddonGlobalSettingsFormTrpc {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
addonSettings: {
|
|
17
|
+
getGlobalSettings: {
|
|
18
|
+
query: (input: {
|
|
19
|
+
addonId: string;
|
|
20
|
+
nodeId?: string;
|
|
21
|
+
overlay?: Record<string, unknown>;
|
|
22
|
+
}) => Promise<ConfigUISchemaWithValues | null>;
|
|
23
|
+
};
|
|
24
|
+
updateGlobalSettings: {
|
|
25
|
+
mutate: (input: {
|
|
26
|
+
addonId: string;
|
|
27
|
+
nodeId?: string;
|
|
28
|
+
patch: Record<string, unknown>;
|
|
29
|
+
}) => Promise<unknown>;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
19
32
|
}
|
|
20
33
|
interface AddonGlobalSettingsFormProps {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
34
|
+
readonly trpc: AddonGlobalSettingsFormTrpc;
|
|
35
|
+
readonly addonId: string;
|
|
36
|
+
readonly nodeId: string;
|
|
37
|
+
readonly title?: string;
|
|
38
|
+
readonly disabled?: boolean;
|
|
39
|
+
readonly onAfterChange?: () => void;
|
|
40
|
+
/** Bump to force refetch (e.g. after an external mutation). */
|
|
41
|
+
readonly refreshToken?: number;
|
|
42
|
+
/**
|
|
43
|
+
* Render only these section ids of the addon's schema (e.g. System → Cluster
|
|
44
|
+
* draws the `system-config` cluster section alone). Absent → every section.
|
|
45
|
+
*/
|
|
46
|
+
readonly sectionIds?: readonly string[];
|
|
47
|
+
/**
|
|
48
|
+
* Render as collapsible. When true, the form body is hidden until
|
|
49
|
+
* the operator expands the header (click). Defaults to open so
|
|
50
|
+
* callers that always want the form visible don't have to opt out.
|
|
51
|
+
*/
|
|
52
|
+
readonly collapsible?: boolean;
|
|
53
|
+
/** When `collapsible`, start expanded (true) or collapsed (false). Defaults to false. */
|
|
54
|
+
readonly defaultOpen?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* - `'persist'` (default): edits call `updateGlobalSettings` and
|
|
57
|
+
* re-fetch — the live store is mutated. Use in settings editors
|
|
58
|
+
* (NodePipelineTab, device details).
|
|
59
|
+
* - `'override'`: edits stay local (never touch the store).
|
|
60
|
+
* `onOverrideChange` receives the current override values on
|
|
61
|
+
* every edit so the caller can pass them to a per-run action.
|
|
62
|
+
* Use in the benchmark tabs — operator tweaks for a single
|
|
63
|
+
* bench run without mutating the addon's saved settings.
|
|
64
|
+
*/
|
|
65
|
+
readonly mode?: "persist" | "override";
|
|
66
|
+
/**
|
|
67
|
+
* Called on every edit when `mode: 'override'`. `patch` is the sparse
|
|
68
|
+
* diff vs the persisted baseline (only the fields the operator touched).
|
|
69
|
+
* `effective` is the baseline merged with the patch — every field a
|
|
70
|
+
* downstream action might need, with the operator's override applied.
|
|
71
|
+
* Callers that need to emit a full engine triple (runtime+backend+format)
|
|
72
|
+
* should read from `effective`, not `patch`, so partial edits (e.g.
|
|
73
|
+
* operator tweaks only `device`) still produce a complete payload.
|
|
74
|
+
*/
|
|
75
|
+
readonly onOverrideChange?: (patch: Record<string, unknown>, effective: Record<string, unknown>) => void;
|
|
63
76
|
}
|
|
64
|
-
export declare function AddonGlobalSettingsForm({ trpc, addonId, nodeId, title, disabled, onAfterChange, refreshToken, sectionIds, collapsible, defaultOpen, mode, onOverrideChange
|
|
77
|
+
export declare function AddonGlobalSettingsForm({ trpc, addonId, nodeId, title, disabled, onAfterChange, refreshToken, sectionIds, collapsible, defaultOpen, mode, onOverrideChange }: AddonGlobalSettingsFormProps): JSX.Element | null;
|
|
65
78
|
export {};
|
|
@@ -1,12 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Standard props for addon page components.
|
|
3
|
+
*
|
|
4
|
+
* Every addon page receives these props from the AddonPageLoader in admin-ui.
|
|
5
|
+
* Use this type for your page's default export:
|
|
6
|
+
*
|
|
7
|
+
* ```tsx
|
|
8
|
+
* import type { AddonPageProps } from '@camstack/ui'
|
|
9
|
+
* import { trpc } from '@camstack/ui-library'
|
|
10
|
+
*
|
|
11
|
+
* export default function MyAddonPage({ theme }: AddonPageProps) {
|
|
12
|
+
* // Typed React-Query hooks via the shared proxy.
|
|
13
|
+
* const { data } = trpc.system.health.useQuery()
|
|
14
|
+
* return <pre>{JSON.stringify(data)}</pre>
|
|
15
|
+
* }
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* The `trpc` prop is the vanilla SDK client (BackendClient.trpc) and
|
|
19
|
+
* remains available for non-React contexts. Inside React components
|
|
20
|
+
* prefer the typed `trpc.X.useQuery / useMutation / useSubscription`
|
|
21
|
+
* hooks imported from `@camstack/ui-library` — they share the same
|
|
22
|
+
* QueryClient + WS client as the host admin-ui and therefore play nice
|
|
23
|
+
* with cache invalidation, suspense, and the rest of React Query.
|
|
24
|
+
*/
|
|
25
|
+
import type { TRPCClient } from "@trpc/client";
|
|
26
|
+
import type { AppRouter } from "@camstack/types";
|
|
3
27
|
export interface AddonPageProps {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
28
|
+
/** Vanilla tRPC client — fully typed access for non-React call sites. */
|
|
29
|
+
readonly trpc: TRPCClient<AppRouter>;
|
|
30
|
+
/** Current theme state */
|
|
31
|
+
readonly theme: {
|
|
32
|
+
readonly isDark: boolean;
|
|
33
|
+
};
|
|
34
|
+
/** Navigate to a route within the admin UI */
|
|
35
|
+
readonly navigate: (path: string) => void;
|
|
12
36
|
}
|