@cube-dev/ui-kit 0.143.0 → 0.144.0

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 (480) hide show
  1. package/README.md +1 -1
  2. package/dist/CHANGELOG.md +12 -0
  3. package/dist/README.md +1 -1
  4. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  5. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  6. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  7. package/dist/_internal/hooks/use-event.js +1 -1
  8. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  9. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  10. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  11. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  12. package/dist/_internal/hooks/use-warn.js +1 -1
  13. package/dist/components/Block.js +1 -1
  14. package/dist/components/CollectionItem.js +1 -1
  15. package/dist/components/GlobalStyles.js +1 -1
  16. package/dist/components/GridProvider.js +1 -1
  17. package/dist/components/HiddenInput.js +1 -1
  18. package/dist/components/Root.js +1 -1
  19. package/dist/components/actions/Action/Action.js +1 -1
  20. package/dist/components/actions/Banner/Banner.js +1 -1
  21. package/dist/components/actions/Button/Button.js +1 -1
  22. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  23. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  24. package/dist/components/actions/ButtonSplit/context.js +1 -1
  25. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  26. package/dist/components/actions/CommandMenu/styled.js +1 -1
  27. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  28. package/dist/components/actions/ItemActionContext.js +1 -1
  29. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  30. package/dist/components/actions/Link/Link.js +1 -1
  31. package/dist/components/actions/Menu/Menu.js +1 -1
  32. package/dist/components/actions/Menu/MenuItem.js +1 -1
  33. package/dist/components/actions/Menu/MenuSection.js +1 -1
  34. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  35. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  36. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  37. package/dist/components/actions/Menu/context.js +1 -1
  38. package/dist/components/actions/Menu/styled.js +1 -1
  39. package/dist/components/actions/index.js +1 -1
  40. package/dist/components/actions/use-action.js +1 -1
  41. package/dist/components/actions/use-anchored-menu.js +1 -1
  42. package/dist/components/actions/use-context-menu.js +1 -1
  43. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  44. package/dist/components/content/Alert/Alert.js +1 -1
  45. package/dist/components/content/Alert/use-alert.js +1 -1
  46. package/dist/components/content/Avatar/Avatar.js +1 -1
  47. package/dist/components/content/Badge/Badge.js +1 -1
  48. package/dist/components/content/Card/Card.js +1 -1
  49. package/dist/components/content/Content.js +1 -1
  50. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  51. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  52. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  53. package/dist/components/content/Divider.js +1 -1
  54. package/dist/components/content/Footer.js +1 -1
  55. package/dist/components/content/Header.js +1 -1
  56. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  57. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  58. package/dist/components/content/Item/Item.js +1 -1
  59. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  60. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  61. package/dist/components/content/Layout/GridLayout.js +1 -1
  62. package/dist/components/content/Layout/Layout.js +1 -1
  63. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  64. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  65. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  66. package/dist/components/content/Layout/LayoutContent.js +1 -1
  67. package/dist/components/content/Layout/LayoutContext.js +1 -1
  68. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  69. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  70. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  71. package/dist/components/content/Layout/LayoutHeader.js +9 -8
  72. package/dist/components/content/Layout/LayoutHeader.js.map +1 -1
  73. package/dist/components/content/Layout/LayoutPane.js +1 -1
  74. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  75. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  76. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  77. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  78. package/dist/components/content/Layout/index.js +1 -1
  79. package/dist/components/content/Layout/utils.js +1 -1
  80. package/dist/components/content/Paragraph.js +1 -1
  81. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  82. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  83. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  84. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  85. package/dist/components/content/Result/Result.js +1 -1
  86. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  87. package/dist/components/content/Tag/Tag.js +1 -1
  88. package/dist/components/content/Text.js +1 -1
  89. package/dist/components/content/TextItem/TextItem.js +1 -1
  90. package/dist/components/content/Title.js +1 -1
  91. package/dist/components/content/Tree/Tree.js +1 -1
  92. package/dist/components/content/Tree/TreeNode.js +1 -1
  93. package/dist/components/content/Tree/styled.js +1 -1
  94. package/dist/components/content/Tree/tree-index.js +1 -1
  95. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  96. package/dist/components/content/Tree/use-load-data.js +1 -1
  97. package/dist/components/content/highlightText.js +1 -1
  98. package/dist/components/content/use-auto-tooltip.js +1 -1
  99. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  100. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  101. package/dist/components/fields/Checkbox/context.js +1 -1
  102. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  103. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  104. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  105. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  106. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  107. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  108. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  109. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  110. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  111. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  112. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  113. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  114. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  115. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  116. package/dist/components/fields/DatePicker/intl.js +1 -1
  117. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  118. package/dist/components/fields/DatePicker/props.js +1 -1
  119. package/dist/components/fields/DatePicker/utils.js +1 -1
  120. package/dist/components/fields/FileInput/FileInput.js +1 -1
  121. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  122. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  123. package/dist/components/fields/Input/Input.js +1 -1
  124. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  125. package/dist/components/fields/ListBox/ListBox.js +1 -1
  126. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  127. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  128. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  129. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  130. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  131. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  132. package/dist/components/fields/Picker/Picker.js +1 -1
  133. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  134. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  135. package/dist/components/fields/RadioGroup/context.js +1 -1
  136. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  137. package/dist/components/fields/Select/Select.js +1 -1
  138. package/dist/components/fields/Slider/Gradation.js +1 -1
  139. package/dist/components/fields/Slider/HueSlider.js +1 -1
  140. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  141. package/dist/components/fields/Slider/Slider.js +1 -1
  142. package/dist/components/fields/Slider/SliderBase.js +1 -1
  143. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  144. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  145. package/dist/components/fields/Slider/elements.js +1 -1
  146. package/dist/components/fields/Slider/index.js +1 -1
  147. package/dist/components/fields/Switch/Switch.js +1 -1
  148. package/dist/components/fields/TextArea/TextArea.js +1 -1
  149. package/dist/components/fields/TextInput/TextInput.js +1 -1
  150. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  151. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  152. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  153. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  154. package/dist/components/form/Form/Field.js +1 -1
  155. package/dist/components/form/Form/Form.js +1 -1
  156. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  157. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  158. package/dist/components/form/Form/SubmitError.js +1 -1
  159. package/dist/components/form/Form/index.js +1 -1
  160. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  161. package/dist/components/form/Form/use-field/use-field.js +1 -1
  162. package/dist/components/form/Form/use-form.js +1 -1
  163. package/dist/components/form/Form/validation.js +1 -1
  164. package/dist/components/form/Label.js +1 -1
  165. package/dist/components/form/wrapper.js +1 -1
  166. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  167. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  168. package/dist/components/layout/Board/Board.d.ts +110 -0
  169. package/dist/components/layout/Board/Board.js +455 -0
  170. package/dist/components/layout/Board/Board.js.map +1 -0
  171. package/dist/components/layout/Board/BoardProvider.d.ts +28 -0
  172. package/dist/components/layout/Board/BoardProvider.js +47 -0
  173. package/dist/components/layout/Board/BoardProvider.js.map +1 -0
  174. package/dist/components/layout/Board/BoardResponsive.d.ts +52 -0
  175. package/dist/components/layout/Board/BoardResponsive.js +101 -0
  176. package/dist/components/layout/Board/BoardResponsive.js.map +1 -0
  177. package/dist/components/layout/Board/Widget.d.ts +49 -0
  178. package/dist/components/layout/Board/Widget.js +42 -0
  179. package/dist/components/layout/Board/Widget.js.map +1 -0
  180. package/dist/components/layout/Board/WidgetHost.js +423 -0
  181. package/dist/components/layout/Board/WidgetHost.js.map +1 -0
  182. package/dist/components/layout/Board/board-context.d.ts +16 -0
  183. package/dist/components/layout/Board/board-context.js +32 -0
  184. package/dist/components/layout/Board/board-context.js.map +1 -0
  185. package/dist/components/layout/Board/board-store.d.ts +3 -0
  186. package/dist/components/layout/Board/board-store.js +49 -0
  187. package/dist/components/layout/Board/board-store.js.map +1 -0
  188. package/dist/components/layout/Board/grid-core/calculate.js +90 -0
  189. package/dist/components/layout/Board/grid-core/calculate.js.map +1 -0
  190. package/dist/components/layout/Board/grid-core/collision.js +35 -0
  191. package/dist/components/layout/Board/grid-core/collision.js.map +1 -0
  192. package/dist/components/layout/Board/grid-core/compactors.d.ts +23 -0
  193. package/dist/components/layout/Board/grid-core/compactors.js +166 -0
  194. package/dist/components/layout/Board/grid-core/compactors.js.map +1 -0
  195. package/dist/components/layout/Board/grid-core/constraints.d.ts +35 -0
  196. package/dist/components/layout/Board/grid-core/constraints.js +155 -0
  197. package/dist/components/layout/Board/grid-core/constraints.js.map +1 -0
  198. package/dist/components/layout/Board/grid-core/layout.js +176 -0
  199. package/dist/components/layout/Board/grid-core/layout.js.map +1 -0
  200. package/dist/components/layout/Board/grid-core/sort.js +37 -0
  201. package/dist/components/layout/Board/grid-core/sort.js.map +1 -0
  202. package/dist/components/layout/Board/grid-core/types.d.ts +168 -0
  203. package/dist/components/layout/Board/index.d.ts +21 -0
  204. package/dist/components/layout/Board/index.js +18 -0
  205. package/dist/components/layout/Board/index.js.map +1 -0
  206. package/dist/components/layout/Board/responsive-utils.d.ts +13 -0
  207. package/dist/components/layout/Board/responsive-utils.js +55 -0
  208. package/dist/components/layout/Board/responsive-utils.js.map +1 -0
  209. package/dist/components/layout/Board/use-board-layout.js +52 -0
  210. package/dist/components/layout/Board/use-board-layout.js.map +1 -0
  211. package/dist/components/layout/Board/use-board-registry.js +372 -0
  212. package/dist/components/layout/Board/use-board-registry.js.map +1 -0
  213. package/dist/components/layout/Flex.js +1 -1
  214. package/dist/components/layout/Flow.js +1 -1
  215. package/dist/components/layout/Grid.js +1 -1
  216. package/dist/components/layout/Panel.js +1 -1
  217. package/dist/components/layout/Prefix.js +1 -1
  218. package/dist/components/layout/ResizablePanel.js +1 -1
  219. package/dist/components/layout/Space.js +1 -1
  220. package/dist/components/layout/Suffix.js +1 -1
  221. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  222. package/dist/components/navigation/Tabs/TabButton.js +36 -4
  223. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  224. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  225. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  226. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  227. package/dist/components/navigation/Tabs/Tabs.js +6 -3
  228. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  229. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  230. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  231. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  232. package/dist/components/navigation/Tabs/styled.js +3 -2
  233. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  234. package/dist/components/navigation/Tabs/types.js +1 -1
  235. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  236. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  237. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  238. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  239. package/dist/components/other/Calendar/Calendar.js +1 -1
  240. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  241. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  242. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  243. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  244. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  245. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  246. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  247. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  248. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  249. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  250. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  251. package/dist/components/overlays/Dialog/context.js +1 -1
  252. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  253. package/dist/components/overlays/Modal/Modal.js +1 -1
  254. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  255. package/dist/components/overlays/Modal/Overlay.js +1 -1
  256. package/dist/components/overlays/Modal/Popover.js +1 -1
  257. package/dist/components/overlays/Modal/Tray.js +1 -1
  258. package/dist/components/overlays/Modal/Underlay.js +1 -1
  259. package/dist/components/overlays/Notifications/Notification.js +1 -1
  260. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  261. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  262. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  263. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  264. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  265. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  266. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  267. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  268. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  269. package/dist/components/overlays/Notifications/index.js +1 -1
  270. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  271. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  272. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  273. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  274. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  275. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  276. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  277. package/dist/components/overlays/Toast/index.js +1 -1
  278. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  279. package/dist/components/overlays/Toast/useToast.js +1 -1
  280. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  281. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  282. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  283. package/dist/components/overlays/Tooltip/context.js +1 -1
  284. package/dist/components/portal/Portal.js +1 -1
  285. package/dist/components/portal/PortalProvider.js +1 -1
  286. package/dist/components/portal/usePortal.js +1 -1
  287. package/dist/components/shared/DraggableCollection.js +1 -1
  288. package/dist/components/shared/InvalidIcon.js +1 -1
  289. package/dist/components/shared/ValidIcon.js +1 -1
  290. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  291. package/dist/components/status/Spin/Cube.js +1 -1
  292. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  293. package/dist/components/status/Spin/Spin.js +1 -1
  294. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  295. package/dist/data/item-themes.js +1 -1
  296. package/dist/data/themes.js +1 -1
  297. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  298. package/dist/icons/AdjustmentsIcon.js +1 -1
  299. package/dist/icons/AiIcon.js +1 -1
  300. package/dist/icons/AreaChartIcon.js +1 -1
  301. package/dist/icons/BackwardIcon.js +1 -1
  302. package/dist/icons/BarChartIcon.js +1 -1
  303. package/dist/icons/BellFilledIcon.js +1 -1
  304. package/dist/icons/BellIcon.js +1 -1
  305. package/dist/icons/BooleanIcon.js +1 -1
  306. package/dist/icons/CalendarEditIcon.js +1 -1
  307. package/dist/icons/CalendarIcon.js +1 -1
  308. package/dist/icons/CaretDownIcon.js +1 -1
  309. package/dist/icons/CaretUpIcon.js +1 -1
  310. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  311. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  312. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  313. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  314. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  315. package/dist/icons/ChartBarLineIcon.js +1 -1
  316. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  317. package/dist/icons/ChartBarStackedIcon.js +1 -1
  318. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  319. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  320. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  321. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  322. package/dist/icons/ChartBubbleIcon.js +1 -1
  323. package/dist/icons/ChartDonut2Icon.js +1 -1
  324. package/dist/icons/ChartFunnelIcon.js +1 -1
  325. package/dist/icons/ChartHeatmapIcon.js +1 -1
  326. package/dist/icons/ChartKPIIcon.js +1 -1
  327. package/dist/icons/ChartPie2Icon.js +1 -1
  328. package/dist/icons/ChartScatterIcon.js +1 -1
  329. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  330. package/dist/icons/CheckCircleIcon.js +1 -1
  331. package/dist/icons/CheckIcon.js +1 -1
  332. package/dist/icons/CircleFilledIcon.js +1 -1
  333. package/dist/icons/ClearIcon.js +1 -1
  334. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  335. package/dist/icons/CloseCircleIcon.js +1 -1
  336. package/dist/icons/CloseIcon.js +1 -1
  337. package/dist/icons/CodeIcon.js +1 -1
  338. package/dist/icons/ColumnTotalIcon.js +1 -1
  339. package/dist/icons/CopyIcon.js +1 -1
  340. package/dist/icons/CountIcon.js +1 -1
  341. package/dist/icons/CubeIcon.js +1 -1
  342. package/dist/icons/CubePauseIcon.js +1 -1
  343. package/dist/icons/CubePlayIcon.js +1 -1
  344. package/dist/icons/CurrencyDollarIcon.js +1 -1
  345. package/dist/icons/DangerIcon.js +1 -1
  346. package/dist/icons/DashboardIcon.js +1 -1
  347. package/dist/icons/DatabaseIcon.js +1 -1
  348. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  349. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  350. package/dist/icons/DirectionIcon.js +1 -1
  351. package/dist/icons/DonutIcon.js +1 -1
  352. package/dist/icons/DownIcon.js +1 -1
  353. package/dist/icons/EditIcon.js +1 -1
  354. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  355. package/dist/icons/ExclamationCircleIcon.js +1 -1
  356. package/dist/icons/ExclamationIcon.js +1 -1
  357. package/dist/icons/EyeIcon.js +1 -1
  358. package/dist/icons/EyeInvisibleIcon.js +1 -1
  359. package/dist/icons/FilterIcon.js +1 -1
  360. package/dist/icons/FolderFilledIcon.js +1 -1
  361. package/dist/icons/FolderIcon.js +1 -1
  362. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  363. package/dist/icons/FolderOpenIcon.js +1 -1
  364. package/dist/icons/ForwardIcon.js +1 -1
  365. package/dist/icons/GripVerticalIcon.js +1 -1
  366. package/dist/icons/HierarchyIcon.js +1 -1
  367. package/dist/icons/HierarchyOpenIcon.js +1 -1
  368. package/dist/icons/Icon.js +1 -1
  369. package/dist/icons/InfoCircleIcon.js +1 -1
  370. package/dist/icons/InfoIcon.js +1 -1
  371. package/dist/icons/KeyIcon.js +1 -1
  372. package/dist/icons/LeftIcon.js +1 -1
  373. package/dist/icons/LineChartIcon.js +1 -1
  374. package/dist/icons/LoadingIcon.js +1 -1
  375. package/dist/icons/LockFilledIcon.js +1 -1
  376. package/dist/icons/LockIcon.js +1 -1
  377. package/dist/icons/MoreIcon.js +1 -1
  378. package/dist/icons/NotAllowedIcon.js +1 -1
  379. package/dist/icons/Number123Icon.js +1 -1
  380. package/dist/icons/NumberIcon.js +1 -1
  381. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  382. package/dist/icons/PauseCircleIcon.js +1 -1
  383. package/dist/icons/PauseIcon.js +1 -1
  384. package/dist/icons/PercentageIcon.js +1 -1
  385. package/dist/icons/PieChartIcon.js +1 -1
  386. package/dist/icons/PlayCircleIcon.js +1 -1
  387. package/dist/icons/PlayIcon.js +1 -1
  388. package/dist/icons/PlusIcon.js +1 -1
  389. package/dist/icons/ProgressBarIcon.js +1 -1
  390. package/dist/icons/ReloadIcon.js +1 -1
  391. package/dist/icons/ReportIcon.js +1 -1
  392. package/dist/icons/ReturnIcon.js +1 -1
  393. package/dist/icons/RightIcon.js +1 -1
  394. package/dist/icons/RowTotalsIcon.js +1 -1
  395. package/dist/icons/SchemeIcon.js +1 -1
  396. package/dist/icons/SearchIcon.js +1 -1
  397. package/dist/icons/SemanticQueryIcon.js +1 -1
  398. package/dist/icons/SettingsIcon.js +1 -1
  399. package/dist/icons/ShieldFilledIcon.js +1 -1
  400. package/dist/icons/ShieldIcon.js +1 -1
  401. package/dist/icons/SlashIcon.js +1 -1
  402. package/dist/icons/SparklesIcon.js +1 -1
  403. package/dist/icons/SqlIcon.js +1 -1
  404. package/dist/icons/StatsIcon.js +1 -1
  405. package/dist/icons/StopIcon.js +1 -1
  406. package/dist/icons/StringIcon.js +1 -1
  407. package/dist/icons/SubtotalsIcon.js +1 -1
  408. package/dist/icons/SwitchIcon.js +1 -1
  409. package/dist/icons/TableIcon.js +1 -1
  410. package/dist/icons/ThumbsDownIcon.js +1 -1
  411. package/dist/icons/ThumbsUpIcon.js +1 -1
  412. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  413. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  414. package/dist/icons/ThunderboltIcon.js +1 -1
  415. package/dist/icons/TimeIcon.js +1 -1
  416. package/dist/icons/TrashIcon.js +1 -1
  417. package/dist/icons/UnlockIcon.js +1 -1
  418. package/dist/icons/UpIcon.js +1 -1
  419. package/dist/icons/UserGroupIcon.js +1 -1
  420. package/dist/icons/UserIcon.js +1 -1
  421. package/dist/icons/UserLockIcon.js +1 -1
  422. package/dist/icons/ViewIcon.js +1 -1
  423. package/dist/icons/WarningFilledIcon.js +1 -1
  424. package/dist/icons/WarningIcon.js +1 -1
  425. package/dist/icons/wrap-icon.js +1 -1
  426. package/dist/index.d.ts +12 -2
  427. package/dist/index.js +8 -2
  428. package/dist/index.js.map +1 -1
  429. package/dist/provider.js +1 -1
  430. package/dist/providers/TrackingProvider.js +1 -1
  431. package/dist/providers/navigationAdapter.default.js +1 -1
  432. package/dist/tokens/base.js +1 -1
  433. package/dist/tokens/colors.js +1 -1
  434. package/dist/tokens/index.js +1 -1
  435. package/dist/tokens/layout.js +1 -1
  436. package/dist/tokens/palette.js +1 -1
  437. package/dist/tokens/shadows.js +1 -1
  438. package/dist/tokens/sizes.js +1 -1
  439. package/dist/tokens/spacing.js +1 -1
  440. package/dist/tokens/typography.js +1 -1
  441. package/dist/utils/ResizeSensor.js +1 -1
  442. package/dist/utils/is-dev-env.js +1 -1
  443. package/dist/utils/modules.js +1 -1
  444. package/dist/utils/promise.js +1 -1
  445. package/dist/utils/raf.js +1 -1
  446. package/dist/utils/random.js +1 -1
  447. package/dist/utils/range.js +1 -1
  448. package/dist/utils/react/RenderCache.js +1 -1
  449. package/dist/utils/react/Slots.js +1 -1
  450. package/dist/utils/react/chain.js +1 -1
  451. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  452. package/dist/utils/react/index.js +1 -1
  453. package/dist/utils/react/interactions.js +1 -1
  454. package/dist/utils/react/isTextOnly.js +1 -1
  455. package/dist/utils/react/mapProps.js +1 -1
  456. package/dist/utils/react/mergeProps.js +1 -1
  457. package/dist/utils/react/nullableValue.js +1 -1
  458. package/dist/utils/react/resolveIcon.js +1 -1
  459. package/dist/utils/react/sharedStore.js +1 -1
  460. package/dist/utils/react/useCombinedRefs.js +1 -1
  461. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  462. package/dist/utils/react/useEventBus.js +1 -1
  463. package/dist/utils/react/useId.js +1 -1
  464. package/dist/utils/react/useIsDarwin.js +1 -1
  465. package/dist/utils/react/useKeySymbols.js +1 -1
  466. package/dist/utils/react/useLayoutEffect.js +1 -1
  467. package/dist/utils/react/useLocalStorage.js +1 -1
  468. package/dist/utils/react/useMergeStyles.js +1 -1
  469. package/dist/utils/react/usePopoverSync.js +1 -1
  470. package/dist/utils/react/useQaProps.js +1 -1
  471. package/dist/utils/react/useViewportSize.js +1 -1
  472. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  473. package/dist/utils/selection.js +1 -1
  474. package/dist/utils/styles.js +1 -1
  475. package/dist/utils/tree.js +1 -1
  476. package/dist/utils/warnings.js +1 -1
  477. package/dist/version.js +2 -2
  478. package/docs/components/layout/Board.md +224 -0
  479. package/docs/components/navigation/Tabs.md +18 -2
  480. package/package.json +3 -3
@@ -0,0 +1,90 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.0 | Cube Dev Team */
2
+ //#region src/components/layout/Board/grid-core/calculate.ts
3
+ /** Calculate the width of a single grid column in pixels. */
4
+ function calcGridColWidth(positionParams) {
5
+ const { margin, containerPadding, containerWidth, cols } = positionParams;
6
+ return (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols;
7
+ }
8
+ /**
9
+ * Calculate the pixel size for a grid unit dimension (width or height).
10
+ */
11
+ function calcGridItemWHPx(gridUnits, colOrRowSize, marginPx) {
12
+ if (!Number.isFinite(gridUnits)) return gridUnits;
13
+ return Math.round(colOrRowSize * gridUnits + Math.max(0, gridUnits - 1) * marginPx);
14
+ }
15
+ /**
16
+ * Calculate pixel position for a grid item. Returns left, top, width, height.
17
+ */
18
+ function calcGridItemPosition(positionParams, x, y, w, h, dragPosition, resizePosition) {
19
+ const { margin, containerPadding, rowHeight } = positionParams;
20
+ const colWidth = calcGridColWidth(positionParams);
21
+ let width;
22
+ let height;
23
+ let top;
24
+ let left;
25
+ if (resizePosition) {
26
+ width = Math.round(resizePosition.width);
27
+ height = Math.round(resizePosition.height);
28
+ } else {
29
+ width = calcGridItemWHPx(w, colWidth, margin[0]);
30
+ height = calcGridItemWHPx(h, rowHeight, margin[1]);
31
+ }
32
+ if (dragPosition) {
33
+ top = Math.round(dragPosition.top);
34
+ left = Math.round(dragPosition.left);
35
+ } else if (resizePosition) {
36
+ top = Math.round(resizePosition.top);
37
+ left = Math.round(resizePosition.left);
38
+ } else {
39
+ top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]);
40
+ left = Math.round((colWidth + margin[0]) * x + containerPadding[0]);
41
+ }
42
+ if (!dragPosition && !resizePosition) {
43
+ if (Number.isFinite(w)) {
44
+ const actualMarginRight = Math.round((colWidth + margin[0]) * (x + w) + containerPadding[0]) - left - width;
45
+ if (actualMarginRight !== margin[0]) width += actualMarginRight - margin[0];
46
+ }
47
+ if (Number.isFinite(h)) {
48
+ const actualMarginBottom = Math.round((rowHeight + margin[1]) * (y + h) + containerPadding[1]) - top - height;
49
+ if (actualMarginBottom !== margin[1]) height += actualMarginBottom - margin[1];
50
+ }
51
+ }
52
+ return {
53
+ top,
54
+ left,
55
+ width,
56
+ height
57
+ };
58
+ }
59
+ /** Translate pixel coordinates to grid units without clamping. */
60
+ function calcXYRaw(positionParams, top, left) {
61
+ const { margin, containerPadding, rowHeight } = positionParams;
62
+ const colWidth = calcGridColWidth(positionParams);
63
+ return {
64
+ x: Math.round((left - containerPadding[0]) / (colWidth + margin[0])),
65
+ y: Math.round((top - containerPadding[1]) / (rowHeight + margin[1]))
66
+ };
67
+ }
68
+ /** Calculate grid units from pixel dimensions (clamped by handle direction). */
69
+ function calcWH(positionParams, width, height, x, y, handle) {
70
+ const { margin, maxRows, cols, rowHeight } = positionParams;
71
+ const colWidth = calcGridColWidth(positionParams);
72
+ const w = Math.round((width + margin[0]) / (colWidth + margin[0]));
73
+ const h = Math.round((height + margin[1]) / (rowHeight + margin[1]));
74
+ let _w = clamp(w, 0, cols - x);
75
+ let _h = clamp(h, 0, maxRows - y);
76
+ if (handle === "sw" || handle === "w" || handle === "nw") _w = clamp(w, 0, cols);
77
+ if (handle === "nw" || handle === "n" || handle === "ne") _h = clamp(h, 0, maxRows);
78
+ return {
79
+ w: _w,
80
+ h: _h
81
+ };
82
+ }
83
+ /** Clamp a number between bounds. */
84
+ function clamp(num, lowerBound, upperBound) {
85
+ return Math.max(Math.min(num, upperBound), lowerBound);
86
+ }
87
+
88
+ //#endregion
89
+ export { calcGridColWidth, calcGridItemPosition, calcWH, calcXYRaw, clamp };
90
+ //# sourceMappingURL=calculate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculate.js","names":[],"sources":["../../../../../src/components/layout/Board/grid-core/calculate.ts"],"sourcesContent":["/**\n * Grid calculation utilities.\n *\n * Vendored from react-grid-layout v2 (`src/core/calculate.ts`).\n * See ./NOTICE.md for attribution and license.\n *\n * These functions convert between grid units and pixel positions.\n */\n\nimport type { Position, ResizeHandleAxis } from './types';\n\n/** Parameters needed for position calculations. */\nexport interface PositionParams {\n readonly margin: readonly [number, number];\n readonly containerPadding: readonly [number, number];\n readonly containerWidth: number;\n readonly cols: number;\n readonly rowHeight: number;\n readonly maxRows: number;\n}\n\n// ============================================================================\n// Grid Column/Row Calculations\n// ============================================================================\n\n/** Calculate the width of a single grid column in pixels. */\nexport function calcGridColWidth(positionParams: PositionParams): number {\n const { margin, containerPadding, containerWidth, cols } = positionParams;\n return (\n (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols\n );\n}\n\n/**\n * Calculate the pixel size for a grid unit dimension (width or height).\n */\nexport function calcGridItemWHPx(\n gridUnits: number,\n colOrRowSize: number,\n marginPx: number,\n): number {\n // 0 * Infinity === NaN, which causes problems with resize constraints\n if (!Number.isFinite(gridUnits)) return gridUnits;\n return Math.round(\n colOrRowSize * gridUnits + Math.max(0, gridUnits - 1) * marginPx,\n );\n}\n\n// ============================================================================\n// Position Calculations\n// ============================================================================\n\n/**\n * Calculate pixel position for a grid item. Returns left, top, width, height.\n */\nexport function calcGridItemPosition(\n positionParams: PositionParams,\n x: number,\n y: number,\n w: number,\n h: number,\n dragPosition?: { top: number; left: number } | null,\n resizePosition?: {\n top: number;\n left: number;\n height: number;\n width: number;\n } | null,\n): Position {\n const { margin, containerPadding, rowHeight } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n\n let width: number;\n let height: number;\n let top: number;\n let left: number;\n\n // If resizing, use the exact width and height from resize callbacks\n if (resizePosition) {\n width = Math.round(resizePosition.width);\n height = Math.round(resizePosition.height);\n } else {\n width = calcGridItemWHPx(w, colWidth, margin[0]);\n height = calcGridItemWHPx(h, rowHeight, margin[1]);\n }\n\n // If dragging, use the exact left/top from drag callbacks\n if (dragPosition) {\n top = Math.round(dragPosition.top);\n left = Math.round(dragPosition.left);\n } else if (resizePosition) {\n top = Math.round(resizePosition.top);\n left = Math.round(resizePosition.left);\n } else {\n top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]);\n left = Math.round((colWidth + margin[0]) * x + containerPadding[0]);\n }\n\n // When not dragging or resizing, fix margin inconsistencies caused by\n // rounding by comparing where the next sibling would start.\n if (!dragPosition && !resizePosition) {\n if (Number.isFinite(w)) {\n const siblingLeft = Math.round(\n (colWidth + margin[0]) * (x + w) + containerPadding[0],\n );\n const actualMarginRight = siblingLeft - left - width;\n if (actualMarginRight !== margin[0]) {\n width += actualMarginRight - margin[0];\n }\n }\n\n if (Number.isFinite(h)) {\n const siblingTop = Math.round(\n (rowHeight + margin[1]) * (y + h) + containerPadding[1],\n );\n const actualMarginBottom = siblingTop - top - height;\n if (actualMarginBottom !== margin[1]) {\n height += actualMarginBottom - margin[1];\n }\n }\n }\n\n return { top, left, width, height };\n}\n\n/** Translate pixel coordinates to grid units (clamped). */\nexport function calcXY(\n positionParams: PositionParams,\n top: number,\n left: number,\n w: number,\n h: number,\n): { x: number; y: number } {\n const { margin, containerPadding, cols, rowHeight, maxRows } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n\n let x = Math.round((left - containerPadding[0]) / (colWidth + margin[0]));\n let y = Math.round((top - containerPadding[1]) / (rowHeight + margin[1]));\n\n x = clamp(x, 0, cols - w);\n y = clamp(y, 0, maxRows - h);\n\n return { x, y };\n}\n\n/** Translate pixel coordinates to grid units without clamping. */\nexport function calcXYRaw(\n positionParams: PositionParams,\n top: number,\n left: number,\n): { x: number; y: number } {\n const { margin, containerPadding, rowHeight } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n\n const x = Math.round((left - containerPadding[0]) / (colWidth + margin[0]));\n const y = Math.round((top - containerPadding[1]) / (rowHeight + margin[1]));\n\n return { x, y };\n}\n\n/** Calculate grid units from pixel dimensions (clamped by handle direction). */\nexport function calcWH(\n positionParams: PositionParams,\n width: number,\n height: number,\n x: number,\n y: number,\n handle: ResizeHandleAxis,\n): { w: number; h: number } {\n const { margin, maxRows, cols, rowHeight } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n\n const w = Math.round((width + margin[0]) / (colWidth + margin[0]));\n const h = Math.round((height + margin[1]) / (rowHeight + margin[1]));\n\n let _w = clamp(w, 0, cols - x);\n let _h = clamp(h, 0, maxRows - y);\n\n // West handles can resize to full width\n if (handle === 'sw' || handle === 'w' || handle === 'nw') {\n _w = clamp(w, 0, cols);\n }\n\n // North handles can resize to full height\n if (handle === 'nw' || handle === 'n' || handle === 'ne') {\n _h = clamp(h, 0, maxRows);\n }\n\n return { w: _w, h: _h };\n}\n\n/** Calculate grid units from pixel dimensions without clamping (min 1). */\nexport function calcWHRaw(\n positionParams: PositionParams,\n width: number,\n height: number,\n): { w: number; h: number } {\n const { margin, rowHeight } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n\n const w = Math.max(\n 1,\n Math.round((width + margin[0]) / (colWidth + margin[0])),\n );\n const h = Math.max(\n 1,\n Math.round((height + margin[1]) / (rowHeight + margin[1])),\n );\n\n return { w, h };\n}\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\n/** Clamp a number between bounds. */\nexport function clamp(\n num: number,\n lowerBound: number,\n upperBound: number,\n): number {\n return Math.max(Math.min(num, upperBound), lowerBound);\n}\n"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.0 | Cube Dev Team */
2
+ //#region src/components/layout/Board/grid-core/collision.ts
3
+ /**
4
+ * Check if two layout items collide (overlap).
5
+ *
6
+ * Two items collide if their bounding boxes overlap and they are not the same
7
+ * item.
8
+ */
9
+ function collides(l1, l2) {
10
+ if (l1.i === l2.i) return false;
11
+ if (l1.x + l1.w <= l2.x) return false;
12
+ if (l1.x >= l2.x + l2.w) return false;
13
+ if (l1.y + l1.h <= l2.y) return false;
14
+ if (l1.y >= l2.y + l2.h) return false;
15
+ return true;
16
+ }
17
+ /**
18
+ * Find the first item in the layout that collides with the given item.
19
+ */
20
+ function getFirstCollision(layout, layoutItem) {
21
+ for (let i = 0; i < layout.length; i++) {
22
+ const item = layout[i];
23
+ if (item !== void 0 && collides(item, layoutItem)) return item;
24
+ }
25
+ }
26
+ /**
27
+ * Find all items in the layout that collide with the given item.
28
+ */
29
+ function getAllCollisions(layout, layoutItem) {
30
+ return layout.filter((l) => collides(l, layoutItem));
31
+ }
32
+
33
+ //#endregion
34
+ export { collides, getAllCollisions, getFirstCollision };
35
+ //# sourceMappingURL=collision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collision.js","names":[],"sources":["../../../../../src/components/layout/Board/grid-core/collision.ts"],"sourcesContent":["/**\n * Collision detection utilities for grid layouts.\n *\n * Vendored from react-grid-layout v2 (`src/core/collision.ts`).\n * See ./NOTICE.md for attribution and license.\n */\n\nimport type { Layout, LayoutItem } from './types';\n\n/**\n * Check if two layout items collide (overlap).\n *\n * Two items collide if their bounding boxes overlap and they are not the same\n * item.\n */\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\n // Same element - can't collide with itself\n if (l1.i === l2.i) return false;\n\n // Check if bounding boxes don't overlap (any gap means no collision)\n if (l1.x + l1.w <= l2.x) return false; // l1 is completely left of l2\n if (l1.x >= l2.x + l2.w) return false; // l1 is completely right of l2\n if (l1.y + l1.h <= l2.y) return false; // l1 is completely above l2\n if (l1.y >= l2.y + l2.h) return false; // l1 is completely below l2\n\n // Bounding boxes overlap\n return true;\n}\n\n/**\n * Find the first item in the layout that collides with the given item.\n */\nexport function getFirstCollision(\n layout: Layout,\n layoutItem: LayoutItem,\n): LayoutItem | undefined {\n for (let i = 0; i < layout.length; i++) {\n const item = layout[i];\n if (item !== undefined && collides(item, layoutItem)) {\n return item;\n }\n }\n return undefined;\n}\n\n/**\n * Find all items in the layout that collide with the given item.\n */\nexport function getAllCollisions(\n layout: Layout,\n layoutItem: LayoutItem,\n): LayoutItem[] {\n return layout.filter((l): l is LayoutItem => collides(l, layoutItem));\n}\n"],"mappings":";;;;;;;;AAeA,SAAgB,SAAS,IAAgB,IAAyB;AAEhE,KAAI,GAAG,MAAM,GAAG,EAAG,QAAO;AAG1B,KAAI,GAAG,IAAI,GAAG,KAAK,GAAG,EAAG,QAAO;AAChC,KAAI,GAAG,KAAK,GAAG,IAAI,GAAG,EAAG,QAAO;AAChC,KAAI,GAAG,IAAI,GAAG,KAAK,GAAG,EAAG,QAAO;AAChC,KAAI,GAAG,KAAK,GAAG,IAAI,GAAG,EAAG,QAAO;AAGhC,QAAO;;;;;AAMT,SAAgB,kBACd,QACA,YACwB;AACxB,MAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;EACtC,MAAM,OAAO,OAAO;AACpB,MAAI,SAAS,UAAa,SAAS,MAAM,WAAW,CAClD,QAAO;;;;;;AASb,SAAgB,iBACd,QACA,YACc;AACd,QAAO,OAAO,QAAQ,MAAuB,SAAS,GAAG,WAAW,CAAC"}
@@ -0,0 +1,23 @@
1
+
2
+ import { CompactType, Compactor } from "./types.js";
3
+
4
+ //#region src/components/layout/Board/grid-core/compactors.d.ts
5
+ /**
6
+ * Vertical compactor - moves items up to fill gaps. Default compaction mode.
7
+ */
8
+ declare const verticalCompactor: Compactor;
9
+ /**
10
+ * Horizontal compactor - moves items left to fill gaps.
11
+ */
12
+ declare const horizontalCompactor: Compactor;
13
+ /**
14
+ * No compaction - items stay where placed (free-form layouts).
15
+ */
16
+ declare const noCompactor: Compactor;
17
+ /**
18
+ * Get a compactor by type (convenience for the string-based compactType API).
19
+ */
20
+ declare function getCompactor(compactType: CompactType, allowOverlap?: boolean, preventCollision?: boolean): Compactor;
21
+ //#endregion
22
+ export { getCompactor, horizontalCompactor, noCompactor, verticalCompactor };
23
+ //# sourceMappingURL=compactors.d.ts.map
@@ -0,0 +1,166 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.0 | Cube Dev Team */
2
+ import { collides, getFirstCollision } from "./collision.js";
3
+ import { sortLayoutItemsByColRow, sortLayoutItemsByRowCol } from "./sort.js";
4
+ import { bottom, cloneLayout, cloneLayoutItem, getStatics } from "./layout.js";
5
+
6
+ //#region src/components/layout/Board/grid-core/compactors.ts
7
+ /**
8
+ * Compactor implementations.
9
+ *
10
+ * Vendored from react-grid-layout v2 (`src/core/compactors.ts`).
11
+ * See ./NOTICE.md for attribution and license.
12
+ *
13
+ * Compactors are pluggable strategies for removing gaps between grid items.
14
+ */
15
+ /**
16
+ * Resolve a compaction collision by moving items.
17
+ *
18
+ * Before moving an item to a position, checks if that movement would cause
19
+ * collisions and recursively moves those items first.
20
+ */
21
+ function resolveCompactionCollision(layout, item, moveToCoord, axis, hasStatics) {
22
+ const sizeProp = axis === "x" ? "w" : "h";
23
+ item[axis] += 1;
24
+ const itemIndex = layout.findIndex((l) => l.i === item.i);
25
+ const layoutHasStatics = hasStatics ?? getStatics(layout).length > 0;
26
+ for (let i = itemIndex + 1; i < layout.length; i++) {
27
+ const otherItem = layout[i];
28
+ if (otherItem === void 0) continue;
29
+ if (otherItem.static) continue;
30
+ if (!layoutHasStatics && otherItem.y > item.y + item.h) break;
31
+ if (collides(item, otherItem)) resolveCompactionCollision(layout, otherItem, moveToCoord + item[sizeProp], axis, layoutHasStatics);
32
+ }
33
+ item[axis] = moveToCoord;
34
+ }
35
+ /** Compact a single item vertically (move up). Mutates `l`. */
36
+ function compactItemVertical(compareWith, l, fullLayout, maxY) {
37
+ l.x = Math.max(l.x, 0);
38
+ l.y = Math.max(l.y, 0);
39
+ l.y = Math.min(maxY, l.y);
40
+ while (l.y > 0 && !getFirstCollision(compareWith, l)) l.y--;
41
+ let collision;
42
+ while ((collision = getFirstCollision(compareWith, l)) !== void 0) resolveCompactionCollision(fullLayout, l, collision.y + collision.h, "y");
43
+ l.y = Math.max(l.y, 0);
44
+ return l;
45
+ }
46
+ /** Compact a single item horizontally (move left). Mutates `l`. */
47
+ function compactItemHorizontal(compareWith, l, cols, fullLayout) {
48
+ l.x = Math.max(l.x, 0);
49
+ l.y = Math.max(l.y, 0);
50
+ while (l.x > 0 && !getFirstCollision(compareWith, l)) l.x--;
51
+ let collision;
52
+ while ((collision = getFirstCollision(compareWith, l)) !== void 0) {
53
+ resolveCompactionCollision(fullLayout, l, collision.x + collision.w, "x");
54
+ if (l.x + l.w > cols) {
55
+ l.x = cols - l.w;
56
+ l.y++;
57
+ while (l.x > 0 && !getFirstCollision(compareWith, l)) l.x--;
58
+ }
59
+ }
60
+ l.x = Math.max(l.x, 0);
61
+ return l;
62
+ }
63
+ /**
64
+ * Vertical compactor - moves items up to fill gaps. Default compaction mode.
65
+ */
66
+ const verticalCompactor = {
67
+ type: "vertical",
68
+ allowOverlap: false,
69
+ compact(layout, _cols) {
70
+ const compareWith = getStatics(layout);
71
+ let maxY = bottom(compareWith);
72
+ const sorted = sortLayoutItemsByRowCol(layout);
73
+ const out = new Array(layout.length);
74
+ for (let i = 0; i < sorted.length; i++) {
75
+ const sortedItem = sorted[i];
76
+ if (sortedItem === void 0) continue;
77
+ let l = cloneLayoutItem(sortedItem);
78
+ if (!l.static) {
79
+ l = compactItemVertical(compareWith, l, sorted, maxY);
80
+ maxY = Math.max(maxY, l.y + l.h);
81
+ compareWith.push(l);
82
+ }
83
+ const originalIndex = layout.indexOf(sortedItem);
84
+ out[originalIndex] = l;
85
+ l.moved = false;
86
+ }
87
+ return out;
88
+ }
89
+ };
90
+ /**
91
+ * Horizontal compactor - moves items left to fill gaps.
92
+ */
93
+ const horizontalCompactor = {
94
+ type: "horizontal",
95
+ allowOverlap: false,
96
+ compact(layout, cols) {
97
+ const compareWith = getStatics(layout);
98
+ const sorted = sortLayoutItemsByColRow(layout);
99
+ const out = new Array(layout.length);
100
+ for (let i = 0; i < sorted.length; i++) {
101
+ const sortedItem = sorted[i];
102
+ if (sortedItem === void 0) continue;
103
+ let l = cloneLayoutItem(sortedItem);
104
+ if (!l.static) {
105
+ l = compactItemHorizontal(compareWith, l, cols, sorted);
106
+ compareWith.push(l);
107
+ }
108
+ const originalIndex = layout.indexOf(sortedItem);
109
+ out[originalIndex] = l;
110
+ l.moved = false;
111
+ }
112
+ return out;
113
+ }
114
+ };
115
+ /**
116
+ * No compaction - items stay where placed (free-form layouts).
117
+ */
118
+ const noCompactor = {
119
+ type: null,
120
+ allowOverlap: false,
121
+ compact(layout, _cols) {
122
+ return cloneLayout(layout);
123
+ }
124
+ };
125
+ /** Vertical compactor that allows overlapping items. */
126
+ const verticalOverlapCompactor = {
127
+ ...verticalCompactor,
128
+ allowOverlap: true,
129
+ compact(layout, _cols) {
130
+ return cloneLayout(layout);
131
+ }
132
+ };
133
+ /** Horizontal compactor that allows overlapping items. */
134
+ const horizontalOverlapCompactor = {
135
+ ...horizontalCompactor,
136
+ allowOverlap: true,
137
+ compact(layout, _cols) {
138
+ return cloneLayout(layout);
139
+ }
140
+ };
141
+ /** No compaction, with overlapping allowed. */
142
+ const noOverlapCompactor = {
143
+ ...noCompactor,
144
+ allowOverlap: true
145
+ };
146
+ /**
147
+ * Get a compactor by type (convenience for the string-based compactType API).
148
+ */
149
+ function getCompactor(compactType, allowOverlap = false, preventCollision = false) {
150
+ let baseCompactor;
151
+ if (allowOverlap) if (compactType === "vertical") baseCompactor = verticalOverlapCompactor;
152
+ else if (compactType === "horizontal") baseCompactor = horizontalOverlapCompactor;
153
+ else baseCompactor = noOverlapCompactor;
154
+ else if (compactType === "vertical") baseCompactor = verticalCompactor;
155
+ else if (compactType === "horizontal") baseCompactor = horizontalCompactor;
156
+ else baseCompactor = noCompactor;
157
+ if (preventCollision) return {
158
+ ...baseCompactor,
159
+ preventCollision
160
+ };
161
+ return baseCompactor;
162
+ }
163
+
164
+ //#endregion
165
+ export { getCompactor, horizontalCompactor, noCompactor, verticalCompactor };
166
+ //# sourceMappingURL=compactors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compactors.js","names":[],"sources":["../../../../../src/components/layout/Board/grid-core/compactors.ts"],"sourcesContent":["/**\n * Compactor implementations.\n *\n * Vendored from react-grid-layout v2 (`src/core/compactors.ts`).\n * See ./NOTICE.md for attribution and license.\n *\n * Compactors are pluggable strategies for removing gaps between grid items.\n */\n\nimport { collides, getFirstCollision } from './collision';\nimport { bottom, cloneLayout, cloneLayoutItem, getStatics } from './layout';\nimport { sortLayoutItemsByColRow, sortLayoutItemsByRowCol } from './sort';\n\nimport type {\n Compactor,\n CompactType,\n Layout,\n LayoutItem,\n Mutable,\n} from './types';\n\n// ============================================================================\n// Helpers for Custom Compactors\n// ============================================================================\n\n/**\n * Resolve a compaction collision by moving items.\n *\n * Before moving an item to a position, checks if that movement would cause\n * collisions and recursively moves those items first.\n */\nexport function resolveCompactionCollision(\n layout: Layout,\n item: LayoutItem,\n moveToCoord: number,\n axis: 'x' | 'y',\n hasStatics?: boolean,\n): void {\n const sizeProp = axis === 'x' ? 'w' : 'h';\n\n // Temporarily increment position to check for collisions\n (item as Mutable<LayoutItem>)[axis] += 1;\n\n const itemIndex = layout.findIndex((l) => l.i === item.i);\n\n const layoutHasStatics = hasStatics ?? getStatics(layout).length > 0;\n\n for (let i = itemIndex + 1; i < layout.length; i++) {\n const otherItem = layout[i];\n if (otherItem === undefined) continue;\n if (otherItem.static) continue;\n // Optimization: break early if past this element, but only if no statics\n // are present. Static items can be scattered throughout the layout.\n if (!layoutHasStatics && otherItem.y > item.y + item.h) break;\n\n if (collides(item, otherItem)) {\n resolveCompactionCollision(\n layout,\n otherItem,\n moveToCoord + item[sizeProp],\n axis,\n layoutHasStatics,\n );\n }\n }\n\n (item as Mutable<LayoutItem>)[axis] = moveToCoord;\n}\n\n/** Compact a single item vertically (move up). Mutates `l`. */\nexport function compactItemVertical(\n compareWith: Layout,\n l: LayoutItem,\n fullLayout: Layout,\n maxY: number,\n): LayoutItem {\n // Correct negative positions first\n (l as Mutable<LayoutItem>).x = Math.max(l.x, 0);\n (l as Mutable<LayoutItem>).y = Math.max(l.y, 0);\n\n // Limit Y to the current bottom\n (l as Mutable<LayoutItem>).y = Math.min(maxY, l.y);\n\n // Move up as far as possible\n while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n (l as Mutable<LayoutItem>).y--;\n }\n\n // Resolve collisions by moving down\n let collision: LayoutItem | undefined;\n while ((collision = getFirstCollision(compareWith, l)) !== undefined) {\n resolveCompactionCollision(fullLayout, l, collision.y + collision.h, 'y');\n }\n\n (l as Mutable<LayoutItem>).y = Math.max(l.y, 0);\n return l;\n}\n\n/** Compact a single item horizontally (move left). Mutates `l`. */\nexport function compactItemHorizontal(\n compareWith: Layout,\n l: LayoutItem,\n cols: number,\n fullLayout: Layout,\n): LayoutItem {\n // Correct negative positions first\n (l as Mutable<LayoutItem>).x = Math.max(l.x, 0);\n (l as Mutable<LayoutItem>).y = Math.max(l.y, 0);\n\n // Move left as far as possible\n while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n (l as Mutable<LayoutItem>).x--;\n }\n\n // Resolve collisions\n let collision: LayoutItem | undefined;\n while ((collision = getFirstCollision(compareWith, l)) !== undefined) {\n resolveCompactionCollision(fullLayout, l, collision.x + collision.w, 'x');\n\n // Horizontal overflow: wrap to next row\n if (l.x + l.w > cols) {\n (l as Mutable<LayoutItem>).x = cols - l.w;\n (l as Mutable<LayoutItem>).y++;\n\n while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n (l as Mutable<LayoutItem>).x--;\n }\n }\n }\n\n (l as Mutable<LayoutItem>).x = Math.max(l.x, 0);\n return l;\n}\n\n// ============================================================================\n// Vertical Compactor\n// ============================================================================\n\n/**\n * Vertical compactor - moves items up to fill gaps. Default compaction mode.\n */\nexport const verticalCompactor: Compactor = {\n type: 'vertical',\n allowOverlap: false,\n\n compact(layout: Layout, _cols: number): Layout {\n const compareWith = getStatics(layout);\n let maxY = bottom(compareWith);\n const sorted = sortLayoutItemsByRowCol(layout);\n const out: LayoutItem[] = new Array(layout.length);\n\n for (let i = 0; i < sorted.length; i++) {\n const sortedItem = sorted[i];\n if (sortedItem === undefined) continue;\n\n let l = cloneLayoutItem(sortedItem);\n\n if (!l.static) {\n l = compactItemVertical(compareWith, l, sorted, maxY);\n maxY = Math.max(maxY, l.y + l.h);\n compareWith.push(l);\n }\n\n const originalIndex = layout.indexOf(sortedItem);\n out[originalIndex] = l;\n l.moved = false;\n }\n\n return out;\n },\n};\n\n// ============================================================================\n// Horizontal Compactor\n// ============================================================================\n\n/**\n * Horizontal compactor - moves items left to fill gaps.\n */\nexport const horizontalCompactor: Compactor = {\n type: 'horizontal',\n allowOverlap: false,\n\n compact(layout: Layout, cols: number): Layout {\n const compareWith = getStatics(layout);\n const sorted = sortLayoutItemsByColRow(layout);\n const out: LayoutItem[] = new Array(layout.length);\n\n for (let i = 0; i < sorted.length; i++) {\n const sortedItem = sorted[i];\n if (sortedItem === undefined) continue;\n\n let l = cloneLayoutItem(sortedItem);\n\n if (!l.static) {\n l = compactItemHorizontal(compareWith, l, cols, sorted);\n compareWith.push(l);\n }\n\n const originalIndex = layout.indexOf(sortedItem);\n out[originalIndex] = l;\n l.moved = false;\n }\n\n return out;\n },\n};\n\n// ============================================================================\n// No Compaction\n// ============================================================================\n\n/**\n * No compaction - items stay where placed (free-form layouts).\n */\nexport const noCompactor: Compactor = {\n type: null,\n allowOverlap: false,\n\n compact(layout: Layout, _cols: number): Layout {\n return cloneLayout(layout);\n },\n};\n\n// ============================================================================\n// Overlap-Allowing Variants\n// ============================================================================\n\n/** Vertical compactor that allows overlapping items. */\nexport const verticalOverlapCompactor: Compactor = {\n ...verticalCompactor,\n allowOverlap: true,\n\n compact(layout: Layout, _cols: number): Layout {\n return cloneLayout(layout);\n },\n};\n\n/** Horizontal compactor that allows overlapping items. */\nexport const horizontalOverlapCompactor: Compactor = {\n ...horizontalCompactor,\n allowOverlap: true,\n\n compact(layout: Layout, _cols: number): Layout {\n return cloneLayout(layout);\n },\n};\n\n/** No compaction, with overlapping allowed. */\nexport const noOverlapCompactor: Compactor = {\n ...noCompactor,\n allowOverlap: true,\n};\n\n// ============================================================================\n// Factory Function\n// ============================================================================\n\n/**\n * Get a compactor by type (convenience for the string-based compactType API).\n */\nexport function getCompactor(\n compactType: CompactType,\n allowOverlap: boolean = false,\n preventCollision: boolean = false,\n): Compactor {\n let baseCompactor: Compactor;\n\n if (allowOverlap) {\n if (compactType === 'vertical') baseCompactor = verticalOverlapCompactor;\n else if (compactType === 'horizontal')\n baseCompactor = horizontalOverlapCompactor;\n else baseCompactor = noOverlapCompactor;\n } else {\n if (compactType === 'vertical') baseCompactor = verticalCompactor;\n else if (compactType === 'horizontal') baseCompactor = horizontalCompactor;\n // For 'wrap' and null, use noCompactor\n else baseCompactor = noCompactor;\n }\n\n if (preventCollision) {\n return { ...baseCompactor, preventCollision };\n }\n return baseCompactor;\n}\n"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+
2
+ import { LayoutConstraint } from "./types.js";
3
+
4
+ //#region src/components/layout/Board/grid-core/constraints.d.ts
5
+ /**
6
+ * Grid boundary constraint. Ensures items stay within the grid bounds. This is
7
+ * the default position constraint.
8
+ */
9
+ declare const gridBounds: LayoutConstraint;
10
+ /**
11
+ * Min/max size constraint. Enforces per-item minW/maxW/minH/maxH.
12
+ */
13
+ declare const minMaxSize: LayoutConstraint;
14
+ /**
15
+ * Container bounds constraint. Constrains items to stay within the visible
16
+ * container (a replacement for the legacy `isBounded` prop).
17
+ */
18
+ declare const containerBounds: LayoutConstraint;
19
+ /** Bounded X constraint. Only constrains horizontal position. */
20
+ declare const boundedX: LayoutConstraint;
21
+ /** Bounded Y constraint. Only constrains vertical position. */
22
+ declare const boundedY: LayoutConstraint;
23
+ /**
24
+ * Create an aspect ratio constraint (maintains width-to-height ratio in pixels).
25
+ */
26
+ declare function aspectRatio(ratio: number): LayoutConstraint;
27
+ /** Create a snap-to-grid constraint. */
28
+ declare function snapToGrid(stepX: number, stepY?: number): LayoutConstraint;
29
+ /** Create a minimum size constraint (grid-wide). */
30
+ declare function minSize(minW: number, minH: number): LayoutConstraint;
31
+ /** Create a maximum size constraint (grid-wide). */
32
+ declare function maxSize(maxW: number, maxH: number): LayoutConstraint;
33
+ //#endregion
34
+ export { aspectRatio, boundedX, boundedY, containerBounds, gridBounds, maxSize, minMaxSize, minSize, snapToGrid };
35
+ //# sourceMappingURL=constraints.d.ts.map
@@ -0,0 +1,155 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.0 | Cube Dev Team */
2
+ //#region src/components/layout/Board/grid-core/constraints.ts
3
+ function clamp(value, min, max) {
4
+ return Math.max(min, Math.min(max, value));
5
+ }
6
+ /**
7
+ * Grid boundary constraint. Ensures items stay within the grid bounds. This is
8
+ * the default position constraint.
9
+ */
10
+ const gridBounds = {
11
+ name: "gridBounds",
12
+ constrainPosition(item, x, y, { cols, maxRows }) {
13
+ return {
14
+ x: clamp(x, 0, Math.max(0, cols - item.w)),
15
+ y: clamp(y, 0, Math.max(0, maxRows - item.h))
16
+ };
17
+ },
18
+ constrainSize(item, w, h, handle, { cols, maxRows }) {
19
+ const maxW = handle === "w" || handle === "nw" || handle === "sw" ? item.x + item.w : cols - item.x;
20
+ const maxH = handle === "n" || handle === "nw" || handle === "ne" ? item.y + item.h : maxRows - item.y;
21
+ return {
22
+ w: clamp(w, 1, Math.max(1, maxW)),
23
+ h: clamp(h, 1, Math.max(1, maxH))
24
+ };
25
+ }
26
+ };
27
+ /**
28
+ * Min/max size constraint. Enforces per-item minW/maxW/minH/maxH.
29
+ */
30
+ const minMaxSize = {
31
+ name: "minMaxSize",
32
+ constrainSize(item, w, h) {
33
+ return {
34
+ w: clamp(w, item.minW ?? 1, item.maxW ?? Infinity),
35
+ h: clamp(h, item.minH ?? 1, item.maxH ?? Infinity)
36
+ };
37
+ }
38
+ };
39
+ /**
40
+ * Container bounds constraint. Constrains items to stay within the visible
41
+ * container (a replacement for the legacy `isBounded` prop).
42
+ */
43
+ const containerBounds = {
44
+ name: "containerBounds",
45
+ constrainPosition(item, x, y, { cols, maxRows, containerHeight, rowHeight, margin }) {
46
+ const visibleRows = containerHeight > 0 ? Math.floor((containerHeight + margin[1]) / (rowHeight + margin[1])) : maxRows;
47
+ return {
48
+ x: clamp(x, 0, Math.max(0, cols - item.w)),
49
+ y: clamp(y, 0, Math.max(0, visibleRows - item.h))
50
+ };
51
+ }
52
+ };
53
+ /** Bounded X constraint. Only constrains horizontal position. */
54
+ const boundedX = {
55
+ name: "boundedX",
56
+ constrainPosition(item, x, y, { cols }) {
57
+ return {
58
+ x: clamp(x, 0, Math.max(0, cols - item.w)),
59
+ y
60
+ };
61
+ }
62
+ };
63
+ /** Bounded Y constraint. Only constrains vertical position. */
64
+ const boundedY = {
65
+ name: "boundedY",
66
+ constrainPosition(item, x, y, { maxRows }) {
67
+ return {
68
+ x,
69
+ y: clamp(y, 0, Math.max(0, maxRows - item.h))
70
+ };
71
+ }
72
+ };
73
+ /**
74
+ * Create an aspect ratio constraint (maintains width-to-height ratio in pixels).
75
+ */
76
+ function aspectRatio(ratio) {
77
+ return {
78
+ name: `aspectRatio(${ratio})`,
79
+ constrainSize(_item, w, _h, _handle, context) {
80
+ const { cols, containerWidth, rowHeight, margin } = context;
81
+ const pixelHeight = ((containerWidth - margin[0] * (cols - 1)) / cols * w + margin[0] * Math.max(0, w - 1)) / ratio;
82
+ return {
83
+ w,
84
+ h: Math.max(1, Math.round((pixelHeight + margin[1]) / (rowHeight + margin[1])))
85
+ };
86
+ }
87
+ };
88
+ }
89
+ /** Create a snap-to-grid constraint. */
90
+ function snapToGrid(stepX, stepY = stepX) {
91
+ if (stepX <= 0 || stepY <= 0) throw new Error(`snapToGrid: step values must be positive (got stepX=${stepX}, stepY=${stepY})`);
92
+ return {
93
+ name: `snapToGrid(${stepX}, ${stepY})`,
94
+ constrainPosition(_item, x, y) {
95
+ return {
96
+ x: Math.round(x / stepX) * stepX,
97
+ y: Math.round(y / stepY) * stepY
98
+ };
99
+ }
100
+ };
101
+ }
102
+ /** Create a minimum size constraint (grid-wide). */
103
+ function minSize(minW, minH) {
104
+ return {
105
+ name: `minSize(${minW}, ${minH})`,
106
+ constrainSize(_item, w, h) {
107
+ return {
108
+ w: Math.max(minW, w),
109
+ h: Math.max(minH, h)
110
+ };
111
+ }
112
+ };
113
+ }
114
+ /** Create a maximum size constraint (grid-wide). */
115
+ function maxSize(maxW, maxH) {
116
+ return {
117
+ name: `maxSize(${maxW}, ${maxH})`,
118
+ constrainSize(_item, w, h) {
119
+ return {
120
+ w: Math.min(maxW, w),
121
+ h: Math.min(maxH, h)
122
+ };
123
+ }
124
+ };
125
+ }
126
+ /** Default constraints applied when none are specified. */
127
+ const defaultConstraints = [gridBounds, minMaxSize];
128
+ /** Apply position constraints to a proposed position. */
129
+ function applyPositionConstraints(constraints, item, x, y, context) {
130
+ let result = {
131
+ x,
132
+ y
133
+ };
134
+ for (const constraint of constraints) if (constraint.constrainPosition) result = constraint.constrainPosition(item, result.x, result.y, context);
135
+ if (item.constraints) {
136
+ for (const constraint of item.constraints) if (constraint.constrainPosition) result = constraint.constrainPosition(item, result.x, result.y, context);
137
+ }
138
+ return result;
139
+ }
140
+ /** Apply size constraints to a proposed size. */
141
+ function applySizeConstraints(constraints, item, w, h, handle, context) {
142
+ let result = {
143
+ w,
144
+ h
145
+ };
146
+ for (const constraint of constraints) if (constraint.constrainSize) result = constraint.constrainSize(item, result.w, result.h, handle, context);
147
+ if (item.constraints) {
148
+ for (const constraint of item.constraints) if (constraint.constrainSize) result = constraint.constrainSize(item, result.w, result.h, handle, context);
149
+ }
150
+ return result;
151
+ }
152
+
153
+ //#endregion
154
+ export { applyPositionConstraints, applySizeConstraints, aspectRatio, boundedX, boundedY, containerBounds, defaultConstraints, gridBounds, maxSize, minMaxSize, minSize, snapToGrid };
155
+ //# sourceMappingURL=constraints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constraints.js","names":[],"sources":["../../../../../src/components/layout/Board/grid-core/constraints.ts"],"sourcesContent":["/**\n * Pluggable layout constraints.\n *\n * Vendored from react-grid-layout v2 (`src/core/constraints.ts`).\n * See ./NOTICE.md for attribution and license.\n *\n * Constraints control position and size limits during drag/resize operations.\n */\n\nimport type {\n ConstraintContext,\n LayoutConstraint,\n LayoutItem,\n ResizeHandleAxis,\n} from './types';\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n}\n\n// ============================================================================\n// Built-in Constraints\n// ============================================================================\n\n/**\n * Grid boundary constraint. Ensures items stay within the grid bounds. This is\n * the default position constraint.\n */\nexport const gridBounds: LayoutConstraint = {\n name: 'gridBounds',\n\n constrainPosition(\n item: LayoutItem,\n x: number,\n y: number,\n { cols, maxRows }: ConstraintContext,\n ): { x: number; y: number } {\n return {\n x: clamp(x, 0, Math.max(0, cols - item.w)),\n y: clamp(y, 0, Math.max(0, maxRows - item.h)),\n };\n },\n\n constrainSize(\n item: LayoutItem,\n w: number,\n h: number,\n handle: ResizeHandleAxis,\n { cols, maxRows }: ConstraintContext,\n ): { w: number; h: number } {\n const maxW =\n handle === 'w' || handle === 'nw' || handle === 'sw'\n ? item.x + item.w\n : cols - item.x;\n\n const maxH =\n handle === 'n' || handle === 'nw' || handle === 'ne'\n ? item.y + item.h\n : maxRows - item.y;\n\n return {\n w: clamp(w, 1, Math.max(1, maxW)),\n h: clamp(h, 1, Math.max(1, maxH)),\n };\n },\n};\n\n/**\n * Min/max size constraint. Enforces per-item minW/maxW/minH/maxH.\n */\nexport const minMaxSize: LayoutConstraint = {\n name: 'minMaxSize',\n\n constrainSize(\n item: LayoutItem,\n w: number,\n h: number,\n ): { w: number; h: number } {\n return {\n w: clamp(w, item.minW ?? 1, item.maxW ?? Infinity),\n h: clamp(h, item.minH ?? 1, item.maxH ?? Infinity),\n };\n },\n};\n\n/**\n * Container bounds constraint. Constrains items to stay within the visible\n * container (a replacement for the legacy `isBounded` prop).\n */\nexport const containerBounds: LayoutConstraint = {\n name: 'containerBounds',\n\n constrainPosition(\n item: LayoutItem,\n x: number,\n y: number,\n { cols, maxRows, containerHeight, rowHeight, margin }: ConstraintContext,\n ): { x: number; y: number } {\n const visibleRows =\n containerHeight > 0\n ? Math.floor((containerHeight + margin[1]) / (rowHeight + margin[1]))\n : maxRows;\n\n return {\n x: clamp(x, 0, Math.max(0, cols - item.w)),\n y: clamp(y, 0, Math.max(0, visibleRows - item.h)),\n };\n },\n};\n\n/** Bounded X constraint. Only constrains horizontal position. */\nexport const boundedX: LayoutConstraint = {\n name: 'boundedX',\n\n constrainPosition(\n item: LayoutItem,\n x: number,\n y: number,\n { cols }: ConstraintContext,\n ): { x: number; y: number } {\n return {\n x: clamp(x, 0, Math.max(0, cols - item.w)),\n y,\n };\n },\n};\n\n/** Bounded Y constraint. Only constrains vertical position. */\nexport const boundedY: LayoutConstraint = {\n name: 'boundedY',\n\n constrainPosition(\n item: LayoutItem,\n x: number,\n y: number,\n { maxRows }: ConstraintContext,\n ): { x: number; y: number } {\n return {\n x,\n y: clamp(y, 0, Math.max(0, maxRows - item.h)),\n };\n },\n};\n\n// ============================================================================\n// Constraint Factories\n// ============================================================================\n\n/**\n * Create an aspect ratio constraint (maintains width-to-height ratio in pixels).\n */\nexport function aspectRatio(ratio: number): LayoutConstraint {\n return {\n name: `aspectRatio(${ratio})`,\n\n constrainSize(\n _item: LayoutItem,\n w: number,\n _h: number,\n _handle: ResizeHandleAxis,\n context: ConstraintContext,\n ): { w: number; h: number } {\n const { cols, containerWidth, rowHeight, margin } = context;\n const colWidth = (containerWidth - margin[0] * (cols - 1)) / cols;\n const pixelWidth = colWidth * w + margin[0] * Math.max(0, w - 1);\n const pixelHeight = pixelWidth / ratio;\n const h = Math.max(\n 1,\n Math.round((pixelHeight + margin[1]) / (rowHeight + margin[1])),\n );\n\n return { w, h };\n },\n };\n}\n\n/** Create a snap-to-grid constraint. */\nexport function snapToGrid(\n stepX: number,\n stepY: number = stepX,\n): LayoutConstraint {\n if (stepX <= 0 || stepY <= 0) {\n throw new Error(\n `snapToGrid: step values must be positive (got stepX=${stepX}, stepY=${stepY})`,\n );\n }\n\n return {\n name: `snapToGrid(${stepX}, ${stepY})`,\n\n constrainPosition(\n _item: LayoutItem,\n x: number,\n y: number,\n ): { x: number; y: number } {\n return {\n x: Math.round(x / stepX) * stepX,\n y: Math.round(y / stepY) * stepY,\n };\n },\n };\n}\n\n/** Create a minimum size constraint (grid-wide). */\nexport function minSize(minW: number, minH: number): LayoutConstraint {\n return {\n name: `minSize(${minW}, ${minH})`,\n\n constrainSize(\n _item: LayoutItem,\n w: number,\n h: number,\n ): { w: number; h: number } {\n return {\n w: Math.max(minW, w),\n h: Math.max(minH, h),\n };\n },\n };\n}\n\n/** Create a maximum size constraint (grid-wide). */\nexport function maxSize(maxW: number, maxH: number): LayoutConstraint {\n return {\n name: `maxSize(${maxW}, ${maxH})`,\n\n constrainSize(\n _item: LayoutItem,\n w: number,\n h: number,\n ): { w: number; h: number } {\n return {\n w: Math.min(maxW, w),\n h: Math.min(maxH, h),\n };\n },\n };\n}\n\n// ============================================================================\n// Default Constraints\n// ============================================================================\n\n/** Default constraints applied when none are specified. */\nexport const defaultConstraints: LayoutConstraint[] = [gridBounds, minMaxSize];\n\n// ============================================================================\n// Constraint Application Functions\n// ============================================================================\n\n/** Apply position constraints to a proposed position. */\nexport function applyPositionConstraints(\n constraints: LayoutConstraint[],\n item: LayoutItem,\n x: number,\n y: number,\n context: ConstraintContext,\n): { x: number; y: number } {\n let result = { x, y };\n\n for (const constraint of constraints) {\n if (constraint.constrainPosition) {\n result = constraint.constrainPosition(item, result.x, result.y, context);\n }\n }\n\n if (item.constraints) {\n for (const constraint of item.constraints) {\n if (constraint.constrainPosition) {\n result = constraint.constrainPosition(\n item,\n result.x,\n result.y,\n context,\n );\n }\n }\n }\n\n return result;\n}\n\n/** Apply size constraints to a proposed size. */\nexport function applySizeConstraints(\n constraints: LayoutConstraint[],\n item: LayoutItem,\n w: number,\n h: number,\n handle: ResizeHandleAxis,\n context: ConstraintContext,\n): { w: number; h: number } {\n let result = { w, h };\n\n for (const constraint of constraints) {\n if (constraint.constrainSize) {\n result = constraint.constrainSize(\n item,\n result.w,\n result.h,\n handle,\n context,\n );\n }\n }\n\n if (item.constraints) {\n for (const constraint of item.constraints) {\n if (constraint.constrainSize) {\n result = constraint.constrainSize(\n item,\n result.w,\n result.h,\n handle,\n context,\n );\n }\n }\n }\n\n return result;\n}\n"],"mappings":";;AAgBA,SAAS,MAAM,OAAe,KAAa,KAAqB;AAC9D,QAAO,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,MAAM,CAAC;;;;;;AAW5C,MAAa,aAA+B;CAC1C,MAAM;CAEN,kBACE,MACA,GACA,GACA,EAAE,MAAM,WACkB;AAC1B,SAAO;GACL,GAAG,MAAM,GAAG,GAAG,KAAK,IAAI,GAAG,OAAO,KAAK,EAAE,CAAC;GAC1C,GAAG,MAAM,GAAG,GAAG,KAAK,IAAI,GAAG,UAAU,KAAK,EAAE,CAAC;GAC9C;;CAGH,cACE,MACA,GACA,GACA,QACA,EAAE,MAAM,WACkB;EAC1B,MAAM,OACJ,WAAW,OAAO,WAAW,QAAQ,WAAW,OAC5C,KAAK,IAAI,KAAK,IACd,OAAO,KAAK;EAElB,MAAM,OACJ,WAAW,OAAO,WAAW,QAAQ,WAAW,OAC5C,KAAK,IAAI,KAAK,IACd,UAAU,KAAK;AAErB,SAAO;GACL,GAAG,MAAM,GAAG,GAAG,KAAK,IAAI,GAAG,KAAK,CAAC;GACjC,GAAG,MAAM,GAAG,GAAG,KAAK,IAAI,GAAG,KAAK,CAAC;GAClC;;CAEJ;;;;AAKD,MAAa,aAA+B;CAC1C,MAAM;CAEN,cACE,MACA,GACA,GAC0B;AAC1B,SAAO;GACL,GAAG,MAAM,GAAG,KAAK,QAAQ,GAAG,KAAK,QAAQ,SAAS;GAClD,GAAG,MAAM,GAAG,KAAK,QAAQ,GAAG,KAAK,QAAQ,SAAS;GACnD;;CAEJ;;;;;AAMD,MAAa,kBAAoC;CAC/C,MAAM;CAEN,kBACE,MACA,GACA,GACA,EAAE,MAAM,SAAS,iBAAiB,WAAW,UACnB;EAC1B,MAAM,cACJ,kBAAkB,IACd,KAAK,OAAO,kBAAkB,OAAO,OAAO,YAAY,OAAO,IAAI,GACnE;AAEN,SAAO;GACL,GAAG,MAAM,GAAG,GAAG,KAAK,IAAI,GAAG,OAAO,KAAK,EAAE,CAAC;GAC1C,GAAG,MAAM,GAAG,GAAG,KAAK,IAAI,GAAG,cAAc,KAAK,EAAE,CAAC;GAClD;;CAEJ;;AAGD,MAAa,WAA6B;CACxC,MAAM;CAEN,kBACE,MACA,GACA,GACA,EAAE,QACwB;AAC1B,SAAO;GACL,GAAG,MAAM,GAAG,GAAG,KAAK,IAAI,GAAG,OAAO,KAAK,EAAE,CAAC;GAC1C;GACD;;CAEJ;;AAGD,MAAa,WAA6B;CACxC,MAAM;CAEN,kBACE,MACA,GACA,GACA,EAAE,WACwB;AAC1B,SAAO;GACL;GACA,GAAG,MAAM,GAAG,GAAG,KAAK,IAAI,GAAG,UAAU,KAAK,EAAE,CAAC;GAC9C;;CAEJ;;;;AASD,SAAgB,YAAY,OAAiC;AAC3D,QAAO;EACL,MAAM,eAAe,MAAM;EAE3B,cACE,OACA,GACA,IACA,SACA,SAC0B;GAC1B,MAAM,EAAE,MAAM,gBAAgB,WAAW,WAAW;GAGpD,MAAM,gBAFY,iBAAiB,OAAO,MAAM,OAAO,MAAM,OAC/B,IAAI,OAAO,KAAK,KAAK,IAAI,GAAG,IAAI,EAAE,IAC/B;AAMjC,UAAO;IAAE;IAAG,GALF,KAAK,IACb,GACA,KAAK,OAAO,cAAc,OAAO,OAAO,YAAY,OAAO,IAAI,CAChE;IAEc;;EAElB;;;AAIH,SAAgB,WACd,OACA,QAAgB,OACE;AAClB,KAAI,SAAS,KAAK,SAAS,EACzB,OAAM,IAAI,MACR,uDAAuD,MAAM,UAAU,MAAM,GAC9E;AAGH,QAAO;EACL,MAAM,cAAc,MAAM,IAAI,MAAM;EAEpC,kBACE,OACA,GACA,GAC0B;AAC1B,UAAO;IACL,GAAG,KAAK,MAAM,IAAI,MAAM,GAAG;IAC3B,GAAG,KAAK,MAAM,IAAI,MAAM,GAAG;IAC5B;;EAEJ;;;AAIH,SAAgB,QAAQ,MAAc,MAAgC;AACpE,QAAO;EACL,MAAM,WAAW,KAAK,IAAI,KAAK;EAE/B,cACE,OACA,GACA,GAC0B;AAC1B,UAAO;IACL,GAAG,KAAK,IAAI,MAAM,EAAE;IACpB,GAAG,KAAK,IAAI,MAAM,EAAE;IACrB;;EAEJ;;;AAIH,SAAgB,QAAQ,MAAc,MAAgC;AACpE,QAAO;EACL,MAAM,WAAW,KAAK,IAAI,KAAK;EAE/B,cACE,OACA,GACA,GAC0B;AAC1B,UAAO;IACL,GAAG,KAAK,IAAI,MAAM,EAAE;IACpB,GAAG,KAAK,IAAI,MAAM,EAAE;IACrB;;EAEJ;;;AAQH,MAAa,qBAAyC,CAAC,YAAY,WAAW;;AAO9E,SAAgB,yBACd,aACA,MACA,GACA,GACA,SAC0B;CAC1B,IAAI,SAAS;EAAE;EAAG;EAAG;AAErB,MAAK,MAAM,cAAc,YACvB,KAAI,WAAW,kBACb,UAAS,WAAW,kBAAkB,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ;AAI5E,KAAI,KAAK,aACP;OAAK,MAAM,cAAc,KAAK,YAC5B,KAAI,WAAW,kBACb,UAAS,WAAW,kBAClB,MACA,OAAO,GACP,OAAO,GACP,QACD;;AAKP,QAAO;;;AAIT,SAAgB,qBACd,aACA,MACA,GACA,GACA,QACA,SAC0B;CAC1B,IAAI,SAAS;EAAE;EAAG;EAAG;AAErB,MAAK,MAAM,cAAc,YACvB,KAAI,WAAW,cACb,UAAS,WAAW,cAClB,MACA,OAAO,GACP,OAAO,GACP,QACA,QACD;AAIL,KAAI,KAAK,aACP;OAAK,MAAM,cAAc,KAAK,YAC5B,KAAI,WAAW,cACb,UAAS,WAAW,cAClB,MACA,OAAO,GACP,OAAO,GACP,QACA,QACD;;AAKP,QAAO"}