@cube-dev/ui-kit 0.0.0-canary-e056095 → 0.0.0-canary-f472829

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 (617) hide show
  1. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  2. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  3. package/dist/_internal/hooks/use-event.js +1 -1
  4. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  5. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  6. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  7. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  8. package/dist/_internal/hooks/use-warn.js +1 -1
  9. package/dist/components/Block.js +1 -1
  10. package/dist/components/CollectionItem.js +1 -1
  11. package/dist/components/GlobalStyles.js +1 -1
  12. package/dist/components/GridProvider.js +1 -1
  13. package/dist/components/HiddenInput.js +1 -1
  14. package/dist/components/Root.js +1 -1
  15. package/dist/components/actions/Action/Action.js +1 -1
  16. package/dist/components/actions/Banner/Banner.js +1 -1
  17. package/dist/components/actions/Button/Button.d.ts +0 -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/InfoBadge/InfoBadge.js +1 -1
  55. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  56. package/dist/components/content/Item/Item.js +1 -1
  57. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  58. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  59. package/dist/components/content/Layout/GridLayout.js +1 -1
  60. package/dist/components/content/Layout/Layout.js +40 -29
  61. package/dist/components/content/Layout/Layout.js.map +1 -1
  62. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  63. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  64. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  65. package/dist/components/content/Layout/LayoutContent.js +2 -2
  66. package/dist/components/content/Layout/LayoutContext.js +1 -1
  67. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  68. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  69. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  70. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  71. package/dist/components/content/Layout/LayoutPane.js +2 -2
  72. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  73. package/dist/components/content/Layout/LayoutPanelHeader.js +2 -2
  74. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  75. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  76. package/dist/components/content/Layout/index.js +1 -1
  77. package/dist/components/content/Layout/utils.js +1 -1
  78. package/dist/components/content/Paragraph.js +1 -1
  79. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  80. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  81. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  82. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  83. package/dist/components/content/Result/Result.js +1 -1
  84. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  85. package/dist/components/content/Tag/Tag.js +1 -1
  86. package/dist/components/content/Text.d.ts +14 -14
  87. package/dist/components/content/Text.js +1 -1
  88. package/dist/components/content/TextItem/TextItem.js +1 -1
  89. package/dist/components/content/Title.js +1 -1
  90. package/dist/components/content/Tree/Tree.js +1 -1
  91. package/dist/components/content/Tree/TreeNode.js +2 -2
  92. package/dist/components/content/Tree/styled.js +1 -1
  93. package/dist/components/content/Tree/tree-index.js +1 -1
  94. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  95. package/dist/components/content/Tree/use-load-data.js +3 -2
  96. package/dist/components/content/Tree/use-load-data.js.map +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/data/DataTable/DataTable.js +1 -1
  100. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  101. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  102. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  103. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  104. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  105. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  106. package/dist/components/data/TableBase/RowCollection.js +1 -1
  107. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  108. package/dist/components/data/TableBase/TableRow.js +1 -1
  109. package/dist/components/data/TableBase/TableView.js +2 -2
  110. package/dist/components/data/TableBase/column-menu.js +1 -1
  111. package/dist/components/data/TableBase/column-tint.js +1 -1
  112. package/dist/components/data/TableBase/row-menu.js +1 -1
  113. package/dist/components/data/TableBase/styled.d.ts +1 -2
  114. package/dist/components/data/TableBase/styled.js +1 -1
  115. package/dist/components/data/TableBase/table-tree.js +1 -1
  116. package/dist/components/data/TableBase/types.js +1 -1
  117. package/dist/components/data/TableBase/use-cell-selection.d.ts +0 -1
  118. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  119. package/dist/components/data/TableBase/use-column-order.js +1 -1
  120. package/dist/components/data/TableBase/use-container-width.js +1 -1
  121. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  122. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  123. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  124. package/dist/components/data/TableBase/use-table-search.js +1 -1
  125. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  126. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  127. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  128. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  129. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  130. package/dist/components/fields/Checkbox/Checkbox.js +2 -2
  131. package/dist/components/fields/Checkbox/CheckboxGroup.js +2 -2
  132. package/dist/components/fields/Checkbox/context.js +1 -1
  133. package/dist/components/fields/ColorInput/ColorInput.js +2 -2
  134. package/dist/components/fields/ColorPicker/ColorPicker.js +2 -2
  135. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  136. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  137. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  138. package/dist/components/fields/CommandTextArea/CommandTextArea.js +2 -2
  139. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  140. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  141. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  142. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  143. package/dist/components/fields/DatePicker/DatePicker.js +2 -2
  144. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  145. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  146. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  147. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  148. package/dist/components/fields/DatePicker/DateRangePicker.js +2 -2
  149. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +2 -2
  150. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  151. package/dist/components/fields/DatePicker/PeriodPicker.js +2 -2
  152. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  153. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  154. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  155. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  156. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  157. package/dist/components/fields/DatePicker/period.js +1 -1
  158. package/dist/components/fields/DatePicker/props.js +1 -1
  159. package/dist/components/fields/DatePicker/utils.js +1 -1
  160. package/dist/components/fields/FileInput/FileInput.js +1 -1
  161. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  162. package/dist/components/fields/FilterPicker/FilterPicker.js +3 -3
  163. package/dist/components/fields/Input/Input.js +1 -1
  164. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  165. package/dist/components/fields/ListBox/ListBox.js +4 -4
  166. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  167. package/dist/components/fields/ListBoxPopover/index.d.ts +0 -1
  168. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  169. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  170. package/dist/components/fields/NumberInput/NumberInput.js +2 -2
  171. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  172. package/dist/components/fields/PasswordInput/PasswordInput.js +2 -2
  173. package/dist/components/fields/Picker/Picker.js +3 -3
  174. package/dist/components/fields/RadioGroup/Radio.js +2 -2
  175. package/dist/components/fields/RadioGroup/RadioGroup.js +2 -2
  176. package/dist/components/fields/RadioGroup/context.js +1 -1
  177. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  178. package/dist/components/fields/SearchInput/SearchInput.js +2 -2
  179. package/dist/components/fields/Select/Select.js +1 -1
  180. package/dist/components/fields/Slider/Gradation.js +1 -1
  181. package/dist/components/fields/Slider/HueSlider.js +1 -1
  182. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  183. package/dist/components/fields/Slider/Slider.js +1 -1
  184. package/dist/components/fields/Slider/SliderBase.js +1 -1
  185. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  186. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  187. package/dist/components/fields/Slider/elements.js +1 -1
  188. package/dist/components/fields/Slider/index.js +1 -1
  189. package/dist/components/fields/Switch/Switch.js +2 -2
  190. package/dist/components/fields/TextArea/TextArea.js +2 -2
  191. package/dist/components/fields/TextInput/TextInput.js +2 -2
  192. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  193. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  194. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  195. package/dist/components/fields/color/ColorPanel.js +1 -1
  196. package/dist/components/fields/color/channels.js +1 -1
  197. package/dist/components/fields/color/color.js +1 -1
  198. package/dist/components/fields/color/context.js +1 -1
  199. package/dist/components/form/FieldWrapper/FieldWrapper.js +3 -2
  200. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  201. package/dist/components/form/Form/Field.js +1 -1
  202. package/dist/components/form/Form/Form.js +1 -1
  203. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  204. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  205. package/dist/components/form/Form/SubmitError.js +1 -1
  206. package/dist/components/form/Form/index.js +1 -1
  207. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  208. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  209. package/dist/components/form/Form/use-field/use-field.js +1 -1
  210. package/dist/components/form/Form/use-form.js +1 -1
  211. package/dist/components/form/Form/validation.js +1 -1
  212. package/dist/components/form/Label.js +1 -1
  213. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  214. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  215. package/dist/components/form/validation/use-validation-props.js +1 -1
  216. package/dist/components/form/wrapper.js +1 -1
  217. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  218. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  219. package/dist/components/layout/Board/Board.js +1 -1
  220. package/dist/components/layout/Board/BoardProvider.js +1 -1
  221. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  222. package/dist/components/layout/Board/Widget.js +1 -1
  223. package/dist/components/layout/Board/WidgetHost.js +2 -2
  224. package/dist/components/layout/Board/WidgetHost.js.map +1 -1
  225. package/dist/components/layout/Board/board-context.js +1 -1
  226. package/dist/components/layout/Board/board-store.js +1 -1
  227. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  228. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  229. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  230. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  231. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  232. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  233. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  234. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  235. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  236. package/dist/components/layout/Board/index.js +1 -1
  237. package/dist/components/layout/Board/responsive-utils.js +1 -1
  238. package/dist/components/layout/Board/use-board-layout.js +1 -1
  239. package/dist/components/layout/Board/use-board-registry.js +1 -1
  240. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  241. package/dist/components/layout/Board/use-board-selection.js +1 -1
  242. package/dist/components/layout/Flex.js +1 -1
  243. package/dist/components/layout/Flow.js +1 -1
  244. package/dist/components/layout/Grid.js +1 -1
  245. package/dist/components/layout/Panel.js +1 -1
  246. package/dist/components/layout/Prefix.js +1 -1
  247. package/dist/components/layout/ResizablePanel.js +1 -1
  248. package/dist/components/layout/Space.js +1 -1
  249. package/dist/components/layout/Suffix.js +1 -1
  250. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  251. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  252. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  253. package/dist/components/navigation/Tabs/TabButton.js +3 -3
  254. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  255. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  256. package/dist/components/navigation/Tabs/TabPicker.js +2 -2
  257. package/dist/components/navigation/Tabs/Tabs.js +2 -2
  258. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  259. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  260. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  261. package/dist/components/navigation/Tabs/styled.js +1 -1
  262. package/dist/components/navigation/Tabs/types.js +1 -1
  263. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  264. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  265. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  266. package/dist/components/other/Calendar/Calendar.js +1 -1
  267. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  268. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  269. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  270. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  271. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  272. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  273. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  274. package/dist/components/other/Calendar/styled.js +1 -1
  275. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  276. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  277. package/dist/components/overlays/AlertDialog/AlertDialog.js +2 -2
  278. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  279. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  280. package/dist/components/overlays/Dialog/Dialog.js +2 -2
  281. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  282. package/dist/components/overlays/Dialog/DialogForm.js +4 -4
  283. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  284. package/dist/components/overlays/Dialog/context.js +1 -1
  285. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  286. package/dist/components/overlays/Modal/Modal.d.ts +1 -2
  287. package/dist/components/overlays/Modal/Modal.js +1 -1
  288. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  289. package/dist/components/overlays/Modal/Overlay.d.ts +0 -1
  290. package/dist/components/overlays/Modal/Overlay.js +1 -1
  291. package/dist/components/overlays/Modal/Popover.js +1 -1
  292. package/dist/components/overlays/Modal/Tray.js +1 -1
  293. package/dist/components/overlays/Modal/Underlay.js +1 -1
  294. package/dist/components/overlays/Modal/types.d.ts +0 -1
  295. package/dist/components/overlays/Notifications/Notification.js +1 -1
  296. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  297. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  298. package/dist/components/overlays/Notifications/NotificationContext.d.ts +0 -2
  299. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  300. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  301. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  302. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  303. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  304. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  305. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  306. package/dist/components/overlays/Notifications/index.js +1 -1
  307. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  308. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  309. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  310. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  311. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  312. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  313. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  314. package/dist/components/overlays/Toast/index.js +1 -1
  315. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  316. package/dist/components/overlays/Toast/useToast.js +1 -1
  317. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  318. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  319. package/dist/components/overlays/Tooltip/TooltipTrigger.js +3 -2
  320. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  321. package/dist/components/overlays/Tooltip/context.js +1 -1
  322. package/dist/components/portal/Portal.js +1 -1
  323. package/dist/components/portal/PortalProvider.js +1 -1
  324. package/dist/components/portal/index.d.ts +0 -1
  325. package/dist/components/portal/usePortal.js +1 -1
  326. package/dist/components/shared/DraggableCollection.js +1 -1
  327. package/dist/components/shared/InvalidIcon.js +1 -1
  328. package/dist/components/shared/ValidIcon.js +1 -1
  329. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  330. package/dist/components/status/Spin/Cube.js +1 -1
  331. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  332. package/dist/components/status/Spin/Spin.js +1 -1
  333. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  334. package/dist/data/item-themes.js +1 -1
  335. package/dist/data/themes.js +1 -1
  336. package/dist/eslint-plugin/defaults.generated.js +1 -1
  337. package/dist/eslint-plugin/index.js +1 -1
  338. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  339. package/dist/i18n/I18nProvider.js +1 -1
  340. package/dist/i18n/createFormatter.js +1 -1
  341. package/dist/i18n/index.js +1 -1
  342. package/dist/i18n/instance.js +1 -1
  343. package/dist/i18n/locales/de-DE/uikit.js +1 -25
  344. package/dist/i18n/locales/en-US/uikit.js +1 -25
  345. package/dist/i18n/locales/en-US/uikit.json.d.ts +1 -27
  346. package/dist/i18n/locales/es-ES/uikit.js +1 -25
  347. package/dist/i18n/locales/es-MX/uikit.js +1 -25
  348. package/dist/i18n/locales/fr-FR/uikit.js +1 -25
  349. package/dist/i18n/locales/it-IT/uikit.js +1 -25
  350. package/dist/i18n/locales/ja-JP/uikit.js +1 -25
  351. package/dist/i18n/locales/nb-NO/uikit.js +1 -25
  352. package/dist/i18n/locales/pt-BR/uikit.js +1 -25
  353. package/dist/i18n/locales/pt-PT/uikit.js +1 -25
  354. package/dist/i18n/locales/sv-SE/uikit.js +1 -25
  355. package/dist/i18n/locales/vi-VN/uikit.js +1 -25
  356. package/dist/i18n/locales.js +1 -1
  357. package/dist/i18n/useFormatter.js +1 -1
  358. package/dist/i18n/useI18n.js +1 -1
  359. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  360. package/dist/icons/AdjustmentsIcon.js +1 -1
  361. package/dist/icons/AiIcon.js +1 -1
  362. package/dist/icons/AreaChartIcon.js +1 -1
  363. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  364. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  365. package/dist/icons/BackwardIcon.js +1 -1
  366. package/dist/icons/BarChartIcon.js +1 -1
  367. package/dist/icons/BellFilledIcon.js +1 -1
  368. package/dist/icons/BellIcon.js +1 -1
  369. package/dist/icons/BooleanIcon.js +1 -1
  370. package/dist/icons/CalendarEditIcon.js +1 -1
  371. package/dist/icons/CalendarIcon.js +1 -1
  372. package/dist/icons/CaretDownIcon.js +1 -1
  373. package/dist/icons/CaretUpIcon.js +1 -1
  374. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  375. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  376. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  377. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  378. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  379. package/dist/icons/ChartBarLineIcon.js +1 -1
  380. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  381. package/dist/icons/ChartBarStackedIcon.js +1 -1
  382. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  383. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  384. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  385. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  386. package/dist/icons/ChartBubbleIcon.js +1 -1
  387. package/dist/icons/ChartDonut2Icon.js +1 -1
  388. package/dist/icons/ChartFunnelIcon.js +1 -1
  389. package/dist/icons/ChartHeatmapIcon.js +1 -1
  390. package/dist/icons/ChartKPIIcon.js +1 -1
  391. package/dist/icons/ChartPie2Icon.js +1 -1
  392. package/dist/icons/ChartScatterIcon.js +1 -1
  393. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  394. package/dist/icons/CheckCircleIcon.js +1 -1
  395. package/dist/icons/CheckIcon.js +1 -1
  396. package/dist/icons/CircleFilledIcon.js +1 -1
  397. package/dist/icons/ClearIcon.js +1 -1
  398. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  399. package/dist/icons/CloseCircleIcon.js +1 -1
  400. package/dist/icons/CloseIcon.js +1 -1
  401. package/dist/icons/CodeIcon.js +1 -1
  402. package/dist/icons/ColumnTotalIcon.js +1 -1
  403. package/dist/icons/CopyIcon.js +1 -1
  404. package/dist/icons/CountIcon.js +1 -1
  405. package/dist/icons/CubeIcon.js +1 -1
  406. package/dist/icons/CubePauseIcon.js +1 -1
  407. package/dist/icons/CubePlayIcon.js +1 -1
  408. package/dist/icons/CurrencyDollarIcon.js +1 -1
  409. package/dist/icons/DangerIcon.js +1 -1
  410. package/dist/icons/DashboardIcon.js +1 -1
  411. package/dist/icons/DatabaseIcon.js +1 -1
  412. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  413. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  414. package/dist/icons/DirectionIcon.js +1 -1
  415. package/dist/icons/DonutIcon.js +1 -1
  416. package/dist/icons/DownIcon.js +1 -1
  417. package/dist/icons/EditIcon.js +1 -1
  418. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  419. package/dist/icons/ExclamationCircleIcon.js +1 -1
  420. package/dist/icons/ExclamationIcon.js +1 -1
  421. package/dist/icons/EyeIcon.js +1 -1
  422. package/dist/icons/EyeInvisibleIcon.js +1 -1
  423. package/dist/icons/FilterIcon.js +1 -1
  424. package/dist/icons/FolderFilledIcon.js +1 -1
  425. package/dist/icons/FolderIcon.js +1 -1
  426. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  427. package/dist/icons/FolderOpenIcon.js +1 -1
  428. package/dist/icons/ForwardIcon.js +1 -1
  429. package/dist/icons/GripVerticalIcon.js +1 -1
  430. package/dist/icons/HierarchyIcon.js +1 -1
  431. package/dist/icons/HierarchyOpenIcon.js +1 -1
  432. package/dist/icons/Icon.js +1 -1
  433. package/dist/icons/InfoCircleIcon.js +1 -1
  434. package/dist/icons/InfoIcon.js +1 -1
  435. package/dist/icons/KeyIcon.js +1 -1
  436. package/dist/icons/LeftIcon.js +1 -1
  437. package/dist/icons/LineChartIcon.js +1 -1
  438. package/dist/icons/LoadingIcon.js +1 -1
  439. package/dist/icons/LockFilledIcon.js +1 -1
  440. package/dist/icons/LockIcon.js +1 -1
  441. package/dist/icons/MoreIcon.js +1 -1
  442. package/dist/icons/NotAllowedIcon.js +1 -1
  443. package/dist/icons/Number123Icon.js +1 -1
  444. package/dist/icons/NumberIcon.js +1 -1
  445. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  446. package/dist/icons/PauseCircleIcon.js +1 -1
  447. package/dist/icons/PauseIcon.js +1 -1
  448. package/dist/icons/PercentageIcon.js +1 -1
  449. package/dist/icons/PieChartIcon.js +1 -1
  450. package/dist/icons/PipetteIcon.js +1 -1
  451. package/dist/icons/PlayCircleIcon.js +1 -1
  452. package/dist/icons/PlayIcon.js +1 -1
  453. package/dist/icons/PlusIcon.js +1 -1
  454. package/dist/icons/ProgressBarIcon.js +1 -1
  455. package/dist/icons/ReloadIcon.js +1 -1
  456. package/dist/icons/ReportIcon.js +1 -1
  457. package/dist/icons/ReturnIcon.js +1 -1
  458. package/dist/icons/RightIcon.js +1 -1
  459. package/dist/icons/RowTotalsIcon.js +1 -1
  460. package/dist/icons/SchemeIcon.js +1 -1
  461. package/dist/icons/SearchIcon.js +1 -1
  462. package/dist/icons/SemanticQueryIcon.js +1 -1
  463. package/dist/icons/SettingsIcon.js +1 -1
  464. package/dist/icons/ShieldFilledIcon.js +1 -1
  465. package/dist/icons/ShieldIcon.js +1 -1
  466. package/dist/icons/SlashIcon.js +1 -1
  467. package/dist/icons/SparklesIcon.js +1 -1
  468. package/dist/icons/SqlIcon.js +1 -1
  469. package/dist/icons/StatsIcon.js +1 -1
  470. package/dist/icons/StopIcon.js +1 -1
  471. package/dist/icons/StringIcon.js +1 -1
  472. package/dist/icons/SubtotalsIcon.js +1 -1
  473. package/dist/icons/SwitchIcon.js +1 -1
  474. package/dist/icons/TableIcon.js +1 -1
  475. package/dist/icons/ThumbsDownIcon.js +1 -1
  476. package/dist/icons/ThumbsUpIcon.js +1 -1
  477. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  478. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  479. package/dist/icons/ThunderboltIcon.js +1 -1
  480. package/dist/icons/TimeIcon.js +1 -1
  481. package/dist/icons/TrashIcon.js +1 -1
  482. package/dist/icons/UnlockIcon.js +1 -1
  483. package/dist/icons/UpIcon.js +1 -1
  484. package/dist/icons/UserGroupIcon.js +1 -1
  485. package/dist/icons/UserIcon.js +1 -1
  486. package/dist/icons/UserLockIcon.js +1 -1
  487. package/dist/icons/ViewIcon.js +1 -1
  488. package/dist/icons/WarningFilledIcon.js +1 -1
  489. package/dist/icons/WarningIcon.js +1 -1
  490. package/dist/icons/index.d.ts +0 -8
  491. package/dist/icons/wrap-icon.js +1 -1
  492. package/dist/index.d.ts +1 -15
  493. package/dist/index.js +49 -61
  494. package/dist/index.js.map +1 -1
  495. package/dist/probe/canonicalize.js +1 -1
  496. package/dist/probe/css.js +1 -1
  497. package/dist/probe/index.js +1 -1
  498. package/dist/provider.js +1 -1
  499. package/dist/providers/TrackingProvider.js +1 -1
  500. package/dist/providers/navigationAdapter.default.js +1 -1
  501. package/dist/tokens/all-tokens.js +2 -2
  502. package/dist/tokens/base.js +1 -1
  503. package/dist/tokens/color-seed.js +1 -1
  504. package/dist/tokens/color-theme.js +1 -1
  505. package/dist/tokens/colors.js +2 -2
  506. package/dist/tokens/layout.js +1 -1
  507. package/dist/tokens/lazy-styles.js +1 -1
  508. package/dist/tokens/palette-config.js +1 -1
  509. package/dist/tokens/palette.js +2 -2
  510. package/dist/tokens/resolve.js +1 -1
  511. package/dist/tokens/shadows.js +1 -1
  512. package/dist/tokens/sizes.js +1 -1
  513. package/dist/tokens/spacing.js +1 -1
  514. package/dist/tokens/typography.js +1 -1
  515. package/dist/utils/ResizeSensor.js +1 -1
  516. package/dist/utils/is-dev-env.js +66 -8
  517. package/dist/utils/is-dev-env.js.map +1 -1
  518. package/dist/utils/modules.js +1 -1
  519. package/dist/utils/promise.js +1 -1
  520. package/dist/utils/raf.js +1 -1
  521. package/dist/utils/random.js +1 -1
  522. package/dist/utils/range.js +1 -1
  523. package/dist/utils/react/RenderCache.js +1 -1
  524. package/dist/utils/react/Slots.js +1 -1
  525. package/dist/utils/react/chain.js +1 -1
  526. package/dist/utils/react/disabledProps.js +1 -1
  527. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  528. package/dist/utils/react/index.js +1 -1
  529. package/dist/utils/react/interactions.js +1 -1
  530. package/dist/utils/react/isTextOnly.js +1 -1
  531. package/dist/utils/react/mapProps.js +1 -1
  532. package/dist/utils/react/mergeProps.js +1 -1
  533. package/dist/utils/react/nullableValue.js +1 -1
  534. package/dist/utils/react/resolveIcon.js +1 -1
  535. package/dist/utils/react/sharedStore.js +3 -2
  536. package/dist/utils/react/sharedStore.js.map +1 -1
  537. package/dist/utils/react/useBufferedValue.js +1 -1
  538. package/dist/utils/react/useCombinedRefs.js +1 -1
  539. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  540. package/dist/utils/react/useEventBus.js +1 -1
  541. package/dist/utils/react/useId.js +1 -1
  542. package/dist/utils/react/useIsDarwin.js +1 -1
  543. package/dist/utils/react/useKeySymbols.js +1 -1
  544. package/dist/utils/react/useLayoutEffect.js +1 -1
  545. package/dist/utils/react/useLocalStorage.js +1 -1
  546. package/dist/utils/react/useMergeStyles.js +1 -1
  547. package/dist/utils/react/usePopoverSync.js +1 -1
  548. package/dist/utils/react/useQaProps.js +1 -1
  549. package/dist/utils/react/useScheme.js +1 -1
  550. package/dist/utils/react/useViewportSize.js +1 -1
  551. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  552. package/dist/utils/selection.js +1 -1
  553. package/dist/utils/styles.js +1 -1
  554. package/dist/utils/tree.js +1 -1
  555. package/dist/utils/warnings.js +5 -2
  556. package/dist/utils/warnings.js.map +1 -1
  557. package/dist/version.js +2 -2
  558. package/package.json +1 -1
  559. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +0 -2
  560. package/dist/components/layout/Dashboard/Dashboard.d.ts +0 -19
  561. package/dist/components/layout/Dashboard/Dashboard.js +0 -188
  562. package/dist/components/layout/Dashboard/Dashboard.js.map +0 -1
  563. package/dist/components/layout/Dashboard/DashboardContainer.d.ts +0 -13
  564. package/dist/components/layout/Dashboard/DashboardContainer.js +0 -272
  565. package/dist/components/layout/Dashboard/DashboardContainer.js.map +0 -1
  566. package/dist/components/layout/Dashboard/DashboardContainerContent.js +0 -405
  567. package/dist/components/layout/Dashboard/DashboardContainerContent.js.map +0 -1
  568. package/dist/components/layout/Dashboard/DashboardNodeActions.js +0 -228
  569. package/dist/components/layout/Dashboard/DashboardNodeActions.js.map +0 -1
  570. package/dist/components/layout/Dashboard/DashboardTabs.d.ts +0 -14
  571. package/dist/components/layout/Dashboard/DashboardTabs.js +0 -85
  572. package/dist/components/layout/Dashboard/DashboardTabs.js.map +0 -1
  573. package/dist/components/layout/Dashboard/DashboardWidget.d.ts +0 -9
  574. package/dist/components/layout/Dashboard/DashboardWidget.js +0 -196
  575. package/dist/components/layout/Dashboard/DashboardWidget.js.map +0 -1
  576. package/dist/components/layout/Dashboard/context.js +0 -37
  577. package/dist/components/layout/Dashboard/context.js.map +0 -1
  578. package/dist/components/layout/Dashboard/drag.js +0 -481
  579. package/dist/components/layout/Dashboard/drag.js.map +0 -1
  580. package/dist/components/layout/Dashboard/index.d.ts +0 -6
  581. package/dist/components/layout/Dashboard/occupancy.js +0 -240
  582. package/dist/components/layout/Dashboard/occupancy.js.map +0 -1
  583. package/dist/components/layout/Dashboard/placement.js +0 -94
  584. package/dist/components/layout/Dashboard/placement.js.map +0 -1
  585. package/dist/components/layout/Dashboard/styles.js +0 -344
  586. package/dist/components/layout/Dashboard/styles.js.map +0 -1
  587. package/dist/components/layout/Dashboard/types.d.ts +0 -220
  588. package/dist/components/layout/Dashboard/use-dashboard-gestures.js +0 -321
  589. package/dist/components/layout/Dashboard/use-dashboard-gestures.js.map +0 -1
  590. package/dist/components/layout/Dashboard/use-dashboard-node.js +0 -93
  591. package/dist/components/layout/Dashboard/use-dashboard-node.js.map +0 -1
  592. package/dist/components/portal/PortalProvider.d.ts +0 -2
  593. package/dist/icons/ArrowsHorizontalIcon.d.ts +0 -12
  594. package/dist/icons/ArrowsHorizontalIcon.js +0 -11
  595. package/dist/icons/ArrowsHorizontalIcon.js.map +0 -1
  596. package/dist/icons/ArrowsInHorizontalIcon.d.ts +0 -20
  597. package/dist/icons/ArrowsInHorizontalIcon.js +0 -31
  598. package/dist/icons/ArrowsInHorizontalIcon.js.map +0 -1
  599. package/dist/icons/ArrowsInVerticalIcon.d.ts +0 -13
  600. package/dist/icons/ArrowsInVerticalIcon.js +0 -24
  601. package/dist/icons/ArrowsInVerticalIcon.js.map +0 -1
  602. package/dist/icons/ArrowsMaximizeIcon.d.ts +0 -12
  603. package/dist/icons/ArrowsMaximizeIcon.js +0 -11
  604. package/dist/icons/ArrowsMaximizeIcon.js.map +0 -1
  605. package/dist/icons/ArrowsMinimizeIcon.d.ts +0 -12
  606. package/dist/icons/ArrowsMinimizeIcon.js +0 -11
  607. package/dist/icons/ArrowsMinimizeIcon.js.map +0 -1
  608. package/dist/icons/ArrowsVerticalIcon.d.ts +0 -12
  609. package/dist/icons/ArrowsVerticalIcon.js +0 -11
  610. package/dist/icons/ArrowsVerticalIcon.js.map +0 -1
  611. package/dist/icons/CirclePlusIcon.d.ts +0 -12
  612. package/dist/icons/CirclePlusIcon.js +0 -11
  613. package/dist/icons/CirclePlusIcon.js.map +0 -1
  614. package/dist/icons/MaximizeIcon.d.ts +0 -12
  615. package/dist/icons/MaximizeIcon.js +0 -11
  616. package/dist/icons/MaximizeIcon.js.map +0 -1
  617. package/docs/components/layout/Dashboard.md +0 -409
@@ -1,240 +0,0 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e056095 | Cube Dev Team */
2
- import { clamp, clampRows, clampSpan, normalizePlacement, placementsOverlap } from "./placement.js";
3
- import { Children, isValidElement } from "react";
4
-
5
- //#region src/components/layout/Dashboard/occupancy.ts
6
- function getDashboardChildPlacements(kind, children, columns, rows) {
7
- const childPlacements = Children.toArray(children).flatMap((child) => {
8
- if (!isValidElement(child)) return [];
9
- const props = child.props;
10
- if (props["data-dashboard-add-slot"] !== void 0) return [];
11
- return [normalizePlacement(props, columns, rows)];
12
- });
13
- if (kind === "horizontal-stack") {
14
- let nextColumn = 0;
15
- return childPlacements.map((placement) => {
16
- const next = {
17
- ...placement,
18
- column: nextColumn,
19
- row: 0
20
- };
21
- nextColumn += placement.columns;
22
- return next;
23
- });
24
- }
25
- if (kind === "vertical-stack") {
26
- let nextRow = 0;
27
- return childPlacements.map((placement) => {
28
- const next = {
29
- ...placement,
30
- column: 0,
31
- row: nextRow
32
- };
33
- nextRow += placement.rows;
34
- return next;
35
- });
36
- }
37
- return childPlacements;
38
- }
39
- function getDashboardFreeCells(kind, placements, columns, rows) {
40
- if (kind === "horizontal-stack") {
41
- const column = placements.reduce((end, placement) => Math.max(end, placement.column + placement.columns), 0);
42
- return column < columns ? [{
43
- column,
44
- row: 0
45
- }] : [];
46
- }
47
- if (kind === "vertical-stack") {
48
- const row = placements.reduce((end, placement) => Math.max(end, placement.row + placement.rows), 0);
49
- return row < rows ? [{
50
- column: 0,
51
- row
52
- }] : [];
53
- }
54
- if (kind === "tabs") return placements.length === 0 ? [{
55
- column: 0,
56
- row: 0
57
- }] : [];
58
- const cells = [];
59
- for (let row = 0; row < rows; row += 1) for (let column = 0; column < columns; column += 1) if (!placements.some((placement) => column >= placement.column && column < placement.column + placement.columns && row >= placement.row && row < placement.row + placement.rows)) cells.push({
60
- column,
61
- row
62
- });
63
- return cells;
64
- }
65
- function getDashboardAddPlacement(definition, cell, kind, placements, parentColumns, parentRows, parentDepth, region) {
66
- if (definition.isDisabled || kind === "tabs" && (!definition.kind || definition.kind === "widget" || definition.kind === "tabs") || definition.kind && definition.kind !== "widget" && parentDepth >= 3) return null;
67
- const minColumns = clampSpan(definition.minColumns, 1);
68
- const maxColumns = Math.max(minColumns, clampSpan(definition.maxColumns, parentColumns));
69
- const minRows = clampRows(definition.minRows, 1);
70
- const maxRows = Math.max(minRows, clampRows(definition.maxRows, parentRows));
71
- let resolvedColumns = clamp(clampSpan(definition.defaultColumns, minColumns), minColumns, maxColumns);
72
- let resolvedRows = clamp(clampRows(definition.defaultRows, minRows), minRows, maxRows);
73
- if (kind === "horizontal-stack") resolvedRows = Math.min(parentRows, maxRows);
74
- else if (kind === "vertical-stack") resolvedColumns = Math.min(parentColumns, maxColumns);
75
- else if (kind === "tabs") {
76
- resolvedColumns = parentColumns;
77
- resolvedRows = Math.min(parentRows, maxRows);
78
- }
79
- if (region) {
80
- if (region.columns < minColumns || region.columns > maxColumns || region.rows < minRows || region.rows > maxRows) return null;
81
- resolvedColumns = region.columns;
82
- resolvedRows = region.rows;
83
- }
84
- if (resolvedColumns < minColumns || resolvedRows < minRows || resolvedColumns > parentColumns || resolvedRows > parentRows) return null;
85
- const origin = region ?? cell;
86
- const placement = {
87
- column: kind === "vertical-stack" || kind === "tabs" ? 0 : origin.column,
88
- row: kind === "horizontal-stack" || kind === "tabs" ? 0 : origin.row,
89
- columns: resolvedColumns,
90
- rows: resolvedRows
91
- };
92
- if (placement.column + placement.columns > parentColumns || placement.row + placement.rows > parentRows) return null;
93
- return placements.some((occupied) => {
94
- if (kind === "horizontal-stack") return !(placement.column + placement.columns <= occupied.column || occupied.column + occupied.columns <= placement.column);
95
- if (kind === "vertical-stack") return !(placement.row + placement.rows <= occupied.row || occupied.row + occupied.rows <= placement.row);
96
- return placementsOverlap(placement, occupied);
97
- }) ? null : placement;
98
- }
99
- /**
100
- * The anchor→pointer rectangle, trimmed so that every cell inside it is free.
101
- *
102
- * The region grows *from* the anchor, so the trim walks outward and stops at the
103
- * first obstruction rather than jumping over it — a region straddling an
104
- * occupied cell could never be filled by a single item. Width is settled first,
105
- * along the anchor's own row, and the height then only extends while every
106
- * column of that width stays free, which keeps the result a rectangle without
107
- * making the user's dominant drag axis lose to their incidental one.
108
- */
109
- function getDashboardFreeRegion(anchor, cell, freeCells, columns, rows) {
110
- const free = new Set(freeCells.map(({ column, row }) => `${column}:${row}`));
111
- const isFree = (column, row) => free.has(`${column}:${row}`);
112
- const reach = (from, to, limit, canTake) => {
113
- const step = to >= from ? 1 : -1;
114
- let last = from;
115
- for (let value = from + step; step > 0 ? value <= to : value >= to;) {
116
- if (value < 0 || value >= limit || !canTake(value)) break;
117
- last = value;
118
- value += step;
119
- }
120
- return last;
121
- };
122
- const lastColumn = reach(anchor.column, cell.column, columns, (column) => isFree(column, anchor.row));
123
- const column = Math.min(anchor.column, lastColumn);
124
- const spannedColumns = Math.abs(lastColumn - anchor.column) + 1;
125
- const lastRow = reach(anchor.row, cell.row, rows, (row) => {
126
- for (let offset = 0; offset < spannedColumns; offset += 1) if (!isFree(column + offset, row)) return false;
127
- return true;
128
- });
129
- return {
130
- column,
131
- row: Math.min(anchor.row, lastRow),
132
- columns: spannedColumns,
133
- rows: Math.abs(lastRow - anchor.row) + 1
134
- };
135
- }
136
- const LAYOUT_CONTAINER_DISPLAY_NAMES = new Set([
137
- "DashboardGrid",
138
- "DashboardHorizontalStack",
139
- "DashboardVerticalStack",
140
- "DashboardTabs"
141
- ]);
142
- /**
143
- * Identity by `displayName` rather than by reference. A duplicated module
144
- * instance — two copies of Dashboard in one graph, or an element created against
145
- * a separately bundled re-export — is a different function object for the same
146
- * component, and a reference check silently reports depth 0 for it. Depth 0 then
147
- * widens the drop guard, the tree accepts a fourth nesting level, and the commit
148
- * throws during render instead of being rejected during the drag.
149
- */
150
- function getDashboardChildDisplayName(child) {
151
- if (!isValidElement(child)) return void 0;
152
- return child.type.displayName;
153
- }
154
- function getDashboardDescendantContainerDepth(children) {
155
- return Children.toArray(children).reduce((maximumDepth, child) => {
156
- const displayName = getDashboardChildDisplayName(child);
157
- if (!displayName || !isValidElement(child)) return maximumDepth;
158
- const childChildren = child.props.children;
159
- if (LAYOUT_CONTAINER_DISPLAY_NAMES.has(displayName)) return Math.max(maximumDepth, 1 + getDashboardDescendantContainerDepth(childChildren));
160
- if (displayName === "DashboardTab") return Math.max(maximumDepth, getDashboardDescendantContainerDepth(childChildren));
161
- return maximumDepth;
162
- }, 0);
163
- }
164
- function getContainerChildMinimum(kind, children, capacityColumns, capacityRows) {
165
- const placements = (kind === "tabs" ? Children.toArray(children).flatMap((tab) => {
166
- if (!isValidElement(tab)) return [];
167
- return Children.toArray(tab.props.children);
168
- }) : Children.toArray(children)).flatMap((child) => {
169
- if (!isValidElement(child)) return [];
170
- const props = child.props;
171
- if (props["data-dashboard-add-slot"] !== void 0) return [];
172
- return [normalizePlacement(props, capacityColumns, capacityRows)];
173
- });
174
- if (placements.length === 0) return {
175
- columns: 1,
176
- rows: 1
177
- };
178
- if (kind === "horizontal-stack") return {
179
- columns: Math.min(capacityColumns, placements.reduce((total, placement) => total + placement.columns, 0)),
180
- rows: Math.min(capacityRows, Math.max(...placements.map((placement) => placement.rows)))
181
- };
182
- if (kind === "vertical-stack") return {
183
- columns: Math.min(capacityColumns, Math.max(...placements.map((placement) => placement.columns))),
184
- rows: Math.min(capacityRows, placements.reduce((total, placement) => total + placement.rows, 0))
185
- };
186
- return {
187
- columns: Math.min(capacityColumns, Math.max(...placements.map((placement) => placement.column + placement.columns))),
188
- rows: Math.min(capacityRows, Math.max(...placements.map((placement) => placement.row + placement.rows)))
189
- };
190
- }
191
- function hasContainerLayoutChildren(kind, children) {
192
- return (kind === "tabs" ? Children.toArray(children).flatMap((tab) => {
193
- if (!isValidElement(tab)) return [];
194
- return Children.toArray(tab.props.children);
195
- }) : Children.toArray(children)).some((child) => {
196
- if (!isValidElement(child)) return child !== null && child !== void 0;
197
- return child.props["data-dashboard-add-slot"] === void 0;
198
- });
199
- }
200
- /**
201
- * The largest box a node can grow into from its own origin.
202
- *
203
- * Scans right then down from the origin, shrinking the row budget as an occupied
204
- * column is met — the standard largest-rectangle-from-a-corner walk. Used by the
205
- * "Fill available space" command and to cap the press-and-drag add region.
206
- *
207
- * `Board/grid-core` ships `maxFreeRectAt`, which does exactly this and is already
208
- * in the bundle; Dashboard keeps its own placement maths for now, so this stays
209
- * local until that engine is adopted wholesale.
210
- */
211
- function getLargestFreeRect(origin, occupied, columns, rows, maxColumns = columns, maxRows = rows) {
212
- const isFree = (column, row) => !occupied.some((placement) => column >= placement.column && column < placement.column + placement.columns && row >= placement.row && row < placement.row + placement.rows);
213
- const columnLimit = Math.min(columns, origin.column + maxColumns);
214
- const rowLimit = Math.min(rows, origin.row + maxRows);
215
- let best = {
216
- column: origin.column,
217
- row: origin.row,
218
- columns: 1,
219
- rows: 1
220
- };
221
- let rowBudget = rowLimit - origin.row;
222
- for (let column = origin.column; column < columnLimit; column += 1) {
223
- let reach = 0;
224
- while (reach < rowBudget && isFree(column, origin.row + reach)) reach += 1;
225
- if (reach === 0) break;
226
- rowBudget = Math.min(rowBudget, reach);
227
- const candidate = {
228
- column: origin.column,
229
- row: origin.row,
230
- columns: column - origin.column + 1,
231
- rows: rowBudget
232
- };
233
- if (candidate.columns * candidate.rows > best.columns * best.rows) best = candidate;
234
- }
235
- return best;
236
- }
237
-
238
- //#endregion
239
- export { getContainerChildMinimum, getDashboardAddPlacement, getDashboardChildPlacements, getDashboardDescendantContainerDepth, getDashboardFreeCells, getDashboardFreeRegion, getLargestFreeRect, hasContainerLayoutChildren };
240
- //# sourceMappingURL=occupancy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"occupancy.js","names":[],"sources":["../../../../src/components/layout/Dashboard/occupancy.ts"],"sourcesContent":["import { Children, isValidElement } from 'react';\n\nimport {\n clamp,\n clampRows,\n clampSpan,\n normalizePlacement,\n placementsOverlap,\n} from './placement';\n\nimport type { ReactNode } from 'react';\nimport type {\n DashboardAddItemDefinition,\n DashboardContainerKind,\n DashboardPlacement,\n DashboardPlacementProps,\n} from './types';\n\nexport interface DashboardFreeCell {\n column: number;\n row: number;\n}\n\nexport function getDashboardChildPlacements(\n kind: DashboardContainerKind,\n children: ReactNode,\n columns: number,\n rows: number,\n): DashboardPlacement[] {\n const childPlacements = Children.toArray(children).flatMap((child) => {\n if (!isValidElement(child)) return [];\n const props = child.props as DashboardPlacementProps & {\n 'data-dashboard-add-slot'?: unknown;\n };\n if (props['data-dashboard-add-slot'] !== undefined) return [];\n\n return [normalizePlacement(props, columns, rows)];\n });\n\n if (kind === 'horizontal-stack') {\n let nextColumn = 0;\n\n return childPlacements.map((placement) => {\n const next = { ...placement, column: nextColumn, row: 0 };\n nextColumn += placement.columns;\n\n return next;\n });\n }\n\n if (kind === 'vertical-stack') {\n let nextRow = 0;\n\n return childPlacements.map((placement) => {\n const next = { ...placement, column: 0, row: nextRow };\n nextRow += placement.rows;\n\n return next;\n });\n }\n\n return childPlacements;\n}\n\nexport function getDashboardFreeCells(\n kind: DashboardContainerKind,\n placements: DashboardPlacement[],\n columns: number,\n rows: number,\n): DashboardFreeCell[] {\n if (kind === 'horizontal-stack') {\n const column = placements.reduce(\n (end, placement) => Math.max(end, placement.column + placement.columns),\n 0,\n );\n\n return column < columns ? [{ column, row: 0 }] : [];\n }\n\n if (kind === 'vertical-stack') {\n const row = placements.reduce(\n (end, placement) => Math.max(end, placement.row + placement.rows),\n 0,\n );\n\n return row < rows ? [{ column: 0, row }] : [];\n }\n\n if (kind === 'tabs') {\n return placements.length === 0 ? [{ column: 0, row: 0 }] : [];\n }\n\n const cells: DashboardFreeCell[] = [];\n\n for (let row = 0; row < rows; row += 1) {\n for (let column = 0; column < columns; column += 1) {\n const isOccupied = placements.some(\n (placement) =>\n column >= placement.column &&\n column < placement.column + placement.columns &&\n row >= placement.row &&\n row < placement.row + placement.rows,\n );\n\n if (!isOccupied) cells.push({ column, row });\n }\n }\n\n return cells;\n}\n\nexport function getDashboardAddPlacement(\n definition: DashboardAddItemDefinition,\n cell: DashboardFreeCell,\n kind: DashboardContainerKind,\n placements: DashboardPlacement[],\n parentColumns: number,\n parentRows: number,\n parentDepth: number,\n region?: DashboardPlacement,\n): DashboardPlacement | null {\n if (\n definition.isDisabled ||\n (kind === 'tabs' &&\n (!definition.kind ||\n definition.kind === 'widget' ||\n definition.kind === 'tabs')) ||\n (definition.kind && definition.kind !== 'widget' && parentDepth >= 3)\n ) {\n return null;\n }\n\n const minColumns = clampSpan(definition.minColumns, 1);\n const maxColumns = Math.max(\n minColumns,\n clampSpan(definition.maxColumns, parentColumns),\n );\n const minRows = clampRows(definition.minRows, 1);\n const maxRows = Math.max(minRows, clampRows(definition.maxRows, parentRows));\n let resolvedColumns = clamp(\n clampSpan(definition.defaultColumns, minColumns),\n minColumns,\n maxColumns,\n );\n let resolvedRows = clamp(\n clampRows(definition.defaultRows, minRows),\n minRows,\n maxRows,\n );\n\n if (kind === 'horizontal-stack') {\n resolvedRows = Math.min(parentRows, maxRows);\n } else if (kind === 'vertical-stack') {\n resolvedColumns = Math.min(parentColumns, maxColumns);\n } else if (kind === 'tabs') {\n resolvedColumns = parentColumns;\n resolvedRows = Math.min(parentRows, maxRows);\n }\n\n // A claimed region is a demand, not a hint: the item has to be able to *be*\n // that size, or it does not belong in this region's menu at all. Without a\n // region the definition's own defaults grow from the cell, which is what a\n // plain click on the add button has always done.\n if (region) {\n if (\n region.columns < minColumns ||\n region.columns > maxColumns ||\n region.rows < minRows ||\n region.rows > maxRows\n ) {\n return null;\n }\n\n resolvedColumns = region.columns;\n resolvedRows = region.rows;\n }\n\n if (\n resolvedColumns < minColumns ||\n resolvedRows < minRows ||\n resolvedColumns > parentColumns ||\n resolvedRows > parentRows\n ) {\n return null;\n }\n\n const origin = region ?? cell;\n const placement: DashboardPlacement = {\n column: kind === 'vertical-stack' || kind === 'tabs' ? 0 : origin.column,\n row: kind === 'horizontal-stack' || kind === 'tabs' ? 0 : origin.row,\n columns: resolvedColumns,\n rows: resolvedRows,\n };\n\n if (\n placement.column + placement.columns > parentColumns ||\n placement.row + placement.rows > parentRows\n ) {\n return null;\n }\n\n const isBlocked = placements.some((occupied) => {\n if (kind === 'horizontal-stack') {\n return !(\n placement.column + placement.columns <= occupied.column ||\n occupied.column + occupied.columns <= placement.column\n );\n }\n\n if (kind === 'vertical-stack') {\n return !(\n placement.row + placement.rows <= occupied.row ||\n occupied.row + occupied.rows <= placement.row\n );\n }\n\n return placementsOverlap(placement, occupied);\n });\n\n return isBlocked ? null : placement;\n}\n\n/**\n * The anchor→pointer rectangle, trimmed so that every cell inside it is free.\n *\n * The region grows *from* the anchor, so the trim walks outward and stops at the\n * first obstruction rather than jumping over it — a region straddling an\n * occupied cell could never be filled by a single item. Width is settled first,\n * along the anchor's own row, and the height then only extends while every\n * column of that width stays free, which keeps the result a rectangle without\n * making the user's dominant drag axis lose to their incidental one.\n */\nexport function getDashboardFreeRegion(\n anchor: DashboardFreeCell,\n cell: DashboardFreeCell,\n freeCells: readonly DashboardFreeCell[],\n columns: number,\n rows: number,\n): DashboardPlacement {\n const free = new Set(freeCells.map(({ column, row }) => `${column}:${row}`));\n const isFree = (column: number, row: number) => free.has(`${column}:${row}`);\n const reach = (\n from: number,\n to: number,\n limit: number,\n canTake: (value: number) => boolean,\n ) => {\n const step = to >= from ? 1 : -1;\n let last = from;\n\n for (let value = from + step; step > 0 ? value <= to : value >= to; ) {\n if (value < 0 || value >= limit || !canTake(value)) break;\n last = value;\n value += step;\n }\n\n return last;\n };\n\n const lastColumn = reach(anchor.column, cell.column, columns, (column) =>\n isFree(column, anchor.row),\n );\n const column = Math.min(anchor.column, lastColumn);\n const spannedColumns = Math.abs(lastColumn - anchor.column) + 1;\n const lastRow = reach(anchor.row, cell.row, rows, (row) => {\n for (let offset = 0; offset < spannedColumns; offset += 1) {\n if (!isFree(column + offset, row)) return false;\n }\n\n return true;\n });\n\n return {\n column,\n row: Math.min(anchor.row, lastRow),\n columns: spannedColumns,\n rows: Math.abs(lastRow - anchor.row) + 1,\n };\n}\n\nexport interface DashboardChildMinimum {\n columns: number;\n rows: number;\n}\n\nconst LAYOUT_CONTAINER_DISPLAY_NAMES = new Set([\n 'DashboardGrid',\n 'DashboardHorizontalStack',\n 'DashboardVerticalStack',\n 'DashboardTabs',\n]);\n\n/**\n * Identity by `displayName` rather than by reference. A duplicated module\n * instance — two copies of Dashboard in one graph, or an element created against\n * a separately bundled re-export — is a different function object for the same\n * component, and a reference check silently reports depth 0 for it. Depth 0 then\n * widens the drop guard, the tree accepts a fourth nesting level, and the commit\n * throws during render instead of being rejected during the drag.\n */\nfunction getDashboardChildDisplayName(child: ReactNode): string | undefined {\n if (!isValidElement(child)) return undefined;\n\n return (child.type as { displayName?: string }).displayName;\n}\n\nexport function getDashboardDescendantContainerDepth(\n children: ReactNode,\n): number {\n return Children.toArray(children).reduce<number>((maximumDepth, child) => {\n const displayName = getDashboardChildDisplayName(child);\n if (!displayName || !isValidElement(child)) return maximumDepth;\n const childChildren = (child.props as { children?: ReactNode }).children;\n\n if (LAYOUT_CONTAINER_DISPLAY_NAMES.has(displayName)) {\n return Math.max(\n maximumDepth,\n 1 + getDashboardDescendantContainerDepth(childChildren),\n );\n }\n\n if (displayName === 'DashboardTab') {\n return Math.max(\n maximumDepth,\n getDashboardDescendantContainerDepth(childChildren),\n );\n }\n\n return maximumDepth;\n }, 0);\n}\n\nexport function getContainerChildMinimum(\n kind: DashboardContainerKind,\n children: ReactNode,\n capacityColumns: number,\n capacityRows: number,\n): DashboardChildMinimum {\n const directChildren =\n kind === 'tabs'\n ? Children.toArray(children).flatMap((tab) => {\n if (!isValidElement(tab)) return [];\n return Children.toArray(\n (tab.props as { children?: ReactNode }).children,\n );\n })\n : Children.toArray(children);\n const placements = directChildren.flatMap((child) => {\n if (!isValidElement(child)) return [];\n const props = child.props as DashboardPlacementProps & {\n 'data-dashboard-add-slot'?: unknown;\n };\n if (props['data-dashboard-add-slot'] !== undefined) return [];\n\n return [normalizePlacement(props, capacityColumns, capacityRows)];\n });\n\n if (placements.length === 0) return { columns: 1, rows: 1 };\n\n if (kind === 'horizontal-stack') {\n return {\n columns: Math.min(\n capacityColumns,\n placements.reduce((total, placement) => total + placement.columns, 0),\n ),\n rows: Math.min(\n capacityRows,\n Math.max(...placements.map((placement) => placement.rows)),\n ),\n };\n }\n\n if (kind === 'vertical-stack') {\n return {\n columns: Math.min(\n capacityColumns,\n Math.max(...placements.map((placement) => placement.columns)),\n ),\n rows: Math.min(\n capacityRows,\n placements.reduce((total, placement) => total + placement.rows, 0),\n ),\n };\n }\n\n return {\n columns: Math.min(\n capacityColumns,\n Math.max(\n ...placements.map((placement) => placement.column + placement.columns),\n ),\n ),\n rows: Math.min(\n capacityRows,\n Math.max(\n ...placements.map((placement) => placement.row + placement.rows),\n ),\n ),\n };\n}\n\nexport function hasContainerLayoutChildren(\n kind: DashboardContainerKind,\n children: ReactNode,\n): boolean {\n const directChildren =\n kind === 'tabs'\n ? Children.toArray(children).flatMap((tab) => {\n if (!isValidElement(tab)) return [];\n return Children.toArray(\n (tab.props as { children?: ReactNode }).children,\n );\n })\n : Children.toArray(children);\n\n return directChildren.some((child) => {\n if (!isValidElement(child)) return child !== null && child !== undefined;\n const props = child.props as { 'data-dashboard-add-slot'?: unknown };\n\n return props['data-dashboard-add-slot'] === undefined;\n });\n}\n\n/**\n * The largest box a node can grow into from its own origin.\n *\n * Scans right then down from the origin, shrinking the row budget as an occupied\n * column is met — the standard largest-rectangle-from-a-corner walk. Used by the\n * \"Fill available space\" command and to cap the press-and-drag add region.\n *\n * `Board/grid-core` ships `maxFreeRectAt`, which does exactly this and is already\n * in the bundle; Dashboard keeps its own placement maths for now, so this stays\n * local until that engine is adopted wholesale.\n */\nexport function getLargestFreeRect(\n origin: DashboardFreeCell,\n occupied: readonly DashboardPlacement[],\n columns: number,\n rows: number,\n maxColumns = columns,\n maxRows = rows,\n): DashboardPlacement {\n const isFree = (column: number, row: number) =>\n !occupied.some(\n (placement) =>\n column >= placement.column &&\n column < placement.column + placement.columns &&\n row >= placement.row &&\n row < placement.row + placement.rows,\n );\n\n const columnLimit = Math.min(columns, origin.column + maxColumns);\n const rowLimit = Math.min(rows, origin.row + maxRows);\n let best: DashboardPlacement = {\n column: origin.column,\n row: origin.row,\n columns: 1,\n rows: 1,\n };\n let rowBudget = rowLimit - origin.row;\n\n for (let column = origin.column; column < columnLimit; column += 1) {\n let reach = 0;\n while (reach < rowBudget && isFree(column, origin.row + reach)) reach += 1;\n if (reach === 0) break;\n\n rowBudget = Math.min(rowBudget, reach);\n const candidate: DashboardPlacement = {\n column: origin.column,\n row: origin.row,\n columns: column - origin.column + 1,\n rows: rowBudget,\n };\n\n if (candidate.columns * candidate.rows > best.columns * best.rows) {\n best = candidate;\n }\n }\n\n return best;\n}\n"],"mappings":";;;;;AAuBA,SAAgB,4BACd,MACA,UACA,SACA,MACsB;CACtB,MAAM,kBAAkB,SAAS,QAAQ,SAAS,CAAC,SAAS,UAAU;AACpE,MAAI,CAAC,eAAe,MAAM,CAAE,QAAO,EAAE;EACrC,MAAM,QAAQ,MAAM;AAGpB,MAAI,MAAM,+BAA+B,OAAW,QAAO,EAAE;AAE7D,SAAO,CAAC,mBAAmB,OAAO,SAAS,KAAK,CAAC;GACjD;AAEF,KAAI,SAAS,oBAAoB;EAC/B,IAAI,aAAa;AAEjB,SAAO,gBAAgB,KAAK,cAAc;GACxC,MAAM,OAAO;IAAE,GAAG;IAAW,QAAQ;IAAY,KAAK;IAAG;AACzD,iBAAc,UAAU;AAExB,UAAO;IACP;;AAGJ,KAAI,SAAS,kBAAkB;EAC7B,IAAI,UAAU;AAEd,SAAO,gBAAgB,KAAK,cAAc;GACxC,MAAM,OAAO;IAAE,GAAG;IAAW,QAAQ;IAAG,KAAK;IAAS;AACtD,cAAW,UAAU;AAErB,UAAO;IACP;;AAGJ,QAAO;;AAGT,SAAgB,sBACd,MACA,YACA,SACA,MACqB;AACrB,KAAI,SAAS,oBAAoB;EAC/B,MAAM,SAAS,WAAW,QACvB,KAAK,cAAc,KAAK,IAAI,KAAK,UAAU,SAAS,UAAU,QAAQ,EACvE,EACD;AAED,SAAO,SAAS,UAAU,CAAC;GAAE;GAAQ,KAAK;GAAG,CAAC,GAAG,EAAE;;AAGrD,KAAI,SAAS,kBAAkB;EAC7B,MAAM,MAAM,WAAW,QACpB,KAAK,cAAc,KAAK,IAAI,KAAK,UAAU,MAAM,UAAU,KAAK,EACjE,EACD;AAED,SAAO,MAAM,OAAO,CAAC;GAAE,QAAQ;GAAG;GAAK,CAAC,GAAG,EAAE;;AAG/C,KAAI,SAAS,OACX,QAAO,WAAW,WAAW,IAAI,CAAC;EAAE,QAAQ;EAAG,KAAK;EAAG,CAAC,GAAG,EAAE;CAG/D,MAAM,QAA6B,EAAE;AAErC,MAAK,IAAI,MAAM,GAAG,MAAM,MAAM,OAAO,EACnC,MAAK,IAAI,SAAS,GAAG,SAAS,SAAS,UAAU,EAS/C,KAAI,CARe,WAAW,MAC3B,cACC,UAAU,UAAU,UACpB,SAAS,UAAU,SAAS,UAAU,WACtC,OAAO,UAAU,OACjB,MAAM,UAAU,MAAM,UAAU,KACnC,CAEgB,OAAM,KAAK;EAAE;EAAQ;EAAK,CAAC;AAIhD,QAAO;;AAGT,SAAgB,yBACd,YACA,MACA,MACA,YACA,eACA,YACA,aACA,QAC2B;AAC3B,KACE,WAAW,cACV,SAAS,WACP,CAAC,WAAW,QACX,WAAW,SAAS,YACpB,WAAW,SAAS,WACvB,WAAW,QAAQ,WAAW,SAAS,YAAY,eAAe,EAEnE,QAAO;CAGT,MAAM,aAAa,UAAU,WAAW,YAAY,EAAE;CACtD,MAAM,aAAa,KAAK,IACtB,YACA,UAAU,WAAW,YAAY,cAAc,CAChD;CACD,MAAM,UAAU,UAAU,WAAW,SAAS,EAAE;CAChD,MAAM,UAAU,KAAK,IAAI,SAAS,UAAU,WAAW,SAAS,WAAW,CAAC;CAC5E,IAAI,kBAAkB,MACpB,UAAU,WAAW,gBAAgB,WAAW,EAChD,YACA,WACD;CACD,IAAI,eAAe,MACjB,UAAU,WAAW,aAAa,QAAQ,EAC1C,SACA,QACD;AAED,KAAI,SAAS,mBACX,gBAAe,KAAK,IAAI,YAAY,QAAQ;UACnC,SAAS,iBAClB,mBAAkB,KAAK,IAAI,eAAe,WAAW;UAC5C,SAAS,QAAQ;AAC1B,oBAAkB;AAClB,iBAAe,KAAK,IAAI,YAAY,QAAQ;;AAO9C,KAAI,QAAQ;AACV,MACE,OAAO,UAAU,cACjB,OAAO,UAAU,cACjB,OAAO,OAAO,WACd,OAAO,OAAO,QAEd,QAAO;AAGT,oBAAkB,OAAO;AACzB,iBAAe,OAAO;;AAGxB,KACE,kBAAkB,cAClB,eAAe,WACf,kBAAkB,iBAClB,eAAe,WAEf,QAAO;CAGT,MAAM,SAAS,UAAU;CACzB,MAAM,YAAgC;EACpC,QAAQ,SAAS,oBAAoB,SAAS,SAAS,IAAI,OAAO;EAClE,KAAK,SAAS,sBAAsB,SAAS,SAAS,IAAI,OAAO;EACjE,SAAS;EACT,MAAM;EACP;AAED,KACE,UAAU,SAAS,UAAU,UAAU,iBACvC,UAAU,MAAM,UAAU,OAAO,WAEjC,QAAO;AAqBT,QAlBkB,WAAW,MAAM,aAAa;AAC9C,MAAI,SAAS,mBACX,QAAO,EACL,UAAU,SAAS,UAAU,WAAW,SAAS,UACjD,SAAS,SAAS,SAAS,WAAW,UAAU;AAIpD,MAAI,SAAS,iBACX,QAAO,EACL,UAAU,MAAM,UAAU,QAAQ,SAAS,OAC3C,SAAS,MAAM,SAAS,QAAQ,UAAU;AAI9C,SAAO,kBAAkB,WAAW,SAAS;GAC7C,GAEiB,OAAO;;;;;;;;;;;;AAa5B,SAAgB,uBACd,QACA,MACA,WACA,SACA,MACoB;CACpB,MAAM,OAAO,IAAI,IAAI,UAAU,KAAK,EAAE,QAAQ,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;CAC5E,MAAM,UAAU,QAAgB,QAAgB,KAAK,IAAI,GAAG,OAAO,GAAG,MAAM;CAC5E,MAAM,SACJ,MACA,IACA,OACA,YACG;EACH,MAAM,OAAO,MAAM,OAAO,IAAI;EAC9B,IAAI,OAAO;AAEX,OAAK,IAAI,QAAQ,OAAO,MAAM,OAAO,IAAI,SAAS,KAAK,SAAS,KAAM;AACpE,OAAI,QAAQ,KAAK,SAAS,SAAS,CAAC,QAAQ,MAAM,CAAE;AACpD,UAAO;AACP,YAAS;;AAGX,SAAO;;CAGT,MAAM,aAAa,MAAM,OAAO,QAAQ,KAAK,QAAQ,UAAU,WAC7D,OAAO,QAAQ,OAAO,IAAI,CAC3B;CACD,MAAM,SAAS,KAAK,IAAI,OAAO,QAAQ,WAAW;CAClD,MAAM,iBAAiB,KAAK,IAAI,aAAa,OAAO,OAAO,GAAG;CAC9D,MAAM,UAAU,MAAM,OAAO,KAAK,KAAK,KAAK,OAAO,QAAQ;AACzD,OAAK,IAAI,SAAS,GAAG,SAAS,gBAAgB,UAAU,EACtD,KAAI,CAAC,OAAO,SAAS,QAAQ,IAAI,CAAE,QAAO;AAG5C,SAAO;GACP;AAEF,QAAO;EACL;EACA,KAAK,KAAK,IAAI,OAAO,KAAK,QAAQ;EAClC,SAAS;EACT,MAAM,KAAK,IAAI,UAAU,OAAO,IAAI,GAAG;EACxC;;AAQH,MAAM,iCAAiC,IAAI,IAAI;CAC7C;CACA;CACA;CACA;CACD,CAAC;;;;;;;;;AAUF,SAAS,6BAA6B,OAAsC;AAC1E,KAAI,CAAC,eAAe,MAAM,CAAE,QAAO;AAEnC,QAAQ,MAAM,KAAkC;;AAGlD,SAAgB,qCACd,UACQ;AACR,QAAO,SAAS,QAAQ,SAAS,CAAC,QAAgB,cAAc,UAAU;EACxE,MAAM,cAAc,6BAA6B,MAAM;AACvD,MAAI,CAAC,eAAe,CAAC,eAAe,MAAM,CAAE,QAAO;EACnD,MAAM,gBAAiB,MAAM,MAAmC;AAEhE,MAAI,+BAA+B,IAAI,YAAY,CACjD,QAAO,KAAK,IACV,cACA,IAAI,qCAAqC,cAAc,CACxD;AAGH,MAAI,gBAAgB,eAClB,QAAO,KAAK,IACV,cACA,qCAAqC,cAAc,CACpD;AAGH,SAAO;IACN,EAAE;;AAGP,SAAgB,yBACd,MACA,UACA,iBACA,cACuB;CAUvB,MAAM,cARJ,SAAS,SACL,SAAS,QAAQ,SAAS,CAAC,SAAS,QAAQ;AAC1C,MAAI,CAAC,eAAe,IAAI,CAAE,QAAO,EAAE;AACnC,SAAO,SAAS,QACb,IAAI,MAAmC,SACzC;GACD,GACF,SAAS,QAAQ,SAAS,EACE,SAAS,UAAU;AACnD,MAAI,CAAC,eAAe,MAAM,CAAE,QAAO,EAAE;EACrC,MAAM,QAAQ,MAAM;AAGpB,MAAI,MAAM,+BAA+B,OAAW,QAAO,EAAE;AAE7D,SAAO,CAAC,mBAAmB,OAAO,iBAAiB,aAAa,CAAC;GACjE;AAEF,KAAI,WAAW,WAAW,EAAG,QAAO;EAAE,SAAS;EAAG,MAAM;EAAG;AAE3D,KAAI,SAAS,mBACX,QAAO;EACL,SAAS,KAAK,IACZ,iBACA,WAAW,QAAQ,OAAO,cAAc,QAAQ,UAAU,SAAS,EAAE,CACtE;EACD,MAAM,KAAK,IACT,cACA,KAAK,IAAI,GAAG,WAAW,KAAK,cAAc,UAAU,KAAK,CAAC,CAC3D;EACF;AAGH,KAAI,SAAS,iBACX,QAAO;EACL,SAAS,KAAK,IACZ,iBACA,KAAK,IAAI,GAAG,WAAW,KAAK,cAAc,UAAU,QAAQ,CAAC,CAC9D;EACD,MAAM,KAAK,IACT,cACA,WAAW,QAAQ,OAAO,cAAc,QAAQ,UAAU,MAAM,EAAE,CACnE;EACF;AAGH,QAAO;EACL,SAAS,KAAK,IACZ,iBACA,KAAK,IACH,GAAG,WAAW,KAAK,cAAc,UAAU,SAAS,UAAU,QAAQ,CACvE,CACF;EACD,MAAM,KAAK,IACT,cACA,KAAK,IACH,GAAG,WAAW,KAAK,cAAc,UAAU,MAAM,UAAU,KAAK,CACjE,CACF;EACF;;AAGH,SAAgB,2BACd,MACA,UACS;AAWT,SATE,SAAS,SACL,SAAS,QAAQ,SAAS,CAAC,SAAS,QAAQ;AAC1C,MAAI,CAAC,eAAe,IAAI,CAAE,QAAO,EAAE;AACnC,SAAO,SAAS,QACb,IAAI,MAAmC,SACzC;GACD,GACF,SAAS,QAAQ,SAAS,EAEV,MAAM,UAAU;AACpC,MAAI,CAAC,eAAe,MAAM,CAAE,QAAO,UAAU,QAAQ,UAAU;AAG/D,SAFc,MAAM,MAEP,+BAA+B;GAC5C;;;;;;;;;;;;;AAcJ,SAAgB,mBACd,QACA,UACA,SACA,MACA,aAAa,SACb,UAAU,MACU;CACpB,MAAM,UAAU,QAAgB,QAC9B,CAAC,SAAS,MACP,cACC,UAAU,UAAU,UACpB,SAAS,UAAU,SAAS,UAAU,WACtC,OAAO,UAAU,OACjB,MAAM,UAAU,MAAM,UAAU,KACnC;CAEH,MAAM,cAAc,KAAK,IAAI,SAAS,OAAO,SAAS,WAAW;CACjE,MAAM,WAAW,KAAK,IAAI,MAAM,OAAO,MAAM,QAAQ;CACrD,IAAI,OAA2B;EAC7B,QAAQ,OAAO;EACf,KAAK,OAAO;EACZ,SAAS;EACT,MAAM;EACP;CACD,IAAI,YAAY,WAAW,OAAO;AAElC,MAAK,IAAI,SAAS,OAAO,QAAQ,SAAS,aAAa,UAAU,GAAG;EAClE,IAAI,QAAQ;AACZ,SAAO,QAAQ,aAAa,OAAO,QAAQ,OAAO,MAAM,MAAM,CAAE,UAAS;AACzE,MAAI,UAAU,EAAG;AAEjB,cAAY,KAAK,IAAI,WAAW,MAAM;EACtC,MAAM,YAAgC;GACpC,QAAQ,OAAO;GACf,KAAK,OAAO;GACZ,SAAS,SAAS,OAAO,SAAS;GAClC,MAAM;GACP;AAED,MAAI,UAAU,UAAU,UAAU,OAAO,KAAK,UAAU,KAAK,KAC3D,QAAO;;AAIX,QAAO"}
@@ -1,94 +0,0 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e056095 | Cube Dev Team */
2
- //#region src/components/layout/Dashboard/placement.ts
3
- /**
4
- * The vertical channel between top-level containers, in pixels.
5
- *
6
- * Must stay in step with `gap: '1x'` on `DashboardElement`. It is deliberately
7
- * independent of the `gap` prop, which describes spacing *inside* a container's
8
- * grid, and the pointer maths for a root-level move reads it from here rather
9
- * than from `metrics.rowGap`.
10
- */
11
- const DASHBOARD_ROOT_GAP = 8;
12
- function normalizeGap(gap) {
13
- if (Array.isArray(gap)) return gap;
14
- const value = gap ?? 16;
15
- return [value, value];
16
- }
17
- function clampSpan(value, fallback) {
18
- return Math.max(1, Math.min(12, Math.floor(value ?? fallback)));
19
- }
20
- function clampRows(value, fallback) {
21
- return Math.max(1, Math.floor(value ?? fallback));
22
- }
23
- function clampOrigin(value) {
24
- return Math.max(0, Math.min(11, Math.floor(value ?? 0)));
25
- }
26
- function clampRowOrigin(value) {
27
- return Math.max(0, Math.floor(value ?? 0));
28
- }
29
- function clamp(value, min, max) {
30
- return Math.max(min, Math.min(max, value));
31
- }
32
- function normalizePlacement(placement, parentColumns, parentRows) {
33
- const columns = Math.min(clampSpan(placement.columns, parentColumns), parentColumns);
34
- const rows = Math.min(clampRows(placement.rows, 1), parentRows);
35
- return {
36
- column: Math.min(clampOrigin(placement.column), parentColumns - columns),
37
- row: Math.min(clampRowOrigin(placement.row), parentRows - rows),
38
- columns,
39
- rows
40
- };
41
- }
42
- function isSamePlacement(first, second) {
43
- return first.column === second.column && first.row === second.row && first.columns === second.columns && first.rows === second.rows;
44
- }
45
- function getPlacementStyle(tree, placement) {
46
- if (tree.parentKind === "root") return { gridColumn: "1 / -1" };
47
- const columns = Math.min(clampSpan(placement.columns, tree.parentColumns), tree.parentColumns);
48
- const rows = Math.min(clampRows(placement.rows, 1), tree.parentRows);
49
- if (tree.parentKind === "horizontal-stack") return {
50
- gridColumn: `span ${columns}`,
51
- gridRow: `1 / span ${rows}`
52
- };
53
- if (tree.parentKind === "vertical-stack") return {
54
- gridColumn: `1 / span ${columns}`,
55
- gridRow: `span ${rows}`
56
- };
57
- return {
58
- gridColumn: `${Math.min(clampOrigin(placement.column), tree.parentColumns - columns) + 1} / span ${columns}`,
59
- gridRow: `${Math.min(clampRowOrigin(placement.row), tree.parentRows - rows) + 1} / span ${rows}`
60
- };
61
- }
62
- function getContentGridStyle(kind, columns, rows, metrics) {
63
- return {
64
- gap: `${metrics.rowGap}px ${metrics.columnGap}px`,
65
- gridTemplateColumns: `repeat(${Math.max(1, Math.floor(columns))}, minmax(0, 1fr))`,
66
- gridTemplateRows: `repeat(${Math.max(1, Math.floor(rows))}, minmax(${metrics.rowHeight}px, auto))`,
67
- gridAutoFlow: kind === "horizontal-stack" ? "row" : void 0
68
- };
69
- }
70
- /**
71
- * The cell a client point falls in.
72
- *
73
- * Shared by the drag engine, which positions a box and therefore rounds to the
74
- * *nearest* track boundary, and by the add-region gesture, which asks which cell
75
- * the pointer is inside and therefore floors. Both read the same track maths, so
76
- * a region and a drop can never disagree about where a cell starts.
77
- */
78
- function pointToCell(point, rect, columns, rows, metrics, rounding = "floor") {
79
- const columnWidth = (rect.width - metrics.columnGap * (columns - 1)) / columns;
80
- const columnStep = Math.max(1, columnWidth + metrics.columnGap);
81
- const rowStep = Math.max(1, metrics.rowHeight + metrics.rowGap);
82
- const round = rounding === "floor" ? Math.floor : Math.round;
83
- return {
84
- column: clamp(round((point.x - rect.left) / columnStep), 0, columns - 1),
85
- row: clamp(round((point.y - rect.top) / rowStep), 0, rows - 1)
86
- };
87
- }
88
- function placementsOverlap(first, second) {
89
- return first.column < second.column + second.columns && first.column + first.columns > second.column && first.row < second.row + second.rows && first.row + first.rows > second.row;
90
- }
91
-
92
- //#endregion
93
- export { DASHBOARD_ROOT_GAP, clamp, clampRowOrigin, clampRows, clampSpan, getContentGridStyle, getPlacementStyle, isSamePlacement, normalizeGap, normalizePlacement, placementsOverlap, pointToCell };
94
- //# sourceMappingURL=placement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"placement.js","names":[],"sources":["../../../../src/components/layout/Dashboard/placement.ts"],"sourcesContent":["import type { CSSProperties } from 'react';\nimport type {\n CubeDashboardProps,\n DashboardContainerKind,\n DashboardMetrics,\n DashboardPlacement,\n DashboardPlacementProps,\n DashboardTreeContextValue,\n} from './types';\n\n/**\n * The vertical channel between top-level containers, in pixels.\n *\n * Must stay in step with `gap: '1x'` on `DashboardElement`. It is deliberately\n * independent of the `gap` prop, which describes spacing *inside* a container's\n * grid, and the pointer maths for a root-level move reads it from here rather\n * than from `metrics.rowGap`.\n */\nexport const DASHBOARD_ROOT_GAP = 8;\n\nexport function normalizeGap(gap: CubeDashboardProps['gap']): [number, number] {\n if (Array.isArray(gap)) return gap;\n const value = gap ?? 16;\n return [value, value];\n}\n\nexport function clampSpan(value: number | undefined, fallback: number): number {\n return Math.max(1, Math.min(12, Math.floor(value ?? fallback)));\n}\n\nexport function clampRows(value: number | undefined, fallback: number): number {\n return Math.max(1, Math.floor(value ?? fallback));\n}\n\nexport function clampOrigin(value: number | undefined): number {\n return Math.max(0, Math.min(11, Math.floor(value ?? 0)));\n}\n\nexport function clampRowOrigin(value: number | undefined): number {\n return Math.max(0, Math.floor(value ?? 0));\n}\n\nexport function clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n}\n\nexport function normalizePlacement(\n placement: DashboardPlacementProps,\n parentColumns: number,\n parentRows: number,\n): DashboardPlacement {\n const columns = Math.min(\n clampSpan(placement.columns, parentColumns),\n parentColumns,\n );\n const rows = Math.min(clampRows(placement.rows, 1), parentRows);\n\n return {\n column: Math.min(clampOrigin(placement.column), parentColumns - columns),\n row: Math.min(clampRowOrigin(placement.row), parentRows - rows),\n columns,\n rows,\n };\n}\n\nexport function isSamePlacement(\n first: DashboardPlacement,\n second: DashboardPlacement,\n): boolean {\n return (\n first.column === second.column &&\n first.row === second.row &&\n first.columns === second.columns &&\n first.rows === second.rows\n );\n}\n\nexport function getPlacementStyle(\n tree: DashboardTreeContextValue,\n placement: DashboardPlacementProps,\n): CSSProperties {\n if (tree.parentKind === 'root') {\n return { gridColumn: '1 / -1' };\n }\n\n const columns = Math.min(\n clampSpan(placement.columns, tree.parentColumns),\n tree.parentColumns,\n );\n const rows = Math.min(clampRows(placement.rows, 1), tree.parentRows);\n\n if (tree.parentKind === 'horizontal-stack') {\n return {\n gridColumn: `span ${columns}`,\n gridRow: `1 / span ${rows}`,\n };\n }\n\n if (tree.parentKind === 'vertical-stack') {\n return {\n gridColumn: `1 / span ${columns}`,\n gridRow: `span ${rows}`,\n };\n }\n\n return {\n gridColumn: `${Math.min(clampOrigin(placement.column), tree.parentColumns - columns) + 1} / span ${columns}`,\n gridRow: `${Math.min(clampRowOrigin(placement.row), tree.parentRows - rows) + 1} / span ${rows}`,\n };\n}\n\nexport function getContentGridStyle(\n kind: DashboardContainerKind,\n columns: number,\n rows: number,\n metrics: DashboardMetrics,\n): CSSProperties {\n return {\n gap: `${metrics.rowGap}px ${metrics.columnGap}px`,\n gridTemplateColumns: `repeat(${Math.max(1, Math.floor(columns))}, minmax(0, 1fr))`,\n gridTemplateRows: `repeat(${Math.max(1, Math.floor(rows))}, minmax(${metrics.rowHeight}px, auto))`,\n gridAutoFlow: kind === 'horizontal-stack' ? 'row' : undefined,\n };\n}\n\n/**\n * The cell a client point falls in.\n *\n * Shared by the drag engine, which positions a box and therefore rounds to the\n * *nearest* track boundary, and by the add-region gesture, which asks which cell\n * the pointer is inside and therefore floors. Both read the same track maths, so\n * a region and a drop can never disagree about where a cell starts.\n */\nexport function pointToCell(\n point: { x: number; y: number },\n rect: { left: number; top: number; width: number },\n columns: number,\n rows: number,\n metrics: DashboardMetrics,\n rounding: 'floor' | 'nearest' = 'floor',\n): { column: number; row: number } {\n const columnWidth =\n (rect.width - metrics.columnGap * (columns - 1)) / columns;\n const columnStep = Math.max(1, columnWidth + metrics.columnGap);\n const rowStep = Math.max(1, metrics.rowHeight + metrics.rowGap);\n const round = rounding === 'floor' ? Math.floor : Math.round;\n\n return {\n column: clamp(round((point.x - rect.left) / columnStep), 0, columns - 1),\n row: clamp(round((point.y - rect.top) / rowStep), 0, rows - 1),\n };\n}\n\nexport function placementsOverlap(\n first: DashboardPlacement,\n second: DashboardPlacement,\n): boolean {\n return (\n first.column < second.column + second.columns &&\n first.column + first.columns > second.column &&\n first.row < second.row + second.rows &&\n first.row + first.rows > second.row\n );\n}\n"],"mappings":"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"}