@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,71 +1,71 @@
1
1
  /**
2
- * The smart device picker's decisions — search, groups, per-group bulk
3
- * actions, the chip overflow and the bounded render — with no UI in it.
4
- *
5
- * One picker replaces every long device checklist in the notification editors
6
- * (a rule's devices, a system rule's include/exclude, the timelapse and digest
7
- * cameras, the alarm's non-blocking openings). A checklist of 293 rows on the
8
- * admin, and of every camera on a phone, took the whole screen to say "two
9
- * devices"; the picker shows the selection as chips and opens a searchable,
10
- * grouped list only to change it.
11
- *
12
- * Since D637 the same model also serves the system family's node and package
13
- * pickers, keyed by string: every item and function is generic over
14
- * {@link PickerId}, and a device picker is simply `PickerItem<number>`.
15
- *
16
- * It has to hold at HUNDREDS of devices of ONE type (a fleet of HA sensors),
17
- * which is what shapes it:
18
- *
19
- * - search is a debounced, case-insensitive AND over name, room, type,
20
- * container and id — "sala temp" finds the living-room thermometer among
21
- * nine "Temperatura";
22
- * - the DEVICE picker groups by what the operator chose at the top of the
23
- * list — site zone (default), location, or nothing
24
- * ({@link groupPickerDevicesBy}); the node and package pickers keep
25
- * (type, liveness) groups;
26
- * - (type, room) groups, where they are still used — and any group bigger than
27
- * {@link PICKER_GROUP_COLLAPSE_AT} starts COLLAPSED unless a search is
28
- * running or it holds a selected device — a collapsed header still says how
29
- * many it holds and offers select-all / clear;
30
- * - the list is rendered in bounded pieces ({@link pageRows} for a capped
31
- * render with "show N more"; a virtualised list sizes itself from
32
- * {@link PICKER_WINDOW});
33
- * - the list can be NARROWED by search plus Type / Zone / Location filters
34
- * ({@link applyPickerFilters}); "Reset filters" clears those and leaves
35
- * "Group by" alone ({@link resetPickerFilters}, D697);
36
- * - the chips show at most {@link PICKER_CHIP_LIMIT} and a "+N more".
37
- *
38
- * It reads NOTHING. It filters the list the caller already holds; an id the
39
- * list lacks is the caller's to resolve (`device-selection.ts`), which is also
40
- * where D315 and D49 live.
41
- *
42
- * TWO BYTE-IDENTICAL COPIES: `camstack/src/components/notifications/
43
- * device-picker-model.ts` (viewer) and `packages/addon-admin-ui/src/pages/
44
- * system/device-picker-model.ts` (admin), for the reason `device-selection.ts`
45
- * has two. `scripts/check-device-selection-in-sync.ts` fails the commit when
46
- * they differ. No `toSorted` here: the viewer runs on Hermes.
47
- */
2
+ * The smart device picker's decisions — search, groups, per-group bulk
3
+ * actions, the chip overflow and the bounded render — with no UI in it.
4
+ *
5
+ * One picker replaces every long device checklist in the notification editors
6
+ * (a rule's devices, a system rule's include/exclude, the timelapse and digest
7
+ * cameras, the alarm's non-blocking openings). A checklist of 293 rows on the
8
+ * admin, and of every camera on a phone, took the whole screen to say "two
9
+ * devices"; the picker shows the selection as chips and opens a searchable,
10
+ * grouped list only to change it.
11
+ *
12
+ * Since D637 the same model also serves the system family's node and package
13
+ * pickers, keyed by string: every item and function is generic over
14
+ * {@link PickerId}, and a device picker is simply `PickerItem<number>`.
15
+ *
16
+ * It has to hold at HUNDREDS of devices of ONE type (a fleet of HA sensors),
17
+ * which is what shapes it:
18
+ *
19
+ * - search is a debounced, case-insensitive AND over name, room, type,
20
+ * container and id — "sala temp" finds the living-room thermometer among
21
+ * nine "Temperatura";
22
+ * - the DEVICE picker groups by what the operator chose at the top of the
23
+ * list — site zone (default), location, or nothing
24
+ * ({@link groupPickerDevicesBy}); the node and package pickers keep
25
+ * (type, liveness) groups;
26
+ * - (type, room) groups, where they are still used — and any group bigger than
27
+ * {@link PICKER_GROUP_COLLAPSE_AT} starts COLLAPSED unless a search is
28
+ * running or it holds a selected device — a collapsed header still says how
29
+ * many it holds and offers select-all / clear;
30
+ * - the list is rendered in bounded pieces ({@link pageRows} for a capped
31
+ * render with "show N more"; a virtualised list sizes itself from
32
+ * {@link PICKER_WINDOW});
33
+ * - the list can be NARROWED by search plus Type / Zone / Location filters
34
+ * ({@link applyPickerFilters}); "Reset filters" clears those and leaves
35
+ * "Group by" alone ({@link resetPickerFilters}, D697);
36
+ * - the chips show at most {@link PICKER_CHIP_LIMIT} and a "+N more".
37
+ *
38
+ * It reads NOTHING. It filters the list the caller already holds; an id the
39
+ * list lacks is the caller's to resolve (`device-selection.ts`), which is also
40
+ * where D315 and D49 live.
41
+ *
42
+ * TWO BYTE-IDENTICAL COPIES: `camstack/src/components/notifications/
43
+ * device-picker-model.ts` (viewer) and `packages/addon-admin-ui/src/pages/
44
+ * system/device-picker-model.ts` (admin), for the reason `device-selection.ts`
45
+ * has two. `scripts/check-device-selection-in-sync.ts` fails the commit when
46
+ * they differ. No `toSorted` here: the viewer runs on Hermes.
47
+ */
48
48
  /** What a picker item is keyed by: a device id, or a node id / package name (D637). */
49
49
  export type PickerId = number | string;
50
50
  /** One item as the picker lists it. */
51
51
  export interface PickerItem<Id extends PickerId> {
52
- readonly id: Id;
53
- readonly name: string;
54
- /** Groups by this (`DeviceType`, node role, package kind); absent groups under "no type". */
55
- readonly type?: string;
56
- /** The second grouping axis (room, liveness); absent or null groups under "none". */
57
- readonly location?: string | null;
58
- /**
59
- * A second line — the container a child device belongs to, a node's id, a
60
- * version. When unset and {@link parentDeviceId} is set, the picker fills
61
- * this with `in <parent>` from the same listing.
62
- */
63
- readonly detail?: string;
64
- /**
65
- * Hub/container this device is attached to. Number ids only; the picker
66
- * resolves the name from the same `devices` list (see `device-parent.ts`).
67
- */
68
- readonly parentDeviceId?: number | null;
52
+ readonly id: Id;
53
+ readonly name: string;
54
+ /** Groups by this (`DeviceType`, node role, package kind); absent groups under "no type". */
55
+ readonly type?: string;
56
+ /** The second grouping axis (room, liveness); absent or null groups under "none". */
57
+ readonly location?: string | null;
58
+ /**
59
+ * A second line — the container a child device belongs to, a node's id, a
60
+ * version. When unset and {@link parentDeviceId} is set, the picker fills
61
+ * this with `in <parent>` from the same listing.
62
+ */
63
+ readonly detail?: string;
64
+ /**
65
+ * Hub/container this device is attached to. Number ids only; the picker
66
+ * resolves the name from the same `devices` list (see `device-parent.ts`).
67
+ */
68
+ readonly parentDeviceId?: number | null;
69
69
  }
70
70
  /** One device as the picker lists it. */
71
71
  export type PickerDevice = PickerItem<number>;
@@ -86,51 +86,51 @@ export declare function pickerQueryTokens(query: string): readonly string[];
86
86
  /** Devices matching EVERY token. A blank query keeps the list as it is. */
87
87
  export declare function filterPickerDevices<Id extends PickerId>(devices: readonly PickerItem<Id>[], query: string): readonly PickerItem<Id>[];
88
88
  /**
89
- * What a "Group by" group is named after. Absent on the (type, room) groups
90
- * the node and package pickers still use.
91
- */
89
+ * What a "Group by" group is named after. Absent on the (type, room) groups
90
+ * the node and package pickers still use.
91
+ */
92
92
  export type PickerGroupHeading = {
93
- readonly kind: 'zone';
94
- readonly label: string;
93
+ readonly kind: "zone";
94
+ readonly label: string;
95
95
  } | {
96
- readonly kind: 'location';
97
- readonly label: string;
96
+ readonly kind: "location";
97
+ readonly label: string;
98
98
  } | {
99
- readonly kind: 'no-zone';
99
+ readonly kind: "no-zone";
100
100
  } | {
101
- readonly kind: 'no-location';
101
+ readonly kind: "no-location";
102
102
  };
103
103
  /** One (type, room) group — or, under "Group by", one zone or location. */
104
104
  export interface PickerGroup<Id extends PickerId = number> {
105
- readonly key: string;
106
- readonly type: string | null;
107
- readonly location: string | null;
108
- readonly devices: readonly PickerItem<Id>[];
109
- readonly selectedCount: number;
110
- readonly heading?: PickerGroupHeading;
105
+ readonly key: string;
106
+ readonly type: string | null;
107
+ readonly location: string | null;
108
+ readonly devices: readonly PickerItem<Id>[];
109
+ readonly selectedCount: number;
110
+ readonly heading?: PickerGroupHeading;
111
111
  }
112
112
  /** The key a group is remembered by (collapsed / expanded). */
113
113
  export declare function pickerGroupKey(type: string | null, location: string | null): string;
114
114
  /** Group by type, then room; both ascending, "none" last; devices by name. */
115
115
  export declare function groupPickerDevices<Id extends PickerId>(devices: readonly PickerItem<Id>[], selected: readonly Id[]): readonly PickerGroup<Id>[];
116
116
  /**
117
- * Whether a group is open. The operator's own toggle wins; otherwise a small
118
- * group is open, a big one is closed — unless a search is running (the result
119
- * IS what they asked to see) or it holds a selected device.
120
- */
117
+ * Whether a group is open. The operator's own toggle wins; otherwise a small
118
+ * group is open, a big one is closed — unless a search is running (the result
119
+ * IS what they asked to see) or it holds a selected device.
120
+ */
121
121
  export declare function isGroupExpanded<Id extends PickerId>(group: PickerGroup<Id>, toggles: ReadonlyMap<string, boolean>, searching: boolean): boolean;
122
122
  /** One row of the flattened list: a group header, or a device under it. */
123
123
  export type PickerRow<Id extends PickerId = number> = {
124
- readonly kind: 'header';
125
- readonly key: string;
126
- readonly group: PickerGroup<Id>;
127
- readonly expanded: boolean;
124
+ readonly kind: "header";
125
+ readonly key: string;
126
+ readonly group: PickerGroup<Id>;
127
+ readonly expanded: boolean;
128
128
  } | {
129
- readonly kind: 'device';
130
- readonly key: string;
131
- readonly device: PickerItem<Id>;
132
- readonly groupKey: string;
133
- readonly selected: boolean;
129
+ readonly kind: "device";
130
+ readonly key: string;
131
+ readonly device: PickerItem<Id>;
132
+ readonly groupKey: string;
133
+ readonly selected: boolean;
134
134
  };
135
135
  /** The groups as ONE list of rows — what a virtualised list renders. */
136
136
  export declare function flattenPickerRows<Id extends PickerId>(groups: readonly PickerGroup<Id>[], selected: readonly Id[], toggles: ReadonlyMap<string, boolean>, searching: boolean): readonly PickerRow<Id>[];
@@ -142,18 +142,18 @@ export declare function selectPickerGroup<Id extends PickerId>(value: readonly I
142
142
  export declare function clearPickerGroup<Id extends PickerId>(value: readonly Id[], group: PickerGroup<Id>): Id[];
143
143
  /** The chips to draw, and how many are behind "+N more". */
144
144
  export interface ChipOverflow<T> {
145
- readonly shown: readonly T[];
146
- readonly hidden: number;
145
+ readonly shown: readonly T[];
146
+ readonly hidden: number;
147
147
  }
148
148
  export declare function chipOverflow<T>(items: readonly T[], expanded: boolean): ChipOverflow<T>;
149
149
  /** A capped render: the first `shown` rows, and how many are left. */
150
150
  export interface PickerPage<Id extends PickerId = number> {
151
- readonly rows: readonly PickerRow<Id>[];
152
- readonly remaining: number;
151
+ readonly rows: readonly PickerRow<Id>[];
152
+ readonly remaining: number;
153
153
  }
154
154
  export declare function pageRows<Id extends PickerId>(rows: readonly PickerRow<Id>[], shown: number): PickerPage<Id>;
155
155
  /** How the device picker groups its list. */
156
- export type PickerGroupBy = 'zone' | 'location' | 'none';
156
+ export type PickerGroupBy = "zone" | "location" | "none";
157
157
  /** The modes, in the order the control draws them. */
158
158
  export declare const PICKER_GROUP_BY_MODES: readonly PickerGroupBy[];
159
159
  /** What an operator who never chose gets. */
@@ -162,73 +162,73 @@ export declare const PICKER_DEFAULT_GROUP_BY: PickerGroupBy;
162
162
  export declare function parsePickerGroupBy(raw: unknown): PickerGroupBy;
163
163
  /** One site zone as the picker groups by it. */
164
164
  export interface PickerZone {
165
- readonly zoneKey: string;
166
- readonly label: string;
167
- readonly locationKeys: readonly string[];
165
+ readonly zoneKey: string;
166
+ readonly label: string;
167
+ readonly locationKeys: readonly string[];
168
168
  }
169
169
  /** The zone read, with whether it ANSWERED (D315). */
170
170
  export type PickerZonesRead = {
171
- readonly state: 'answered';
172
- readonly zones: readonly PickerZone[];
171
+ readonly state: "answered";
172
+ readonly zones: readonly PickerZone[];
173
173
  } | {
174
- readonly state: 'pending';
174
+ readonly state: "pending";
175
175
  } | {
176
- readonly state: 'failed';
176
+ readonly state: "failed";
177
177
  };
178
178
  /** Why Zone mode is grouping by location instead. */
179
- export type PickerZonesFallback = 'pending' | 'failed';
179
+ export type PickerZonesFallback = "pending" | "failed";
180
180
  /** The folded key a location label joins a zone by — `siteZoneKey`'s fold. */
181
181
  export declare function pickerLocationKey(label: string): string;
182
182
  /** The picker's groups under one "Group by" mode. */
183
183
  export interface PickerGrouping<Id extends PickerId = number> {
184
- /** The mode the groups ARE — `location` when Zone could not be honoured. */
185
- readonly groupBy: PickerGroupBy;
186
- /** Set when Zone mode fell back to location: the zone read had not answered. */
187
- readonly fallback: PickerZonesFallback | null;
188
- /** One headerless list (None): no group to expand, select or clear. */
189
- readonly flat: boolean;
190
- readonly groups: readonly PickerGroup<Id>[];
184
+ /** The mode the groups ARE — `location` when Zone could not be honoured. */
185
+ readonly groupBy: PickerGroupBy;
186
+ /** Set when Zone mode fell back to location: the zone read had not answered. */
187
+ readonly fallback: PickerZonesFallback | null;
188
+ /** One headerless list (None): no group to expand, select or clear. */
189
+ readonly flat: boolean;
190
+ readonly groups: readonly PickerGroup<Id>[];
191
191
  }
192
192
  /**
193
- * Group the list by zone, location or nothing.
194
- *
195
- * Zone: a group per site zone that holds a listed device (by label), then
196
- * "No zone" (a location no zone holds), then "No location". Location: a group
197
- * per location (folded; named after the first device's trimmed spelling), then "No
198
- * location". None: one flat list by name, then id.
199
- *
200
- * A zone read that is pending or failed can NOT say a location is in no zone
201
- * (D315), so Zone mode then groups by location and returns the reason as
202
- * {@link PickerGrouping.fallback} for the UI's one-line note.
203
- */
193
+ * Group the list by zone, location or nothing.
194
+ *
195
+ * Zone: a group per site zone that holds a listed device (by label), then
196
+ * "No zone" (a location no zone holds), then "No location". Location: a group
197
+ * per location (folded; named after the first device's trimmed spelling), then "No
198
+ * location". None: one flat list by name, then id.
199
+ *
200
+ * A zone read that is pending or failed can NOT say a location is in no zone
201
+ * (D315), so Zone mode then groups by location and returns the reason as
202
+ * {@link PickerGrouping.fallback} for the UI's one-line note.
203
+ */
204
204
  export declare function groupPickerDevicesBy<Id extends PickerId>(devices: readonly PickerItem<Id>[], selected: readonly Id[], groupBy: PickerGroupBy, zones: PickerZonesRead): PickerGrouping<Id>;
205
205
  /** The grouping as rows: a flat grouping draws no header and is always open. */
206
206
  export declare function flattenPickerGrouping<Id extends PickerId>(grouping: PickerGrouping<Id>, selected: readonly Id[], toggles: ReadonlyMap<string, boolean>, searching: boolean): readonly PickerRow<Id>[];
207
207
  /**
208
- * What a row's second line adds under "Group by": the device TYPE (it left the
209
- * group key), and the room wherever the header does not already say it.
210
- */
208
+ * What a row's second line adds under "Group by": the device TYPE (it left the
209
+ * group key), and the room wherever the header does not already say it.
210
+ */
211
211
  export interface PickerRowFacts {
212
- readonly location: string | null;
213
- readonly type: string | null;
212
+ readonly location: string | null;
213
+ readonly type: string | null;
214
214
  }
215
215
  export declare function pickerRowFacts<Id extends PickerId>(device: PickerItem<Id>, groupBy: PickerGroupBy): PickerRowFacts;
216
216
  /** The filter key of an item with no type / no location / no zone. */
217
217
  export declare const PICKER_NONE_KEY = "(none)";
218
- export type PickerFacet = 'type' | 'zone' | 'location';
218
+ export type PickerFacet = "type" | "zone" | "location";
219
219
  /** One choosable value of a facet, with how many listed items carry it. */
220
220
  export interface PickerFacetOption {
221
- readonly key: string;
222
- /** The type, the location (first trimmed spelling seen), the zone label; null for "(none)". */
223
- readonly label: string | null;
224
- readonly count: number;
221
+ readonly key: string;
222
+ /** The type, the location (first trimmed spelling seen), the zone label; null for "(none)". */
223
+ readonly label: string | null;
224
+ readonly count: number;
225
225
  }
226
226
  /** What a picker (or the alarm table) narrows by, applied in this order. */
227
227
  export interface PickerFilters {
228
- readonly query: string;
229
- readonly types: readonly string[];
230
- readonly zones: readonly string[];
231
- readonly locations: readonly string[];
228
+ readonly query: string;
229
+ readonly types: readonly string[];
230
+ readonly zones: readonly string[];
231
+ readonly locations: readonly string[];
232
232
  }
233
233
  export declare const PICKER_NO_FILTERS: PickerFilters;
234
234
  /** The key an item filters by under one facet; `(none)` when it has no such value. */
@@ -245,10 +245,10 @@ export declare function pickerFiltersActive(filters: PickerFilters): boolean;
245
245
  /** Reset clears search, Type, Zone and Location — never "Group by". */
246
246
  export declare function resetPickerFilters(): PickerFilters;
247
247
  /**
248
- * Selected ids the current filters hide — they stay selected, they are only not listed. Only a
249
- * LISTED device can be hidden: an id the list does not hold at all (removed, unknown, off-offer)
250
- * is not "hidden", so it is not counted.
251
- */
248
+ * Selected ids the current filters hide — they stay selected, they are only not listed. Only a
249
+ * LISTED device can be hidden: an id the list does not hold at all (removed, unknown, off-offer)
250
+ * is not "hidden", so it is not counted.
251
+ */
252
252
  export declare function pickerHiddenSelectedCount<Id extends PickerId>(selected: readonly Id[], list: readonly PickerItem<Id>[], matches: readonly PickerItem<Id>[]): number;
253
253
  /** A dropdown is drawn when it can narrow (two values or more) or a key is chosen. */
254
254
  export declare function pickerFacetFilterShown(options: readonly PickerFacetOption[], chosen: readonly string[]): boolean;
@@ -1,40 +1,47 @@
1
- import { SelectedDeviceRow, SelectionId } from './device-selection';
2
1
  /**
3
- * What a picker lists, for its sentences. `class` is a detection class (D641);
4
- * `zone` and `face` are a rule's zone and known-face scopes (D690).
5
- */
6
- export type PickerNoun = 'camera' | 'device' | 'node' | 'package' | 'class' | 'zone' | 'face' | 'calendar';
2
+ * The words every admin picker uses for a selected id its drawn list does not
3
+ * contain (`device-selection.ts`): "Device #<id> — removed" when the fleet
4
+ * ANSWERED without it, the device's name when the fleet has it (a non-camera
5
+ * on a camera picker), a plain "Device #<id>" when the fleet has not answered.
6
+ * Each is a removable chip in `DevicePicker` — a read never drops a selected
7
+ * id (D49), and only the operator removes one.
8
+ *
9
+ * Since D637 the same words cover the system family's node and package
10
+ * pickers. A node the answered directory lacks is "unknown to the hub", never
11
+ * "removed": even a complete directory omits a node that joined and left
12
+ * between two history captures (`NodeDirectorySchema`). A package the answered
13
+ * list lacks is "not installed". A class the taxonomy lacks is "not in the class
14
+ * list" (D641).
15
+ */
16
+ import type { SelectedDeviceRow, SelectionId } from "./device-selection";
17
+ import { type JSX } from "react";
18
+ /**
19
+ * What a picker lists, for its sentences. `class` is a detection class (D641);
20
+ * `zone` and `face` are a rule's zone and known-face scopes (D690).
21
+ */
22
+ export type PickerNoun = "camera" | "device" | "node" | "package" | "class" | "zone" | "face" | "calendar";
7
23
  /** Each noun's plural. */
8
- export declare const PICKER_NOUN_PLURAL: {
9
- readonly camera: "cameras";
10
- readonly device: "devices";
11
- readonly node: "nodes";
12
- readonly package: "packages";
13
- readonly class: "classes";
14
- readonly zone: "zones";
15
- readonly face: "faces";
16
- readonly calendar: "calendars";
17
- };
24
+ export declare const PICKER_NOUN_PLURAL: Readonly<Record<PickerNoun, string>>;
18
25
  /** What a picker lists, plural — the only words the loading / failed lines say. */
19
26
  export type PickerNounPlural = (typeof PICKER_NOUN_PLURAL)[PickerNoun];
20
27
  /** The label a picker gives a selected id its drawn list does not contain. */
21
28
  export declare function orphanDeviceLabel<Id extends SelectionId>(row: SelectedDeviceRow<Id>, noun?: PickerNoun): string;
22
29
  interface DevicesWidenWarningProps {
23
- /** What the picker lists: the rule's Devices tab lists every device. */
24
- readonly noun?: PickerNoun;
30
+ /** What the picker lists: the rule's Devices tab lists every device. */
31
+ readonly noun?: PickerNoun;
25
32
  }
26
33
  /** Said under a picker whose empty selection means EVERY device. */
27
- export declare function DevicesWidenWarning({ noun }: DevicesWidenWarningProps): import("react").JSX.Element;
34
+ export declare function DevicesWidenWarning({ noun }: DevicesWidenWarningProps): JSX.Element;
28
35
  interface DevicesLoadingLineProps {
29
- /** What the picker lists, plural — the rule's Devices tab lists every device. */
30
- readonly noun?: PickerNounPlural;
36
+ /** What the picker lists, plural — the rule's Devices tab lists every device. */
37
+ readonly noun?: PickerNounPlural;
31
38
  }
32
39
  /** A list that has not answered: never an absence claim (D315). */
33
- export declare function DevicesLoadingLine({ noun }: DevicesLoadingLineProps): import("react").JSX.Element;
40
+ export declare function DevicesLoadingLine({ noun }: DevicesLoadingLineProps): JSX.Element;
34
41
  interface DevicesFailedLineProps {
35
- /** What the picker lists, plural. */
36
- readonly noun?: PickerNounPlural;
42
+ /** What the picker lists, plural. */
43
+ readonly noun?: PickerNounPlural;
37
44
  }
38
45
  /** A list that failed: said, while the selected ids stay removable. */
39
- export declare function DevicesFailedLine({ noun }: DevicesFailedLineProps): import("react").JSX.Element;
46
+ export declare function DevicesFailedLine({ noun }: DevicesFailedLineProps): JSX.Element;
40
47
  export {};
@@ -1,64 +1,64 @@
1
1
  /**
2
- * What a device picker says about the ids it has SELECTED — including the ones
3
- * the hub no longer has.
4
- *
5
- * The picker draws the live camera list; a selected id outside that list would
6
- * otherwise be invisible and impossible to deselect (operator report
7
- * 2026-09-25: a deleted camera kept a rule matching nothing while the editor
8
- * showed "all devices"). Two rules shape this module:
9
- *
10
- * - D315: absence is claimed only from a list that ANSWERED. Pending and
11
- * failed lists never mark an id `removed`.
12
- * - D49: a read never destroys. Every selected id comes back as a row; the
13
- * selection is changed only by the operator.
14
- *
15
- * Generic over {@link SelectionId} since D637: the system family's node and
16
- * package pickers select string ids under the same two rules. It declares its
17
- * own id type rather than importing the picker model's, so the byte-identical
18
- * copies share no import specifier that would differ between them.
19
- *
20
- * TWO BYTE-IDENTICAL COPIES: `camstack/src/components/notifications/
21
- * device-selection.ts` (viewer) and `packages/addon-admin-ui/src/pages/system/
22
- * device-selection.ts` (admin). The viewer resolves `@camstack/types` from a
23
- * published release, so a helper added to the workspace would not exist
24
- * there. `scripts/check-device-selection-in-sync.ts` (camstack-server) fails
25
- * the commit when the copies differ; edit both.
26
- */
2
+ * What a device picker says about the ids it has SELECTED — including the ones
3
+ * the hub no longer has.
4
+ *
5
+ * The picker draws the live camera list; a selected id outside that list would
6
+ * otherwise be invisible and impossible to deselect (operator report
7
+ * 2026-09-25: a deleted camera kept a rule matching nothing while the editor
8
+ * showed "all devices"). Two rules shape this module:
9
+ *
10
+ * - D315: absence is claimed only from a list that ANSWERED. Pending and
11
+ * failed lists never mark an id `removed`.
12
+ * - D49: a read never destroys. Every selected id comes back as a row; the
13
+ * selection is changed only by the operator.
14
+ *
15
+ * Generic over {@link SelectionId} since D637: the system family's node and
16
+ * package pickers select string ids under the same two rules. It declares its
17
+ * own id type rather than importing the picker model's, so the byte-identical
18
+ * copies share no import specifier that would differ between them.
19
+ *
20
+ * TWO BYTE-IDENTICAL COPIES: `camstack/src/components/notifications/
21
+ * device-selection.ts` (viewer) and `packages/addon-admin-ui/src/pages/system/
22
+ * device-selection.ts` (admin). The viewer resolves `@camstack/types` from a
23
+ * published release, so a helper added to the workspace would not exist
24
+ * there. `scripts/check-device-selection-in-sync.ts` (camstack-server) fails
25
+ * the commit when the copies differ; edit both.
26
+ */
27
27
  /** A selected id: a device id, or a node id / package name (D637). */
28
28
  export type SelectionId = number | string;
29
29
  /** Where the camera list is: answered (data present), pending, or failed. */
30
- export type DeviceListState = 'answered' | 'pending' | 'failed';
30
+ export type DeviceListState = "answered" | "pending" | "failed";
31
31
  /** The minimum a camera needs to name a selected row. */
32
32
  export interface NamedDevice<Id extends SelectionId = number> {
33
- readonly id: Id;
34
- readonly name: string;
33
+ readonly id: Id;
34
+ readonly name: string;
35
35
  }
36
36
  /** One selected id. `name` only when the answered list has it. */
37
37
  export interface SelectedDeviceRow<Id extends SelectionId = number> {
38
- readonly id: Id;
39
- readonly name?: string;
40
- readonly removed: boolean;
38
+ readonly id: Id;
39
+ readonly name?: string;
40
+ readonly removed: boolean;
41
41
  }
42
42
  /** The slice of a query result the state is derived from. */
43
43
  export interface DeviceListQueryLike<Id extends SelectionId = number> {
44
- readonly data: readonly NamedDevice<Id>[] | undefined;
45
- readonly isError: boolean;
44
+ readonly data: readonly NamedDevice<Id>[] | undefined;
45
+ readonly isError: boolean;
46
46
  }
47
47
  export declare function deviceListStateOf<Id extends SelectionId = number>(query: DeviceListQueryLike<Id>): DeviceListState;
48
48
  export declare function resolveSelectedDevices<Id extends SelectionId = number>(selectedIds: readonly Id[], cameras: readonly NamedDevice<Id>[] | undefined, state: DeviceListState): SelectedDeviceRow<Id>[];
49
49
  /**
50
- * The selected ids a picker's DRAWN list does not contain, judged against the
51
- * WHOLE fleet — never against the drawn list itself. A camera picker draws
52
- * cameras, but a rule's devices can be a sensor picked on another surface: the
53
- * camera list lacking it says nothing about whether it still exists. Each row
54
- * is `removed` (the answered fleet lacks it), named (the fleet has it) or
55
- * unnamed (the fleet has not answered).
56
- */
50
+ * The selected ids a picker's DRAWN list does not contain, judged against the
51
+ * WHOLE fleet — never against the drawn list itself. A camera picker draws
52
+ * cameras, but a rule's devices can be a sensor picked on another surface: the
53
+ * camera list lacking it says nothing about whether it still exists. Each row
54
+ * is `removed` (the answered fleet lacks it), named (the fleet has it) or
55
+ * unnamed (the fleet has not answered).
56
+ */
57
57
  export declare function offListSelections<Id extends SelectionId = number>(selectedIds: readonly Id[], listed: readonly NamedDevice<Id>[] | undefined, fleet: readonly NamedDevice<Id>[] | undefined, fleetState: DeviceListState): SelectedDeviceRow<Id>[];
58
58
  /** The "no cameras" hint: only an ANSWERED empty list with nothing selected. */
59
59
  export declare function showsNoCamerasHint(state: DeviceListState, cameraCount: number, selectedCount: number): boolean;
60
60
  /**
61
- * The widening warning: on a picker where an empty selection means ALL
62
- * devices, an empty selection that once held devices must say so.
63
- */
61
+ * The widening warning: on a picker where an empty selection means ALL
62
+ * devices, an empty selection that once held devices must say so.
63
+ */
64
64
  export declare function emptyDevicesWidens(emptyMeansAll: boolean, selectedCount: number, hadDevices: boolean): boolean;
@@ -1,9 +1,9 @@
1
- export { DevicePicker, type DevicePickerProps } from './DevicePicker.js';
2
- export { DeviceFilterBar, typeLabel, type DeviceFilterBarGrouping, type DeviceFilterBarProps, } from './device-filter-bar.js';
3
- export { fleetViewOf, type DeviceFleetView, type PickerFleetView, } from './device-fleet-view.js';
4
- export { DEVICE_PICKER_GROUP_STORAGE_KEY, readStoredGroupBy, writeStoredGroupBy, useStoredGroupBy, usePickerSiteZones, type StoredGroupBy, } from './device-picker-grouping.js';
5
- export * from './device-picker-model.js';
6
- export * from './device-parent.js';
7
- export * from './device-selection.js';
8
- export { DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, orphanDeviceLabel, PICKER_NOUN_PLURAL, type PickerNoun, type PickerNounPlural, } from './device-selection-rows.js';
9
- export { INPUT_SHELL, SelectedChip, type SelectedChipProps } from './SelectedChip.js';
1
+ export { DevicePicker, type DevicePickerProps } from "./DevicePicker.js";
2
+ export { DeviceFilterBar, typeLabel, type DeviceFilterBarGrouping, type DeviceFilterBarProps } from "./device-filter-bar.js";
3
+ export { fleetViewOf, type DeviceFleetView, type PickerFleetView } from "./device-fleet-view.js";
4
+ export { DEVICE_PICKER_GROUP_STORAGE_KEY, readStoredGroupBy, writeStoredGroupBy, useStoredGroupBy, usePickerSiteZones, type StoredGroupBy } from "./device-picker-grouping.js";
5
+ export * from "./device-picker-model.js";
6
+ export * from "./device-parent.js";
7
+ export * from "./device-selection.js";
8
+ export { DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, orphanDeviceLabel, PICKER_NOUN_PLURAL, type PickerNoun, type PickerNounPlural } from "./device-selection-rows.js";
9
+ export { INPUT_SHELL, SelectedChip, type SelectedChipProps } from "./SelectedChip.js";
@@ -1,16 +1,17 @@
1
- import { ConfigDeviceMultiSelectField, ConfigDeviceSelectField } from '@camstack/types';
2
- import { TranslationFn } from './config-form-builder';
3
- export declare function DeviceSelectField({ field, value, onChange, disabled, translationFn, }: {
4
- field: ConfigDeviceSelectField;
5
- value: unknown;
6
- onChange: (v: unknown) => void;
7
- disabled?: boolean;
8
- translationFn?: TranslationFn;
9
- }): import("react").JSX.Element;
10
- export declare function DeviceMultiSelectField({ field, value, onChange, disabled, translationFn, }: {
11
- field: ConfigDeviceMultiSelectField;
12
- value: unknown;
13
- onChange: (v: unknown) => void;
14
- disabled?: boolean;
15
- translationFn?: TranslationFn;
16
- }): import("react").JSX.Element;
1
+ import type { ConfigDeviceMultiSelectField, ConfigDeviceSelectField } from "@camstack/types";
2
+ import { type JSX } from "react";
3
+ import type { TranslationFn } from "./config-form-builder";
4
+ export declare function DeviceSelectField({ field, value, onChange, disabled, translationFn }: {
5
+ field: ConfigDeviceSelectField;
6
+ value: unknown;
7
+ onChange: (v: unknown) => void;
8
+ disabled?: boolean;
9
+ translationFn?: TranslationFn;
10
+ }): JSX.Element | null;
11
+ export declare function DeviceMultiSelectField({ field, value, onChange, disabled, translationFn }: {
12
+ field: ConfigDeviceMultiSelectField;
13
+ value: unknown;
14
+ onChange: (v: unknown) => void;
15
+ disabled?: boolean;
16
+ translationFn?: TranslationFn;
17
+ }): JSX.Element | null;