@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.
Files changed (375) hide show
  1. package/dist/composites/accelerator-label.d.ts +9 -9
  2. package/dist/composites/adaptive-downlink.d.ts +141 -143
  3. package/dist/composites/addon-global-settings-form.d.ts +73 -60
  4. package/dist/composites/addon-page-props.d.ts +34 -10
  5. package/dist/composites/agent-step-editor.d.ts +48 -47
  6. package/dist/composites/app-shell/app-shell.d.ts +17 -17
  7. package/dist/composites/app-shell/index.d.ts +3 -3
  8. package/dist/composites/app-shell/sidebar-item.d.ts +9 -8
  9. package/dist/composites/app-shell/sidebar.d.ts +10 -10
  10. package/dist/composites/audio-classification-list.d.ts +16 -15
  11. package/dist/composites/audio-level-waveform.d.ts +31 -30
  12. package/dist/composites/audio-waveform.d.ts +18 -17
  13. package/dist/composites/battery-badge.d.ts +27 -13
  14. package/dist/composites/breadcrumb.d.ts +21 -21
  15. package/dist/composites/camera-stream-player.d.ts +309 -309
  16. package/dist/composites/cap-settings/AutotrackSection.d.ts +19 -2
  17. package/dist/composites/cap-settings/CameraGridLayoutEditor.d.ts +24 -2
  18. package/dist/composites/cap-settings/ConsumablesPanel.d.ts +21 -2
  19. package/dist/composites/cap-settings/CoverageTrack.d.ts +21 -20
  20. package/dist/composites/cap-settings/EventBucketStrip.d.ts +21 -20
  21. package/dist/composites/cap-settings/EventHeatmap.d.ts +8 -7
  22. package/dist/composites/cap-settings/HomePresetPicker.d.ts +2 -2
  23. package/dist/composites/cap-settings/MaskShapeCanvas.d.ts +143 -41
  24. package/dist/composites/cap-settings/MotionZonesSettings.d.ts +41 -2
  25. package/dist/composites/cap-settings/NavigationPanel.d.ts +14 -2
  26. package/dist/composites/cap-settings/PrivacyMaskSettings.d.ts +3 -2
  27. package/dist/composites/cap-settings/PtzPanel.d.ts +15 -2
  28. package/dist/composites/cap-settings/RecordingBandsEditor.d.ts +33 -32
  29. package/dist/composites/cap-settings/RecordingPanel.d.ts +3 -2
  30. package/dist/composites/cap-settings/RecordingSettings.d.ts +11 -10
  31. package/dist/composites/cap-settings/RecordingTimeline.d.ts +3 -2
  32. package/dist/composites/cap-settings/SceneMonitorEditor.d.ts +3 -51
  33. package/dist/composites/cap-settings/SceneReferenceGallery.d.ts +62 -23
  34. package/dist/composites/cap-settings/SceneSettingsForm.d.ts +52 -16
  35. package/dist/composites/cap-settings/TimelineControls.d.ts +21 -20
  36. package/dist/composites/cap-settings/camera-grid-layout.d.ts +95 -95
  37. package/dist/composites/cap-settings/event-thumb.d.ts +9 -8
  38. package/dist/composites/cap-settings/index.d.ts +20 -20
  39. package/dist/composites/cap-settings/privacy-mask-audio.d.ts +47 -47
  40. package/dist/composites/cap-settings/recording-config-form.d.ts +25 -25
  41. package/dist/composites/cap-settings/recording-spans.d.ts +14 -14
  42. package/dist/composites/cap-settings/recording-timeline-model.d.ts +57 -57
  43. package/dist/composites/cap-settings/scene-monitor-copy.d.ts +58 -49
  44. package/dist/composites/client-network-sample.d.ts +41 -41
  45. package/dist/composites/clips/ClipBandBar.d.ts +44 -14
  46. package/dist/composites/clips/ClipPanel.d.ts +30 -6
  47. package/dist/composites/clips/ClipTile.d.ts +26 -5
  48. package/dist/composites/clips/ClipsSection.d.ts +107 -2
  49. package/dist/composites/clips/clip-band.d.ts +72 -38
  50. package/dist/composites/clips/clip-day-window.d.ts +7 -30
  51. package/dist/composites/clips/clip-source-state.d.ts +55 -26
  52. package/dist/composites/clips/clip-still-retry.d.ts +39 -39
  53. package/dist/composites/clips/clip-thumbnail-fetch.d.ts +9 -9
  54. package/dist/composites/clips/clip-tile-media.d.ts +64 -32
  55. package/dist/composites/clips/clip-view-state.d.ts +76 -46
  56. package/dist/composites/code-block.d.ts +5 -4
  57. package/dist/composites/config-form-builder.d.ts +14 -13
  58. package/dist/composites/config-form-field.d.ts +63 -62
  59. package/dist/composites/config-icon-field.d.ts +10 -9
  60. package/dist/composites/config-secret-field.d.ts +51 -27
  61. package/dist/composites/confirm-action-button.d.ts +52 -39
  62. package/dist/composites/confirm-dialog.d.ts +110 -48
  63. package/dist/composites/copy-button.d.ts +25 -19
  64. package/dist/composites/data-table/data-table-header.d.ts +8 -7
  65. package/dist/composites/data-table/data-table-pagination.d.ts +7 -6
  66. package/dist/composites/data-table/data-table-row.d.ts +8 -7
  67. package/dist/composites/data-table/data-table.d.ts +3 -2
  68. package/dist/composites/data-table/index.d.ts +2 -2
  69. package/dist/composites/data-table/types.d.ts +29 -29
  70. package/dist/composites/data-table-filter-bar.d.ts +30 -29
  71. package/dist/composites/data-table-filter.d.ts +34 -34
  72. package/dist/composites/data-table-layout.d.ts +24 -24
  73. package/dist/composites/data-table-pager.d.ts +5 -5
  74. package/dist/composites/data-table-pagination.d.ts +23 -23
  75. package/dist/composites/data-table-selection.d.ts +10 -10
  76. package/dist/composites/data-table.d.ts +167 -118
  77. package/dist/composites/detection-canvas.d.ts +34 -25
  78. package/dist/composites/detection-colors.d.ts +9 -9
  79. package/dist/composites/detection-overlay.d.ts +33 -32
  80. package/dist/composites/detection-result-tree.d.ts +22 -9
  81. package/dist/composites/dev-shell.d.ts +15 -14
  82. package/dist/composites/device-activity-panel.d.ts +37 -31
  83. package/dist/composites/device-card.d.ts +32 -32
  84. package/dist/composites/device-controls/ac-panel.d.ts +2 -2
  85. package/dist/composites/device-controls/alarm-hero-card.d.ts +42 -42
  86. package/dist/composites/device-controls/atoms.d.ts +50 -50
  87. package/dist/composites/device-controls/brightness-panel.d.ts +3 -3
  88. package/dist/composites/device-controls/button-control.d.ts +14 -14
  89. package/dist/composites/device-controls/climate-panel.d.ts +12 -12
  90. package/dist/composites/device-controls/container-primary-hero.d.ts +33 -16
  91. package/dist/composites/device-controls/container-primary.d.ts +68 -39
  92. package/dist/composites/device-controls/control-panel.d.ts +4 -4
  93. package/dist/composites/device-controls/control-registry.d.ts +81 -70
  94. package/dist/composites/device-controls/cover-hero-card.d.ts +26 -26
  95. package/dist/composites/device-controls/cover-inline.d.ts +20 -20
  96. package/dist/composites/device-controls/cover-panel.d.ts +2 -2
  97. package/dist/composites/device-controls/dummy-hero-card.d.ts +2 -2
  98. package/dist/composites/device-controls/fan-hero-card.d.ts +20 -20
  99. package/dist/composites/device-controls/fan-panel.d.ts +3 -3
  100. package/dist/composites/device-controls/humidifier-control.d.ts +46 -29
  101. package/dist/composites/device-controls/image-control.d.ts +41 -27
  102. package/dist/composites/device-controls/index.d.ts +34 -34
  103. package/dist/composites/device-controls/lawn-mower-control.d.ts +30 -16
  104. package/dist/composites/device-controls/light-hero-card.d.ts +15 -15
  105. package/dist/composites/device-controls/lock-hero-card.d.ts +14 -14
  106. package/dist/composites/device-controls/lock-panel.d.ts +3 -3
  107. package/dist/composites/device-controls/media-player-hero-card.d.ts +16 -16
  108. package/dist/composites/device-controls/media-player-panel.d.ts +7 -7
  109. package/dist/composites/device-controls/offline-badge.d.ts +23 -8
  110. package/dist/composites/device-controls/panel-controls.d.ts +39 -20
  111. package/dist/composites/device-controls/pet-feeder-panel.d.ts +27 -9
  112. package/dist/composites/device-controls/popover-row-action.d.ts +18 -6
  113. package/dist/composites/device-controls/primary-child-picker.d.ts +31 -15
  114. package/dist/composites/device-controls/primary-child.d.ts +14 -25
  115. package/dist/composites/device-controls/radial-gauge.d.ts +17 -17
  116. package/dist/composites/device-controls/script-automation-controls.d.ts +9 -9
  117. package/dist/composites/device-controls/sensor-hero-card.d.ts +26 -8
  118. package/dist/composites/device-controls/sensor-inline-control.d.ts +21 -9
  119. package/dist/composites/device-controls/sensor-value-atom.d.ts +97 -76
  120. package/dist/composites/device-controls/switch-hero-card.d.ts +11 -11
  121. package/dist/composites/device-controls/switch-panel.d.ts +2 -2
  122. package/dist/composites/device-controls/tap-toggle.d.ts +13 -13
  123. package/dist/composites/device-controls/thermostat-hero-card.d.ts +16 -16
  124. package/dist/composites/device-controls/types.d.ts +11 -11
  125. package/dist/composites/device-controls/update-control.d.ts +20 -7
  126. package/dist/composites/device-controls/vacuum-control.d.ts +41 -25
  127. package/dist/composites/device-controls/valve-control.d.ts +51 -35
  128. package/dist/composites/device-controls/water-heater-control.d.ts +48 -31
  129. package/dist/composites/device-controls/weather-control.d.ts +46 -28
  130. package/dist/composites/device-export-panel.d.ts +34 -34
  131. package/dist/composites/device-grid.d.ts +10 -10
  132. package/dist/composites/device-item/actions.d.ts +40 -18
  133. package/dist/composites/device-item/admin-link-quick-action.d.ts +66 -26
  134. package/dist/composites/device-item/child-layout.d.ts +43 -26
  135. package/dist/composites/device-item/child-section-accordion.d.ts +20 -6
  136. package/dist/composites/device-item/children-accordion.d.ts +11 -11
  137. package/dist/composites/device-item/container-children-context.d.ts +28 -11
  138. package/dist/composites/device-item/device-delete-action.d.ts +23 -5
  139. package/dist/composites/device-item/features.d.ts +33 -15
  140. package/dist/composites/device-item/header.d.ts +53 -31
  141. package/dist/composites/device-item/helpers.d.ts +291 -274
  142. package/dist/composites/device-item/index.d.ts +18 -9
  143. package/dist/composites/device-item/preview.d.ts +41 -21
  144. package/dist/composites/device-item/quick-detail-action.d.ts +4 -4
  145. package/dist/composites/device-item/reboot-quick-action.d.ts +28 -7
  146. package/dist/composites/device-item/role-display-defaults-context.d.ts +28 -12
  147. package/dist/composites/device-item/status-dot.d.ts +24 -6
  148. package/dist/composites/device-list/batch-actions-bar.d.ts +23 -12
  149. package/dist/composites/device-list/batch-toolbar.d.ts +13 -13
  150. package/dist/composites/device-list/columns.d.ts +108 -108
  151. package/dist/composites/device-list/device-integration.d.ts +48 -58
  152. package/dist/composites/device-list/device-mode.d.ts +121 -121
  153. package/dist/composites/device-list/empty-state.d.ts +14 -3
  154. package/dist/composites/device-list/filter-chips.d.ts +42 -29
  155. package/dist/composites/device-list/fuzzy-match.d.ts +22 -22
  156. package/dist/composites/device-list/generic-mode.d.ts +88 -88
  157. package/dist/composites/device-list/group.d.ts +62 -35
  158. package/dist/composites/device-list/hardware-cell.d.ts +14 -3
  159. package/dist/composites/device-list/hardware.d.ts +29 -11
  160. package/dist/composites/device-list/icon-action.d.ts +27 -15
  161. package/dist/composites/device-list/index.d.ts +46 -23
  162. package/dist/composites/device-list/multi-select.d.ts +17 -17
  163. package/dist/composites/device-list/page-size-select.d.ts +13 -7
  164. package/dist/composites/device-list/pagination.d.ts +19 -12
  165. package/dist/composites/device-list/sort.d.ts +28 -15
  166. package/dist/composites/device-list/sortable-header.d.ts +20 -7
  167. package/dist/composites/device-list/table-layout.d.ts +44 -44
  168. package/dist/composites/device-list/type-filter.d.ts +16 -16
  169. package/dist/composites/device-list/url-state.d.ts +35 -35
  170. package/dist/composites/device-meta.d.ts +43 -43
  171. package/dist/composites/device-picker/DevicePicker.d.ts +72 -33
  172. package/dist/composites/device-picker/SelectedChip.d.ts +10 -9
  173. package/dist/composites/device-picker/device-filter-bar.d.ts +19 -18
  174. package/dist/composites/device-picker/device-fleet-view.d.ts +11 -3
  175. package/dist/composites/device-picker/device-parent.d.ts +27 -27
  176. package/dist/composites/device-picker/device-picker-grouping.d.ts +3 -3
  177. package/dist/composites/device-picker/device-picker-model.d.ts +140 -140
  178. package/dist/composites/device-picker/device-selection-rows.d.ts +31 -24
  179. package/dist/composites/device-picker/device-selection.d.ts +43 -43
  180. package/dist/composites/device-picker/index.d.ts +9 -9
  181. package/dist/composites/device-select-field.d.ts +17 -16
  182. package/dist/composites/device-select-filter.d.ts +78 -78
  183. package/dist/composites/device-selector-picker.d.ts +25 -25
  184. package/dist/composites/device-step-matrix.d.ts +54 -28
  185. package/dist/composites/discovery-panel.d.ts +22 -22
  186. package/dist/composites/doorbell-recent-panel.d.ts +9 -8
  187. package/dist/composites/empty-state.d.ts +8 -8
  188. package/dist/composites/error-box.d.ts +32 -17
  189. package/dist/composites/event-kind-visuals.d.ts +29 -18
  190. package/dist/composites/event-stream.d.ts +59 -42
  191. package/dist/composites/extensions/AssociationSlotCard.d.ts +45 -24
  192. package/dist/composites/extensions/ExtensionsPanel.d.ts +41 -18
  193. package/dist/composites/extensions/extensions-view-state.d.ts +71 -53
  194. package/dist/composites/filter-bar.d.ts +22 -21
  195. package/dist/composites/form-field.d.ts +9 -9
  196. package/dist/composites/format-state-value.d.ts +23 -51
  197. package/dist/composites/grouped-model-selector.d.ts +7 -6
  198. package/dist/composites/hls-quality.d.ts +26 -26
  199. package/dist/composites/hls-video.d.ts +62 -39
  200. package/dist/composites/hover-zoom-image.d.ts +35 -16
  201. package/dist/composites/icon-picker.d.ts +86 -50
  202. package/dist/composites/image-selector.d.ts +21 -20
  203. package/dist/composites/index.d.ts +204 -204
  204. package/dist/composites/inference-config-selector.d.ts +36 -35
  205. package/dist/composites/kebab-menu.d.ts +53 -35
  206. package/dist/composites/key-value-list.d.ts +14 -14
  207. package/dist/composites/log-stream-scroll.d.ts +24 -24
  208. package/dist/composites/log-stream.d.ts +81 -70
  209. package/dist/composites/login-form.d.ts +7 -6
  210. package/dist/composites/model-bound-slider.d.ts +46 -26
  211. package/dist/composites/model-picker.d.ts +20 -19
  212. package/dist/composites/mount-addon-page.d.ts +12 -12
  213. package/dist/composites/network-link-badge.d.ts +7 -6
  214. package/dist/composites/node-picker.d.ts +14 -13
  215. package/dist/composites/notification-targets-field.d.ts +76 -58
  216. package/dist/composites/notification-targets-options.d.ts +9 -6
  217. package/dist/composites/option-select/OptionSelect.d.ts +23 -22
  218. package/dist/composites/option-select/index.d.ts +4 -4
  219. package/dist/composites/option-select/option-select-model.d.ts +35 -35
  220. package/dist/composites/page-header.d.ts +6 -6
  221. package/dist/composites/peer-connection-config.d.ts +9 -9
  222. package/dist/composites/phase-icon.d.ts +10 -3
  223. package/dist/composites/pipeline-builder.d.ts +21 -13
  224. package/dist/composites/pipeline-matrix-shared.d.ts +159 -150
  225. package/dist/composites/pipeline-runtime-selector.d.ts +12 -11
  226. package/dist/composites/pipeline-step.d.ts +39 -31
  227. package/dist/composites/placeholder-field/PlaceholderChipField.d.ts +23 -22
  228. package/dist/composites/placeholder-field/index.d.ts +1 -1
  229. package/dist/composites/provider-badge.d.ts +6 -5
  230. package/dist/composites/ptz-overlay.d.ts +38 -18
  231. package/dist/composites/qr-code.d.ts +24 -10
  232. package/dist/composites/reconnect-schedule.d.ts +22 -22
  233. package/dist/composites/resolve-step-default-model.d.ts +94 -94
  234. package/dist/composites/response-log.d.ts +7 -6
  235. package/dist/composites/root-model-source.d.ts +21 -10
  236. package/dist/composites/scope-picker.d.ts +49 -25
  237. package/dist/composites/section-card.d.ts +19 -11
  238. package/dist/composites/setting-row.d.ts +39 -21
  239. package/dist/composites/snapshot-button.d.ts +23 -19
  240. package/dist/composites/sort-header-button.d.ts +25 -8
  241. package/dist/composites/stat-card.d.ts +20 -8
  242. package/dist/composites/state-values-stream.d.ts +49 -24
  243. package/dist/composites/status-badge.d.ts +10 -8
  244. package/dist/composites/step-inspector/gate-control.d.ts +13 -12
  245. package/dist/composites/step-inspector/index.d.ts +8 -8
  246. package/dist/composites/step-inspector/layered-settings-form.d.ts +41 -30
  247. package/dist/composites/step-inspector/segmented-choice.d.ts +8 -7
  248. package/dist/composites/step-inspector/setting-values.d.ts +13 -8
  249. package/dist/composites/step-inspector/step-detail-dock.d.ts +39 -23
  250. package/dist/composites/step-inspector/step-inspector-panel.d.ts +34 -28
  251. package/dist/composites/step-inspector/step-model-row.d.ts +29 -24
  252. package/dist/composites/step-inspector/step-search.d.ts +11 -11
  253. package/dist/composites/step-timings.d.ts +7 -6
  254. package/dist/composites/step-tree.d.ts +17 -12
  255. package/dist/composites/stream-broker-selector.d.ts +29 -8
  256. package/dist/composites/stream-debug/stream-debug-overlay.d.ts +40 -40
  257. package/dist/composites/stream-debug/webrtc-debug-stats.d.ts +144 -129
  258. package/dist/composites/stream-panel.d.ts +212 -201
  259. package/dist/composites/table-sort.d.ts +61 -61
  260. package/dist/composites/timezone-selector.d.ts +15 -13
  261. package/dist/composites/training/send-frame-to-training.d.ts +5 -4
  262. package/dist/composites/training/training-collection-picker.d.ts +4 -3
  263. package/dist/composites/training/training-refusal-text.d.ts +6 -6
  264. package/dist/composites/unit-picker/UnitPicker.d.ts +19 -14
  265. package/dist/composites/unit-picker/index.d.ts +1 -1
  266. package/dist/composites/use-data-table-filter.d.ts +19 -19
  267. package/dist/composites/version-badge.d.ts +19 -18
  268. package/dist/composites/webrtc-diagnostics/EndpointTestCard.d.ts +7 -7
  269. package/dist/composites/webrtc-diagnostics/HubSessionTestCard.d.ts +14 -14
  270. package/dist/composites/webrtc-diagnostics/RunReport.d.ts +10 -5
  271. package/dist/composites/webrtc-diagnostics/endpoint-probe.d.ts +41 -21
  272. package/dist/composites/webrtc-diagnostics/endpoint-test.d.ts +37 -32
  273. package/dist/composites/webrtc-diagnostics/format.d.ts +3 -3
  274. package/dist/composites/webrtc-diagnostics/ice-candidates.d.ts +49 -49
  275. package/dist/composites/webrtc-diagnostics/nat-mapping.d.ts +36 -36
  276. package/dist/composites/webrtc-diagnostics/session-run.d.ts +108 -95
  277. package/dist/composites/webrtc-diagnostics/session-verdict.d.ts +29 -20
  278. package/dist/composites/widget-panel.d.ts +23 -23
  279. package/dist/composites/widget-slot.d.ts +35 -17
  280. package/dist/contexts/custom-field-renderers.d.ts +53 -17
  281. package/dist/contexts/device-context.d.ts +32 -12
  282. package/dist/contexts/device-quick-detail.d.ts +13 -4
  283. package/dist/contexts/player-overlays.d.ts +82 -42
  284. package/dist/contexts/recorded-playback.d.ts +40 -18
  285. package/dist/contexts/system-context.d.ts +28 -13
  286. package/dist/contexts/vod-playback.d.ts +39 -22
  287. package/dist/contexts/widget-registry.d.ts +139 -102
  288. package/dist/contexts/zone-editing.d.ts +69 -46
  289. package/dist/generated/system-hooks.d.ts +17 -1
  290. package/dist/hooks/index.d.ts +43 -43
  291. package/dist/hooks/turn-server-cache.d.ts +69 -69
  292. package/dist/hooks/use-capability-presence.d.ts +65 -28
  293. package/dist/hooks/use-cluster-nodes.d.ts +54 -27
  294. package/dist/hooks/use-device-autotrack.d.ts +7 -7
  295. package/dist/hooks/use-device-battery.d.ts +24 -11
  296. package/dist/hooks/use-device-cap-slice.d.ts +15 -15
  297. package/dist/hooks/use-device-capability.d.ts +61 -27
  298. package/dist/hooks/use-device-detections.d.ts +32 -32
  299. package/dist/hooks/use-device-features.d.ts +18 -18
  300. package/dist/hooks/use-device-list-page-size.d.ts +19 -6
  301. package/dist/hooks/use-device-network-link.d.ts +15 -7
  302. package/dist/hooks/use-device-proxy.d.ts +98 -92
  303. package/dist/hooks/use-device-snapshot.d.ts +23 -23
  304. package/dist/hooks/use-device-webrtc.d.ts +211 -205
  305. package/dist/hooks/use-devices.d.ts +9 -9
  306. package/dist/hooks/use-doorbell-events.d.ts +13 -13
  307. package/dist/hooks/use-event-stream.d.ts +6 -3
  308. package/dist/hooks/use-is-mobile.d.ts +5 -5
  309. package/dist/hooks/use-live-buffer.d.ts +5 -5
  310. package/dist/hooks/use-live-event.d.ts +1 -1
  311. package/dist/hooks/use-navigation.d.ts +20 -20
  312. package/dist/hooks/use-optimistic-slice.d.ts +13 -13
  313. package/dist/hooks/use-persisted-page-size.d.ts +10 -10
  314. package/dist/hooks/use-ptz.d.ts +108 -108
  315. package/dist/hooks/use-stationary-overlay.d.ts +37 -37
  316. package/dist/hooks/use-system-query.d.ts +33 -10
  317. package/dist/hooks/use-url-query.d.ts +3 -3
  318. package/dist/icons/index.d.ts +2 -2
  319. package/dist/icons/provider-icons.d.ts +2 -2
  320. package/dist/icons/status-icons.d.ts +2 -2
  321. package/dist/index.cjs +123 -69
  322. package/dist/index.d.ts +31 -27
  323. package/dist/index.js +123 -69
  324. package/dist/lib/cap-error.d.ts +18 -39
  325. package/dist/lib/cn.d.ts +1 -1
  326. package/dist/lib/fleet-query-defaults.d.ts +68 -34
  327. package/dist/lib/format-control-datetime.d.ts +16 -16
  328. package/dist/lib/format-duration.d.ts +12 -12
  329. package/dist/lib/format-last-seen.d.ts +5 -18
  330. package/dist/lib/format-numeric.d.ts +7 -7
  331. package/dist/lib/hub-mount.d.ts +8 -42
  332. package/dist/lib/index.d.ts +21 -21
  333. package/dist/lib/phase-config.d.ts +24 -11
  334. package/dist/lib/pipeline-mirror.d.ts +16 -16
  335. package/dist/lib/recorded-control-protocol.d.ts +41 -43
  336. package/dist/lib/resolve-sensor-display.d.ts +36 -20
  337. package/dist/lib/responsive.d.ts +54 -54
  338. package/dist/lib/scrub-controller.d.ts +75 -78
  339. package/dist/lib/shared-context.d.ts +27 -2
  340. package/dist/lib/tailwind-variants.d.ts +20 -20
  341. package/dist/primitives/badge.d.ts +5 -10
  342. package/dist/primitives/bottom-sheet.d.ts +7 -7
  343. package/dist/primitives/button.d.ts +5 -9
  344. package/dist/primitives/card.d.ts +4 -8
  345. package/dist/primitives/checkbox.d.ts +3 -4
  346. package/dist/primitives/collapsible-card.d.ts +23 -13
  347. package/dist/primitives/dialog.d.ts +33 -59
  348. package/dist/primitives/dropdown.d.ts +13 -13
  349. package/dist/primitives/floating-panel.d.ts +41 -20
  350. package/dist/primitives/icon-button.d.ts +8 -12
  351. package/dist/primitives/index.d.ts +22 -22
  352. package/dist/primitives/input.d.ts +6 -16
  353. package/dist/primitives/label.d.ts +3 -4
  354. package/dist/primitives/mobile-drawer.d.ts +8 -8
  355. package/dist/primitives/password-input.d.ts +18 -18
  356. package/dist/primitives/popover.d.ts +7 -7
  357. package/dist/primitives/scroll-area.d.ts +3 -4
  358. package/dist/primitives/select.d.ts +20 -20
  359. package/dist/primitives/separator.d.ts +4 -8
  360. package/dist/primitives/skeleton.d.ts +3 -4
  361. package/dist/primitives/switch.d.ts +6 -6
  362. package/dist/primitives/tabs.d.ts +26 -26
  363. package/dist/primitives/tooltip.d.ts +12 -12
  364. package/dist/theme/create-theme.d.ts +1 -1
  365. package/dist/theme/defaults.d.ts +1 -1
  366. package/dist/theme/index.d.ts +6 -6
  367. package/dist/theme/theme-provider.d.ts +8 -7
  368. package/dist/theme/theme-to-css.d.ts +1 -1
  369. package/dist/theme/types.d.ts +98 -100
  370. package/dist/theme/use-theme-mode.d.ts +1 -1
  371. package/dist/trpc-react.d.ts +23 -3
  372. package/dist/widgets/host-widgets.d.ts +4 -4
  373. package/package.json +8 -4
  374. package/src/tailwind/camstack-theme.css +11 -0
  375. package/dist/composites/unit-picker/UnitPicker.spec.d.ts +0 -1
@@ -1,212 +1,223 @@
1
- import { ReactNode } from 'react';
2
- import { CamProfile, WebrtcSessionDebug, StationaryOverlayBox } from '@camstack/types';
3
- import { ApplyDownlinkProbe } from './adaptive-downlink';
4
- import { SignalingResult, ClientOfferResult, ClientStreamHints, SessionSignalingState } from './camera-stream-player';
5
- import { DeviceDetections } from '../hooks/use-device-detections';
6
1
  /**
7
- * Discriminated WebRTC target — same shape as the backend cap. The
8
- * `profile` tier uses the canonical `CamProfile` enum.
9
- */
2
+ * StreamPanel — unified camera stream viewer with header bar, overlay toggles,
3
+ * stream selector, pipeline phase, play/stop, and snapshot preview.
4
+ *
5
+ * Combines features from LiveStreamViewer (admin-ui) and PipelineTab (benchmark)
6
+ * into a single reusable component in ui-library.
7
+ *
8
+ * The component is data-agnostic: callers fetch devices/streams/detections using
9
+ * their own hooks and pass the results as props.
10
+ */
11
+ import { type ReactNode, type JSX } from "react";
12
+ import type { CamProfile, WebrtcSessionDebug } from "@camstack/types";
13
+ import type { ApplyDownlinkProbe } from "./adaptive-downlink";
14
+ import { type SignalingResult, type ClientOfferResult, type ClientStreamHints, type SessionSignalingState } from "./camera-stream-player";
15
+ import type { DeviceDetections } from "../hooks/use-device-detections";
16
+ import type { StationaryOverlayBox } from "@camstack/types";
17
+ /**
18
+ * Discriminated WebRTC target — same shape as the backend cap. The
19
+ * `profile` tier uses the canonical `CamProfile` enum.
20
+ */
10
21
  export type StreamChoiceTarget = {
11
- readonly kind: 'adaptive';
22
+ readonly kind: "adaptive";
12
23
  } | {
13
- readonly kind: 'profile';
14
- readonly profile: CamProfile;
24
+ readonly kind: "profile";
25
+ readonly profile: CamProfile;
15
26
  } | {
16
- readonly kind: 'cam-stream';
17
- readonly camStreamId: string;
27
+ readonly kind: "cam-stream";
28
+ readonly camStreamId: string;
18
29
  };
19
30
  export interface StreamChoice {
20
- /**
21
- * Stable identifier for React keys, dropdown values, and the
22
- * player's `streamKey` prop. Opaque to the panel — typical values:
23
- * `'adaptive'`, `'profile:high'`, `'stream:native:main'`.
24
- */
25
- readonly id: string;
26
- /** Display label (e.g. "Adaptive", "HIGH (3840×2160)", "Native main"). */
27
- readonly label: string;
28
- /** Structured WebRTC target — passed verbatim to `createSession`. */
29
- readonly target: StreamChoiceTarget;
30
- /** Live broker status (null if unavailable). */
31
- readonly status?: string | null;
32
- /** Input FPS from camera (null if unavailable). */
33
- readonly inputFps?: number | null;
34
- /** Bitrate in kbps (null if unavailable). */
35
- readonly bitrateKbps?: number | null;
31
+ /**
32
+ * Stable identifier for React keys, dropdown values, and the
33
+ * player's `streamKey` prop. Opaque to the panel — typical values:
34
+ * `'adaptive'`, `'profile:high'`, `'stream:native:main'`.
35
+ */
36
+ readonly id: string;
37
+ /** Display label (e.g. "Adaptive", "HIGH (3840×2160)", "Native main"). */
38
+ readonly label: string;
39
+ /** Structured WebRTC target — passed verbatim to `createSession`. */
40
+ readonly target: StreamChoiceTarget;
41
+ /** Live broker status (null if unavailable). */
42
+ readonly status?: string | null;
43
+ /** Input FPS from camera (null if unavailable). */
44
+ readonly inputFps?: number | null;
45
+ /** Bitrate in kbps (null if unavailable). */
46
+ readonly bitrateKbps?: number | null;
36
47
  }
37
48
  export interface StreamStats {
38
- readonly status: string;
39
- readonly inputFps: number;
40
- readonly uptimeMs: number;
49
+ readonly status: string;
50
+ readonly inputFps: number;
51
+ readonly uptimeMs: number;
41
52
  }
42
53
  export interface StreamPanelProps {
43
- readonly serverUrl?: string;
44
- readonly createSession?: (target: StreamChoiceTarget, hints?: ClientStreamHints) => Promise<SignalingResult>;
45
- readonly sendAnswer?: (sessionId: string, sdpAnswer: string) => Promise<void>;
46
- /**
47
- * Client-offer signaling — PREFERRED over `createSession` for browsers.
48
- * Closes over the selected target; the player builds the offer and this
49
- * posts it. Lets iOS pass H.264 High/Main (incl. 4K) through untouched.
50
- * Optional so non-browser callers (benchmark) can stay on server-offer.
51
- */
52
- readonly handleOffer?: (target: StreamChoiceTarget, sdpOffer: string, sessionId?: string) => Promise<ClientOfferResult>;
53
- /** Browser-side ICE servers (STUN + TURN) for client-offer mode. */
54
- readonly getIceServers?: () => Promise<readonly RTCIceServer[] | undefined>;
55
- /** Trickle ICE — push a client candidate to the server (sessionId-scoped). */
56
- readonly addIceCandidate?: (sessionId: string, candidate: RTCIceCandidateInit) => Promise<void>;
57
- /** Trickle ICE — poll the server's gathered candidates (sessionId-scoped). */
58
- readonly getIceCandidates?: (sessionId: string) => Promise<{
59
- candidates: RTCIceCandidateInit[];
60
- done: boolean;
61
- }>;
62
- readonly closeSession?: (sessionId: string) => Promise<void>;
63
- /**
64
- * Poll a session's live signaling state (client-offer mode). A non-null
65
- * `pendingRenegotiation` after an adaptive tier switch makes the player
66
- * transparently re-offer on the same session. Optional — omit to disable
67
- * adaptive re-offer (steady-state behaviour is unchanged).
68
- */
69
- readonly getSessionState?: (sessionId: string) => Promise<SessionSignalingState>;
70
- /**
71
- * The server half of the stream-debug overlay. Optional, and when it is
72
- * absent the overlay SAYS so rather than showing an empty section — a panel
73
- * that silently omits half its answer is worse than one that admits it.
74
- */
75
- readonly getSessionDebug?: (sessionId: string) => Promise<WebrtcSessionDebug>;
76
- /** Hand the downlink probe to the live session (D733) — one session per open. */
77
- readonly applyDownlinkProbe?: ApplyDownlinkProbe;
78
- /**
79
- * When set, the panel switches to VOD mode: it renders an `HlsVideo`
80
- * over this master `.m3u8` URL INSTEAD of the live WebRTC player, and
81
- * the live signaling props are ignored. Lets the same hero player show
82
- * recordings/clips (driven by the Recording tab) without a second
83
- * player. Clearing it returns the panel to live mode.
84
- */
85
- readonly playbackUrl?: string;
86
- /**
87
- * What {@link playbackUrl} is. Absent means `hls` — the recorder's manifest,
88
- * which is what every caller passed before native clips existed. A vendor
89
- * addon's own clip is `mp4` and the hero plays it as a plain media URL
90
- * (D549 22); passing it as `hls` would hand an MP4 to a manifest parser.
91
- */
92
- readonly playbackFormat?: 'hls' | 'mp4';
93
- /** Bearer token for the admin-gated data-plane playback route (optional). */
94
- readonly playbackAuthToken?: string | null;
95
- /**
96
- * Short label for the clip/window being played — shown in the header in
97
- * place of the stream selector while in VOD mode.
98
- */
99
- readonly playbackLabel?: string;
100
- /**
101
- * Invoked when the operator clicks the (re-purposed) play/stop button
102
- * while in VOD mode. The caller clears its playback request to return
103
- * the panel to the live stream.
104
- */
105
- readonly onExitPlayback?: () => void;
106
- /** Available streams. If omitted or single entry, no dropdown shown. */
107
- readonly streams?: readonly StreamChoice[];
108
- /** Currently active StreamChoice id. Defaults to first stream. */
109
- readonly activeStreamId?: string;
110
- /** Called when user selects a different stream (StreamChoice id). */
111
- readonly onStreamChange?: (id: string) => void;
112
- readonly deviceName?: string;
113
- /** Pipeline phase from useDeviceDetections (e.g. "active", "watching") */
114
- readonly phase?: string;
115
- /** Pipeline metrics from useDeviceWebrtc. If provided, overrides phase and adds detection fps. */
116
- readonly pipelineMetrics?: {
117
- phase: string;
118
- detectionFps: number;
119
- avgInferenceMs: number;
120
- } | null;
121
- /** Detection data from useDeviceDetections hook. If omitted, no overlays. */
122
- readonly detections?: DeviceDetections;
123
- /** The census for this camera, normalised — from the occupancy snapshot. The
124
- * panel is data-agnostic by design, so the caller fetches it; absent means
125
- * "not fetched", and the stationary layer then draws nothing rather than
126
- * claiming an empty lot. */
127
- readonly stationaryObjects?: readonly StationaryOverlayBox[];
128
- /** Initial state for detection overlay (default: true) */
129
- readonly defaultShowDetections?: boolean;
130
- /** Initial state for motion overlay (default: false) */
131
- readonly defaultShowMotion?: boolean;
132
- readonly streamStats?: StreamStats;
133
- /** Auto-play on mount (default: true) */
134
- readonly autoPlay?: boolean;
135
- /** Show play/stop toggle + snapshot preview when stopped (default: false) */
136
- readonly showPlayStop?: boolean;
137
- /** Snapshot source URL (data: URI). Only used when showPlayStop=true. */
138
- readonly snapshotSrc?: string | null;
139
- /**
140
- * Optional poster (snapshot data-URL) painted by the live `<video>` until
141
- * its FIRST frame decodes — a cold-start fallback only. Independent of
142
- * `snapshotSrc` (which is the play/stop preview). Caller-supplied; when
143
- * omitted the video simply starts black until the first frame.
144
- */
145
- readonly posterUrl?: string;
146
- /** Whether snapshot is currently loading */
147
- readonly snapshotLoading?: boolean;
148
- /** Callback to refresh snapshot */
149
- readonly onRefreshSnapshot?: () => void;
150
- /** Show stream stats in header (fps, uptime) (default: false) */
151
- readonly showStreamStats?: boolean;
152
- readonly children?: ReactNode;
153
- /**
154
- * Extra overlay node composited on top of the video, alongside the
155
- * built-in detection overlay. Used by callers to layer device-scoped
156
- * controls (PTZOverlay, AudioPTT, ...) without forking the panel.
157
- */
158
- readonly extraOverlay?: ReactNode;
159
- /**
160
- * Whether the device supports PTZ. When true, the header shows a
161
- * "PTZ" toggle next to detect/motion.
162
- */
163
- readonly ptzAvailable?: boolean;
164
- /**
165
- * Controlled visibility of the PTZ overlay. Drives both the
166
- * header button highlight and (combined with `ptzOverlay`) overlay
167
- * rendering. Caller computes the final value (e.g. OR with an
168
- * external "force on" surface like a floating PTZ panel) and
169
- * passes it down here.
170
- */
171
- readonly ptzShown?: boolean;
172
- /**
173
- * Overlay rendered ON the live video when `ptzShown` is true.
174
- * Typically a `<PTZOverlay controls={...} mode="overlay" />` from
175
- * ui-library. Combined with `extraOverlay` in the player overlay
176
- * slot — both render together when active.
177
- */
178
- readonly ptzOverlay?: ReactNode;
179
- /**
180
- * Notified when the user clicks the in-header PTZ toggle. The
181
- * caller updates its source of truth for `ptzShown`. No-op if
182
- * omitted (button stays inert).
183
- */
184
- readonly onPtzToggle?: () => void;
185
- /**
186
- * Whether the device supports two-way audio (intercom). When true,
187
- * the header shows an "Intercom" toggle next to detect/motion that
188
- * lets the operator open the floating intercom panel without leaving
189
- * the stream view.
190
- */
191
- readonly intercomAvailable?: boolean;
192
- /**
193
- * Controlled visibility of the intercom panel — drives the button's
194
- * highlight state. The caller (which owns the floating-panel state)
195
- * passes `true` while its intercom panel is open.
196
- */
197
- readonly intercomShown?: boolean;
198
- /**
199
- * Notified when the user clicks the in-header intercom toggle. The
200
- * caller flips its panel state. No-op if omitted (button inert).
201
- */
202
- readonly onIntercomToggle?: () => void;
203
- /**
204
- * When true, drops the panel's outer rounded card chrome (border,
205
- * rounded corners, background). Use when embedding into another
206
- * surface that already provides framing — e.g. the device-detail
207
- * left-column hero where the panel is one row of a larger card.
208
- */
209
- readonly chromeless?: boolean;
210
- readonly className?: string;
54
+ readonly serverUrl?: string;
55
+ readonly createSession?: (target: StreamChoiceTarget, hints?: ClientStreamHints) => Promise<SignalingResult>;
56
+ readonly sendAnswer?: (sessionId: string, sdpAnswer: string) => Promise<void>;
57
+ /**
58
+ * Client-offer signaling — PREFERRED over `createSession` for browsers.
59
+ * Closes over the selected target; the player builds the offer and this
60
+ * posts it. Lets iOS pass H.264 High/Main (incl. 4K) through untouched.
61
+ * Optional so non-browser callers (benchmark) can stay on server-offer.
62
+ */
63
+ readonly handleOffer?: (target: StreamChoiceTarget, sdpOffer: string, sessionId?: string) => Promise<ClientOfferResult>;
64
+ /** Browser-side ICE servers (STUN + TURN) for client-offer mode. */
65
+ readonly getIceServers?: () => Promise<readonly RTCIceServer[] | undefined>;
66
+ /** Trickle ICE — push a client candidate to the server (sessionId-scoped). */
67
+ readonly addIceCandidate?: (sessionId: string, candidate: RTCIceCandidateInit) => Promise<void>;
68
+ /** Trickle ICE — poll the server's gathered candidates (sessionId-scoped). */
69
+ readonly getIceCandidates?: (sessionId: string) => Promise<{
70
+ candidates: RTCIceCandidateInit[];
71
+ done: boolean;
72
+ }>;
73
+ readonly closeSession?: (sessionId: string) => Promise<void>;
74
+ /**
75
+ * Poll a session's live signaling state (client-offer mode). A non-null
76
+ * `pendingRenegotiation` after an adaptive tier switch makes the player
77
+ * transparently re-offer on the same session. Optional — omit to disable
78
+ * adaptive re-offer (steady-state behaviour is unchanged).
79
+ */
80
+ readonly getSessionState?: (sessionId: string) => Promise<SessionSignalingState>;
81
+ /**
82
+ * The server half of the stream-debug overlay. Optional, and when it is
83
+ * absent the overlay SAYS so rather than showing an empty section — a panel
84
+ * that silently omits half its answer is worse than one that admits it.
85
+ */
86
+ readonly getSessionDebug?: (sessionId: string) => Promise<WebrtcSessionDebug>;
87
+ /** Hand the downlink probe to the live session (D733) — one session per open. */
88
+ readonly applyDownlinkProbe?: ApplyDownlinkProbe;
89
+ /**
90
+ * When set, the panel switches to VOD mode: it renders an `HlsVideo`
91
+ * over this master `.m3u8` URL INSTEAD of the live WebRTC player, and
92
+ * the live signaling props are ignored. Lets the same hero player show
93
+ * recordings/clips (driven by the Recording tab) without a second
94
+ * player. Clearing it returns the panel to live mode.
95
+ */
96
+ readonly playbackUrl?: string;
97
+ /**
98
+ * What {@link playbackUrl} is. Absent means `hls` — the recorder's manifest,
99
+ * which is what every caller passed before native clips existed. A vendor
100
+ * addon's own clip is `mp4` and the hero plays it as a plain media URL
101
+ * (D549 22); passing it as `hls` would hand an MP4 to a manifest parser.
102
+ */
103
+ readonly playbackFormat?: "hls" | "mp4";
104
+ /** Bearer token for the admin-gated data-plane playback route (optional). */
105
+ readonly playbackAuthToken?: string | null;
106
+ /**
107
+ * Short label for the clip/window being played — shown in the header in
108
+ * place of the stream selector while in VOD mode.
109
+ */
110
+ readonly playbackLabel?: string;
111
+ /**
112
+ * Invoked when the operator clicks the (re-purposed) play/stop button
113
+ * while in VOD mode. The caller clears its playback request to return
114
+ * the panel to the live stream.
115
+ */
116
+ readonly onExitPlayback?: () => void;
117
+ /** Available streams. If omitted or single entry, no dropdown shown. */
118
+ readonly streams?: readonly StreamChoice[];
119
+ /** Currently active StreamChoice id. Defaults to first stream. */
120
+ readonly activeStreamId?: string;
121
+ /** Called when user selects a different stream (StreamChoice id). */
122
+ readonly onStreamChange?: (id: string) => void;
123
+ readonly deviceName?: string;
124
+ /** Pipeline phase from useDeviceDetections (e.g. "active", "watching") */
125
+ readonly phase?: string;
126
+ /** Pipeline metrics from useDeviceWebrtc. If provided, overrides phase and adds detection fps. */
127
+ readonly pipelineMetrics?: {
128
+ phase: string;
129
+ detectionFps: number;
130
+ avgInferenceMs: number;
131
+ } | null;
132
+ /** Detection data from useDeviceDetections hook. If omitted, no overlays. */
133
+ readonly detections?: DeviceDetections;
134
+ /** The census for this camera, normalised — from the occupancy snapshot. The
135
+ * panel is data-agnostic by design, so the caller fetches it; absent means
136
+ * "not fetched", and the stationary layer then draws nothing rather than
137
+ * claiming an empty lot. */
138
+ readonly stationaryObjects?: readonly StationaryOverlayBox[];
139
+ /** Initial state for detection overlay (default: true) */
140
+ readonly defaultShowDetections?: boolean;
141
+ /** Initial state for motion overlay (default: false) */
142
+ readonly defaultShowMotion?: boolean;
143
+ readonly streamStats?: StreamStats;
144
+ /** Auto-play on mount (default: true) */
145
+ readonly autoPlay?: boolean;
146
+ /** Show play/stop toggle + snapshot preview when stopped (default: false) */
147
+ readonly showPlayStop?: boolean;
148
+ /** Snapshot source URL (data: URI). Only used when showPlayStop=true. */
149
+ readonly snapshotSrc?: string | null;
150
+ /**
151
+ * Optional poster (snapshot data-URL) painted by the live `<video>` until
152
+ * its FIRST frame decodes — a cold-start fallback only. Independent of
153
+ * `snapshotSrc` (which is the play/stop preview). Caller-supplied; when
154
+ * omitted the video simply starts black until the first frame.
155
+ */
156
+ readonly posterUrl?: string;
157
+ /** Whether snapshot is currently loading */
158
+ readonly snapshotLoading?: boolean;
159
+ /** Callback to refresh snapshot */
160
+ readonly onRefreshSnapshot?: () => void;
161
+ /** Show stream stats in header (fps, uptime) (default: false) */
162
+ readonly showStreamStats?: boolean;
163
+ readonly children?: ReactNode;
164
+ /**
165
+ * Extra overlay node composited on top of the video, alongside the
166
+ * built-in detection overlay. Used by callers to layer device-scoped
167
+ * controls (PTZOverlay, AudioPTT, ...) without forking the panel.
168
+ */
169
+ readonly extraOverlay?: ReactNode;
170
+ /**
171
+ * Whether the device supports PTZ. When true, the header shows a
172
+ * "PTZ" toggle next to detect/motion.
173
+ */
174
+ readonly ptzAvailable?: boolean;
175
+ /**
176
+ * Controlled visibility of the PTZ overlay. Drives both the
177
+ * header button highlight and (combined with `ptzOverlay`) overlay
178
+ * rendering. Caller computes the final value (e.g. OR with an
179
+ * external "force on" surface like a floating PTZ panel) and
180
+ * passes it down here.
181
+ */
182
+ readonly ptzShown?: boolean;
183
+ /**
184
+ * Overlay rendered ON the live video when `ptzShown` is true.
185
+ * Typically a `<PTZOverlay controls={...} mode="overlay" />` from
186
+ * ui-library. Combined with `extraOverlay` in the player overlay
187
+ * slot — both render together when active.
188
+ */
189
+ readonly ptzOverlay?: ReactNode;
190
+ /**
191
+ * Notified when the user clicks the in-header PTZ toggle. The
192
+ * caller updates its source of truth for `ptzShown`. No-op if
193
+ * omitted (button stays inert).
194
+ */
195
+ readonly onPtzToggle?: () => void;
196
+ /**
197
+ * Whether the device supports two-way audio (intercom). When true,
198
+ * the header shows an "Intercom" toggle next to detect/motion that
199
+ * lets the operator open the floating intercom panel without leaving
200
+ * the stream view.
201
+ */
202
+ readonly intercomAvailable?: boolean;
203
+ /**
204
+ * Controlled visibility of the intercom panel — drives the button's
205
+ * highlight state. The caller (which owns the floating-panel state)
206
+ * passes `true` while its intercom panel is open.
207
+ */
208
+ readonly intercomShown?: boolean;
209
+ /**
210
+ * Notified when the user clicks the in-header intercom toggle. The
211
+ * caller flips its panel state. No-op if omitted (button inert).
212
+ */
213
+ readonly onIntercomToggle?: () => void;
214
+ /**
215
+ * When true, drops the panel's outer rounded card chrome (border,
216
+ * rounded corners, background). Use when embedding into another
217
+ * surface that already provides framing — e.g. the device-detail
218
+ * left-column hero where the panel is one row of a larger card.
219
+ */
220
+ readonly chromeless?: boolean;
221
+ readonly className?: string;
211
222
  }
212
- export declare function StreamPanel({ serverUrl, createSession, sendAnswer, handleOffer, getIceServers, addIceCandidate, getIceCandidates, closeSession, getSessionState, getSessionDebug, applyDownlinkProbe, playbackUrl, playbackFormat, playbackAuthToken, onExitPlayback, posterUrl, streams, activeStreamId: controlledStreamId, onStreamChange, deviceName, phase, pipelineMetrics, detections, stationaryObjects, defaultShowDetections, defaultShowMotion, streamStats, autoPlay, showPlayStop, snapshotSrc, snapshotLoading, onRefreshSnapshot, showStreamStats, children, extraOverlay, ptzAvailable, ptzShown, ptzOverlay, onPtzToggle, intercomAvailable, intercomShown, onIntercomToggle, chromeless, className, }: StreamPanelProps): import("react").JSX.Element;
223
+ export declare function StreamPanel({ serverUrl, createSession, sendAnswer, handleOffer, getIceServers, addIceCandidate, getIceCandidates, closeSession, getSessionState, getSessionDebug, applyDownlinkProbe, playbackUrl, playbackFormat, playbackAuthToken, onExitPlayback, posterUrl, streams, activeStreamId: controlledStreamId, onStreamChange, deviceName, phase, pipelineMetrics, detections, stationaryObjects, defaultShowDetections, defaultShowMotion, streamStats, autoPlay, showPlayStop, snapshotSrc, snapshotLoading, onRefreshSnapshot, showStreamStats, children, extraOverlay, ptzAvailable, ptzShown, ptzOverlay, onPtzToggle, intercomAvailable, intercomShown, onIntercomToggle, chromeless, className }: StreamPanelProps): JSX.Element;
@@ -1,77 +1,77 @@
1
1
  /**
2
- * Column sorting for {@link DataTable} — the ONE sort model in this library.
3
- *
4
- * The device list had the only column sort in the app
5
- * (`composites/device-list/sort.ts`), typed to `DeviceItemDevice` and to three
6
- * hard-coded column ids. Every other table in the admin UI was unsorted. This
7
- * module is that same behaviour, generic: `DataTable` owns the state, a column
8
- * opts in by declaring `sortValue`, and `device-list` keeps its domain
9
- * comparators while delegating the toggle here. There is no second sort.
10
- *
11
- * The three rules are inherited verbatim from the device list, because they
12
- * were argued there and they are the reason a sorted table stays readable:
13
- *
14
- * 1. **`null` sorts LAST in both directions.** A missing value is "unknown",
15
- * not a value to reverse. Flipping the direction must never promote the
16
- * rows that have nothing to say to the top.
17
- * 2. **Stable.** `Array.prototype.toSorted` is stable in every runtime we
18
- * ship to, so rows with an equal key keep the order they arrived in —
19
- * which is usually a meaningful order already (topology order, insertion
20
- * order).
21
- * 3. **Immutable.** The input array is never touched; a `null` sort returns a
22
- * fresh copy in the incoming order.
23
- *
24
- * A column with no `sortValue` renders a plain static header and can never be
25
- * clicked. That is deliberate and it is the point of `notSortableReason`: a
26
- * composite cell (a list of capabilities, an argv blob, an interactive
27
- * control) has no single value to order by, and inventing one — "by count",
28
- * "alphabetically by full path" — produces an ordering that looks
29
- * authoritative and means nothing.
30
- */
2
+ * Column sorting for {@link DataTable} — the ONE sort model in this library.
3
+ *
4
+ * The device list had the only column sort in the app
5
+ * (`composites/device-list/sort.ts`), typed to `DeviceItemDevice` and to three
6
+ * hard-coded column ids. Every other table in the admin UI was unsorted. This
7
+ * module is that same behaviour, generic: `DataTable` owns the state, a column
8
+ * opts in by declaring `sortValue`, and `device-list` keeps its domain
9
+ * comparators while delegating the toggle here. There is no second sort.
10
+ *
11
+ * The three rules are inherited verbatim from the device list, because they
12
+ * were argued there and they are the reason a sorted table stays readable:
13
+ *
14
+ * 1. **`null` sorts LAST in both directions.** A missing value is "unknown",
15
+ * not a value to reverse. Flipping the direction must never promote the
16
+ * rows that have nothing to say to the top.
17
+ * 2. **Stable.** `Array.prototype.toSorted` is stable in every runtime we
18
+ * ship to, so rows with an equal key keep the order they arrived in —
19
+ * which is usually a meaningful order already (topology order, insertion
20
+ * order).
21
+ * 3. **Immutable.** The input array is never touched; a `null` sort returns a
22
+ * fresh copy in the incoming order.
23
+ *
24
+ * A column with no `sortValue` renders a plain static header and can never be
25
+ * clicked. That is deliberate and it is the point of `notSortableReason`: a
26
+ * composite cell (a list of capabilities, an argv blob, an interactive
27
+ * control) has no single value to order by, and inventing one — "by count",
28
+ * "alphabetically by full path" — produces an ordering that looks
29
+ * authoritative and means nothing.
30
+ */
31
31
  /** Sort direction. There is no third state on the column; "unsorted" is the
32
- * absence of a {@link TableSortState}. */
33
- export type TableSortDirection = 'asc' | 'desc';
32
+ * absence of a {@link TableSortState}. */
33
+ export type TableSortDirection = "asc" | "desc";
34
34
  /** The table's single active sort. `null` at the table level = incoming order. */
35
35
  export interface TableSortState {
36
- /** `DataColumn.key` of the sorted column. */
37
- readonly columnKey: string;
38
- readonly dir: TableSortDirection;
36
+ /** `DataColumn.key` of the sorted column. */
37
+ readonly columnKey: string;
38
+ readonly dir: TableSortDirection;
39
39
  }
40
40
  /**
41
- * What a sortable column contributes for one row.
42
- *
43
- * `null` means "this row has no value for this column" and always sorts last
44
- * (rule 1). It is NOT the same as `0` or `''`, which are values and sort
45
- * normally.
46
- */
41
+ * What a sortable column contributes for one row.
42
+ *
43
+ * `null` means "this row has no value for this column" and always sorts last
44
+ * (rule 1). It is NOT the same as `0` or `''`, which are values and sort
45
+ * normally.
46
+ */
47
47
  export type TableSortValue = string | number | null;
48
48
  /**
49
- * The toggle rule, and the only copy of it.
50
- *
51
- * none → asc → desc → none, and a click on a DIFFERENT column starts that
52
- * column fresh at `asc`. `sameColumn` says whether the clicked column is the
53
- * one currently sorted; `currentDir` is its direction (`null` when nothing is
54
- * sorted). Returns the next direction, or `null` for "unsorted".
55
- *
56
- * Split out from {@link nextTableSort} so the device list — whose sort state
57
- * keys columns by `columnId`, not `columnKey` — can reuse the rule without a
58
- * cast and without a second copy of it.
59
- */
49
+ * The toggle rule, and the only copy of it.
50
+ *
51
+ * none → asc → desc → none, and a click on a DIFFERENT column starts that
52
+ * column fresh at `asc`. `sameColumn` says whether the clicked column is the
53
+ * one currently sorted; `currentDir` is its direction (`null` when nothing is
54
+ * sorted). Returns the next direction, or `null` for "unsorted".
55
+ *
56
+ * Split out from {@link nextTableSort} so the device list — whose sort state
57
+ * keys columns by `columnId`, not `columnKey` — can reuse the rule without a
58
+ * cast and without a second copy of it.
59
+ */
60
60
  export declare function nextSortDirection(sameColumn: boolean, currentDir: TableSortDirection | null): TableSortDirection | null;
61
61
  /**
62
- * Toggle a column's sort on header click: none → asc → desc → none.
63
- * Clicking a DIFFERENT column starts it fresh at `asc`.
64
- */
62
+ * Toggle a column's sort on header click: none → asc → desc → none.
63
+ * Clicking a DIFFERENT column starts it fresh at `asc`.
64
+ */
65
65
  export declare function nextTableSort(current: TableSortState | null, columnKey: string): TableSortState | null;
66
66
  /**
67
- * Return a NEW array of `rows` ordered by `sort`.
68
- *
69
- * `valueOf` is the column's `sortValue` — it is called once per row per
70
- * comparison, so it must be cheap (read a field, do not format a string).
71
- * `sort === null` ⇒ a fresh shallow copy in the incoming order.
72
- */
67
+ * Return a NEW array of `rows` ordered by `sort`.
68
+ *
69
+ * `valueOf` is the column's `sortValue` — it is called once per row per
70
+ * comparison, so it must be cheap (read a field, do not format a string).
71
+ * `sort === null` ⇒ a fresh shallow copy in the incoming order.
72
+ */
73
73
  export declare function sortRowsByColumn<T>(rows: readonly T[], sort: TableSortState | null, valueOf: (row: T) => TableSortValue): readonly T[];
74
74
  /** The `aria-sort` value WAI-ARIA scopes to a `<th>` (never to an inner control). */
75
- export type AriaSortValue = 'ascending' | 'descending' | 'none';
75
+ export type AriaSortValue = "ascending" | "descending" | "none";
76
76
  /** Derive the `<th>` `aria-sort` for `columnKey` from the table's sort state. */
77
77
  export declare function ariaSortForColumn(sort: TableSortState | null, columnKey: string): AriaSortValue;
@@ -1,18 +1,20 @@
1
- import { TIMEZONES, findTimezone, Timezone, TimezoneDstRule, Weekday } from '@camstack/types';
1
+ import { TIMEZONES, findTimezone } from "@camstack/types";
2
+ import type { Timezone, TimezoneDstRule, Weekday } from "@camstack/types";
3
+ import { type JSX } from "react";
2
4
  export { TIMEZONES, findTimezone };
3
5
  export type { Timezone, TimezoneDstRule, Weekday };
4
6
  export interface TimezoneSelectorProps {
5
- /** Currently selected IANA id (e.g. 'Europe/Rome'). */
6
- readonly value: string;
7
- /** Fired with the newly chosen IANA id. */
8
- readonly onChange: (id: string) => void;
9
- readonly disabled?: boolean;
7
+ /** Currently selected IANA id (e.g. 'Europe/Rome'). */
8
+ readonly value: string;
9
+ /** Fired with the newly chosen IANA id. */
10
+ readonly onChange: (id: string) => void;
11
+ readonly disabled?: boolean;
10
12
  }
11
13
  /**
12
- * Friendly timezone picker. Renders a native `<select>` grouped by
13
- * region via `<optgroup>`, sourced from the curated `TIMEZONES`
14
- * catalogue. The selected value is the IANA id; DST is implied by the
15
- * chosen zone (each option carries its standard offset + DST rule),
16
- * so there is no separate DST control.
17
- */
18
- export declare function TimezoneSelector({ value, onChange, disabled }: TimezoneSelectorProps): import("react").JSX.Element;
14
+ * Friendly timezone picker. Renders a native `<select>` grouped by
15
+ * region via `<optgroup>`, sourced from the curated `TIMEZONES`
16
+ * catalogue. The selected value is the IANA id; DST is implied by the
17
+ * chosen zone (each option carries its standard offset + DST rule),
18
+ * so there is no separate DST control.
19
+ */
20
+ export declare function TimezoneSelector({ value, onChange, disabled }: TimezoneSelectorProps): JSX.Element;
@@ -1,6 +1,7 @@
1
+ import { type JSX } from "react";
1
2
  export interface SendFrameToTrainingButtonProps {
2
- readonly deviceId: number;
3
- /** The playhead instant, or `null` while nothing is being played back. */
4
- readonly epochMs: number | null;
3
+ readonly deviceId: number;
4
+ /** The playhead instant, or `null` while nothing is being played back. */
5
+ readonly epochMs: number | null;
5
6
  }
6
- export declare function SendFrameToTrainingButton({ deviceId, epochMs }: SendFrameToTrainingButtonProps): import("react").JSX.Element | null;
7
+ export declare function SendFrameToTrainingButton({ deviceId, epochMs }: SendFrameToTrainingButtonProps): JSX.Element | null;
@@ -1,5 +1,6 @@
1
+ import { type JSX } from "react";
1
2
  export interface TrainingCollectionPickerProps {
2
- readonly value: string | null;
3
- readonly onChange: (collectionId: string) => void;
3
+ readonly value: string | null;
4
+ readonly onChange: (collectionId: string) => void;
4
5
  }
5
- export declare function TrainingCollectionPicker({ value, onChange }: TrainingCollectionPickerProps): import("react").JSX.Element;
6
+ export declare function TrainingCollectionPicker({ value, onChange }: TrainingCollectionPickerProps): JSX.Element;