@cube-dev/ui-kit 0.0.0-canary-c26fe9d → 0.0.0-canary-223b7e5

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 (476) hide show
  1. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +1 -1
  13. package/dist/components/GridProvider.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.js +1 -1
  16. package/dist/components/actions/Action/Action.js +1 -1
  17. package/dist/components/actions/Banner/Banner.js +1 -1
  18. package/dist/components/actions/Button/Button.js +1 -1
  19. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  20. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  21. package/dist/components/actions/ButtonSplit/context.js +1 -1
  22. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  23. package/dist/components/actions/CommandMenu/styled.js +1 -1
  24. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  25. package/dist/components/actions/ItemActionContext.js +1 -1
  26. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  27. package/dist/components/actions/Link/Link.js +1 -1
  28. package/dist/components/actions/Menu/Menu.js +1 -1
  29. package/dist/components/actions/Menu/MenuItem.js +1 -1
  30. package/dist/components/actions/Menu/MenuSection.js +1 -1
  31. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  32. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  34. package/dist/components/actions/Menu/context.js +1 -1
  35. package/dist/components/actions/Menu/styled.js +1 -1
  36. package/dist/components/actions/index.js +1 -1
  37. package/dist/components/actions/use-action.js +1 -1
  38. package/dist/components/actions/use-anchored-menu.js +1 -1
  39. package/dist/components/actions/use-context-menu.js +1 -1
  40. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  41. package/dist/components/content/Alert/Alert.js +1 -1
  42. package/dist/components/content/Alert/use-alert.js +1 -1
  43. package/dist/components/content/Avatar/Avatar.js +1 -1
  44. package/dist/components/content/Badge/Badge.js +1 -1
  45. package/dist/components/content/Card/Card.js +1 -1
  46. package/dist/components/content/Content.js +1 -1
  47. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  48. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  49. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  50. package/dist/components/content/Divider.js +1 -1
  51. package/dist/components/content/Footer.js +1 -1
  52. package/dist/components/content/Header.js +1 -1
  53. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  54. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  55. package/dist/components/content/Item/Item.js +1 -1
  56. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  57. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  58. package/dist/components/content/Layout/GridLayout.js +1 -1
  59. package/dist/components/content/Layout/Layout.js +1 -1
  60. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  61. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  62. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  63. package/dist/components/content/Layout/LayoutContent.js +1 -1
  64. package/dist/components/content/Layout/LayoutContext.js +1 -1
  65. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  66. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  67. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  68. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  69. package/dist/components/content/Layout/LayoutPane.js +1 -1
  70. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  71. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  72. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  73. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  74. package/dist/components/content/Layout/index.js +1 -1
  75. package/dist/components/content/Layout/utils.js +1 -1
  76. package/dist/components/content/Paragraph.js +1 -1
  77. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  78. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  79. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  80. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  81. package/dist/components/content/Result/Result.js +1 -1
  82. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  83. package/dist/components/content/Tag/Tag.js +1 -1
  84. package/dist/components/content/Text.js +1 -1
  85. package/dist/components/content/TextItem/TextItem.js +1 -1
  86. package/dist/components/content/Title.js +1 -1
  87. package/dist/components/content/Tree/Tree.js +1 -1
  88. package/dist/components/content/Tree/TreeNode.js +1 -1
  89. package/dist/components/content/Tree/styled.js +1 -1
  90. package/dist/components/content/Tree/tree-index.js +1 -1
  91. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  92. package/dist/components/content/Tree/use-load-data.js +1 -1
  93. package/dist/components/content/highlightText.js +1 -1
  94. package/dist/components/content/use-auto-tooltip.js +1 -1
  95. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  96. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  97. package/dist/components/fields/Checkbox/context.js +1 -1
  98. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  99. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  100. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  101. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  102. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  103. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  104. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  105. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  106. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  107. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  108. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  109. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  110. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  111. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  112. package/dist/components/fields/DatePicker/intl.js +1 -1
  113. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  114. package/dist/components/fields/DatePicker/props.js +1 -1
  115. package/dist/components/fields/DatePicker/utils.js +1 -1
  116. package/dist/components/fields/FileInput/FileInput.js +1 -1
  117. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  118. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  119. package/dist/components/fields/Input/Input.js +1 -1
  120. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  121. package/dist/components/fields/ListBox/ListBox.js +1 -1
  122. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  123. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  124. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  125. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  126. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  127. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  128. package/dist/components/fields/Picker/Picker.js +1 -1
  129. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  130. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  131. package/dist/components/fields/RadioGroup/context.js +1 -1
  132. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  133. package/dist/components/fields/Select/Select.js +1 -1
  134. package/dist/components/fields/Slider/Gradation.js +1 -1
  135. package/dist/components/fields/Slider/HueSlider.js +1 -1
  136. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  137. package/dist/components/fields/Slider/Slider.js +1 -1
  138. package/dist/components/fields/Slider/SliderBase.js +1 -1
  139. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  140. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  141. package/dist/components/fields/Slider/elements.js +1 -1
  142. package/dist/components/fields/Slider/index.js +1 -1
  143. package/dist/components/fields/Switch/Switch.js +1 -1
  144. package/dist/components/fields/TextArea/TextArea.js +1 -1
  145. package/dist/components/fields/TextInput/TextInput.js +1 -1
  146. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  147. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  148. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  149. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  150. package/dist/components/form/Form/Field.js +1 -1
  151. package/dist/components/form/Form/Form.js +1 -1
  152. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  153. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  154. package/dist/components/form/Form/SubmitError.js +1 -1
  155. package/dist/components/form/Form/index.js +1 -1
  156. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  157. package/dist/components/form/Form/use-field/use-field.js +1 -1
  158. package/dist/components/form/Form/use-form.js +1 -1
  159. package/dist/components/form/Form/validation.js +1 -1
  160. package/dist/components/form/Label.js +1 -1
  161. package/dist/components/form/wrapper.js +1 -1
  162. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  163. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  164. package/dist/components/layout/Flex.js +1 -1
  165. package/dist/components/layout/Flow.js +1 -1
  166. package/dist/components/layout/Grid.js +1 -1
  167. package/dist/components/layout/Panel.js +1 -1
  168. package/dist/components/layout/Prefix.js +1 -1
  169. package/dist/components/layout/ResizablePanel.js +1 -1
  170. package/dist/components/layout/Space.js +1 -1
  171. package/dist/components/layout/Suffix.js +1 -1
  172. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  173. package/dist/components/navigation/Tabs/TabButton.js +4 -36
  174. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  175. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  176. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  177. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  178. package/dist/components/navigation/Tabs/Tabs.js +3 -6
  179. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  180. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  181. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  182. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  183. package/dist/components/navigation/Tabs/styled.js +2 -3
  184. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  185. package/dist/components/navigation/Tabs/types.js +1 -1
  186. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  187. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  188. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  189. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  190. package/dist/components/other/Calendar/Calendar.js +1 -1
  191. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  192. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  193. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  194. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  195. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  196. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  197. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  198. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  199. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  200. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  201. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  202. package/dist/components/overlays/Dialog/context.js +1 -1
  203. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  204. package/dist/components/overlays/Modal/Modal.js +1 -1
  205. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  206. package/dist/components/overlays/Modal/Overlay.js +1 -1
  207. package/dist/components/overlays/Modal/Popover.js +1 -1
  208. package/dist/components/overlays/Modal/Tray.js +1 -1
  209. package/dist/components/overlays/Modal/Underlay.js +1 -1
  210. package/dist/components/overlays/Notifications/Notification.js +1 -1
  211. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  212. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  213. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  214. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  215. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  216. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  217. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  218. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  219. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  220. package/dist/components/overlays/Notifications/index.js +1 -1
  221. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  222. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  223. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  224. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  225. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  226. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  227. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  228. package/dist/components/overlays/Toast/index.js +1 -1
  229. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  230. package/dist/components/overlays/Toast/useToast.js +1 -1
  231. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  232. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  233. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  234. package/dist/components/overlays/Tooltip/context.js +1 -1
  235. package/dist/components/portal/Portal.js +1 -1
  236. package/dist/components/portal/PortalProvider.js +1 -1
  237. package/dist/components/portal/usePortal.js +1 -1
  238. package/dist/components/shared/DraggableCollection.js +1 -1
  239. package/dist/components/shared/InvalidIcon.js +1 -1
  240. package/dist/components/shared/ValidIcon.js +1 -1
  241. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  242. package/dist/components/status/Spin/Cube.js +1 -1
  243. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  244. package/dist/components/status/Spin/Spin.js +1 -1
  245. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  246. package/dist/data/item-themes.js +1 -1
  247. package/dist/data/themes.js +1 -1
  248. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  249. package/dist/icons/AdjustmentsIcon.js +1 -1
  250. package/dist/icons/AiIcon.js +1 -1
  251. package/dist/icons/AreaChartIcon.js +1 -1
  252. package/dist/icons/BackwardIcon.js +1 -1
  253. package/dist/icons/BarChartIcon.js +1 -1
  254. package/dist/icons/BellFilledIcon.js +1 -1
  255. package/dist/icons/BellIcon.js +1 -1
  256. package/dist/icons/BooleanIcon.js +1 -1
  257. package/dist/icons/CalendarEditIcon.js +1 -1
  258. package/dist/icons/CalendarIcon.js +1 -1
  259. package/dist/icons/CaretDownIcon.js +1 -1
  260. package/dist/icons/CaretUpIcon.js +1 -1
  261. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  262. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  263. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  264. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  265. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  266. package/dist/icons/ChartBarLineIcon.js +1 -1
  267. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  268. package/dist/icons/ChartBarStackedIcon.js +1 -1
  269. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  270. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  271. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  272. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  273. package/dist/icons/ChartBubbleIcon.js +1 -1
  274. package/dist/icons/ChartDonut2Icon.js +1 -1
  275. package/dist/icons/ChartFunnelIcon.js +1 -1
  276. package/dist/icons/ChartHeatmapIcon.js +1 -1
  277. package/dist/icons/ChartKPIIcon.js +1 -1
  278. package/dist/icons/ChartPie2Icon.js +1 -1
  279. package/dist/icons/ChartScatterIcon.js +1 -1
  280. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  281. package/dist/icons/CheckCircleIcon.js +1 -1
  282. package/dist/icons/CheckIcon.js +1 -1
  283. package/dist/icons/CircleFilledIcon.js +1 -1
  284. package/dist/icons/ClearIcon.js +1 -1
  285. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  286. package/dist/icons/CloseCircleIcon.js +1 -1
  287. package/dist/icons/CloseIcon.js +1 -1
  288. package/dist/icons/CodeIcon.js +1 -1
  289. package/dist/icons/ColumnTotalIcon.js +1 -1
  290. package/dist/icons/CopyIcon.js +1 -1
  291. package/dist/icons/CountIcon.js +1 -1
  292. package/dist/icons/CubeIcon.js +1 -1
  293. package/dist/icons/CubePauseIcon.js +1 -1
  294. package/dist/icons/CubePlayIcon.js +1 -1
  295. package/dist/icons/CurrencyDollarIcon.js +1 -1
  296. package/dist/icons/DangerIcon.js +1 -1
  297. package/dist/icons/DashboardIcon.js +1 -1
  298. package/dist/icons/DatabaseIcon.js +1 -1
  299. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  300. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  301. package/dist/icons/DirectionIcon.js +1 -1
  302. package/dist/icons/DonutIcon.js +1 -1
  303. package/dist/icons/DownIcon.js +1 -1
  304. package/dist/icons/EditIcon.js +1 -1
  305. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  306. package/dist/icons/ExclamationCircleIcon.js +1 -1
  307. package/dist/icons/ExclamationIcon.js +1 -1
  308. package/dist/icons/EyeIcon.js +1 -1
  309. package/dist/icons/EyeInvisibleIcon.js +1 -1
  310. package/dist/icons/FilterIcon.js +1 -1
  311. package/dist/icons/FolderFilledIcon.js +1 -1
  312. package/dist/icons/FolderIcon.js +1 -1
  313. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  314. package/dist/icons/FolderOpenIcon.js +1 -1
  315. package/dist/icons/ForwardIcon.js +1 -1
  316. package/dist/icons/GripVerticalIcon.js +1 -1
  317. package/dist/icons/HierarchyIcon.js +1 -1
  318. package/dist/icons/HierarchyOpenIcon.js +1 -1
  319. package/dist/icons/Icon.js +1 -1
  320. package/dist/icons/InfoCircleIcon.js +1 -1
  321. package/dist/icons/InfoIcon.js +1 -1
  322. package/dist/icons/KeyIcon.js +1 -1
  323. package/dist/icons/LeftIcon.js +1 -1
  324. package/dist/icons/LineChartIcon.js +1 -1
  325. package/dist/icons/LoadingIcon.js +1 -1
  326. package/dist/icons/LockFilledIcon.js +1 -1
  327. package/dist/icons/LockIcon.js +1 -1
  328. package/dist/icons/MoreIcon.js +1 -1
  329. package/dist/icons/NotAllowedIcon.js +1 -1
  330. package/dist/icons/Number123Icon.js +1 -1
  331. package/dist/icons/NumberIcon.js +1 -1
  332. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  333. package/dist/icons/PauseCircleIcon.js +1 -1
  334. package/dist/icons/PauseIcon.js +1 -1
  335. package/dist/icons/PercentageIcon.js +1 -1
  336. package/dist/icons/PieChartIcon.js +1 -1
  337. package/dist/icons/PlayCircleIcon.js +1 -1
  338. package/dist/icons/PlayIcon.js +1 -1
  339. package/dist/icons/PlusIcon.js +1 -1
  340. package/dist/icons/ProgressBarIcon.js +1 -1
  341. package/dist/icons/ReloadIcon.js +1 -1
  342. package/dist/icons/ReportIcon.js +1 -1
  343. package/dist/icons/ReturnIcon.js +1 -1
  344. package/dist/icons/RightIcon.js +1 -1
  345. package/dist/icons/RowTotalsIcon.js +1 -1
  346. package/dist/icons/SchemeIcon.js +1 -1
  347. package/dist/icons/SearchIcon.js +1 -1
  348. package/dist/icons/SemanticQueryIcon.js +1 -1
  349. package/dist/icons/SettingsIcon.js +1 -1
  350. package/dist/icons/ShieldFilledIcon.js +1 -1
  351. package/dist/icons/ShieldIcon.js +1 -1
  352. package/dist/icons/SlashIcon.js +1 -1
  353. package/dist/icons/SparklesIcon.js +1 -1
  354. package/dist/icons/SqlIcon.js +1 -1
  355. package/dist/icons/StatsIcon.js +1 -1
  356. package/dist/icons/StopIcon.js +1 -1
  357. package/dist/icons/StringIcon.js +1 -1
  358. package/dist/icons/SubtotalsIcon.js +1 -1
  359. package/dist/icons/SwitchIcon.js +1 -1
  360. package/dist/icons/TableIcon.js +1 -1
  361. package/dist/icons/ThumbsDownIcon.js +1 -1
  362. package/dist/icons/ThumbsUpIcon.js +1 -1
  363. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  364. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  365. package/dist/icons/ThunderboltIcon.js +1 -1
  366. package/dist/icons/TimeIcon.js +1 -1
  367. package/dist/icons/TrashIcon.js +1 -1
  368. package/dist/icons/UnlockIcon.js +1 -1
  369. package/dist/icons/UpIcon.js +1 -1
  370. package/dist/icons/UserGroupIcon.js +1 -1
  371. package/dist/icons/UserIcon.js +1 -1
  372. package/dist/icons/UserLockIcon.js +1 -1
  373. package/dist/icons/ViewIcon.js +1 -1
  374. package/dist/icons/WarningFilledIcon.js +1 -1
  375. package/dist/icons/WarningIcon.js +1 -1
  376. package/dist/icons/wrap-icon.js +1 -1
  377. package/dist/index.d.ts +2 -12
  378. package/dist/index.js +2 -8
  379. package/dist/index.js.map +1 -1
  380. package/dist/provider.js +1 -1
  381. package/dist/providers/TrackingProvider.js +1 -1
  382. package/dist/providers/navigationAdapter.default.js +1 -1
  383. package/dist/tokens/base.js +1 -1
  384. package/dist/tokens/colors.js +1 -1
  385. package/dist/tokens/index.js +1 -1
  386. package/dist/tokens/layout.js +1 -1
  387. package/dist/tokens/palette.js +1 -1
  388. package/dist/tokens/shadows.js +1 -1
  389. package/dist/tokens/sizes.js +1 -1
  390. package/dist/tokens/spacing.js +1 -1
  391. package/dist/tokens/typography.js +1 -1
  392. package/dist/utils/ResizeSensor.js +1 -1
  393. package/dist/utils/is-dev-env.js +1 -1
  394. package/dist/utils/modules.js +1 -1
  395. package/dist/utils/promise.js +1 -1
  396. package/dist/utils/raf.js +1 -1
  397. package/dist/utils/random.js +1 -1
  398. package/dist/utils/range.js +1 -1
  399. package/dist/utils/react/RenderCache.js +1 -1
  400. package/dist/utils/react/Slots.js +1 -1
  401. package/dist/utils/react/chain.js +1 -1
  402. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  403. package/dist/utils/react/index.js +1 -1
  404. package/dist/utils/react/interactions.js +1 -1
  405. package/dist/utils/react/isTextOnly.js +1 -1
  406. package/dist/utils/react/mapProps.js +1 -1
  407. package/dist/utils/react/mergeProps.js +1 -1
  408. package/dist/utils/react/nullableValue.js +1 -1
  409. package/dist/utils/react/resolveIcon.js +1 -1
  410. package/dist/utils/react/sharedStore.js +1 -1
  411. package/dist/utils/react/useCombinedRefs.js +1 -1
  412. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  413. package/dist/utils/react/useEventBus.js +1 -1
  414. package/dist/utils/react/useId.js +1 -1
  415. package/dist/utils/react/useIsDarwin.js +1 -1
  416. package/dist/utils/react/useKeySymbols.js +1 -1
  417. package/dist/utils/react/useLayoutEffect.js +1 -1
  418. package/dist/utils/react/useLocalStorage.js +1 -1
  419. package/dist/utils/react/useMergeStyles.js +1 -1
  420. package/dist/utils/react/usePopoverSync.js +1 -1
  421. package/dist/utils/react/useQaProps.js +1 -1
  422. package/dist/utils/react/useViewportSize.js +1 -1
  423. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  424. package/dist/utils/selection.js +1 -1
  425. package/dist/utils/styles.js +1 -1
  426. package/dist/utils/tree.js +1 -1
  427. package/dist/utils/warnings.js +1 -1
  428. package/dist/version.js +2 -2
  429. package/docs/components/navigation/Tabs.md +2 -18
  430. package/package.json +1 -1
  431. package/dist/components/layout/Board/Board.d.ts +0 -110
  432. package/dist/components/layout/Board/Board.js +0 -447
  433. package/dist/components/layout/Board/Board.js.map +0 -1
  434. package/dist/components/layout/Board/BoardProvider.d.ts +0 -28
  435. package/dist/components/layout/Board/BoardProvider.js +0 -47
  436. package/dist/components/layout/Board/BoardProvider.js.map +0 -1
  437. package/dist/components/layout/Board/BoardResponsive.d.ts +0 -45
  438. package/dist/components/layout/Board/BoardResponsive.js +0 -94
  439. package/dist/components/layout/Board/BoardResponsive.js.map +0 -1
  440. package/dist/components/layout/Board/Widget.d.ts +0 -49
  441. package/dist/components/layout/Board/Widget.js +0 -42
  442. package/dist/components/layout/Board/Widget.js.map +0 -1
  443. package/dist/components/layout/Board/WidgetHost.js +0 -341
  444. package/dist/components/layout/Board/WidgetHost.js.map +0 -1
  445. package/dist/components/layout/Board/board-context.d.ts +0 -16
  446. package/dist/components/layout/Board/board-context.js +0 -32
  447. package/dist/components/layout/Board/board-context.js.map +0 -1
  448. package/dist/components/layout/Board/board-store.d.ts +0 -3
  449. package/dist/components/layout/Board/board-store.js +0 -49
  450. package/dist/components/layout/Board/board-store.js.map +0 -1
  451. package/dist/components/layout/Board/grid-core/calculate.js +0 -90
  452. package/dist/components/layout/Board/grid-core/calculate.js.map +0 -1
  453. package/dist/components/layout/Board/grid-core/collision.js +0 -35
  454. package/dist/components/layout/Board/grid-core/collision.js.map +0 -1
  455. package/dist/components/layout/Board/grid-core/compactors.d.ts +0 -23
  456. package/dist/components/layout/Board/grid-core/compactors.js +0 -166
  457. package/dist/components/layout/Board/grid-core/compactors.js.map +0 -1
  458. package/dist/components/layout/Board/grid-core/constraints.d.ts +0 -35
  459. package/dist/components/layout/Board/grid-core/constraints.js +0 -155
  460. package/dist/components/layout/Board/grid-core/constraints.js.map +0 -1
  461. package/dist/components/layout/Board/grid-core/layout.js +0 -176
  462. package/dist/components/layout/Board/grid-core/layout.js.map +0 -1
  463. package/dist/components/layout/Board/grid-core/sort.js +0 -37
  464. package/dist/components/layout/Board/grid-core/sort.js.map +0 -1
  465. package/dist/components/layout/Board/grid-core/types.d.ts +0 -168
  466. package/dist/components/layout/Board/index.d.ts +0 -21
  467. package/dist/components/layout/Board/index.js +0 -18
  468. package/dist/components/layout/Board/index.js.map +0 -1
  469. package/dist/components/layout/Board/responsive-utils.d.ts +0 -13
  470. package/dist/components/layout/Board/responsive-utils.js +0 -55
  471. package/dist/components/layout/Board/responsive-utils.js.map +0 -1
  472. package/dist/components/layout/Board/use-board-layout.js +0 -52
  473. package/dist/components/layout/Board/use-board-layout.js.map +0 -1
  474. package/dist/components/layout/Board/use-board-registry.js +0 -372
  475. package/dist/components/layout/Board/use-board-registry.js.map +0 -1
  476. package/docs/components/layout/Board.md +0 -212
@@ -1,45 +0,0 @@
1
-
2
- import { LayoutItem } from "./grid-core/types.js";
3
- import { CubeBoardProps } from "./Board.js";
4
- import { BreakpointCols, Breakpoints, ResponsiveLayouts } from "./responsive-utils.js";
5
- import * as react from "react";
6
-
7
- //#region src/components/layout/Board/BoardResponsive.d.ts
8
- interface CubeBoardResponsiveProps extends Omit<CubeBoardProps, 'layout' | 'defaultLayout' | 'cols' | 'onLayoutChange' | 'width' | 'breakpoints'> {
9
- /** Map of breakpoint name -> minimum container width in pixels. */
10
- breakpoints: Breakpoints;
11
- /** Map of breakpoint name -> column count. */
12
- cols: BreakpointCols;
13
- /** Controlled per-breakpoint layouts. */
14
- layouts?: ResponsiveLayouts;
15
- /** Initial per-breakpoint layouts for uncontrolled usage. */
16
- defaultLayouts?: ResponsiveLayouts;
17
- /**
18
- * Called when a drag or resize is committed. Receives the active breakpoint's
19
- * layout and the full map of all breakpoint layouts.
20
- */
21
- onLayoutChange?: (currentLayout: LayoutItem[], allLayouts: ResponsiveLayouts) => void;
22
- /** Called when the active breakpoint changes. */
23
- onBreakpointChange?: (breakpoint: string, cols: number) => void;
24
- /**
25
- * Force a specific breakpoint regardless of the measured width (e.g. for a
26
- * fixed-size screenshot or PDF export).
27
- */
28
- breakpoint?: string;
29
- /**
30
- * Explicit container width in pixels. When provided, disables automatic width
31
- * measurement (useful for SSR, tests, and forced-size exports).
32
- */
33
- width?: number;
34
- }
35
- /**
36
- * A responsive wrapper around `Board` that selects a layout and column count
37
- * based on the container's width (or a forced breakpoint). Mirrors the model of
38
- * react-grid-layout's `Responsive` + `WidthProvider`: per-breakpoint `layouts`
39
- * and `cols`, with `onLayoutChange` reporting both the active layout and the
40
- * full map.
41
- */
42
- declare const BoardResponsive: react.ForwardRefExoticComponent<CubeBoardResponsiveProps & react.RefAttributes<HTMLDivElement>>;
43
- //#endregion
44
- export { BoardResponsive, CubeBoardResponsiveProps };
45
- //# sourceMappingURL=BoardResponsive.d.ts.map
@@ -1,94 +0,0 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c26fe9d | Cube Dev Team */
2
- import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
3
- import { useEvent } from "../../../_internal/hooks/use-event.js";
4
- import { getCompactor } from "./grid-core/compactors.js";
5
- import { Board } from "./Board.js";
6
- import { findOrGenerateResponsiveLayout, getBreakpointFromWidth, getColsFromBreakpoint } from "./responsive-utils.js";
7
- import { forwardRef, useEffect, useMemo, useRef, useState } from "react";
8
- import { jsx } from "react/jsx-runtime";
9
- import { useResizeObserver } from "@react-aria/utils";
10
-
11
- //#region src/components/layout/Board/BoardResponsive.tsx
12
- function compactTypeToCore(compact) {
13
- if (compact === "free") return null;
14
- return compact;
15
- }
16
- function BoardResponsiveInner(props, ref) {
17
- const { breakpoints, cols, layouts: controlledLayouts, defaultLayouts, onLayoutChange, onBreakpointChange, breakpoint: forcedBreakpoint, width: providedWidth, compact = "vertical", allowOverlap = false, preventCollision = false, ...boardProps } = props;
18
- const boardRef = useRef(null);
19
- const combinedRef = useCombinedRefs(ref, boardRef);
20
- const [measuredWidth, setMeasuredWidth] = useState(0);
21
- useResizeObserver({
22
- ref: boardRef,
23
- onResize: useEvent(() => {
24
- const next = boardRef.current?.offsetWidth ?? 0;
25
- if (next > 0) setMeasuredWidth((prev) => prev === next ? prev : next);
26
- })
27
- });
28
- const isControlled = controlledLayouts !== void 0;
29
- const [internalLayouts, setInternalLayouts] = useState(() => controlledLayouts ?? defaultLayouts ?? {});
30
- const currentLayouts = isControlled ? controlledLayouts : internalLayouts;
31
- const layoutsRef = useRef(currentLayouts);
32
- layoutsRef.current = currentLayouts;
33
- const activeBreakpoint = forcedBreakpoint ?? getBreakpointFromWidth(breakpoints, providedWidth ?? measuredWidth);
34
- const activeCols = getColsFromBreakpoint(activeBreakpoint, cols);
35
- const lastBreakpointRef = useRef(activeBreakpoint);
36
- const compactor = useMemo(() => getCompactor(compactTypeToCore(compact), allowOverlap, preventCollision), [
37
- compact,
38
- allowOverlap,
39
- preventCollision
40
- ]);
41
- const currentLayout = useMemo(() => {
42
- const existing = currentLayouts[activeBreakpoint];
43
- if (existing) return existing;
44
- return findOrGenerateResponsiveLayout(currentLayouts, breakpoints, activeBreakpoint, lastBreakpointRef.current, activeCols, compactor);
45
- }, [
46
- currentLayouts,
47
- breakpoints,
48
- activeBreakpoint,
49
- activeCols,
50
- compactor
51
- ]);
52
- const onBreakpointChangeEvent = useEvent(() => onBreakpointChange?.(activeBreakpoint, activeCols));
53
- const bpInitializedRef = useRef(false);
54
- useEffect(() => {
55
- if (!bpInitializedRef.current) {
56
- bpInitializedRef.current = true;
57
- lastBreakpointRef.current = activeBreakpoint;
58
- return;
59
- }
60
- onBreakpointChangeEvent();
61
- lastBreakpointRef.current = activeBreakpoint;
62
- }, [activeBreakpoint]);
63
- return /* @__PURE__ */ jsx(Board, {
64
- ref: combinedRef,
65
- layout: currentLayout,
66
- cols: activeCols,
67
- width: providedWidth,
68
- compact,
69
- allowOverlap,
70
- preventCollision,
71
- onLayoutChange: useEvent((next) => {
72
- const merged = {
73
- ...layoutsRef.current,
74
- [activeBreakpoint]: next
75
- };
76
- layoutsRef.current = merged;
77
- if (!isControlled) setInternalLayouts(merged);
78
- onLayoutChange?.(next, merged);
79
- }),
80
- ...boardProps
81
- });
82
- }
83
- /**
84
- * A responsive wrapper around `Board` that selects a layout and column count
85
- * based on the container's width (or a forced breakpoint). Mirrors the model of
86
- * react-grid-layout's `Responsive` + `WidthProvider`: per-breakpoint `layouts`
87
- * and `cols`, with `onLayoutChange` reporting both the active layout and the
88
- * full map.
89
- */
90
- const BoardResponsive = forwardRef(BoardResponsiveInner);
91
-
92
- //#endregion
93
- export { BoardResponsive };
94
- //# sourceMappingURL=BoardResponsive.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BoardResponsive.js","names":[],"sources":["../../../../src/components/layout/Board/BoardResponsive.tsx"],"sourcesContent":["import { useResizeObserver } from '@react-aria/utils';\nimport { forwardRef, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { useCombinedRefs } from '../../../utils/react';\n\nimport { Board } from './Board';\nimport { Compactor, CompactType, getCompactor, LayoutItem } from './grid-core';\nimport {\n BreakpointCols,\n Breakpoints,\n findOrGenerateResponsiveLayout,\n getBreakpointFromWidth,\n getColsFromBreakpoint,\n ResponsiveLayouts,\n} from './responsive-utils';\n\nimport type { BoardCompactType, CubeBoardProps } from './Board';\n\nexport interface CubeBoardResponsiveProps\n extends Omit<\n CubeBoardProps,\n | 'layout'\n | 'defaultLayout'\n | 'cols'\n | 'onLayoutChange'\n | 'width'\n | 'breakpoints'\n > {\n /** Map of breakpoint name -> minimum container width in pixels. */\n breakpoints: Breakpoints;\n /** Map of breakpoint name -> column count. */\n cols: BreakpointCols;\n /** Controlled per-breakpoint layouts. */\n layouts?: ResponsiveLayouts;\n /** Initial per-breakpoint layouts for uncontrolled usage. */\n defaultLayouts?: ResponsiveLayouts;\n /**\n * Called when a drag or resize is committed. Receives the active breakpoint's\n * layout and the full map of all breakpoint layouts.\n */\n onLayoutChange?: (\n currentLayout: LayoutItem[],\n allLayouts: ResponsiveLayouts,\n ) => void;\n /** Called when the active breakpoint changes. */\n onBreakpointChange?: (breakpoint: string, cols: number) => void;\n /**\n * Force a specific breakpoint regardless of the measured width (e.g. for a\n * fixed-size screenshot or PDF export).\n */\n breakpoint?: string;\n /**\n * Explicit container width in pixels. When provided, disables automatic width\n * measurement (useful for SSR, tests, and forced-size exports).\n */\n width?: number;\n}\n\nfunction compactTypeToCore(compact: BoardCompactType): CompactType {\n if (compact === 'free') return null;\n return compact;\n}\n\nfunction BoardResponsiveInner(\n props: CubeBoardResponsiveProps,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {\n breakpoints,\n cols,\n layouts: controlledLayouts,\n defaultLayouts,\n onLayoutChange,\n onBreakpointChange,\n breakpoint: forcedBreakpoint,\n width: providedWidth,\n compact = 'vertical',\n allowOverlap = false,\n preventCollision = false,\n ...boardProps\n } = props;\n\n const boardRef = useRef<HTMLDivElement | null>(null);\n const combinedRef = useCombinedRefs(ref, boardRef);\n const [measuredWidth, setMeasuredWidth] = useState(0);\n\n const onResizeElement = useEvent(() => {\n const next = boardRef.current?.offsetWidth ?? 0;\n if (next > 0) setMeasuredWidth((prev) => (prev === next ? prev : next));\n });\n useResizeObserver({ ref: boardRef, onResize: onResizeElement });\n\n const isControlled = controlledLayouts !== undefined;\n const [internalLayouts, setInternalLayouts] = useState<ResponsiveLayouts>(\n () => controlledLayouts ?? defaultLayouts ?? {},\n );\n const currentLayouts = isControlled ? controlledLayouts! : internalLayouts;\n const layoutsRef = useRef(currentLayouts);\n layoutsRef.current = currentLayouts;\n\n const widthForBreakpoint = providedWidth ?? measuredWidth;\n const activeBreakpoint =\n forcedBreakpoint ?? getBreakpointFromWidth(breakpoints, widthForBreakpoint);\n const activeCols = getColsFromBreakpoint(activeBreakpoint, cols);\n\n // Previous breakpoint, used as the preferred source when synthesizing a layout\n // for a breakpoint that has none yet.\n const lastBreakpointRef = useRef(activeBreakpoint);\n\n // This compactor is only used to synthesize a layout for a breakpoint that has\n // none yet (compaction/bounds correction), so `preventCollision` has no effect\n // here - the drag-time behavior comes from the child `Board`'s own compactor\n // (see the free-mode note in `Board.tsx`).\n const compactor = useMemo<Compactor>(\n () =>\n getCompactor(compactTypeToCore(compact), allowOverlap, preventCollision),\n [compact, allowOverlap, preventCollision],\n );\n\n // Keep a stable reference for an existing breakpoint's layout so the child\n // `Board` (which syncs controlled layout by reference) is not reset every\n // render or mid-drag. Only a genuinely missing breakpoint is synthesized.\n const currentLayout = useMemo(() => {\n const existing = currentLayouts[activeBreakpoint];\n if (existing) return existing;\n return findOrGenerateResponsiveLayout(\n currentLayouts,\n breakpoints,\n activeBreakpoint,\n lastBreakpointRef.current,\n activeCols,\n compactor,\n );\n }, [currentLayouts, breakpoints, activeBreakpoint, activeCols, compactor]);\n\n // Remember the last breakpoint (for synthesizing a missing one) and emit\n // breakpoint changes after commit, skipping the initial mount.\n const onBreakpointChangeEvent = useEvent(() =>\n onBreakpointChange?.(activeBreakpoint, activeCols),\n );\n const bpInitializedRef = useRef(false);\n useEffect(() => {\n if (!bpInitializedRef.current) {\n bpInitializedRef.current = true;\n lastBreakpointRef.current = activeBreakpoint;\n return;\n }\n onBreakpointChangeEvent();\n lastBreakpointRef.current = activeBreakpoint;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeBreakpoint]);\n\n const handleLayoutChange = useEvent((next: LayoutItem[]) => {\n const merged = { ...layoutsRef.current, [activeBreakpoint]: next };\n layoutsRef.current = merged;\n if (!isControlled) setInternalLayouts(merged);\n onLayoutChange?.(next, merged);\n });\n\n return (\n <Board\n ref={combinedRef}\n layout={currentLayout}\n cols={activeCols}\n width={providedWidth}\n compact={compact}\n allowOverlap={allowOverlap}\n preventCollision={preventCollision}\n onLayoutChange={handleLayoutChange}\n {...boardProps}\n />\n );\n}\n\n/**\n * A responsive wrapper around `Board` that selects a layout and column count\n * based on the container's width (or a forced breakpoint). Mirrors the model of\n * react-grid-layout's `Responsive` + `WidthProvider`: per-breakpoint `layouts`\n * and `cols`, with `onLayoutChange` reporting both the active layout and the\n * full map.\n */\nexport const BoardResponsive = forwardRef(BoardResponsiveInner);\n"],"mappings":";;;;;;;;;;;AA2DA,SAAS,kBAAkB,SAAwC;AACjE,KAAI,YAAY,OAAQ,QAAO;AAC/B,QAAO;;AAGT,SAAS,qBACP,OACA,KACA;CACA,MAAM,EACJ,aACA,MACA,SAAS,mBACT,gBACA,gBACA,oBACA,YAAY,kBACZ,OAAO,eACP,UAAU,YACV,eAAe,OACf,mBAAmB,OACnB,GAAG,eACD;CAEJ,MAAM,WAAW,OAA8B,KAAK;CACpD,MAAM,cAAc,gBAAgB,KAAK,SAAS;CAClD,MAAM,CAAC,eAAe,oBAAoB,SAAS,EAAE;AAMrD,mBAAkB;EAAE,KAAK;EAAU,UAJX,eAAe;GACrC,MAAM,OAAO,SAAS,SAAS,eAAe;AAC9C,OAAI,OAAO,EAAG,mBAAkB,SAAU,SAAS,OAAO,OAAO,KAAM;IACvE;EAC4D,CAAC;CAE/D,MAAM,eAAe,sBAAsB;CAC3C,MAAM,CAAC,iBAAiB,sBAAsB,eACtC,qBAAqB,kBAAkB,EAAE,CAChD;CACD,MAAM,iBAAiB,eAAe,oBAAqB;CAC3D,MAAM,aAAa,OAAO,eAAe;AACzC,YAAW,UAAU;CAGrB,MAAM,mBACJ,oBAAoB,uBAAuB,aAFlB,iBAAiB,cAEiC;CAC7E,MAAM,aAAa,sBAAsB,kBAAkB,KAAK;CAIhE,MAAM,oBAAoB,OAAO,iBAAiB;CAMlD,MAAM,YAAY,cAEd,aAAa,kBAAkB,QAAQ,EAAE,cAAc,iBAAiB,EAC1E;EAAC;EAAS;EAAc;EAAiB,CAC1C;CAKD,MAAM,gBAAgB,cAAc;EAClC,MAAM,WAAW,eAAe;AAChC,MAAI,SAAU,QAAO;AACrB,SAAO,+BACL,gBACA,aACA,kBACA,kBAAkB,SAClB,YACA,UACD;IACA;EAAC;EAAgB;EAAa;EAAkB;EAAY;EAAU,CAAC;CAI1E,MAAM,0BAA0B,eAC9B,qBAAqB,kBAAkB,WAAW,CACnD;CACD,MAAM,mBAAmB,OAAO,MAAM;AACtC,iBAAgB;AACd,MAAI,CAAC,iBAAiB,SAAS;AAC7B,oBAAiB,UAAU;AAC3B,qBAAkB,UAAU;AAC5B;;AAEF,2BAAyB;AACzB,oBAAkB,UAAU;IAE3B,CAAC,iBAAiB,CAAC;AAStB,QACE,oBAAC;EACC,KAAK;EACL,QAAQ;EACR,MAAM;EACN,OAAO;EACE;EACK;EACI;EAClB,gBAhBuB,UAAU,SAAuB;GAC1D,MAAM,SAAS;IAAE,GAAG,WAAW;KAAU,mBAAmB;IAAM;AAClE,cAAW,UAAU;AACrB,OAAI,CAAC,aAAc,oBAAmB,OAAO;AAC7C,oBAAiB,MAAM,OAAO;IAC9B;EAYE,GAAI;GACJ;;;;;;;;;AAWN,MAAa,kBAAkB,WAAW,qBAAqB"}
@@ -1,49 +0,0 @@
1
-
2
- import { LayoutConstraint, ResizeHandleAxis } from "./grid-core/types.js";
3
- import { Styles } from "@tenphi/tasty";
4
- import { ReactNode } from "react";
5
-
6
- //#region src/components/layout/Board/Widget.d.ts
7
- interface CubeBoardWidgetProps {
8
- /** Unique id, must match the `i` of a layout item in a `Board`. */
9
- id: string;
10
- /** Widget content. */
11
- children?: ReactNode;
12
- /** Disable dragging for this widget. */
13
- isDraggable?: boolean;
14
- /** Disable resizing for this widget. */
15
- isResizable?: boolean;
16
- /** Which resize handles to show (overrides the board default). */
17
- resizeHandles?: ResizeHandleAxis[];
18
- /** Per-widget layout constraints. */
19
- constraints?: LayoutConstraint[];
20
- /** Test id applied to the rendered widget element. */
21
- qa?: string;
22
- /** Style overrides applied to the rendered widget element. */
23
- styles?: Styles;
24
- /**
25
- * Grow this widget's height in its board to fit its content (only ever
26
- * increases). Pair with a nested `Board isAligned` to make the container
27
- * expand until the inner board's rows fit at the parent's row height.
28
- */
29
- isAutoHeight?: boolean;
30
- /**
31
- * CSS selector for elements that must not start a pointer drag inside this
32
- * widget (overrides the board's `dragCancel`).
33
- */
34
- dragCancel?: string;
35
- /**
36
- * CSS selector for the only elements from which a pointer drag may start
37
- * inside this widget (overrides the board's `dragHandle`).
38
- */
39
- dragHandle?: string;
40
- }
41
- /**
42
- * Declares a widget's content and per-widget options. Rendering and positioning
43
- * are performed by the owning `Board` (the component itself renders nothing),
44
- * which is what allows a widget to be transferred between boards.
45
- */
46
- declare function Widget(props: CubeBoardWidgetProps): null;
47
- //#endregion
48
- export { CubeBoardWidgetProps, Widget };
49
- //# sourceMappingURL=Widget.d.ts.map
@@ -1,42 +0,0 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c26fe9d | Cube Dev Team */
2
- import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
3
- import { useBoardRegistry } from "./board-context.js";
4
- import { useEffect, useRef } from "react";
5
-
6
- //#region src/components/layout/Board/Widget.tsx
7
- /**
8
- * Declares a widget's content and per-widget options. Rendering and positioning
9
- * are performed by the owning `Board` (the component itself renders nothing),
10
- * which is what allows a widget to be transferred between boards.
11
- */
12
- function Widget(props) {
13
- const { id, children, isDraggable, isResizable, resizeHandles, constraints, qa, styles, isAutoHeight, dragCancel, dragHandle } = props;
14
- const registry = useBoardRegistry();
15
- const ownerRef = useRef({});
16
- useLayoutEffect$1(() => {
17
- registry?.store.register({
18
- id,
19
- content: children,
20
- isDraggable,
21
- isResizable,
22
- resizeHandles,
23
- constraints,
24
- qa,
25
- styles,
26
- isAutoHeight,
27
- dragCancel,
28
- dragHandle
29
- }, ownerRef.current);
30
- });
31
- useEffect(() => {
32
- const owner = ownerRef.current;
33
- return () => {
34
- registry?.store.unregister(id, owner);
35
- };
36
- }, [id]);
37
- return null;
38
- }
39
-
40
- //#endregion
41
- export { Widget };
42
- //# sourceMappingURL=Widget.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Widget.js","names":[],"sources":["../../../../src/components/layout/Board/Widget.tsx"],"sourcesContent":["import { Styles } from '@tenphi/tasty';\nimport { ReactNode, useEffect, useRef } from 'react';\n\nimport { useLayoutEffect } from '../../../utils/react';\n\nimport { useBoardRegistry } from './board-context';\nimport { LayoutConstraint, ResizeHandleAxis } from './grid-core';\n\nexport interface CubeBoardWidgetProps {\n /** Unique id, must match the `i` of a layout item in a `Board`. */\n id: string;\n /** Widget content. */\n children?: ReactNode;\n /** Disable dragging for this widget. */\n isDraggable?: boolean;\n /** Disable resizing for this widget. */\n isResizable?: boolean;\n /** Which resize handles to show (overrides the board default). */\n resizeHandles?: ResizeHandleAxis[];\n /** Per-widget layout constraints. */\n constraints?: LayoutConstraint[];\n /** Test id applied to the rendered widget element. */\n qa?: string;\n /** Style overrides applied to the rendered widget element. */\n styles?: Styles;\n /**\n * Grow this widget's height in its board to fit its content (only ever\n * increases). Pair with a nested `Board isAligned` to make the container\n * expand until the inner board's rows fit at the parent's row height.\n */\n isAutoHeight?: boolean;\n /**\n * CSS selector for elements that must not start a pointer drag inside this\n * widget (overrides the board's `dragCancel`).\n */\n dragCancel?: string;\n /**\n * CSS selector for the only elements from which a pointer drag may start\n * inside this widget (overrides the board's `dragHandle`).\n */\n dragHandle?: string;\n}\n\n/**\n * Declares a widget's content and per-widget options. Rendering and positioning\n * are performed by the owning `Board` (the component itself renders nothing),\n * which is what allows a widget to be transferred between boards.\n */\nexport function Widget(props: CubeBoardWidgetProps) {\n const {\n id,\n children,\n isDraggable,\n isResizable,\n resizeHandles,\n constraints,\n qa,\n styles,\n isAutoHeight,\n dragCancel,\n dragHandle,\n } = props;\n const registry = useBoardRegistry();\n\n // Stable per-instance token so a stale unregister (from an unmounting copy of\n // this widget) can't wipe out a newer instance's registration.\n const ownerRef = useRef({});\n\n // Register/update content on every render so content stays fresh in the store.\n useLayoutEffect(() => {\n registry?.store.register(\n {\n id,\n content: children,\n isDraggable,\n isResizable,\n resizeHandles,\n constraints,\n qa,\n styles,\n isAutoHeight,\n dragCancel,\n dragHandle,\n },\n ownerRef.current,\n );\n });\n\n // Remove from the store on unmount.\n useEffect(() => {\n const owner = ownerRef.current;\n return () => {\n registry?.store.unregister(id, owner);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [id]);\n\n return null;\n}\n"],"mappings":";;;;;;;;;;;AAgDA,SAAgB,OAAO,OAA6B;CAClD,MAAM,EACJ,IACA,UACA,aACA,aACA,eACA,aACA,IACA,QACA,cACA,YACA,eACE;CACJ,MAAM,WAAW,kBAAkB;CAInC,MAAM,WAAW,OAAO,EAAE,CAAC;AAG3B,yBAAsB;AACpB,YAAU,MAAM,SACd;GACE;GACA,SAAS;GACT;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,EACD,SAAS,QACV;GACD;AAGF,iBAAgB;EACd,MAAM,QAAQ,SAAS;AACvB,eAAa;AACX,aAAU,MAAM,WAAW,IAAI,MAAM;;IAGtC,CAAC,GAAG,CAAC;AAER,QAAO"}
@@ -1,341 +0,0 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c26fe9d | Cube Dev Team */
2
- import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
- import { useEvent } from "../../../_internal/hooks/use-event.js";
4
- import { BoardHostContext } from "./board-context.js";
5
- import { calcGridColWidth, calcGridItemPosition } from "./grid-core/calculate.js";
6
- import { tasty } from "@tenphi/tasty";
7
- import { useMemo, useRef, useState } from "react";
8
- import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
9
- import { useFocusWithin, useHover, useMove } from "react-aria";
10
- import { createPortal } from "react-dom";
11
-
12
- //#region src/components/layout/Board/WidgetHost.tsx
13
- /**
14
- * Slack (px) absorbed when converting an auto-height widget's content height to
15
- * whole rows, so sub-pixel measurement/rounding noise never bumps an extra row.
16
- */
17
- const AUTO_HEIGHT_TOLERANCE = 4;
18
- const WidgetElement = tasty({
19
- qa: "BoardWidget",
20
- styles: {
21
- position: "absolute",
22
- top: 0,
23
- left: 0,
24
- fill: "#surface",
25
- radius: "1cr",
26
- border: true,
27
- shadow: {
28
- "": false,
29
- "drag | resizing": "$dialog-shadow"
30
- },
31
- zIndex: {
32
- "": 1,
33
- "drag | resizing": 10
34
- },
35
- transition: "theme, shadow",
36
- boxSizing: "border-box",
37
- userSelect: {
38
- "": "auto",
39
- "drag | resizing": "none"
40
- },
41
- cursor: {
42
- "": "auto",
43
- draggable: "grab",
44
- drag: "grabbing"
45
- },
46
- touchAction: "none",
47
- overflow: "hidden"
48
- }
49
- });
50
- const HandleElement = tasty({
51
- qa: "BoardResizeHandle",
52
- styles: {
53
- position: "absolute",
54
- zIndex: 20,
55
- fill: "#clear",
56
- "--handle-size": "24px",
57
- "--handle-overhang": "-8px",
58
- "--handle-inset": "8px",
59
- width: {
60
- "": "$handle-size",
61
- "[data-axis=\"n\"] | [data-axis=\"s\"]": "auto"
62
- },
63
- height: {
64
- "": "$handle-size",
65
- "[data-axis=\"e\"] | [data-axis=\"w\"]": "auto"
66
- },
67
- top: {
68
- "": "auto",
69
- "[data-axis=\"n\"] | [data-axis=\"ne\"] | [data-axis=\"nw\"]": "$handle-overhang",
70
- "[data-axis=\"e\"] | [data-axis=\"w\"]": "$handle-inset"
71
- },
72
- bottom: {
73
- "": "auto",
74
- "[data-axis=\"s\"] | [data-axis=\"se\"] | [data-axis=\"sw\"]": "$handle-overhang",
75
- "[data-axis=\"e\"] | [data-axis=\"w\"]": "$handle-inset"
76
- },
77
- left: {
78
- "": "auto",
79
- "[data-axis=\"w\"] | [data-axis=\"nw\"] | [data-axis=\"sw\"]": "$handle-overhang",
80
- "[data-axis=\"n\"] | [data-axis=\"s\"]": "$handle-inset"
81
- },
82
- right: {
83
- "": "auto",
84
- "[data-axis=\"e\"] | [data-axis=\"ne\"] | [data-axis=\"se\"]": "$handle-overhang",
85
- "[data-axis=\"n\"] | [data-axis=\"s\"]": "$handle-inset"
86
- },
87
- cursor: {
88
- "": "default",
89
- "[data-axis=\"n\"] | [data-axis=\"s\"]": "ns-resize",
90
- "[data-axis=\"e\"] | [data-axis=\"w\"]": "ew-resize",
91
- "[data-axis=\"ne\"] | [data-axis=\"sw\"]": "nesw-resize",
92
- "[data-axis=\"nw\"] | [data-axis=\"se\"]": "nwse-resize"
93
- },
94
- touchAction: "none"
95
- }
96
- });
97
- const GripElement = tasty({
98
- qa: "BoardResizeGrip",
99
- styles: {
100
- position: "absolute",
101
- width: "10px",
102
- height: "10px",
103
- boxSizing: "border-box",
104
- pointerEvents: "none",
105
- opacity: {
106
- "": 0,
107
- revealed: 1
108
- },
109
- transition: "opacity 120ms ease-in-out",
110
- borderTop: {
111
- "": "0",
112
- "[data-axis=\"ne\"] | [data-axis=\"nw\"]": "2px solid #dark.40"
113
- },
114
- borderBottom: {
115
- "": "0",
116
- "[data-axis=\"se\"] | [data-axis=\"sw\"]": "2px solid #dark.40"
117
- },
118
- borderLeft: {
119
- "": "0",
120
- "[data-axis=\"nw\"] | [data-axis=\"sw\"]": "2px solid #dark.40"
121
- },
122
- borderRight: {
123
- "": "0",
124
- "[data-axis=\"ne\"] | [data-axis=\"se\"]": "2px solid #dark.40"
125
- },
126
- radius: {
127
- "": "0",
128
- "[data-axis=\"se\"]": "0 0 4px 0",
129
- "[data-axis=\"sw\"]": "0 0 0 4px",
130
- "[data-axis=\"ne\"]": "0 4px 0 0",
131
- "[data-axis=\"nw\"]": "4px 0 0 0"
132
- },
133
- top: {
134
- "": "auto",
135
- "[data-axis=\"ne\"] | [data-axis=\"nw\"]": "4px"
136
- },
137
- bottom: {
138
- "": "auto",
139
- "[data-axis=\"se\"] | [data-axis=\"sw\"]": "4px"
140
- },
141
- left: {
142
- "": "auto",
143
- "[data-axis=\"nw\"] | [data-axis=\"sw\"]": "4px"
144
- },
145
- right: {
146
- "": "auto",
147
- "[data-axis=\"ne\"] | [data-axis=\"se\"]": "4px"
148
- }
149
- }
150
- });
151
- /** Corner axes get a visible grip affordance on hover/focus/resize. */
152
- function isCornerAxis(axis) {
153
- return axis.length === 2;
154
- }
155
- function ResizeHandle({ axis, onResize }) {
156
- const { moveProps } = useMove({
157
- onMoveStart() {
158
- onResize(axis, "start", 0, 0);
159
- },
160
- onMove(e) {
161
- onResize(axis, "move", e.deltaX, e.deltaY);
162
- },
163
- onMoveEnd() {
164
- onResize(axis, "end", 0, 0);
165
- }
166
- });
167
- const stopProps = {
168
- onPointerDown: (e) => e.stopPropagation(),
169
- onMouseDown: (e) => e.stopPropagation(),
170
- onTouchStart: (e) => e.stopPropagation()
171
- };
172
- return /* @__PURE__ */ jsx(HandleElement, {
173
- "data-axis": axis,
174
- ...mergeProps$1(stopProps, moveProps),
175
- "aria-hidden": "true"
176
- });
177
- }
178
- /**
179
- * The positioned, interactive wrapper a board renders for each layout item it
180
- * owns. Content is pulled from the shared store (by id), so any board can host
181
- * any widget. Dragging uses React Aria `useMove`; during a drag the widget
182
- * renders into the shared overlay portal so it can float outside its board.
183
- */
184
- function WidgetHost(props) {
185
- const { boardId, item, positionParams, registration, isDraggable, isResizable, resizeHandles, dragCancel, dragHandle, registry, dragState, onResize, onAutoHeight, onDragLifecycle } = props;
186
- const hostRef = useRef(null);
187
- const isActiveDrag = dragState?.itemId === item.i;
188
- const isAutoHeight = registration?.isAutoHeight === true;
189
- const requestHeightDeficit = useEvent((deficitPx) => {
190
- if (!isAutoHeight || isActiveDrag) return;
191
- const step = positionParams.rowHeight + positionParams.margin[1];
192
- if (step <= 0) return;
193
- const neededPx = calcGridItemPosition(positionParams, item.x, item.y, item.w, item.h).height + deficitPx;
194
- const neededRows = Math.max(1, Math.ceil((neededPx + positionParams.margin[1] - AUTO_HEIGHT_TOLERANCE) / step));
195
- onAutoHeight(item.i, neededRows);
196
- });
197
- const hostValue = useMemo(() => ({
198
- isAutoHeight,
199
- requestHeightDeficit
200
- }), [isAutoHeight, requestHeightDeficit]);
201
- const useOverlay = isActiveDrag && dragState?.pointerType !== "keyboard";
202
- const [isResizing, setIsResizing] = useState(false);
203
- const [isFocusWithin, setIsFocusWithin] = useState(false);
204
- const { hoverProps, isHovered } = useHover({ isDisabled: isActiveDrag });
205
- const { focusWithinProps } = useFocusWithin({ onFocusWithinChange: setIsFocusWithin });
206
- const gripsRevealed = isResizable && !item.static && !isActiveDrag && (isHovered || isFocusWithin || isResizing);
207
- const { moveProps } = useMove({
208
- onMoveStart(e) {
209
- if (!isDraggable) return;
210
- const rect = hostRef.current?.getBoundingClientRect();
211
- const pos = calcGridItemPosition(positionParams, item.x, item.y, item.w, item.h);
212
- const vr = rect ? {
213
- left: rect.left,
214
- top: rect.top,
215
- width: rect.width,
216
- height: rect.height
217
- } : {
218
- left: pos.left,
219
- top: pos.top,
220
- width: pos.width,
221
- height: pos.height
222
- };
223
- registry.onDragStart(boardId, item.i, vr, e.pointerType, hostRef.current);
224
- onDragLifecycle?.(item.i, "start");
225
- },
226
- onMove(e) {
227
- if (!isDraggable) return;
228
- if (e.pointerType === "keyboard") {
229
- const stepX = calcGridColWidth(positionParams) + positionParams.margin[0];
230
- const stepY = positionParams.rowHeight + positionParams.margin[1];
231
- registry.onDragMove(Math.sign(e.deltaX) * stepX, Math.sign(e.deltaY) * stepY, e.pointerType);
232
- onDragLifecycle?.(item.i, "move");
233
- return;
234
- }
235
- registry.onDragMove(e.deltaX, e.deltaY, e.pointerType);
236
- onDragLifecycle?.(item.i, "move");
237
- },
238
- onMoveEnd() {
239
- if (!isDraggable) return;
240
- registry.onDragEnd();
241
- onDragLifecycle?.(item.i, "end");
242
- }
243
- });
244
- const a11yProps = {
245
- tabIndex: isDraggable ? 0 : void 0,
246
- "aria-roledescription": isDraggable ? "Draggable widget" : void 0,
247
- "aria-label": registration?.qa ?? item.i
248
- };
249
- const stopBubbleProps = isDraggable ? {
250
- onPointerDown: (e) => e.stopPropagation(),
251
- onMouseDown: (e) => e.stopPropagation(),
252
- onTouchStart: (e) => e.stopPropagation()
253
- } : {};
254
- const shouldGateDrag = (target) => {
255
- if (!(target instanceof Element)) return false;
256
- if (dragHandle && !target.closest(dragHandle)) return true;
257
- return !!(dragCancel && target.closest(dragCancel));
258
- };
259
- const gatedMoveProps = isDraggable && (dragHandle || dragCancel) ? {
260
- ...moveProps,
261
- ...moveProps.onPointerDown && { onPointerDown: (e) => {
262
- if (shouldGateDrag(e.target)) return;
263
- moveProps.onPointerDown(e);
264
- } },
265
- ...moveProps.onMouseDown && { onMouseDown: (e) => {
266
- if (shouldGateDrag(e.target)) return;
267
- moveProps.onMouseDown(e);
268
- } },
269
- ...moveProps.onTouchStart && { onTouchStart: (e) => {
270
- if (shouldGateDrag(e.target)) return;
271
- moveProps.onTouchStart(e);
272
- } }
273
- } : moveProps;
274
- const handleResize = (axis, phase, dx, dy) => {
275
- if (phase === "start") setIsResizing(true);
276
- else if (phase === "end") setIsResizing(false);
277
- onResize(item.i, axis, phase, dx, dy);
278
- };
279
- const mods = {
280
- drag: isActiveDrag,
281
- draggable: isDraggable && !isActiveDrag,
282
- static: !!item.static,
283
- resizing: isResizing
284
- };
285
- const content = /* @__PURE__ */ jsxs(BoardHostContext.Provider, {
286
- value: hostValue,
287
- children: [registration?.content, isResizable && !item.static ? /* @__PURE__ */ jsxs(Fragment$1, { children: [resizeHandles.map((axis) => /* @__PURE__ */ jsx(ResizeHandle, {
288
- axis,
289
- onResize: handleResize
290
- }, axis)), resizeHandles.filter(isCornerAxis).map((axis) => /* @__PURE__ */ jsx(GripElement, {
291
- "data-axis": axis,
292
- mods: { revealed: gripsRevealed },
293
- "aria-hidden": "true"
294
- }, `grip-${axis}`))] }) : null]
295
- });
296
- const pos = calcGridItemPosition(positionParams, item.x, item.y, item.w, item.h);
297
- const overlayNode = registry.overlayRef.current;
298
- const floatInOverlay = useOverlay && !!overlayNode && !!dragState;
299
- const hostStyle = {
300
- transform: `translate(${pos.left}px, ${pos.top}px)`,
301
- width: `${pos.width}px`,
302
- height: `${pos.height}px`,
303
- ...floatInOverlay ? {
304
- opacity: 0,
305
- pointerEvents: "none"
306
- } : null
307
- };
308
- const hostMods = {
309
- ...mods,
310
- drag: isActiveDrag && !floatInOverlay
311
- };
312
- return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(WidgetElement, {
313
- ref: hostRef,
314
- "data-board-widget-host": "",
315
- ...mergeProps$1(gatedMoveProps, stopBubbleProps, hoverProps, focusWithinProps, a11yProps, { style: hostStyle }),
316
- qa: registration?.qa,
317
- mods: hostMods,
318
- styles: registration?.styles,
319
- children: floatInOverlay ? null : content
320
- }), floatInOverlay ? createPortal(/* @__PURE__ */ jsx(WidgetElement, {
321
- style: {
322
- position: "absolute",
323
- left: `${dragState.rect.left}px`,
324
- top: `${dragState.rect.top}px`,
325
- width: `${dragState.rect.width}px`,
326
- height: `${dragState.rect.height}px`,
327
- pointerEvents: "none"
328
- },
329
- mods: {
330
- ...mods,
331
- drag: true
332
- },
333
- styles: registration?.styles,
334
- "aria-hidden": "true",
335
- children: content
336
- }), overlayNode) : null] });
337
- }
338
-
339
- //#endregion
340
- export { WidgetHost };
341
- //# sourceMappingURL=WidgetHost.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WidgetHost.js","names":["mergeProps"],"sources":["../../../../src/components/layout/Board/WidgetHost.tsx"],"sourcesContent":["import { Styles, tasty } from '@tenphi/tasty';\nimport { CSSProperties, useMemo, useRef, useState } from 'react';\nimport { useFocusWithin, useHover, useMove } from 'react-aria';\nimport { createPortal } from 'react-dom';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { mergeProps } from '../../../utils/react';\n\nimport {\n BoardDragState,\n BoardHost,\n BoardHostContext,\n BoardRegistryContextValue,\n ViewportRect,\n} from './board-context';\nimport { WidgetRegistration } from './board-store';\nimport {\n calcGridColWidth,\n calcGridItemPosition,\n LayoutItem,\n PositionParams,\n ResizeHandleAxis,\n} from './grid-core';\n\nexport type ResizePhase = 'start' | 'move' | 'end';\n\n/**\n * Slack (px) absorbed when converting an auto-height widget's content height to\n * whole rows, so sub-pixel measurement/rounding noise never bumps an extra row.\n */\nconst AUTO_HEIGHT_TOLERANCE = 4;\n\nconst WidgetElement = tasty({\n qa: 'BoardWidget',\n styles: {\n position: 'absolute',\n top: 0,\n left: 0,\n fill: '#surface',\n radius: '1cr',\n border: true,\n shadow: {\n '': false,\n // `$dialog-shadow` uses Glaze `#shadow-lg`, which adapts to dark / high-contrast schemes.\n 'drag | resizing': '$dialog-shadow',\n },\n zIndex: {\n '': 1,\n 'drag | resizing': 10,\n },\n transition: 'theme, shadow',\n boxSizing: 'border-box',\n userSelect: {\n '': 'auto',\n 'drag | resizing': 'none',\n },\n cursor: {\n '': 'auto',\n draggable: 'grab',\n drag: 'grabbing',\n },\n touchAction: 'none',\n overflow: 'hidden',\n },\n});\n\nconst HandleElement = tasty({\n qa: 'BoardResizeHandle',\n styles: {\n position: 'absolute',\n zIndex: 20,\n fill: '#clear',\n // Overhang: how far the hit-zone extends beyond the widget edge.\n '--handle-size': '24px',\n '--handle-overhang': '-8px',\n '--handle-inset': '8px',\n width: {\n '': '$handle-size',\n '[data-axis=\"n\"] | [data-axis=\"s\"]': 'auto',\n },\n height: {\n '': '$handle-size',\n '[data-axis=\"e\"] | [data-axis=\"w\"]': 'auto',\n },\n top: {\n '': 'auto',\n '[data-axis=\"n\"] | [data-axis=\"ne\"] | [data-axis=\"nw\"]':\n '$handle-overhang',\n '[data-axis=\"e\"] | [data-axis=\"w\"]': '$handle-inset',\n },\n bottom: {\n '': 'auto',\n '[data-axis=\"s\"] | [data-axis=\"se\"] | [data-axis=\"sw\"]':\n '$handle-overhang',\n '[data-axis=\"e\"] | [data-axis=\"w\"]': '$handle-inset',\n },\n left: {\n '': 'auto',\n '[data-axis=\"w\"] | [data-axis=\"nw\"] | [data-axis=\"sw\"]':\n '$handle-overhang',\n '[data-axis=\"n\"] | [data-axis=\"s\"]': '$handle-inset',\n },\n right: {\n '': 'auto',\n '[data-axis=\"e\"] | [data-axis=\"ne\"] | [data-axis=\"se\"]':\n '$handle-overhang',\n '[data-axis=\"n\"] | [data-axis=\"s\"]': '$handle-inset',\n },\n cursor: {\n '': 'default',\n '[data-axis=\"n\"] | [data-axis=\"s\"]': 'ns-resize',\n '[data-axis=\"e\"] | [data-axis=\"w\"]': 'ew-resize',\n '[data-axis=\"ne\"] | [data-axis=\"sw\"]': 'nesw-resize',\n '[data-axis=\"nw\"] | [data-axis=\"se\"]': 'nwse-resize',\n },\n touchAction: 'none',\n },\n});\n\nconst GripElement = tasty({\n qa: 'BoardResizeGrip',\n styles: {\n position: 'absolute',\n width: '10px',\n height: '10px',\n boxSizing: 'border-box',\n pointerEvents: 'none',\n opacity: {\n '': 0,\n revealed: 1,\n },\n transition: 'opacity 120ms ease-in-out',\n borderTop: {\n '': '0',\n '[data-axis=\"ne\"] | [data-axis=\"nw\"]': '2px solid #dark.40',\n },\n borderBottom: {\n '': '0',\n '[data-axis=\"se\"] | [data-axis=\"sw\"]': '2px solid #dark.40',\n },\n borderLeft: {\n '': '0',\n '[data-axis=\"nw\"] | [data-axis=\"sw\"]': '2px solid #dark.40',\n },\n borderRight: {\n '': '0',\n '[data-axis=\"ne\"] | [data-axis=\"se\"]': '2px solid #dark.40',\n },\n radius: {\n '': '0',\n '[data-axis=\"se\"]': '0 0 4px 0',\n '[data-axis=\"sw\"]': '0 0 0 4px',\n '[data-axis=\"ne\"]': '0 4px 0 0',\n '[data-axis=\"nw\"]': '4px 0 0 0',\n },\n top: {\n '': 'auto',\n '[data-axis=\"ne\"] | [data-axis=\"nw\"]': '4px',\n },\n bottom: {\n '': 'auto',\n '[data-axis=\"se\"] | [data-axis=\"sw\"]': '4px',\n },\n left: {\n '': 'auto',\n '[data-axis=\"nw\"] | [data-axis=\"sw\"]': '4px',\n },\n right: {\n '': 'auto',\n '[data-axis=\"ne\"] | [data-axis=\"se\"]': '4px',\n },\n },\n});\n\n/** Corner axes get a visible grip affordance on hover/focus/resize. */\nfunction isCornerAxis(axis: ResizeHandleAxis): boolean {\n return axis.length === 2;\n}\n\ninterface ResizeHandleProps {\n axis: ResizeHandleAxis;\n onResize: (\n axis: ResizeHandleAxis,\n phase: ResizePhase,\n dx: number,\n dy: number,\n ) => void;\n}\n\nfunction ResizeHandle({ axis, onResize }: ResizeHandleProps) {\n const { moveProps } = useMove({\n onMoveStart() {\n onResize(axis, 'start', 0, 0);\n },\n onMove(e) {\n onResize(axis, 'move', e.deltaX, e.deltaY);\n },\n onMoveEnd() {\n onResize(axis, 'end', 0, 0);\n },\n });\n\n const stopProps = {\n onPointerDown: (e: React.PointerEvent) => e.stopPropagation(),\n onMouseDown: (e: React.MouseEvent) => e.stopPropagation(),\n onTouchStart: (e: React.TouchEvent) => e.stopPropagation(),\n };\n\n return (\n <HandleElement\n data-axis={axis}\n {...mergeProps(stopProps, moveProps)}\n aria-hidden=\"true\"\n />\n );\n}\n\nexport interface WidgetHostProps {\n boardId: string;\n item: LayoutItem;\n positionParams: PositionParams;\n registration: WidgetRegistration | undefined;\n isDraggable: boolean;\n isResizable: boolean;\n resizeHandles: ResizeHandleAxis[];\n /**\n * CSS selector for elements that must not start a pointer drag (e.g. form\n * controls inside the widget). A pointer-down whose target matches this\n * selector never begins a drag.\n */\n dragCancel?: string;\n /**\n * CSS selector for the only elements from which a pointer drag may start. A\n * pointer-down outside a matching element never begins a drag.\n */\n dragHandle?: string;\n registry: BoardRegistryContextValue;\n dragState: BoardDragState | null;\n onResize: (\n id: string,\n axis: ResizeHandleAxis,\n phase: ResizePhase,\n dx: number,\n dy: number,\n ) => void;\n /**\n * Report the minimum number of rows this widget needs to fit its content\n * (typically a nested board). The owning board grows the item to this height\n * when it is taller than the current one, and treats it as the resize floor\n * so the widget cannot be dragged shorter than its content requires.\n */\n onAutoHeight: (id: string, neededRows: number) => void;\n /**\n * Notify the owning board of a drag gesture's lifecycle so it can emit the\n * public drag callbacks. Fires after the registry has updated drag state.\n */\n onDragLifecycle?: (id: string, phase: ResizePhase) => void;\n}\n\n/**\n * The positioned, interactive wrapper a board renders for each layout item it\n * owns. Content is pulled from the shared store (by id), so any board can host\n * any widget. Dragging uses React Aria `useMove`; during a drag the widget\n * renders into the shared overlay portal so it can float outside its board.\n */\nexport function WidgetHost(props: WidgetHostProps) {\n const {\n boardId,\n item,\n positionParams,\n registration,\n isDraggable,\n isResizable,\n resizeHandles,\n dragCancel,\n dragHandle,\n registry,\n dragState,\n onResize,\n onAutoHeight,\n onDragLifecycle,\n } = props;\n\n const hostRef = useRef<HTMLDivElement | null>(null);\n const isActiveDrag = dragState?.itemId === item.i;\n const isAutoHeight = registration?.isAutoHeight === true;\n\n // Translate a nested board's reported height deficit (signed px: positive when\n // it is squeezed, negative when it has slack) into the absolute number of rows\n // this widget needs, and report it to the owning board. The widget's chrome\n // cancels out: the needed pixel height is the widget's current pixel height\n // plus the deficit. A small tolerance keeps sub-pixel rounding from bumping an\n // extra row. Skipped during a drag (the widget is floating in the overlay).\n const requestHeightDeficit = useEvent((deficitPx: number) => {\n if (!isAutoHeight || isActiveDrag) return;\n const step = positionParams.rowHeight + positionParams.margin[1];\n if (step <= 0) return;\n const current = calcGridItemPosition(\n positionParams,\n item.x,\n item.y,\n item.w,\n item.h,\n );\n const neededPx = current.height + deficitPx;\n const neededRows = Math.max(\n 1,\n Math.ceil(\n (neededPx + positionParams.margin[1] - AUTO_HEIGHT_TOLERANCE) / step,\n ),\n );\n onAutoHeight(item.i, neededRows);\n });\n\n const hostValue = useMemo<BoardHost>(\n () => ({ isAutoHeight, requestHeightDeficit }),\n [isAutoHeight, requestHeightDeficit],\n );\n // Keyboard drags stay in place: moving the focused element into the overlay\n // portal would unmount it and stop arrow-key move events.\n const useOverlay = isActiveDrag && dragState?.pointerType !== 'keyboard';\n\n const [isResizing, setIsResizing] = useState(false);\n const [isFocusWithin, setIsFocusWithin] = useState(false);\n const { hoverProps, isHovered } = useHover({ isDisabled: isActiveDrag });\n const { focusWithinProps } = useFocusWithin({\n onFocusWithinChange: setIsFocusWithin,\n });\n\n // Reveal the resize grips when the widget is interacted with (but not while it\n // is being dragged, where the widget floats in the overlay).\n const gripsRevealed =\n isResizable &&\n !item.static &&\n !isActiveDrag &&\n (isHovered || isFocusWithin || isResizing);\n\n const { moveProps } = useMove({\n onMoveStart(e) {\n if (!isDraggable) return;\n const rect = hostRef.current?.getBoundingClientRect();\n const pos = calcGridItemPosition(\n positionParams,\n item.x,\n item.y,\n item.w,\n item.h,\n );\n const vr: ViewportRect = rect\n ? {\n left: rect.left,\n top: rect.top,\n width: rect.width,\n height: rect.height,\n }\n : {\n left: pos.left,\n top: pos.top,\n width: pos.width,\n height: pos.height,\n };\n registry.onDragStart(boardId, item.i, vr, e.pointerType, hostRef.current);\n onDragLifecycle?.(item.i, 'start');\n },\n onMove(e) {\n if (!isDraggable) return;\n if (e.pointerType === 'keyboard') {\n // Amplify arrow-key steps to a full grid cell so items actually move.\n const colWidth = calcGridColWidth(positionParams);\n const stepX = colWidth + positionParams.margin[0];\n const stepY = positionParams.rowHeight + positionParams.margin[1];\n registry.onDragMove(\n Math.sign(e.deltaX) * stepX,\n Math.sign(e.deltaY) * stepY,\n e.pointerType,\n );\n onDragLifecycle?.(item.i, 'move');\n return;\n }\n registry.onDragMove(e.deltaX, e.deltaY, e.pointerType);\n onDragLifecycle?.(item.i, 'move');\n },\n onMoveEnd() {\n if (!isDraggable) return;\n registry.onDragEnd();\n onDragLifecycle?.(item.i, 'end');\n },\n });\n\n const a11yProps = {\n tabIndex: isDraggable ? 0 : undefined,\n 'aria-roledescription': isDraggable ? 'Draggable widget' : undefined,\n 'aria-label': registration?.qa ?? item.i,\n };\n\n // When this widget is draggable it owns its gesture, so stop the pointer-down\n // from bubbling to an ancestor widget host (e.g. a container widget hosting a\n // nested board / Tabs). Otherwise the ancestor's `useMove` would start a\n // second drag from the same press and the whole parent widget would move too.\n // Non-draggable widgets let the event bubble so their container stays grabbable\n // through their content.\n const stopBubbleProps = isDraggable\n ? {\n onPointerDown: (e: React.PointerEvent) => e.stopPropagation(),\n onMouseDown: (e: React.MouseEvent) => e.stopPropagation(),\n onTouchStart: (e: React.TouchEvent) => e.stopPropagation(),\n }\n : {};\n\n // Gate a pointer drag by `dragHandle` / `dragCancel` selectors. Returns true\n // when the press must NOT start a drag (outside a `dragHandle`, or matching\n // `dragCancel`).\n const shouldGateDrag = (target: EventTarget | null) => {\n if (!(target instanceof Element)) return false;\n if (dragHandle && !target.closest(dragHandle)) return true;\n return !!(dragCancel && target.closest(dragCancel));\n };\n\n // The gate wraps `useMove`'s own pointer-down handlers rather than a separate\n // capture-phase listener. When a press is gated we simply do not forward it to\n // `useMove`, so the drag never begins. This is deliberate: `useMove`'s\n // pointer-down handler calls both `stopPropagation()` and `preventDefault()`.\n // Calling it (or pre-empting it with a capture-phase `stopPropagation()`)\n // would break the very controls `dragCancel` is meant to protect - a\n // `preventDefault()` on pointer-down cancels a native `<input>`'s focus, and a\n // capture-phase `stopPropagation()` swallows a `<button>`'s own press events.\n // Skipping `useMove` entirely leaves the target's default behavior and its own\n // handlers fully intact. Keyboard moves go through `onKeyDown` and are never\n // gated.\n const gatedMoveProps =\n isDraggable && (dragHandle || dragCancel)\n ? {\n ...moveProps,\n ...(moveProps.onPointerDown && {\n onPointerDown: (e: React.PointerEvent) => {\n if (shouldGateDrag(e.target)) return;\n moveProps.onPointerDown!(e);\n },\n }),\n ...(moveProps.onMouseDown && {\n onMouseDown: (e: React.MouseEvent) => {\n if (shouldGateDrag(e.target)) return;\n moveProps.onMouseDown!(e);\n },\n }),\n ...(moveProps.onTouchStart && {\n onTouchStart: (e: React.TouchEvent) => {\n if (shouldGateDrag(e.target)) return;\n moveProps.onTouchStart!(e);\n },\n }),\n }\n : moveProps;\n\n const handleResize = (\n axis: ResizeHandleAxis,\n phase: ResizePhase,\n dx: number,\n dy: number,\n ) => {\n if (phase === 'start') setIsResizing(true);\n else if (phase === 'end') setIsResizing(false);\n onResize(item.i, axis, phase, dx, dy);\n };\n\n const mods = {\n drag: isActiveDrag,\n draggable: isDraggable && !isActiveDrag,\n static: !!item.static,\n resizing: isResizing,\n };\n\n const content = (\n <BoardHostContext.Provider value={hostValue}>\n {registration?.content}\n {isResizable && !item.static ? (\n <>\n {resizeHandles.map((axis) => (\n <ResizeHandle key={axis} axis={axis} onResize={handleResize} />\n ))}\n {resizeHandles.filter(isCornerAxis).map((axis) => (\n <GripElement\n key={`grip-${axis}`}\n data-axis={axis}\n mods={{ revealed: gripsRevealed }}\n aria-hidden=\"true\"\n />\n ))}\n </>\n ) : null}\n </BoardHostContext.Provider>\n );\n\n const pos = calcGridItemPosition(\n positionParams,\n item.x,\n item.y,\n item.w,\n item.h,\n );\n\n // While dragging with a pointer, the widget's visual floats in the shared\n // overlay so it is never clipped by an ancestor's `overflow: hidden`. The\n // gesture-owning element (the one carrying `moveProps`) must NOT be the node\n // that moves into the overlay: React Aria's `useMove` binds its pointer\n // move/end listeners relative to the node that received `onPointerDown`, and\n // relocating that node into the portal tears it down and mounts a fresh one\n // (inside a `pointerEvents: 'none'` layer), which can drop the in-flight\n // gesture. Instead we keep a stable, always-mounted in-grid host that owns the\n // gesture for its whole lifetime, and portal a separate, non-interactive\n // visual clone into the overlay.\n const overlayNode = registry.overlayRef.current;\n const floatInOverlay = useOverlay && !!overlayNode && !!dragState;\n\n const hostStyle: CSSProperties = {\n transform: `translate(${pos.left}px, ${pos.top}px)`,\n width: `${pos.width}px`,\n height: `${pos.height}px`,\n // Kept mounted but hidden while its clone floats, so the gesture stays live\n // on this node (the pointer listeners never get torn down).\n ...(floatInOverlay ? { opacity: 0, pointerEvents: 'none' } : null),\n };\n\n // The floating clone carries the \"drag\" affordance (raised shadow/z-index);\n // keep the hidden host flat. Keyboard drags (which never float) still\n // highlight the in-grid host, so only suppress `drag` when floating.\n const hostMods = { ...mods, drag: isActiveDrag && !floatInOverlay };\n\n // The host is always rendered first, with a stable element shape, so React\n // reuses the same DOM node across the drag transition (never remounts it).\n const host = (\n <WidgetElement\n ref={hostRef}\n // Marks this element as a board widget host so the registry can find the\n // container widget a nested board lives in (used to keep a drag anchored to\n // a nested board while the anchor is still over its host - e.g. the Tabs\n // header above a nested board - instead of reflowing the ancestor board).\n data-board-widget-host=\"\"\n {...mergeProps(\n gatedMoveProps,\n stopBubbleProps,\n hoverProps,\n focusWithinProps,\n a11yProps,\n { style: hostStyle },\n )}\n qa={registration?.qa}\n mods={hostMods}\n styles={registration?.styles as Styles}\n >\n {floatInOverlay ? null : content}\n </WidgetElement>\n );\n\n const overlayClone = floatInOverlay\n ? createPortal(\n <WidgetElement\n style={{\n position: 'absolute',\n left: `${dragState!.rect.left}px`,\n top: `${dragState!.rect.top}px`,\n width: `${dragState!.rect.width}px`,\n height: `${dragState!.rect.height}px`,\n pointerEvents: 'none',\n }}\n mods={{ ...mods, drag: true }}\n styles={registration?.styles as Styles}\n aria-hidden=\"true\"\n >\n {content}\n </WidgetElement>,\n overlayNode!,\n )\n : null;\n\n return (\n <>\n {host}\n {overlayClone}\n </>\n );\n}\n"],"mappings":"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"}