@rio-cloud/rio-uikit 2.2.0 → 2.3.0-beta.1

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 (412) hide show
  1. package/AnalyticsAnalysisOverlay.d.ts +1 -0
  2. package/AnalyticsAnalysisOverlay.js +5 -0
  3. package/AnalyticsAnalysisOverlay.js.map +1 -0
  4. package/Table.d.ts +2 -0
  5. package/Table.js +23 -0
  6. package/Table.js.map +1 -0
  7. package/TableCol.d.ts +2 -2
  8. package/TableCol.js +1 -1
  9. package/TableHead.d.ts +2 -2
  10. package/TableHead.js +1 -1
  11. package/TableSettingsDialog.d.ts +2 -2
  12. package/TableSettingsDialog.js +1 -1
  13. package/TableToolbar.js +3 -2
  14. package/analyticsAnalysisUtils.d.ts +1 -0
  15. package/analyticsAnalysisUtils.js +13 -0
  16. package/analyticsAnalysisUtils.js.map +1 -0
  17. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.d.ts +18 -0
  18. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.js +128 -0
  19. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.js.map +1 -0
  20. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.d.ts +9 -0
  21. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.js +73 -0
  22. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.js.map +1 -0
  23. package/components/applicationHeader/AppMenuContent.js.map +1 -1
  24. package/components/applicationHeader/ApplicationActionBar.js +4 -4
  25. package/components/applicationHeader/ApplicationActionBar.js.map +1 -1
  26. package/components/applicationHeader/CollapsedNavItem.js +5 -14
  27. package/components/applicationHeader/CollapsedNavItem.js.map +1 -1
  28. package/components/applicationHeader/NavItems.js +10 -10
  29. package/components/applicationHeader/NavItems.js.map +1 -1
  30. package/components/assetTree/AssetTree.js +23 -23
  31. package/components/assetTree/AssetTree.js.map +1 -1
  32. package/components/assetTree/TreeNothingFound.js +2 -2
  33. package/components/assetTree/TreeNothingFound.js.map +1 -1
  34. package/components/assetTree/treeUtils.js.map +1 -1
  35. package/components/autosuggest/AutoSuggest.js +31 -31
  36. package/components/autosuggest/AutoSuggest.js.map +1 -1
  37. package/components/autosuggest/AutoSuggestAddons.js +9 -9
  38. package/components/autosuggest/AutoSuggestAddons.js.map +1 -1
  39. package/components/banner/BannerActions.js +2 -2
  40. package/components/banner/BannerActions.js.map +1 -1
  41. package/components/banner/BannerIcon.js +3 -3
  42. package/components/banner/BannerIcon.js.map +1 -1
  43. package/components/banner/BannerPage.js +4 -4
  44. package/components/banner/BannerPage.js.map +1 -1
  45. package/components/button/Button.d.ts +7 -0
  46. package/components/button/Button.js +73 -65
  47. package/components/button/Button.js.map +1 -1
  48. package/components/checkbox/Checkbox.js +18 -17
  49. package/components/checkbox/Checkbox.js.map +1 -1
  50. package/components/datepicker/DateRangePicker.js +0 -2
  51. package/components/datepicker/DateRangePicker.js.map +1 -1
  52. package/components/datepicker/DayPicker.js +16 -16
  53. package/components/datepicker/DayPicker.js.map +1 -1
  54. package/components/dialog/Dialog.js.map +1 -1
  55. package/components/dialog/DialogHeader.js +23 -20
  56. package/components/dialog/DialogHeader.js.map +1 -1
  57. package/components/dialog/MediaDialog.js +1 -1
  58. package/components/dialog/MediaDialog.js.map +1 -1
  59. package/components/editableContent/EditableContent.js +7 -7
  60. package/components/editableContent/EditableContent.js.map +1 -1
  61. package/components/expander/ExpanderList.d.ts +5 -0
  62. package/components/expander/ExpanderList.js +25 -16
  63. package/components/expander/ExpanderList.js.map +1 -1
  64. package/components/expander/ExpanderPanel.d.ts +5 -0
  65. package/components/expander/ExpanderPanel.js +29 -28
  66. package/components/expander/ExpanderPanel.js.map +1 -1
  67. package/components/fade/FadeExpander.js +1 -1
  68. package/components/fade/FadeExpander.js.map +1 -1
  69. package/components/filepicker/FilePicker.js.map +1 -1
  70. package/components/loadMore/LoadMoreButton.d.ts +5 -0
  71. package/components/loadMore/LoadMoreButton.js +33 -29
  72. package/components/loadMore/LoadMoreButton.js.map +1 -1
  73. package/components/map/components/features/ContextMenu.js +13 -13
  74. package/components/map/components/features/ContextMenu.js.map +1 -1
  75. package/components/map/components/features/basics/InfoBubble.js.map +1 -1
  76. package/components/map/components/features/settings/MapSettingsTile.js.map +1 -1
  77. package/components/map/components/features/settings/builtinSettings/MapTypeSettings.js +6 -6
  78. package/components/map/components/features/settings/builtinSettings/MapTypeSettings.js.map +1 -1
  79. package/components/map/utils/eventHandling.js +18 -18
  80. package/components/map/utils/eventHandling.js.map +1 -1
  81. package/components/map/utils/positions.d.ts +1 -1
  82. package/components/map/utils/positions.js +15 -12
  83. package/components/map/utils/positions.js.map +1 -1
  84. package/components/map/utils/rendering.d.ts +1 -1
  85. package/components/menuItems/MenuItems.js +6 -6
  86. package/components/menuItems/MenuItems.js.map +1 -1
  87. package/components/notification/NotificationsContainer.js.map +1 -1
  88. package/components/numberInput/NumberInput.js +57 -56
  89. package/components/numberInput/NumberInput.js.map +1 -1
  90. package/components/popover/Popover.js +4 -4
  91. package/components/popover/Popover.js.map +1 -1
  92. package/components/resizer/Resizer.js +6 -3
  93. package/components/resizer/Resizer.js.map +1 -1
  94. package/components/selects/BaseSelectDropdown.js +34 -32
  95. package/components/selects/BaseSelectDropdown.js.map +1 -1
  96. package/components/selects/MultiselectTogglePlaceholder.js.map +1 -1
  97. package/components/selects/MultiselectToggleSelection.js +11 -11
  98. package/components/selects/MultiselectToggleSelection.js.map +1 -1
  99. package/components/sidebars/Sidebar.js +12 -12
  100. package/components/sidebars/Sidebar.js.map +1 -1
  101. package/components/sidebars/SidebarCloseButton.js +2 -2
  102. package/components/sidebars/SidebarCloseButton.js.map +1 -1
  103. package/components/smoothScrollbars/SmoothScrollbars.d.ts +4 -3
  104. package/components/smoothScrollbars/SmoothScrollbars.js +11 -11
  105. package/components/smoothScrollbars/SmoothScrollbars.js.map +1 -1
  106. package/components/states/CustomState.js.map +1 -1
  107. package/components/svgImage/svgConverter.js.map +1 -1
  108. package/components/table/Table.d.ts +267 -0
  109. package/components/table/Table.js +233 -0
  110. package/components/table/Table.js.map +1 -0
  111. package/components/table/Table.types.d.ts +207 -0
  112. package/components/table/TableBody.d.ts +10 -0
  113. package/components/table/TableBody.js +5 -0
  114. package/components/table/TableBody.js.map +1 -0
  115. package/components/table/TableCard.d.ts +63 -0
  116. package/components/table/TableCard.js +150 -0
  117. package/components/table/TableCard.js.map +1 -0
  118. package/components/table/TableColumn.d.ts +47 -0
  119. package/components/table/TableColumn.js +5 -0
  120. package/components/table/TableColumn.js.map +1 -0
  121. package/components/table/TableExpandedContentRow.d.ts +22 -0
  122. package/components/table/TableExpandedContentRow.js +5 -0
  123. package/components/table/TableExpandedContentRow.js.map +1 -0
  124. package/components/table/TableExpandedRow.d.ts +17 -0
  125. package/components/table/TableExpandedRow.js +5 -0
  126. package/components/table/TableExpandedRow.js.map +1 -0
  127. package/components/table/TableExpanderButton.d.ts +25 -0
  128. package/components/table/TableExpanderButton.js +22 -0
  129. package/components/table/TableExpanderButton.js.map +1 -0
  130. package/components/table/TableFooter.d.ts +13 -0
  131. package/components/table/TableFooter.js +5 -0
  132. package/components/table/TableFooter.js.map +1 -0
  133. package/components/table/TableGroupFooterRow.d.ts +18 -0
  134. package/components/table/TableGroupFooterRow.js +5 -0
  135. package/components/table/TableGroupFooterRow.js.map +1 -0
  136. package/components/table/TableGroupRow.d.ts +24 -0
  137. package/components/table/TableGroupRow.js +5 -0
  138. package/components/table/TableGroupRow.js.map +1 -0
  139. package/components/table/TableHeader.d.ts +9 -0
  140. package/components/table/TableHeader.js +5 -0
  141. package/components/table/TableHeader.js.map +1 -0
  142. package/components/table/TableHeaderColumn.d.ts +70 -0
  143. package/components/table/TableHeaderColumn.js +5 -0
  144. package/components/table/TableHeaderColumn.js.map +1 -0
  145. package/components/table/TableHeaderRow.d.ts +9 -0
  146. package/components/table/TableHeaderRow.js +5 -0
  147. package/components/table/TableHeaderRow.js.map +1 -0
  148. package/components/table/TableRow.d.ts +19 -0
  149. package/components/table/TableRow.js +5 -0
  150. package/components/table/TableRow.js.map +1 -0
  151. package/components/table/TableSpacerRow.d.ts +12 -0
  152. package/components/table/TableSpacerRow.js +5 -0
  153. package/components/table/TableSpacerRow.js.map +1 -0
  154. package/components/table/TableToolbar.d.ts +23 -1
  155. package/components/table/TableToolbar.js +38 -4
  156. package/components/table/TableToolbar.js.map +1 -1
  157. package/components/table/TableViewToggles.d.ts +18 -0
  158. package/components/table/TableViewToggles.js +59 -87
  159. package/components/table/TableViewToggles.js.map +1 -1
  160. package/components/table/layout/columnSizing.d.ts +3 -0
  161. package/components/table/layout/columnSizing.js +23 -0
  162. package/components/table/layout/columnSizing.js.map +1 -0
  163. package/components/table/layout/useDraggableColumns.d.ts +14 -0
  164. package/components/table/layout/useDraggableColumns.js +47 -0
  165. package/components/table/layout/useDraggableColumns.js.map +1 -0
  166. package/components/table/layout/useHorizontalSectionSync.d.ts +11 -0
  167. package/components/table/layout/useHorizontalSectionSync.js +39 -0
  168. package/components/table/layout/useHorizontalSectionSync.js.map +1 -0
  169. package/components/table/layout/useMeasuredColumnMaxWidths.d.ts +12 -0
  170. package/components/table/layout/useMeasuredColumnMaxWidths.js +85 -0
  171. package/components/table/layout/useMeasuredColumnMaxWidths.js.map +1 -0
  172. package/components/table/layout/useResizableColumns.d.ts +14 -0
  173. package/components/table/layout/useResizableColumns.js +91 -0
  174. package/components/table/layout/useResizableColumns.js.map +1 -0
  175. package/components/table/layout/useTableLayout.d.ts +25 -0
  176. package/components/table/layout/useTableLayout.js +56 -0
  177. package/components/table/layout/useTableLayout.js.map +1 -0
  178. package/components/table/layout/useTableVirtualization.d.ts +22 -0
  179. package/components/table/layout/useTableVirtualization.js +125 -0
  180. package/components/table/layout/useTableVirtualization.js.map +1 -0
  181. package/components/table/model/buildTableViewModel.d.ts +28 -0
  182. package/components/table/model/buildTableViewModel.js +221 -0
  183. package/components/table/model/buildTableViewModel.js.map +1 -0
  184. package/components/table/model/resolveCellContent.d.ts +2 -0
  185. package/components/table/model/resolveCellContent.js +5 -0
  186. package/components/table/model/resolveCellContent.js.map +1 -0
  187. package/components/table/model/resolveRowMeta.d.ts +2 -0
  188. package/components/table/model/resolveRowMeta.js +15 -0
  189. package/components/table/model/resolveRowMeta.js.map +1 -0
  190. package/components/table/model/resolveTableClassConfig.d.ts +48 -0
  191. package/components/table/model/resolveTableClassConfig.js +64 -0
  192. package/components/table/model/resolveTableClassConfig.js.map +1 -0
  193. package/components/table/model/tableViewModel.types.d.ts +153 -0
  194. package/components/table/native/TableCol.js.map +1 -0
  195. package/components/table/{TableHead.js → native/TableHead.js} +2 -2
  196. package/components/table/native/TableHead.js.map +1 -0
  197. package/components/table/native/TableSettingsColumnButtons.js +59 -0
  198. package/components/table/native/TableSettingsColumnButtons.js.map +1 -0
  199. package/components/table/{TableSettingsColumnDetails.js → native/TableSettingsColumnDetails.js} +2 -2
  200. package/components/table/native/TableSettingsColumnDetails.js.map +1 -0
  201. package/components/table/{TableSettingsDialog.d.ts → native/TableSettingsDialog.d.ts} +2 -3
  202. package/components/table/native/TableSettingsDialog.js +216 -0
  203. package/components/table/native/TableSettingsDialog.js.map +1 -0
  204. package/components/table/{TableSettingsDialogFooter.js → native/TableSettingsDialogFooter.js} +2 -2
  205. package/components/table/native/TableSettingsDialogFooter.js.map +1 -0
  206. package/components/table/{TableSettingsListContainer.js → native/TableSettingsListContainer.js} +8 -8
  207. package/components/table/native/TableSettingsListContainer.js.map +1 -0
  208. package/components/table/native/TableSettingsListItem.js +100 -0
  209. package/components/table/native/TableSettingsListItem.js.map +1 -0
  210. package/components/table/parse/parseBody.d.ts +3 -0
  211. package/components/table/parse/parseBody.js +13 -0
  212. package/components/table/parse/parseBody.js.map +1 -0
  213. package/components/table/parse/parseColumns.d.ts +3 -0
  214. package/components/table/parse/parseColumns.js +81 -0
  215. package/components/table/parse/parseColumns.js.map +1 -0
  216. package/components/table/parse/parseFooter.d.ts +3 -0
  217. package/components/table/parse/parseFooter.js +39 -0
  218. package/components/table/parse/parseFooter.js.map +1 -0
  219. package/components/table/parse/parseHeaders.d.ts +4 -0
  220. package/components/table/parse/parseHeaders.js +89 -0
  221. package/components/table/parse/parseHeaders.js.map +1 -0
  222. package/components/table/parse/parseRows.d.ts +3 -0
  223. package/components/table/parse/parseRows.js +93 -0
  224. package/components/table/parse/parseRows.js.map +1 -0
  225. package/components/table/parse/tableChildGuards.d.ts +25 -0
  226. package/components/table/parse/tableChildGuards.js +29 -0
  227. package/components/table/parse/tableChildGuards.js.map +1 -0
  228. package/components/table/render/body/TableBodyRow.d.ts +16 -0
  229. package/components/table/render/body/TableBodyRow.js +84 -0
  230. package/components/table/render/body/TableBodyRow.js.map +1 -0
  231. package/components/table/render/body/TableBodySection.d.ts +20 -0
  232. package/components/table/render/body/TableBodySection.js +68 -0
  233. package/components/table/render/body/TableBodySection.js.map +1 -0
  234. package/components/table/render/body/TableDataRow.d.ts +15 -0
  235. package/components/table/render/body/TableDataRow.js +143 -0
  236. package/components/table/render/body/TableDataRow.js.map +1 -0
  237. package/components/table/render/body/TableEmptyRow.d.ts +7 -0
  238. package/components/table/render/body/TableEmptyRow.js +6 -0
  239. package/components/table/render/body/TableEmptyRow.js.map +1 -0
  240. package/components/table/render/body/TableExpandedRow.d.ts +8 -0
  241. package/components/table/render/body/TableExpandedRow.js +84 -0
  242. package/components/table/render/body/TableExpandedRow.js.map +1 -0
  243. package/components/table/render/body/TableGroupRow.d.ts +8 -0
  244. package/components/table/render/body/TableGroupRow.js +21 -0
  245. package/components/table/render/body/TableGroupRow.js.map +1 -0
  246. package/components/table/render/body/TableSpacerRow.d.ts +7 -0
  247. package/components/table/render/body/TableSpacerRow.js +15 -0
  248. package/components/table/render/body/TableSpacerRow.js.map +1 -0
  249. package/components/table/render/footer/TableFooterCell.d.ts +8 -0
  250. package/components/table/render/footer/TableFooterCell.js +31 -0
  251. package/components/table/render/footer/TableFooterCell.js.map +1 -0
  252. package/components/table/render/footer/TableFooterContent.d.ts +6 -0
  253. package/components/table/render/footer/TableFooterContent.js +6 -0
  254. package/components/table/render/footer/TableFooterContent.js.map +1 -0
  255. package/components/table/render/footer/TableFooterSection.d.ts +10 -0
  256. package/components/table/render/footer/TableFooterSection.js +28 -0
  257. package/components/table/render/footer/TableFooterSection.js.map +1 -0
  258. package/components/table/render/header/TableBatchDropdown.d.ts +9 -0
  259. package/components/table/render/header/TableBatchDropdown.js +28 -0
  260. package/components/table/render/header/TableBatchDropdown.js.map +1 -0
  261. package/components/table/render/header/TableColumnFilter.d.ts +66 -0
  262. package/components/table/render/header/TableColumnFilter.js +70 -0
  263. package/components/table/render/header/TableColumnFilter.js.map +1 -0
  264. package/components/table/render/header/TableDraggableHeaderCell.d.ts +3 -0
  265. package/components/table/render/header/TableDraggableHeaderCell.js +54 -0
  266. package/components/table/render/header/TableDraggableHeaderCell.js.map +1 -0
  267. package/components/table/render/header/TableHeader.types.d.ts +35 -0
  268. package/components/table/render/header/TableHeaderCellContent.d.ts +3 -0
  269. package/components/table/render/header/TableHeaderCellContent.js +57 -0
  270. package/components/table/render/header/TableHeaderCellContent.js.map +1 -0
  271. package/components/table/render/header/TableHeaderCellResizeHandle.d.ts +3 -0
  272. package/components/table/render/header/TableHeaderCellResizeHandle.js +22 -0
  273. package/components/table/render/header/TableHeaderCellResizeHandle.js.map +1 -0
  274. package/components/table/render/header/TableHeaderDragOverlay.d.ts +13 -0
  275. package/components/table/render/header/TableHeaderDragOverlay.js +35 -0
  276. package/components/table/render/header/TableHeaderDragOverlay.js.map +1 -0
  277. package/components/table/render/header/TableHeaderSection.d.ts +3 -0
  278. package/components/table/render/header/TableHeaderSection.js +104 -0
  279. package/components/table/render/header/TableHeaderSection.js.map +1 -0
  280. package/components/table/render/header/TableHeaderSelectionCell.d.ts +9 -0
  281. package/components/table/render/header/TableHeaderSelectionCell.js +41 -0
  282. package/components/table/render/header/TableHeaderSelectionCell.js.map +1 -0
  283. package/components/table/render/header/TableStaticHeaderCell.d.ts +3 -0
  284. package/components/table/render/header/TableStaticHeaderCell.js +36 -0
  285. package/components/table/render/header/TableStaticHeaderCell.js.map +1 -0
  286. package/components/table/render/header/resolveAriaSort.d.ts +2 -0
  287. package/components/table/render/header/resolveAriaSort.js +8 -0
  288. package/components/table/render/header/resolveAriaSort.js.map +1 -0
  289. package/components/table/render/header/resolveColumnCollisionDetection.d.ts +2 -0
  290. package/components/table/render/header/resolveColumnCollisionDetection.js +9 -0
  291. package/components/table/render/header/resolveColumnCollisionDetection.js.map +1 -0
  292. package/components/table/render/header/resolveHeaderCellClassName.d.ts +10 -0
  293. package/components/table/render/header/resolveHeaderCellClassName.js +22 -0
  294. package/components/table/render/header/resolveHeaderCellClassName.js.map +1 -0
  295. package/components/table/render/header/resolveHeaderCellStyle.d.ts +829 -0
  296. package/components/table/render/header/resolveHeaderCellStyle.js +9 -0
  297. package/components/table/render/header/resolveHeaderCellStyle.js.map +1 -0
  298. package/components/table/selection/useTableSelection.d.ts +82 -0
  299. package/components/table/selection/useTableSelection.js +35 -0
  300. package/components/table/selection/useTableSelection.js.map +1 -0
  301. package/components/table/settings/TableColumnsDropdown.d.ts +90 -0
  302. package/components/table/settings/TableColumnsDropdown.js +137 -0
  303. package/components/table/settings/TableColumnsDropdown.js.map +1 -0
  304. package/components/table/settings/TableColumnsDropdownItem.d.ts +8 -0
  305. package/components/table/settings/TableColumnsDropdownItem.js +66 -0
  306. package/components/table/settings/TableColumnsDropdownItem.js.map +1 -0
  307. package/components/table/shared/getAlignClassName.d.ts +3 -0
  308. package/components/table/shared/getAlignClassName.js +6 -0
  309. package/components/table/shared/getAlignClassName.js.map +1 -0
  310. package/components/table/shared/getInteractiveRowProps.d.ts +14 -0
  311. package/components/table/shared/getInteractiveRowProps.js +15 -0
  312. package/components/table/shared/getInteractiveRowProps.js.map +1 -0
  313. package/components/table/shared/resolveTableAria.d.ts +2 -0
  314. package/components/table/shared/resolveTableAria.js +6 -0
  315. package/components/table/shared/resolveTableAria.js.map +1 -0
  316. package/components/table/tableSizing.constants.d.ts +4 -0
  317. package/components/table/tableSizing.constants.js +8 -0
  318. package/components/table/tableSizing.constants.js.map +1 -0
  319. package/components/teaser/TeaserContainer.js +3 -3
  320. package/components/teaser/TeaserContainer.js.map +1 -1
  321. package/components/virtualList/VirtualList.js +16 -13
  322. package/components/virtualList/VirtualList.js.map +1 -1
  323. package/googleAnalyticsUtils.d.ts +1 -0
  324. package/googleAnalyticsUtils.js +9 -0
  325. package/googleAnalyticsUtils.js.map +1 -0
  326. package/hooks/useCookies.js +17 -17
  327. package/hooks/useCookies.js.map +1 -1
  328. package/hooks/useDraggableElement.d.ts +35 -0
  329. package/hooks/useDraggableElement.js +49 -0
  330. package/hooks/useDraggableElement.js.map +1 -0
  331. package/hooks/useElapsedTime.js +4 -4
  332. package/hooks/useElapsedTime.js.map +1 -1
  333. package/hooks/useLocationSuggestions.js +13 -10
  334. package/hooks/useLocationSuggestions.js.map +1 -1
  335. package/hooks/useMergeRefs.js +12 -12
  336. package/hooks/useMergeRefs.js.map +1 -1
  337. package/hooks/usePrevious.d.ts +1 -1
  338. package/hooks/usePrevious.js.map +1 -1
  339. package/hooks/useResizeObserver.js +25 -10
  340. package/hooks/useResizeObserver.js.map +1 -1
  341. package/hooks/useRioCookieConsent.js +7 -4
  342. package/hooks/useRioCookieConsent.js.map +1 -1
  343. package/hooks/useSorting.js +10 -10
  344. package/hooks/useSorting.js.map +1 -1
  345. package/hooks/useStorage.js +12 -12
  346. package/hooks/useStorage.js.map +1 -1
  347. package/hooks/useSum.js +10 -7
  348. package/hooks/useSum.js.map +1 -1
  349. package/hooks/useTableSelection.js.map +1 -1
  350. package/hooks/useTimeout.js +6 -3
  351. package/hooks/useTimeout.js.map +1 -1
  352. package/package.json +3 -3
  353. package/routeUtils.js +12 -10
  354. package/utils/analytics/analyticsAnalysisUtils.d.ts +27 -0
  355. package/utils/analytics/analyticsAnalysisUtils.js +161 -0
  356. package/utils/analytics/analyticsAnalysisUtils.js.map +1 -0
  357. package/utils/analytics/autoTracking.d.ts +14 -0
  358. package/utils/analytics/autoTracking.js +19 -0
  359. package/utils/analytics/autoTracking.js.map +1 -0
  360. package/utils/analytics/createAnalyticsOverlayTooltip.d.ts +36 -0
  361. package/utils/analytics/createAnalyticsOverlayTooltip.js +203 -0
  362. package/utils/analytics/createAnalyticsOverlayTooltip.js.map +1 -0
  363. package/utils/analytics/googleAnalyticsUtils.d.ts +37 -0
  364. package/utils/analytics/googleAnalyticsUtils.js +37 -0
  365. package/utils/analytics/googleAnalyticsUtils.js.map +1 -0
  366. package/utils/analytics/logAnalyticsOverlayUnmatchedEntries.d.ts +8 -0
  367. package/utils/analytics/logAnalyticsOverlayUnmatchedEntries.js +61 -0
  368. package/utils/analytics/logAnalyticsOverlayUnmatchedEntries.js.map +1 -0
  369. package/utils/analytics/useAnalyticsOverlayDom.d.ts +11 -0
  370. package/utils/analytics/useAnalyticsOverlayDom.js +120 -0
  371. package/utils/analytics/useAnalyticsOverlayDom.js.map +1 -0
  372. package/utils/arrayMove.js +11 -0
  373. package/utils/arrayMove.js.map +1 -0
  374. package/utils/cssuseragent.js +2 -2
  375. package/utils/cssuseragent.js.map +1 -1
  376. package/utils/deviceUtils.js.map +1 -1
  377. package/utils/formatUtils.js.map +1 -1
  378. package/utils/hasUtilityClass.js +3 -3
  379. package/utils/hasUtilityClass.js.map +1 -1
  380. package/utils/hidePiiData.js.map +1 -1
  381. package/utils/init/checkForReleaseVersion.js +4 -4
  382. package/utils/init/checkForReleaseVersion.js.map +1 -1
  383. package/utils/init/styledLogs.js.map +1 -1
  384. package/utils/mergeRefs.js +3 -3
  385. package/utils/mergeRefs.js.map +1 -1
  386. package/utils/routeUtils.d.ts +32 -1
  387. package/utils/routeUtils.js +85 -67
  388. package/utils/routeUtils.js.map +1 -1
  389. package/utils/storageUtils.js +9 -9
  390. package/utils/storageUtils.js.map +1 -1
  391. package/version.d.ts +1 -1
  392. package/version.js +2 -2
  393. package/version.js.map +1 -1
  394. package/components/table/TableCol.js.map +0 -1
  395. package/components/table/TableHead.js.map +0 -1
  396. package/components/table/TableSettingsColumnButtons.js +0 -45
  397. package/components/table/TableSettingsColumnButtons.js.map +0 -1
  398. package/components/table/TableSettingsColumnDetails.js.map +0 -1
  399. package/components/table/TableSettingsDialog.js +0 -208
  400. package/components/table/TableSettingsDialog.js.map +0 -1
  401. package/components/table/TableSettingsDialogFooter.js.map +0 -1
  402. package/components/table/TableSettingsListContainer.js.map +0 -1
  403. package/components/table/TableSettingsListItem.js +0 -96
  404. package/components/table/TableSettingsListItem.js.map +0 -1
  405. /package/components/table/{TableCol.d.ts → native/TableCol.d.ts} +0 -0
  406. /package/components/table/{TableCol.js → native/TableCol.js} +0 -0
  407. /package/components/table/{TableHead.d.ts → native/TableHead.d.ts} +0 -0
  408. /package/components/table/{TableSettingsColumnButtons.d.ts → native/TableSettingsColumnButtons.d.ts} +0 -0
  409. /package/components/table/{TableSettingsColumnDetails.d.ts → native/TableSettingsColumnDetails.d.ts} +0 -0
  410. /package/components/table/{TableSettingsDialogFooter.d.ts → native/TableSettingsDialogFooter.d.ts} +0 -0
  411. /package/components/table/{TableSettingsListContainer.d.ts → native/TableSettingsListContainer.d.ts} +0 -0
  412. /package/components/table/{TableSettingsListItem.d.ts → native/TableSettingsListItem.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"eventHandling.js","sources":["../../../../src/components/map/utils/eventHandling.ts"],"sourcesContent":["import type { MapEvent } from './mapTypes';\n\nexport type EventListenerMap = {\n [key: string]: Function;\n};\n\ntype MapTimeGuard = {\n delayTime: number;\n timer: NodeJS.Timeout | undefined;\n delay(callback: Function, ...args: any[]): void;\n cancel(): void;\n};\n\nconst createMapTimeGuard = (delay = 250): MapTimeGuard => {\n let timer: NodeJS.Timeout | undefined;\n\n const delayFunc = <T>(callback: Function, ...args: T[]): void => {\n cancelFunc();\n timer = setTimeout(() => callback(...args), delay);\n };\n\n const cancelFunc = (): void => {\n clearTimeout(timer);\n };\n\n return {\n delayTime: delay,\n timer,\n delay: delayFunc,\n cancel: cancelFunc,\n };\n};\n\ntype EnhancedMapEvent = {\n viewportX: number;\n viewportY: number;\n map: H.Map;\n calculateGeoCoords(): H.geo.Point;\n};\n\nexport const createEnhancedMapEvent = (\n event: H.mapevents.Event | null,\n mapApi: H.Map\n): EnhancedMapEvent | { map: H.Map } => {\n if (!event || !event.currentPointer) {\n return {\n map: mapApi,\n };\n }\n\n const viewportX = event.currentPointer.viewportX;\n const viewportY = event.currentPointer.viewportY;\n\n const calculateGeoCoords = (): H.geo.Point => {\n return mapApi.screenToGeo(viewportX, viewportY);\n };\n\n return {\n viewportX,\n viewportY,\n map: mapApi,\n calculateGeoCoords,\n };\n};\n\nexport const createEnhancedListener = (listener: Function, mapApi: H.Map) => {\n return (event: H.mapevents.Event) => listener(event, createEnhancedMapEvent(event, mapApi));\n};\n\nexport type RioEventTarget = H.util.EventTarget & {\n rioMapRemoveEvents?: Function;\n};\n\nexport const addEventListenerMap = (\n eventTarget: RioEventTarget,\n eventListenerMap: EventListenerMap | undefined,\n mapApi: H.Map\n) => {\n if (!eventListenerMap) {\n return;\n }\n\n const enhancedMap: Record<string, any> = {};\n\n Object.keys(eventListenerMap).forEach(key => {\n const enhancedListener = createEnhancedListener(eventListenerMap[key], mapApi);\n eventTarget.addEventListener(key, enhancedListener as any);\n enhancedMap[key] = enhancedListener;\n });\n\n eventTarget.rioMapRemoveEvents = () => {\n Object.keys(enhancedMap).forEach(key => {\n eventTarget.removeEventListener(key, enhancedMap[key]);\n });\n\n delete eventTarget.rioMapRemoveEvents;\n\n return mapApi;\n };\n};\n\nexport const removeEventListenerMap = (eventTarget: RioEventTarget) => {\n if (eventTarget.rioMapRemoveEvents) {\n return eventTarget.rioMapRemoveEvents();\n }\n};\n\nexport const createTapOnDblTapPreventer = (\n eventListenerMap: EventListenerMap,\n delayBetweenTaps = 300\n): EventListenerMap => {\n const result = { ...eventListenerMap };\n if (!eventListenerMap[EventUtils.TAP] || !eventListenerMap[EventUtils.DBL_TAP]) {\n return result;\n }\n\n const guard = createMapTimeGuard(delayBetweenTaps);\n\n result[EventUtils.TAP] = <T>(...args: T[]) => {\n guard.delay(eventListenerMap[EventUtils.TAP], ...args);\n };\n\n result[EventUtils.DBL_TAP] = <T>(...args: T[]) => {\n guard.cancel();\n eventListenerMap[EventUtils.DBL_TAP](...args);\n };\n\n return result;\n};\n\nexport const getMouseButton = (event: MapEvent): number => {\n return (event.originalEvent as unknown as H.mapevents.Pointer).button;\n};\n\nexport const isRightClick = (event: MapEvent): boolean => {\n return getMouseButton(event) === EventUtils.MOUSE_BUTTONS.RIGHT;\n};\n\nexport const EventUtils = {\n MOUSE_BUTTONS: {\n LEFT: 0,\n MIDDLE: 1,\n RIGHT: 2,\n },\n\n POINTER_DOWN: 'pointerdown',\n POINTER_UP: 'pointerup',\n POINTER_MOVE: 'pointermove',\n POINTER_ENTER: 'pointerenter',\n POINTER_LEAVE: 'pointerleave',\n POINTER_CANCEL: 'pointercancel',\n\n DRAG_START: 'dragstart',\n DRAG: 'drag',\n DRAG_END: 'dragend',\n TAP: 'tap',\n DBL_TAP: 'dbltap',\n LONGPRESS: 'longpress',\n\n CONTEXTMENU: 'contextmenu',\n CONTEXTMENU_CLOSE: 'contextmenuclose',\n\n MAP_VIEW_CHANGE_START: 'mapviewchangestart',\n MAP_VIEW_CHANGE: 'mapviewchange',\n MAP_VIEW_CHANGE_END: 'mapviewchangeend',\n\n BASE_LAYER_CHANGE: 'baselayerchange',\n ENGINE_CHANGE: 'enginechange',\n\n createTapOnDblTapPreventer,\n getMouseButton,\n isRightClick,\n};\n\nexport default EventUtils;\n"],"names":["createMapTimeGuard","delay","timer","delayFunc","callback","args","cancelFunc","createEnhancedMapEvent","event","mapApi","viewportX","viewportY","createEnhancedListener","listener","addEventListenerMap","eventTarget","eventListenerMap","enhancedMap","key","enhancedListener","removeEventListenerMap","createTapOnDblTapPreventer","delayBetweenTaps","result","EventUtils","guard","getMouseButton","isRightClick"],"mappings":"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"}
1
+ {"version":3,"file":"eventHandling.js","sources":["../../../../src/components/map/utils/eventHandling.ts"],"sourcesContent":["import type { MapEvent } from './mapTypes';\n\nexport type EventListenerMap = {\n [key: string]: Function;\n};\n\ntype MapTimeGuard = {\n delayTime: number;\n timer: NodeJS.Timeout | undefined;\n delay(callback: Function, ...args: any[]): void;\n cancel(): void;\n};\n\nconst createMapTimeGuard = (delay = 250): MapTimeGuard => {\n let timer: NodeJS.Timeout | undefined;\n\n const delayFunc = <T>(callback: Function, ...args: T[]): void => {\n cancelFunc();\n timer = setTimeout(() => callback(...args), delay);\n };\n\n const cancelFunc = (): void => {\n clearTimeout(timer);\n };\n\n return {\n delayTime: delay,\n timer,\n delay: delayFunc,\n cancel: cancelFunc,\n };\n};\n\ntype EnhancedMapEvent = {\n viewportX: number;\n viewportY: number;\n map: H.Map;\n calculateGeoCoords(): H.geo.Point;\n};\n\nexport const createEnhancedMapEvent = (\n event: H.mapevents.Event | null,\n mapApi: H.Map\n): EnhancedMapEvent | { map: H.Map } => {\n if (!event || !event.currentPointer) {\n return {\n map: mapApi,\n };\n }\n\n const viewportX = event.currentPointer.viewportX;\n const viewportY = event.currentPointer.viewportY;\n\n const calculateGeoCoords = (): H.geo.Point => mapApi.screenToGeo(viewportX, viewportY);\n\n return {\n viewportX,\n viewportY,\n map: mapApi,\n calculateGeoCoords,\n };\n};\n\nexport const createEnhancedListener = (listener: Function, mapApi: H.Map) => (event: H.mapevents.Event) =>\n listener(event, createEnhancedMapEvent(event, mapApi));\n\nexport type RioEventTarget = H.util.EventTarget & {\n rioMapRemoveEvents?: Function;\n};\n\nexport const addEventListenerMap = (\n eventTarget: RioEventTarget,\n eventListenerMap: EventListenerMap | undefined,\n mapApi: H.Map\n) => {\n if (!eventListenerMap) {\n return;\n }\n\n const enhancedMap: Record<string, any> = {};\n\n Object.keys(eventListenerMap).forEach(key => {\n const enhancedListener = createEnhancedListener(eventListenerMap[key], mapApi);\n eventTarget.addEventListener(key, enhancedListener as any);\n enhancedMap[key] = enhancedListener;\n });\n\n eventTarget.rioMapRemoveEvents = () => {\n Object.keys(enhancedMap).forEach(key => {\n eventTarget.removeEventListener(key, enhancedMap[key]);\n });\n\n delete eventTarget.rioMapRemoveEvents;\n\n return mapApi;\n };\n};\n\nexport const removeEventListenerMap = (eventTarget: RioEventTarget) => {\n if (eventTarget.rioMapRemoveEvents) {\n return eventTarget.rioMapRemoveEvents();\n }\n};\n\nexport const createTapOnDblTapPreventer = (\n eventListenerMap: EventListenerMap,\n delayBetweenTaps = 300\n): EventListenerMap => {\n const result = { ...eventListenerMap };\n if (!eventListenerMap[EventUtils.TAP] || !eventListenerMap[EventUtils.DBL_TAP]) {\n return result;\n }\n\n const guard = createMapTimeGuard(delayBetweenTaps);\n\n result[EventUtils.TAP] = <T>(...args: T[]) => {\n guard.delay(eventListenerMap[EventUtils.TAP], ...args);\n };\n\n result[EventUtils.DBL_TAP] = <T>(...args: T[]) => {\n guard.cancel();\n eventListenerMap[EventUtils.DBL_TAP](...args);\n };\n\n return result;\n};\n\nexport const getMouseButton = (event: MapEvent): number =>\n (event.originalEvent as unknown as H.mapevents.Pointer).button;\n\nexport const isRightClick = (event: MapEvent): boolean => getMouseButton(event) === EventUtils.MOUSE_BUTTONS.RIGHT;\n\nexport const EventUtils = {\n MOUSE_BUTTONS: {\n LEFT: 0,\n MIDDLE: 1,\n RIGHT: 2,\n },\n\n POINTER_DOWN: 'pointerdown',\n POINTER_UP: 'pointerup',\n POINTER_MOVE: 'pointermove',\n POINTER_ENTER: 'pointerenter',\n POINTER_LEAVE: 'pointerleave',\n POINTER_CANCEL: 'pointercancel',\n\n DRAG_START: 'dragstart',\n DRAG: 'drag',\n DRAG_END: 'dragend',\n TAP: 'tap',\n DBL_TAP: 'dbltap',\n LONGPRESS: 'longpress',\n\n CONTEXTMENU: 'contextmenu',\n CONTEXTMENU_CLOSE: 'contextmenuclose',\n\n MAP_VIEW_CHANGE_START: 'mapviewchangestart',\n MAP_VIEW_CHANGE: 'mapviewchange',\n MAP_VIEW_CHANGE_END: 'mapviewchangeend',\n\n BASE_LAYER_CHANGE: 'baselayerchange',\n ENGINE_CHANGE: 'enginechange',\n\n createTapOnDblTapPreventer,\n getMouseButton,\n isRightClick,\n};\n\nexport default EventUtils;\n"],"names":["createMapTimeGuard","delay","timer","delayFunc","callback","args","cancelFunc","createEnhancedMapEvent","event","mapApi","viewportX","viewportY","createEnhancedListener","listener","addEventListenerMap","eventTarget","eventListenerMap","enhancedMap","key","enhancedListener","removeEventListenerMap","createTapOnDblTapPreventer","delayBetweenTaps","result","EventUtils","guard","getMouseButton","isRightClick"],"mappings":"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"}
@@ -25,4 +25,4 @@ export declare const ease: (startCoord?: {
25
25
  }, endCoord?: {
26
26
  lat: number;
27
27
  lng: number;
28
- }, durationMs?: number, onStep?: (pos: Position) => void, onComplete?: () => void) => void;
28
+ }, durationMs?: number, onStep?: (_pos: Position) => void, onComplete?: () => void) => void;
@@ -3,12 +3,15 @@ const c = () => ({
3
3
  right: Number.NEGATIVE_INFINITY,
4
4
  bottom: Number.POSITIVE_INFINITY,
5
5
  left: Number.POSITIVE_INFINITY
6
- }), E = (t) => t.top !== Number.NEGATIVE_INFINITY && t.bottom !== Number.POSITIVE_INFINITY && t.left !== Number.POSITIVE_INFINITY && t.right !== Number.NEGATIVE_INFINITY, h = (t) => t.reduce((n, e) => ({
7
- top: Math.max(n.top, e.lat),
8
- right: Math.max(n.right, e.lng),
9
- bottom: Math.min(n.bottom, e.lat),
10
- left: Math.min(n.left, e.lng)
11
- }), c()), T = /^\s*(-?\d+(\.\d+)?)\s*[,\s]\s*(-?\d+(\.\d+)?)\s*$/, V = (t) => {
6
+ }), E = (t) => t.top !== Number.NEGATIVE_INFINITY && t.bottom !== Number.POSITIVE_INFINITY && t.left !== Number.POSITIVE_INFINITY && t.right !== Number.NEGATIVE_INFINITY, h = (t) => t.reduce(
7
+ (n, e) => ({
8
+ top: Math.max(n.top, e.lat),
9
+ right: Math.max(n.right, e.lng),
10
+ bottom: Math.min(n.bottom, e.lat),
11
+ left: Math.min(n.left, e.lng)
12
+ }),
13
+ c()
14
+ ), T = /^\s*(-?\d+(\.\d+)?)\s*[,\s]\s*(-?\d+(\.\d+)?)\s*$/, V = (t) => {
12
15
  const n = T.exec(t);
13
16
  if (n) {
14
17
  const e = Number.parseFloat(n[1]), I = Number.parseFloat(n[3]);
@@ -19,14 +22,14 @@ const c = () => ({
19
22
  };
20
23
  }
21
24
  }, F = (t = { lat: 0, lng: 0 }, n = { lat: 1, lng: 1 }, e = 200, I = (a) => {
22
- }, u = () => {
25
+ }, r = () => {
23
26
  }) => {
24
- const a = window.requestAnimationFrame, r = e / 16, m = (n.lat - t.lat) / r, i = (n.lng - t.lng) / r, g = Math.PI / r;
25
- let s = t.lat, N = t.lng, l = 0;
26
- const o = () => {
27
- l += g, s += m * Math.sin(l) ** 2 * 2, N += i * Math.sin(l) ** 2 * 2, l < Math.PI ? (I({ lat: s, lng: N }), a(o)) : (I(n), u());
27
+ const a = window.requestAnimationFrame, s = e / 16, i = (n.lat - t.lat) / s, u = (n.lng - t.lng) / s, g = Math.PI / s;
28
+ let N = t.lat, o = t.lng, l = 0;
29
+ const m = () => {
30
+ l += g, N += i * Math.sin(l) ** 2 * 2, o += u * Math.sin(l) ** 2 * 2, l < Math.PI ? (I({ lat: N, lng: o }), a(m)) : (I(n), r());
28
31
  };
29
- a(o);
32
+ a(m);
30
33
  };
31
34
  export {
32
35
  h as calculateBoundingBox,
@@ -1 +1 @@
1
- {"version":3,"file":"positions.js","sources":["../../../../src/components/map/utils/positions.ts"],"sourcesContent":["import type { BoundingBox, Position } from '../../../mapTypes';\n\nconst createBoundingBox = (): BoundingBox => ({\n top: Number.NEGATIVE_INFINITY,\n right: Number.NEGATIVE_INFINITY,\n bottom: Number.POSITIVE_INFINITY,\n left: Number.POSITIVE_INFINITY,\n});\n\nexport const isValidBoundingBox = (box: BoundingBox): boolean => {\n return (\n box.top !== Number.NEGATIVE_INFINITY &&\n box.bottom !== Number.POSITIVE_INFINITY &&\n box.left !== Number.POSITIVE_INFINITY &&\n box.right !== Number.NEGATIVE_INFINITY\n );\n};\n\nexport const calculateBoundingBox = (positions: { lat: number; lng: number }[]): BoundingBox => {\n return positions.reduce((acc, cur) => {\n return {\n top: Math.max(acc.top, cur.lat),\n right: Math.max(acc.right, cur.lng),\n bottom: Math.min(acc.bottom, cur.lat),\n left: Math.min(acc.left, cur.lng),\n };\n }, createBoundingBox());\n};\n\nconst COORDS_REGEX = /^\\s*(-?\\d+(\\.\\d+)?)\\s*[,\\s]\\s*(-?\\d+(\\.\\d+)?)\\s*$/;\n\nexport const parsePositionFromString = (value: string) => {\n const match = COORDS_REGEX.exec(value);\n if (match) {\n const lat = Number.parseFloat(match[1]);\n const lng = Number.parseFloat(match[3]);\n if (lat >= -90 && lat <= 90 && lng >= -180 && lng <= 180) {\n return {\n lat,\n lng,\n };\n }\n }\n};\n\n/**\n * Ease function that can be used to animate positions on the map.\n *\n * See: https://developer.here.com/documentation/examples/maps-js/markers/markers-update-position-with-animation\n *\n * @param {H.geo.IPoint} startCoord start geo coordinate\n * @param {H.geo.IPoint} endCoord end geo coordinate\n * @param number durationMs duration of animation between start & end coordinates\n * @param function onStep callback executed each step\n * @param function onStep callback executed at the end\n */\nexport const ease = (\n startCoord = { lat: 0, lng: 0 },\n endCoord = { lat: 1, lng: 1 },\n durationMs = 200,\n onStep = (pos: Position) => {},\n onComplete = () => {}\n) => {\n const raf = window.requestAnimationFrame;\n\n const stepCount = durationMs / 16;\n\n const valueIncrementLat = (endCoord.lat - startCoord.lat) / stepCount;\n const valueIncrementLng = (endCoord.lng - startCoord.lng) / stepCount;\n const sinValueIncrement = Math.PI / stepCount;\n\n let currentValueLat = startCoord.lat;\n let currentValueLng = startCoord.lng;\n let currentSinValue = 0;\n\n const step = () => {\n currentSinValue += sinValueIncrement;\n currentValueLat += valueIncrementLat * Math.sin(currentSinValue) ** 2 * 2;\n currentValueLng += valueIncrementLng * Math.sin(currentSinValue) ** 2 * 2;\n\n if (currentSinValue < Math.PI) {\n onStep({ lat: currentValueLat, lng: currentValueLng });\n raf(step);\n } else {\n onStep(endCoord);\n onComplete();\n }\n };\n\n raf(step);\n};\n"],"names":["createBoundingBox","isValidBoundingBox","box","calculateBoundingBox","positions","acc","cur","COORDS_REGEX","parsePositionFromString","value","match","lat","lng","ease","startCoord","endCoord","durationMs","onStep","pos","onComplete","raf","stepCount","valueIncrementLat","valueIncrementLng","sinValueIncrement","currentValueLat","currentValueLng","currentSinValue","step"],"mappings":"AAEA,MAAMA,IAAoB,OAAoB;AAAA,EAC1C,KAAK,OAAO;AAAA,EACZ,OAAO,OAAO;AAAA,EACd,QAAQ,OAAO;AAAA,EACf,MAAM,OAAO;AACjB,IAEaC,IAAqB,CAACC,MAE3BA,EAAI,QAAQ,OAAO,qBACnBA,EAAI,WAAW,OAAO,qBACtBA,EAAI,SAAS,OAAO,qBACpBA,EAAI,UAAU,OAAO,mBAIhBC,IAAuB,CAACC,MAC1BA,EAAU,OAAO,CAACC,GAAKC,OACnB;AAAA,EACH,KAAK,KAAK,IAAID,EAAI,KAAKC,EAAI,GAAG;AAAA,EAC9B,OAAO,KAAK,IAAID,EAAI,OAAOC,EAAI,GAAG;AAAA,EAClC,QAAQ,KAAK,IAAID,EAAI,QAAQC,EAAI,GAAG;AAAA,EACpC,MAAM,KAAK,IAAID,EAAI,MAAMC,EAAI,GAAG;AAAA,IAErCN,GAAmB,GAGpBO,IAAe,qDAERC,IAA0B,CAACC,MAAkB;AACtD,QAAMC,IAAQH,EAAa,KAAKE,CAAK;AACrC,MAAIC,GAAO;AACP,UAAMC,IAAM,OAAO,WAAWD,EAAM,CAAC,CAAC,GAChCE,IAAM,OAAO,WAAWF,EAAM,CAAC,CAAC;AACtC,QAAIC,KAAO,OAAOA,KAAO,MAAMC,KAAO,QAAQA,KAAO;AACjD,aAAO;AAAA,QACH,KAAAD;AAAA,QACA,KAAAC;AAAA,MAAA;AAAA,EAGZ;AACJ,GAaaC,IAAO,CAChBC,IAAa,EAAE,KAAK,GAAG,KAAK,KAC5BC,IAAW,EAAE,KAAK,GAAG,KAAK,EAAA,GAC1BC,IAAa,KACbC,IAAS,CAACC,MAAkB;AAAC,GAC7BC,IAAa,MAAM;AAAC,MACnB;AACD,QAAMC,IAAM,OAAO,uBAEbC,IAAYL,IAAa,IAEzBM,KAAqBP,EAAS,MAAMD,EAAW,OAAOO,GACtDE,KAAqBR,EAAS,MAAMD,EAAW,OAAOO,GACtDG,IAAoB,KAAK,KAAKH;AAEpC,MAAII,IAAkBX,EAAW,KAC7BY,IAAkBZ,EAAW,KAC7Ba,IAAkB;AAEtB,QAAMC,IAAO,MAAM;AACf,IAAAD,KAAmBH,GACnBC,KAAmBH,IAAoB,KAAK,IAAIK,CAAe,KAAK,IAAI,GACxED,KAAmBH,IAAoB,KAAK,IAAII,CAAe,KAAK,IAAI,GAEpEA,IAAkB,KAAK,MACvBV,EAAO,EAAE,KAAKQ,GAAiB,KAAKC,GAAiB,GACrDN,EAAIQ,CAAI,MAERX,EAAOF,CAAQ,GACfI,EAAA;AAAA,EAER;AAEA,EAAAC,EAAIQ,CAAI;AACZ;"}
1
+ {"version":3,"file":"positions.js","sources":["../../../../src/components/map/utils/positions.ts"],"sourcesContent":["import type { BoundingBox, Position } from '../../../mapTypes';\n\nconst createBoundingBox = (): BoundingBox => ({\n top: Number.NEGATIVE_INFINITY,\n right: Number.NEGATIVE_INFINITY,\n bottom: Number.POSITIVE_INFINITY,\n left: Number.POSITIVE_INFINITY,\n});\n\nexport const isValidBoundingBox = (box: BoundingBox): boolean =>\n box.top !== Number.NEGATIVE_INFINITY &&\n box.bottom !== Number.POSITIVE_INFINITY &&\n box.left !== Number.POSITIVE_INFINITY &&\n box.right !== Number.NEGATIVE_INFINITY;\n\nexport const calculateBoundingBox = (positions: { lat: number; lng: number }[]): BoundingBox =>\n positions.reduce(\n (acc, cur) => ({\n top: Math.max(acc.top, cur.lat),\n right: Math.max(acc.right, cur.lng),\n bottom: Math.min(acc.bottom, cur.lat),\n left: Math.min(acc.left, cur.lng),\n }),\n createBoundingBox()\n );\n\nconst COORDS_REGEX = /^\\s*(-?\\d+(\\.\\d+)?)\\s*[,\\s]\\s*(-?\\d+(\\.\\d+)?)\\s*$/;\n\nexport const parsePositionFromString = (value: string) => {\n const match = COORDS_REGEX.exec(value);\n if (match) {\n const lat = Number.parseFloat(match[1]);\n const lng = Number.parseFloat(match[3]);\n if (lat >= -90 && lat <= 90 && lng >= -180 && lng <= 180) {\n return {\n lat,\n lng,\n };\n }\n }\n};\n\n/**\n * Ease function that can be used to animate positions on the map.\n *\n * See: https://developer.here.com/documentation/examples/maps-js/markers/markers-update-position-with-animation\n *\n * @param {H.geo.IPoint} startCoord start geo coordinate\n * @param {H.geo.IPoint} endCoord end geo coordinate\n * @param number durationMs duration of animation between start & end coordinates\n * @param function onStep callback executed each step\n * @param function onStep callback executed at the end\n */\nexport const ease = (\n startCoord = { lat: 0, lng: 0 },\n endCoord = { lat: 1, lng: 1 },\n durationMs = 200,\n onStep = (_pos: Position) => {},\n onComplete = () => {}\n) => {\n const raf = window.requestAnimationFrame;\n\n const stepCount = durationMs / 16;\n\n const valueIncrementLat = (endCoord.lat - startCoord.lat) / stepCount;\n const valueIncrementLng = (endCoord.lng - startCoord.lng) / stepCount;\n const sinValueIncrement = Math.PI / stepCount;\n\n let currentValueLat = startCoord.lat;\n let currentValueLng = startCoord.lng;\n let currentSinValue = 0;\n\n const step = () => {\n currentSinValue += sinValueIncrement;\n currentValueLat += valueIncrementLat * Math.sin(currentSinValue) ** 2 * 2;\n currentValueLng += valueIncrementLng * Math.sin(currentSinValue) ** 2 * 2;\n\n if (currentSinValue < Math.PI) {\n onStep({ lat: currentValueLat, lng: currentValueLng });\n raf(step);\n } else {\n onStep(endCoord);\n onComplete();\n }\n };\n\n raf(step);\n};\n"],"names":["createBoundingBox","isValidBoundingBox","box","calculateBoundingBox","positions","acc","cur","COORDS_REGEX","parsePositionFromString","value","match","lat","lng","ease","startCoord","endCoord","durationMs","onStep","_pos","onComplete","raf","stepCount","valueIncrementLat","valueIncrementLng","sinValueIncrement","currentValueLat","currentValueLng","currentSinValue","step"],"mappings":"AAEA,MAAMA,IAAoB,OAAoB;AAAA,EAC1C,KAAK,OAAO;AAAA,EACZ,OAAO,OAAO;AAAA,EACd,QAAQ,OAAO;AAAA,EACf,MAAM,OAAO;AACjB,IAEaC,IAAqB,CAACC,MAC/BA,EAAI,QAAQ,OAAO,qBACnBA,EAAI,WAAW,OAAO,qBACtBA,EAAI,SAAS,OAAO,qBACpBA,EAAI,UAAU,OAAO,mBAEZC,IAAuB,CAACC,MACjCA,EAAU;AAAA,EACN,CAACC,GAAKC,OAAS;AAAA,IACX,KAAK,KAAK,IAAID,EAAI,KAAKC,EAAI,GAAG;AAAA,IAC9B,OAAO,KAAK,IAAID,EAAI,OAAOC,EAAI,GAAG;AAAA,IAClC,QAAQ,KAAK,IAAID,EAAI,QAAQC,EAAI,GAAG;AAAA,IACpC,MAAM,KAAK,IAAID,EAAI,MAAMC,EAAI,GAAG;AAAA,EAAA;AAAA,EAEpCN,EAAA;AACJ,GAEEO,IAAe,qDAERC,IAA0B,CAACC,MAAkB;AACtD,QAAMC,IAAQH,EAAa,KAAKE,CAAK;AACrC,MAAIC,GAAO;AACP,UAAMC,IAAM,OAAO,WAAWD,EAAM,CAAC,CAAC,GAChCE,IAAM,OAAO,WAAWF,EAAM,CAAC,CAAC;AACtC,QAAIC,KAAO,OAAOA,KAAO,MAAMC,KAAO,QAAQA,KAAO;AACjD,aAAO;AAAA,QACH,KAAAD;AAAA,QACA,KAAAC;AAAA,MAAA;AAAA,EAGZ;AACJ,GAaaC,IAAO,CAChBC,IAAa,EAAE,KAAK,GAAG,KAAK,KAC5BC,IAAW,EAAE,KAAK,GAAG,KAAK,EAAA,GAC1BC,IAAa,KACbC,IAAS,CAACC,MAAmB;AAAC,GAC9BC,IAAa,MAAM;AAAC,MACnB;AACD,QAAMC,IAAM,OAAO,uBAEbC,IAAYL,IAAa,IAEzBM,KAAqBP,EAAS,MAAMD,EAAW,OAAOO,GACtDE,KAAqBR,EAAS,MAAMD,EAAW,OAAOO,GACtDG,IAAoB,KAAK,KAAKH;AAEpC,MAAII,IAAkBX,EAAW,KAC7BY,IAAkBZ,EAAW,KAC7Ba,IAAkB;AAEtB,QAAMC,IAAO,MAAM;AACf,IAAAD,KAAmBH,GACnBC,KAAmBH,IAAoB,KAAK,IAAIK,CAAe,KAAK,IAAI,GACxED,KAAmBH,IAAoB,KAAK,IAAII,CAAe,KAAK,IAAI,GAEpEA,IAAkB,KAAK,MACvBV,EAAO,EAAE,KAAKQ,GAAiB,KAAKC,GAAiB,GACrDN,EAAIQ,CAAI,MAERX,EAAOF,CAAQ,GACfI,EAAA;AAAA,EAER;AAEA,EAAAC,EAAIQ,CAAI;AACZ;"}
@@ -1,5 +1,5 @@
1
1
  import { MapCredentials, MapType } from './mapTypes';
2
- export declare const getPPI: () => 200 | 100;
2
+ export declare const getPPI: () => 100 | 200;
3
3
  export declare const isVectorBased: (enableWebGL: boolean, baseLayer: MapType) => boolean;
4
4
  export declare const getPlatform: (credentials: MapCredentials) => H.service.Platform;
5
5
  export declare const getBaseTileLayer: <T>(rasterTileService: T, engineType: H.Map.EngineType, minZoom: number, maxZoom: number) => H.map.layer.TileLayer;
@@ -1,17 +1,17 @@
1
1
  import { jsx as e, Fragment as a } from "react/jsx-runtime";
2
- import { noop as n } from "es-toolkit/function";
2
+ import { noop as m } from "es-toolkit/function";
3
3
  import d from "./MenuItem.js";
4
- const u = ({ items: m, closeMenu: t = n, onMouseEnter: p = n }) => /* @__PURE__ */ e(a, { children: m.map((r, o) => /* @__PURE__ */ e(
4
+ const x = ({ items: n, closeMenu: t = m, onMouseEnter: p = m }) => /* @__PURE__ */ e(a, { children: n.map((o, r) => /* @__PURE__ */ e(
5
5
  d,
6
6
  {
7
- ...r,
8
- index: r.index ?? o,
7
+ ...o,
8
+ index: o.index ?? r,
9
9
  closeMenu: t,
10
10
  onMouseEnter: p
11
11
  },
12
- r.index ?? o
12
+ o.index ?? r
13
13
  )) });
14
14
  export {
15
- u as default
15
+ x as default
16
16
  };
17
17
  //# sourceMappingURL=MenuItems.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItems.js","sources":["../../../src/components/menuItems/MenuItems.tsx"],"sourcesContent":["import { noop } from 'es-toolkit/function';\n\nimport MenuItemComponent, { type MenuItemProps as MenuItem } from './MenuItem';\n\nexport type MenuItemsProps = {\n items: MenuItem[];\n closeMenu?: () => void;\n onMouseEnter?: () => void;\n};\n\nconst MenuItems = ({ items, closeMenu = noop, onMouseEnter = noop }: MenuItemsProps) => {\n return (\n <>\n {items.map((item, index) => (\n <MenuItemComponent\n key={item.index ?? index}\n {...item}\n index={item.index ?? index}\n closeMenu={closeMenu}\n onMouseEnter={onMouseEnter}\n />\n ))}\n </>\n );\n};\n\nexport default MenuItems;\n"],"names":["MenuItems","items","closeMenu","noop","onMouseEnter","jsx","Fragment","item","index","MenuItemComponent"],"mappings":";;;AAUA,MAAMA,IAAY,CAAC,EAAE,OAAAC,GAAO,WAAAC,IAAYC,GAAM,cAAAC,IAAeD,QAErD,gBAAAE,EAAAC,GAAA,EACK,UAAAL,EAAM,IAAI,CAACM,GAAMC,MACd,gBAAAH;AAAA,EAACI;AAAAA,EAAA;AAAA,IAEI,GAAGF;AAAA,IACJ,OAAOA,EAAK,SAASC;AAAA,IACrB,WAAAN;AAAA,IACA,cAAAE;AAAA,EAAA;AAAA,EAJKG,EAAK,SAASC;AAAA,CAM1B,GACL;"}
1
+ {"version":3,"file":"MenuItems.js","sources":["../../../src/components/menuItems/MenuItems.tsx"],"sourcesContent":["import { noop } from 'es-toolkit/function';\n\nimport MenuItemComponent, { type MenuItemProps as MenuItem } from './MenuItem';\n\nexport type MenuItemsProps = {\n items: MenuItem[];\n closeMenu?: () => void;\n onMouseEnter?: () => void;\n};\n\nconst MenuItems = ({ items, closeMenu = noop, onMouseEnter = noop }: MenuItemsProps) => (\n <>\n {items.map((item, index) => (\n <MenuItemComponent\n key={item.index ?? index}\n {...item}\n index={item.index ?? index}\n closeMenu={closeMenu}\n onMouseEnter={onMouseEnter}\n />\n ))}\n </>\n);\n\nexport default MenuItems;\n"],"names":["MenuItems","items","closeMenu","noop","onMouseEnter","jsx","Fragment","item","index","MenuItemComponent"],"mappings":";;;AAUA,MAAMA,IAAY,CAAC,EAAE,OAAAC,GAAO,WAAAC,IAAYC,GAAM,cAAAC,IAAeD,EAAA,MACzD,gBAAAE,EAAAC,GAAA,EACK,UAAAL,EAAM,IAAI,CAACM,GAAMC,MACd,gBAAAH;AAAA,EAACI;AAAAA,EAAA;AAAA,IAEI,GAAGF;AAAA,IACJ,OAAOA,EAAK,SAASC;AAAA,IACrB,WAAAN;AAAA,IACA,cAAAE;AAAA,EAAA;AAAA,EAJKG,EAAK,SAASC;AAKvB,CACH,EAAA,CACL;"}
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationsContainer.js","sources":["../../../src/components/notification/NotificationsContainer.tsx"],"sourcesContent":["import { ToastContainer } from 'react-toastify';\n\n// Note:\n// With the new library we have to decide to either stack them all or to show a limit and one they are gone,\n// the remaining notifications slide in.\n\nconst NotificationsContainer = () => {\n return (\n <div className='notification-container-wrapper'>\n <ToastContainer className='notification-container' stacked={false} limit={5} />\n </div>\n );\n};\n\nexport default NotificationsContainer;\n"],"names":["NotificationsContainer","jsx","ToastContainer"],"mappings":";;AAMA,MAAMA,IAAyB,MAEvB,gBAAAC,EAAC,OAAA,EAAI,WAAU,kCACX,UAAA,gBAAAA,EAACC,GAAA,EAAe,WAAU,0BAAyB,SAAS,IAAO,OAAO,EAAA,CAAG,GACjF;"}
1
+ {"version":3,"file":"NotificationsContainer.js","sources":["../../../src/components/notification/NotificationsContainer.tsx"],"sourcesContent":["import { ToastContainer } from 'react-toastify';\n\n// Note:\n// With the new library we have to decide to either stack them all or to show a limit and one they are gone,\n// the remaining notifications slide in.\n\nconst NotificationsContainer = () => (\n <div className='notification-container-wrapper'>\n <ToastContainer className='notification-container' stacked={false} limit={5} />\n </div>\n);\n\nexport default NotificationsContainer;\n"],"names":["NotificationsContainer","jsx","ToastContainer"],"mappings":";;AAMA,MAAMA,IAAyB,MAC3B,gBAAAC,EAAC,OAAA,EAAI,WAAU,kCACX,UAAA,gBAAAA,EAACC,GAAA,EAAe,WAAU,0BAAyB,SAAS,IAAO,OAAO,GAAG,EAAA,CACjF;"}
@@ -1,9 +1,9 @@
1
- import { jsx as l, jsxs as N, Fragment as J } from "react/jsx-runtime";
1
+ import { jsx as l, jsxs as b, Fragment as J } from "react/jsx-runtime";
2
2
  import { forwardRef as Q, useRef as Y, useState as Z } from "react";
3
3
  import { noop as ee } from "es-toolkit/function";
4
- import _ from "../../utils/classNames.js";
4
+ import x from "../../utils/classNames.js";
5
5
  import re from "../../hooks/useAfterMount.js";
6
- const ne = 3, C = 0, se = 1, te = 0, oe = Number.MAX_VALUE, ae = [
6
+ const ne = 3, P = 0, se = 1, te = 0, oe = Number.MAX_VALUE, ae = [
7
7
  "0",
8
8
  "1",
9
9
  "2",
@@ -23,40 +23,40 @@ const ne = 3, C = 0, se = 1, te = 0, oe = Number.MAX_VALUE, ae = [
23
23
  "ArrowRight",
24
24
  "ArrowDown",
25
25
  "ArrowUp"
26
- ], x = (r, n, s, u, h) => r === void 0 && (u || h) ? "" : M(Number(r), n, s) || C, M = (r, n, s) => r < n ? n : r > s ? s : r, w = (r, n) => typeof r == "number" && Number.isFinite(r) ? r : n, F = (r, n, s) => n.key === r && s.current.includes(r), I = (r, n, s, u) => s.key === r && n.includes(u.current), de = Q((r, n) => {
26
+ ], C = (r, n, s, u, y) => r === void 0 && (u || y) ? "" : M(Number(r), n, s) || P, M = (r, n, s) => r < n ? n : r > s ? s : r, w = (r, n) => typeof r == "number" && Number.isFinite(r) ? r : n, F = (r, n, s) => n.key === r && s.current.includes(r), I = (r, n, s, u) => s.key === r && n.includes(u.current), de = Q((r, n) => {
27
27
  const {
28
28
  id: s,
29
29
  min: u,
30
- max: h,
31
- value: b,
32
- step: P = se,
30
+ max: y,
31
+ value: A,
32
+ step: S = se,
33
33
  disabled: T = !1,
34
34
  noDefault: d = !1,
35
- onChange: y,
36
- onKeyDown: S = ee,
35
+ onChange: V,
36
+ onKeyDown: R = ee,
37
37
  bsSize: m = "md",
38
- unit: A,
38
+ unit: f,
39
39
  inputAddon: K,
40
- errorMessage: V,
41
- warningMessage: D,
42
- messageWhiteSpace: R = "normal",
43
- controls: E,
40
+ errorMessage: D,
41
+ warningMessage: E,
42
+ messageWhiteSpace: v = "normal",
43
+ controls: g,
44
44
  placeholder: c,
45
- digitPrecision: v = ne,
46
- className: B = "",
47
- ...W
48
- } = r, o = Y(""), a = w(u, te), i = w(h, oe), f = x(b, a, i, c, d), [p, k] = Z({
49
- value: f,
50
- enteredValue: f,
45
+ digitPrecision: B = ne,
46
+ className: W = "",
47
+ ...j
48
+ } = r, o = Y(""), a = w(u, te), i = w(y, oe), N = C(A, a, i, c, d), [p, k] = Z({
49
+ value: N,
50
+ enteredValue: N,
51
51
  isValid: !0
52
52
  });
53
53
  re(() => {
54
54
  k({
55
- value: x(b, a, i, c, d),
56
- enteredValue: f,
55
+ value: C(A, a, i, c, d),
56
+ enteredValue: N,
57
57
  isValid: !0
58
58
  });
59
- }, [b, a, i, c, d, f]);
59
+ }, [A, a, i, c, d, N]);
60
60
  const L = (e) => {
61
61
  if (e === "-" || e === "") {
62
62
  k({
@@ -66,73 +66,74 @@ const ne = 3, C = 0, se = 1, te = 0, oe = Number.MAX_VALUE, ae = [
66
66
  });
67
67
  return;
68
68
  }
69
- const t = Number(e), g = !Number.isNaN(t) && t >= a && t <= i, U = M(t, a, i);
69
+ const t = Number(e), h = !Number.isNaN(t) && t >= a && t <= i, _ = M(t, a, i);
70
70
  k({
71
- value: U,
71
+ value: _,
72
72
  enteredValue: t,
73
- isValid: g
74
- }), g && y && y(U);
75
- }, j = (e) => {
76
- L(e.target.value);
73
+ isValid: h
74
+ }), h && V && V(_);
77
75
  }, G = (e) => {
78
- e.ctrlKey || e.altKey || e.metaKey || ((F(".", e, o) || F(",", e, o) || F("-", e, o) || I(",", [".", "-"], e, o) || I(".", [",", "-"], e, o) || I("-", [".", ","], e, o) || e.key === "Process" || e.key === "Dead") && e.preventDefault(), ae.includes(e.key) || e.preventDefault(), o.current = e.key, S(e));
79
- }, O = () => {
76
+ L(e.target.value);
77
+ }, O = (e) => {
78
+ e.ctrlKey || e.altKey || e.metaKey || ((F(".", e, o) || F(",", e, o) || F("-", e, o) || I(",", [".", "-"], e, o) || I(".", [",", "-"], e, o) || I("-", [".", ","], e, o) || e.key === "Process" || e.key === "Dead") && e.preventDefault(), ae.includes(e.key) || e.preventDefault(), o.current = e.key, R(e));
79
+ }, X = () => {
80
80
  const e = p.enteredValue;
81
81
  if (e === "") {
82
- y?.();
82
+ V?.();
83
83
  return;
84
84
  }
85
85
  if (!p.value && (d || c))
86
86
  return;
87
- const t = w(Number(e), C), g = M(Number(t.toFixed(v)), a, i);
88
- L(g);
89
- }, X = (e) => {
87
+ const t = w(Number(e), P), h = M(Number(t.toFixed(B)), a, i);
88
+ L(h);
89
+ }, $ = (e) => {
90
90
  const t = e.target;
91
91
  t instanceof HTMLInputElement && t.blur();
92
- }, $ = _(
92
+ }, U = D || E, z = x(
93
93
  "input-group",
94
94
  m === "sm" && "input-group-sm",
95
95
  m === "lg" && "input-group-lg"
96
- ), z = _(
96
+ ), H = x(
97
97
  "form-control",
98
98
  "no-controls",
99
99
  m === "sm" && "input-sm",
100
100
  m === "lg" && "input-lg",
101
- B
102
- ), H = V || D, q = /* @__PURE__ */ l(
101
+ (f || g) && !U && "padding-right-5",
102
+ W
103
+ ), q = /* @__PURE__ */ l(
103
104
  "input",
104
105
  {
105
- ...W,
106
+ ...j,
106
107
  id: s,
107
108
  type: "number",
108
- step: P,
109
+ step: S,
109
110
  min: a,
110
111
  max: i,
111
112
  value: p.isValid ? p.value : p.enteredValue,
112
- className: z,
113
+ className: H,
113
114
  disabled: T,
114
- onBlur: O,
115
- onChange: j,
116
- onKeyDown: G,
115
+ onBlur: X,
116
+ onChange: G,
117
+ onKeyDown: O,
117
118
  ref: n,
118
119
  "aria-label": "number-input",
119
120
  placeholder: c,
120
- onWheel: X
121
+ onWheel: $
121
122
  }
122
123
  );
123
- return /* @__PURE__ */ N("div", { className: $, children: [
124
+ return /* @__PURE__ */ b("div", { className: z, children: [
124
125
  K && /* @__PURE__ */ l("div", { className: "input-group-addon", children: /* @__PURE__ */ l("span", { className: K }) }),
125
- /* @__PURE__ */ N("div", { className: "form-control-feedback-wrapper", children: [
126
+ /* @__PURE__ */ b("div", { className: "form-control-feedback-wrapper", children: [
126
127
  q,
127
- H && /* @__PURE__ */ N(J, { children: [
128
- V && /* @__PURE__ */ l("span", { className: "form-control-feedback rioglyph rioglyph-error-sign" }),
129
- D && /* @__PURE__ */ l("span", { className: "form-control-feedback rioglyph rioglyph-warning-sign" }),
130
- /* @__PURE__ */ l("span", { className: `help-block white-space-${R}`, children: /* @__PURE__ */ l("span", { children: V || D }) })
128
+ U && /* @__PURE__ */ b(J, { children: [
129
+ D && /* @__PURE__ */ l("span", { className: "form-control-feedback rioglyph rioglyph-error-sign" }),
130
+ E && /* @__PURE__ */ l("span", { className: "form-control-feedback rioglyph rioglyph-warning-sign" }),
131
+ /* @__PURE__ */ l("span", { className: `help-block white-space-${v}`, children: /* @__PURE__ */ l("span", { children: D || E }) })
131
132
  ] })
132
133
  ] }),
133
- (A || E) && /* @__PURE__ */ N("div", { className: `input-group-addon ${T ? "disabled pointer-events-none" : ""}`, children: [
134
- A && A,
135
- E && E
134
+ (f || g) && /* @__PURE__ */ b("div", { className: `input-group-addon ${T ? "disabled pointer-events-none" : ""}`, children: [
135
+ f && f,
136
+ g && g
136
137
  ] })
137
138
  ] });
138
139
  });
@@ -140,7 +141,7 @@ export {
140
141
  oe as DEFAULT_MAX,
141
142
  te as DEFAULT_MIN,
142
143
  se as DEFAULT_STEP,
143
- C as DEFAULT_VALUE,
144
+ P as DEFAULT_VALUE,
144
145
  w as convertNonIntegerToDefault,
145
146
  de as default
146
147
  };
@@ -1 +1 @@
1
- {"version":3,"file":"NumberInput.js","sources":["../../../src/components/numberInput/NumberInput.tsx"],"sourcesContent":["import React, { useState, useRef, forwardRef, type ForwardedRef } from 'react';\nimport { noop } from 'es-toolkit/function';\n\nimport classNames from '../../utils/classNames';\nimport useAfterMount from '../../hooks/useAfterMount';\n\nconst DEFAULT_DIGIT_PRECISION = 3;\nexport const DEFAULT_VALUE = 0;\nexport const DEFAULT_STEP = 1;\nexport const DEFAULT_MIN = 0;\nexport const DEFAULT_MAX = Number.MAX_VALUE;\n\nconst validKeys = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '.',\n ',',\n '-',\n 'Backspace',\n 'Tab',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowDown',\n 'ArrowUp',\n];\n\n// Note: even if limits are set and input type is number, many browsers allow to enter invalid data\n// like entering characters or values outside the boundaries, hence we have to check the input here\n// See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number\n\nconst getValueFromProps = (\n val: number | undefined,\n min: number,\n max: number,\n placeholder: string | undefined,\n noDefault: boolean\n) => {\n // Show placeholder or nothing if given instead of 0 if requested for\n if (val === undefined && (placeholder || noDefault)) {\n return '';\n }\n return clampNumber(Number(val), min, max) || DEFAULT_VALUE;\n};\n\nconst clampNumber = (value: number, min: number, max: number) => {\n if (value < min) {\n return min;\n }\n if (value > max) {\n return max;\n }\n return value;\n};\n\nexport const convertNonIntegerToDefault = (value: number | undefined, fallback: number) => {\n return typeof value === 'number' && Number.isFinite(value) ? value : fallback;\n};\n\nconst isMultipleKeyInput = (\n key: string,\n event: React.KeyboardEvent<HTMLInputElement>,\n previousKeyRef: React.MutableRefObject<string>\n) => {\n return event.key === key && previousKeyRef.current.includes(key);\n};\n\nconst isInvalidAfter = (\n key: string,\n possiblePreviousKeys: string[],\n event: React.KeyboardEvent<HTMLInputElement>,\n previousKeyRef: React.MutableRefObject<string>\n) => {\n return event.key === key && possiblePreviousKeys.includes(previousKeyRef.current);\n};\n\nexport type NumberInputProps = Omit<React.HTMLProps<HTMLInputElement>, 'onChange' | 'controls'> & {\n /**\n * A native input id attribute.\n *\n * Passed through as HTML attribute to the input element.\n */\n id?: string;\n\n /**\n * The minimum value of the input.\n *\n * @default 0\n */\n min?: number;\n\n /**\n * The maximum value of the input.\n *\n * @default Number.MAX_VALUE\n */\n max?: number;\n\n /**\n * The initial value of the input.\n *\n * Used to control the component from the outside.\n *\n * @default 0\n */\n value?: number;\n\n /**\n * Lets you omit the default value of \"0\" when the vale is not defined.\n *\n * The input will be empty in this case.\n *\n * @default false\n */\n noDefault?: boolean;\n\n /**\n * The size of increment or decrement (only works with number type).\n *\n * @default 1\n */\n step?: number;\n\n /**\n * Enables or disabled the input.\n *\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Callback function triggered when the input value changes.\n *\n * When the value is removed by the user, the input is kept empty, but it triggers the callback without any value\n * since the user has finished his input.\n *\n * @param value The new value of the input.\n */\n onChange?: (value?: number) => void;\n\n /**\n * Callback function that gets triggered after filtering out invalid keystrokes.\n *\n * @param event The keyboard event.\n */\n onKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;\n\n /**\n * Defines the size of the input to be rendered.\n *\n * @default 'md'\n */\n bsSize?: 'sm' | 'md' | 'lg';\n\n /**\n * A unit for this value.\n *\n * This will be shown in a dedicated input addon.\n */\n unit?: string | React.ReactNode;\n\n /**\n * A rioglyph icon tio be shown in front of the input.\n */\n inputAddon?: string;\n\n /**\n * Input error message.\n */\n errorMessage?: string | React.ReactNode;\n\n /**\n * Input warning message.\n */\n warningMessage?: string | React.ReactNode;\n\n /**\n * Feedback message width.\n *\n * @default 'normal'\n */\n messageWhiteSpace?: 'normal' | 'nowrap' | 'pre-line';\n\n /**\n * This prop is used by the NumberControl component to pass on the +/- spinner controls.\n *\n * @internal\n */\n controls?: React.ReactNode;\n\n /**\n * The input placeholder if no value is given.\n */\n placeholder?: string;\n\n /**\n * Number of digits after the comma the value should be fixed to.\n *\n * @default 3\n */\n digitPrecision?: number;\n\n /**\n * Additional classes to be set on the component.\n */\n className?: string;\n};\n\nconst NumberInput = forwardRef((props: NumberInputProps, ref: ForwardedRef<HTMLInputElement>) => {\n const {\n id,\n min: propMin,\n max: propMax,\n value: propValue,\n step = DEFAULT_STEP,\n disabled = false,\n noDefault = false,\n onChange,\n onKeyDown = noop,\n bsSize = 'md',\n unit,\n inputAddon,\n errorMessage,\n warningMessage,\n messageWhiteSpace = 'normal',\n controls,\n placeholder,\n digitPrecision = DEFAULT_DIGIT_PRECISION,\n className = '',\n ...remainingProps\n } = props;\n\n const previousKeyRef = useRef<string>('');\n\n const min = convertNonIntegerToDefault(propMin, DEFAULT_MIN);\n const max = convertNonIntegerToDefault(propMax, DEFAULT_MAX);\n\n const value = getValueFromProps(propValue, min, max, placeholder, noDefault);\n\n // Define local state and define initial values\n const [state, setState] = useState({\n value,\n enteredValue: value,\n isValid: true,\n });\n\n // Update internal value whenever the value prop from outside changes\n useAfterMount(() => {\n setState({\n value: getValueFromProps(propValue, min, max, placeholder, noDefault),\n enteredValue: value,\n isValid: true,\n });\n }, [propValue, min, max, placeholder, noDefault, value]);\n\n const applyValue = (newValue: string | number) => {\n if (newValue === '-' || newValue === '') {\n setState({\n value: newValue,\n enteredValue: newValue,\n isValid: true,\n });\n return;\n }\n\n const enteredValue = Number(newValue);\n const isValid = !Number.isNaN(enteredValue) && enteredValue >= min && enteredValue <= max;\n const newValidValue = clampNumber(enteredValue, min, max);\n\n setState({\n value: newValidValue,\n enteredValue,\n isValid,\n });\n\n // Only call back the caller for valid values\n isValid && onChange && onChange(newValidValue);\n };\n\n const handleOnChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n applyValue(event.target.value);\n };\n\n // Prevent entering exponent to avoid side effects\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=1398528\n // Also preventing letter inputs or multiple consecutive characters\n // that is possible by Firefox and Safari\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n // Allow for key combination like \"ctrl + a\"\n if (event.ctrlKey || event.altKey || event.metaKey) {\n return;\n }\n\n // Check for multiple dots, commas or dashes (consecutive)\n if (\n isMultipleKeyInput('.', event, previousKeyRef) ||\n isMultipleKeyInput(',', event, previousKeyRef) ||\n isMultipleKeyInput('-', event, previousKeyRef) ||\n isInvalidAfter(',', ['.', '-'], event, previousKeyRef) ||\n isInvalidAfter('.', [',', '-'], event, previousKeyRef) ||\n isInvalidAfter('-', ['.', ','], event, previousKeyRef) ||\n event.key === 'Process' ||\n event.key === 'Dead'\n ) {\n event.preventDefault();\n }\n\n // Filter out everything that is not a number\n if (!validKeys.includes(event.key)) {\n event.preventDefault();\n }\n\n previousKeyRef.current = event.key;\n\n onKeyDown(event);\n };\n\n const handleBlur = () => {\n // When the value is removed, keep the input empty but trigger the outside callback\n // since the user has finished his input\n const lastEnteredValue = state.enteredValue;\n if (lastEnteredValue === '') {\n onChange?.();\n return;\n }\n\n // If there is no value defined and a placeholder is given or the default is not wanted,\n // keep the input empty\n if (!state.value && (noDefault || placeholder)) {\n return;\n }\n\n // Otherwise, validate the input, round it according to digitPrecision,\n // and clamp the value if the entered value exceeds the limitations\n const convertedEnteredValue = convertNonIntegerToDefault(Number(lastEnteredValue), DEFAULT_VALUE);\n const validNumber = clampNumber(Number(convertedEnteredValue.toFixed(digitPrecision)), min, max);\n applyValue(validNumber);\n };\n\n const handleWheel = (event: React.WheelEvent<HTMLInputElement>) => {\n const target = event.target;\n if (target instanceof HTMLInputElement) {\n target.blur();\n }\n };\n\n const inputGroupClassNames = classNames(\n 'input-group',\n bsSize === 'sm' && 'input-group-sm',\n bsSize === 'lg' && 'input-group-lg'\n );\n\n const inputClassNames = classNames(\n 'form-control',\n 'no-controls',\n bsSize === 'sm' && 'input-sm',\n bsSize === 'lg' && 'input-lg',\n className\n );\n\n const hasFeedback = errorMessage || warningMessage;\n\n const input = (\n <input\n {...remainingProps}\n id={id}\n type='number'\n step={step}\n min={min}\n max={max}\n value={state.isValid ? state.value : state.enteredValue}\n className={inputClassNames}\n disabled={disabled}\n onBlur={handleBlur}\n // onChange={state.value ? handleOnChange : undefined}\n onChange={handleOnChange}\n onKeyDown={handleKeyDown}\n ref={ref}\n aria-label='number-input'\n placeholder={placeholder}\n onWheel={handleWheel}\n />\n );\n\n return (\n <div className={inputGroupClassNames}>\n {inputAddon && (\n <div className='input-group-addon'>\n <span className={inputAddon} />\n </div>\n )}\n <div className='form-control-feedback-wrapper'>\n {input}\n {hasFeedback && (\n <>\n {errorMessage && <span className='form-control-feedback rioglyph rioglyph-error-sign' />}\n {warningMessage && <span className='form-control-feedback rioglyph rioglyph-warning-sign' />}\n <span className={`help-block white-space-${messageWhiteSpace}`}>\n <span>{errorMessage || warningMessage}</span>\n </span>\n </>\n )}\n </div>\n {(unit || controls) && (\n <div className={`input-group-addon ${disabled ? 'disabled pointer-events-none' : ''}`}>\n {unit && unit}\n {controls && controls}\n </div>\n )}\n </div>\n );\n});\n\nexport default NumberInput;\n"],"names":["DEFAULT_DIGIT_PRECISION","DEFAULT_VALUE","DEFAULT_STEP","DEFAULT_MIN","DEFAULT_MAX","validKeys","getValueFromProps","val","min","max","placeholder","noDefault","clampNumber","value","convertNonIntegerToDefault","fallback","isMultipleKeyInput","key","event","previousKeyRef","isInvalidAfter","possiblePreviousKeys","NumberInput","forwardRef","props","ref","id","propMin","propMax","propValue","step","disabled","onChange","onKeyDown","noop","bsSize","unit","inputAddon","errorMessage","warningMessage","messageWhiteSpace","controls","digitPrecision","className","remainingProps","useRef","state","setState","useState","useAfterMount","applyValue","newValue","enteredValue","isValid","newValidValue","handleOnChange","handleKeyDown","handleBlur","lastEnteredValue","convertedEnteredValue","validNumber","handleWheel","target","inputGroupClassNames","classNames","inputClassNames","hasFeedback","input","jsx","jsxs","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"NumberInput.js","sources":["../../../src/components/numberInput/NumberInput.tsx"],"sourcesContent":["import React, { useState, useRef, forwardRef, type ForwardedRef } from 'react';\nimport { noop } from 'es-toolkit/function';\n\nimport classNames from '../../utils/classNames';\nimport useAfterMount from '../../hooks/useAfterMount';\n\nconst DEFAULT_DIGIT_PRECISION = 3;\nexport const DEFAULT_VALUE = 0;\nexport const DEFAULT_STEP = 1;\nexport const DEFAULT_MIN = 0;\nexport const DEFAULT_MAX = Number.MAX_VALUE;\n\nconst validKeys = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '.',\n ',',\n '-',\n 'Backspace',\n 'Tab',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowDown',\n 'ArrowUp',\n];\n\n// Note: even if limits are set and input type is number, many browsers allow to enter invalid data\n// like entering characters or values outside the boundaries, hence we have to check the input here\n// See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number\n\nconst getValueFromProps = (\n val: number | undefined,\n min: number,\n max: number,\n placeholder: string | undefined,\n noDefault: boolean\n) => {\n // Show placeholder or nothing if given instead of 0 if requested for\n if (val === undefined && (placeholder || noDefault)) {\n return '';\n }\n return clampNumber(Number(val), min, max) || DEFAULT_VALUE;\n};\n\nconst clampNumber = (value: number, min: number, max: number) => {\n if (value < min) {\n return min;\n }\n if (value > max) {\n return max;\n }\n return value;\n};\n\nexport const convertNonIntegerToDefault = (value: number | undefined, fallback: number) =>\n typeof value === 'number' && Number.isFinite(value) ? value : fallback;\n\nconst isMultipleKeyInput = (\n key: string,\n event: React.KeyboardEvent<HTMLInputElement>,\n previousKeyRef: React.MutableRefObject<string>\n) => event.key === key && previousKeyRef.current.includes(key);\n\nconst isInvalidAfter = (\n key: string,\n possiblePreviousKeys: string[],\n event: React.KeyboardEvent<HTMLInputElement>,\n previousKeyRef: React.MutableRefObject<string>\n) => event.key === key && possiblePreviousKeys.includes(previousKeyRef.current);\n\nexport type NumberInputProps = Omit<React.HTMLProps<HTMLInputElement>, 'onChange' | 'controls'> & {\n /**\n * A native input id attribute.\n *\n * Passed through as HTML attribute to the input element.\n */\n id?: string;\n\n /**\n * The minimum value of the input.\n *\n * @default 0\n */\n min?: number;\n\n /**\n * The maximum value of the input.\n *\n * @default Number.MAX_VALUE\n */\n max?: number;\n\n /**\n * The initial value of the input.\n *\n * Used to control the component from the outside.\n *\n * @default 0\n */\n value?: number;\n\n /**\n * Lets you omit the default value of \"0\" when the vale is not defined.\n *\n * The input will be empty in this case.\n *\n * @default false\n */\n noDefault?: boolean;\n\n /**\n * The size of increment or decrement (only works with number type).\n *\n * @default 1\n */\n step?: number;\n\n /**\n * Enables or disabled the input.\n *\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Callback function triggered when the input value changes.\n *\n * When the value is removed by the user, the input is kept empty, but it triggers the callback without any value\n * since the user has finished his input.\n *\n * @param value The new value of the input.\n */\n onChange?: (value?: number) => void;\n\n /**\n * Callback function that gets triggered after filtering out invalid keystrokes.\n *\n * @param event The keyboard event.\n */\n onKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;\n\n /**\n * Defines the size of the input to be rendered.\n *\n * @default 'md'\n */\n bsSize?: 'sm' | 'md' | 'lg';\n\n /**\n * A unit for this value.\n *\n * This will be shown in a dedicated input addon.\n */\n unit?: string | React.ReactNode;\n\n /**\n * A rioglyph icon tio be shown in front of the input.\n */\n inputAddon?: string;\n\n /**\n * Input error message.\n */\n errorMessage?: string | React.ReactNode;\n\n /**\n * Input warning message.\n */\n warningMessage?: string | React.ReactNode;\n\n /**\n * Feedback message width.\n *\n * @default 'normal'\n */\n messageWhiteSpace?: 'normal' | 'nowrap' | 'pre-line';\n\n /**\n * This prop is used by the NumberControl component to pass on the +/- spinner controls.\n *\n * @internal\n */\n controls?: React.ReactNode;\n\n /**\n * The input placeholder if no value is given.\n */\n placeholder?: string;\n\n /**\n * Number of digits after the comma the value should be fixed to.\n *\n * @default 3\n */\n digitPrecision?: number;\n\n /**\n * Additional classes to be set on the component.\n */\n className?: string;\n};\n\nconst NumberInput = forwardRef((props: NumberInputProps, ref: ForwardedRef<HTMLInputElement>) => {\n const {\n id,\n min: propMin,\n max: propMax,\n value: propValue,\n step = DEFAULT_STEP,\n disabled = false,\n noDefault = false,\n onChange,\n onKeyDown = noop,\n bsSize = 'md',\n unit,\n inputAddon,\n errorMessage,\n warningMessage,\n messageWhiteSpace = 'normal',\n controls,\n placeholder,\n digitPrecision = DEFAULT_DIGIT_PRECISION,\n className = '',\n ...remainingProps\n } = props;\n\n const previousKeyRef = useRef<string>('');\n\n const min = convertNonIntegerToDefault(propMin, DEFAULT_MIN);\n const max = convertNonIntegerToDefault(propMax, DEFAULT_MAX);\n\n const value = getValueFromProps(propValue, min, max, placeholder, noDefault);\n\n // Define local state and define initial values\n const [state, setState] = useState({\n value,\n enteredValue: value,\n isValid: true,\n });\n\n // Update internal value whenever the value prop from outside changes\n useAfterMount(() => {\n setState({\n value: getValueFromProps(propValue, min, max, placeholder, noDefault),\n enteredValue: value,\n isValid: true,\n });\n }, [propValue, min, max, placeholder, noDefault, value]);\n\n const applyValue = (newValue: string | number) => {\n if (newValue === '-' || newValue === '') {\n setState({\n value: newValue,\n enteredValue: newValue,\n isValid: true,\n });\n return;\n }\n\n const enteredValue = Number(newValue);\n const isValid = !Number.isNaN(enteredValue) && enteredValue >= min && enteredValue <= max;\n const newValidValue = clampNumber(enteredValue, min, max);\n\n setState({\n value: newValidValue,\n enteredValue,\n isValid,\n });\n\n // Only call back the caller for valid values\n isValid && onChange && onChange(newValidValue);\n };\n\n const handleOnChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n applyValue(event.target.value);\n };\n\n // Prevent entering exponent to avoid side effects\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=1398528\n // Also preventing letter inputs or multiple consecutive characters\n // that is possible by Firefox and Safari\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n // Allow for key combination like \"ctrl + a\"\n if (event.ctrlKey || event.altKey || event.metaKey) {\n return;\n }\n\n // Check for multiple dots, commas or dashes (consecutive)\n if (\n isMultipleKeyInput('.', event, previousKeyRef) ||\n isMultipleKeyInput(',', event, previousKeyRef) ||\n isMultipleKeyInput('-', event, previousKeyRef) ||\n isInvalidAfter(',', ['.', '-'], event, previousKeyRef) ||\n isInvalidAfter('.', [',', '-'], event, previousKeyRef) ||\n isInvalidAfter('-', ['.', ','], event, previousKeyRef) ||\n event.key === 'Process' ||\n event.key === 'Dead'\n ) {\n event.preventDefault();\n }\n\n // Filter out everything that is not a number\n if (!validKeys.includes(event.key)) {\n event.preventDefault();\n }\n\n previousKeyRef.current = event.key;\n\n onKeyDown(event);\n };\n\n const handleBlur = () => {\n // When the value is removed, keep the input empty but trigger the outside callback\n // since the user has finished his input\n const lastEnteredValue = state.enteredValue;\n if (lastEnteredValue === '') {\n onChange?.();\n return;\n }\n\n // If there is no value defined and a placeholder is given or the default is not wanted,\n // keep the input empty\n if (!state.value && (noDefault || placeholder)) {\n return;\n }\n\n // Otherwise, validate the input, round it according to digitPrecision,\n // and clamp the value if the entered value exceeds the limitations\n const convertedEnteredValue = convertNonIntegerToDefault(Number(lastEnteredValue), DEFAULT_VALUE);\n const validNumber = clampNumber(Number(convertedEnteredValue.toFixed(digitPrecision)), min, max);\n applyValue(validNumber);\n };\n\n const handleWheel = (event: React.WheelEvent<HTMLInputElement>) => {\n const target = event.target;\n if (target instanceof HTMLInputElement) {\n target.blur();\n }\n };\n\n const hasFeedback = errorMessage || warningMessage;\n\n const inputGroupClassNames = classNames(\n 'input-group',\n bsSize === 'sm' && 'input-group-sm',\n bsSize === 'lg' && 'input-group-lg'\n );\n\n const inputClassNames = classNames(\n 'form-control',\n 'no-controls',\n bsSize === 'sm' && 'input-sm',\n bsSize === 'lg' && 'input-lg',\n (unit || controls) && !hasFeedback && 'padding-right-5',\n className\n );\n\n const input = (\n <input\n {...remainingProps}\n id={id}\n type='number'\n step={step}\n min={min}\n max={max}\n value={state.isValid ? state.value : state.enteredValue}\n className={inputClassNames}\n disabled={disabled}\n onBlur={handleBlur}\n // onChange={state.value ? handleOnChange : undefined}\n onChange={handleOnChange}\n onKeyDown={handleKeyDown}\n ref={ref}\n aria-label='number-input'\n placeholder={placeholder}\n onWheel={handleWheel}\n />\n );\n\n return (\n <div className={inputGroupClassNames}>\n {inputAddon && (\n <div className='input-group-addon'>\n <span className={inputAddon} />\n </div>\n )}\n <div className='form-control-feedback-wrapper'>\n {input}\n {hasFeedback && (\n <>\n {errorMessage && <span className='form-control-feedback rioglyph rioglyph-error-sign' />}\n {warningMessage && <span className='form-control-feedback rioglyph rioglyph-warning-sign' />}\n <span className={`help-block white-space-${messageWhiteSpace}`}>\n <span>{errorMessage || warningMessage}</span>\n </span>\n </>\n )}\n </div>\n {(unit || controls) && (\n <div className={`input-group-addon ${disabled ? 'disabled pointer-events-none' : ''}`}>\n {unit && unit}\n {controls && controls}\n </div>\n )}\n </div>\n );\n});\n\nexport default NumberInput;\n"],"names":["DEFAULT_DIGIT_PRECISION","DEFAULT_VALUE","DEFAULT_STEP","DEFAULT_MIN","DEFAULT_MAX","validKeys","getValueFromProps","val","min","max","placeholder","noDefault","clampNumber","value","convertNonIntegerToDefault","fallback","isMultipleKeyInput","key","event","previousKeyRef","isInvalidAfter","possiblePreviousKeys","NumberInput","forwardRef","props","ref","id","propMin","propMax","propValue","step","disabled","onChange","onKeyDown","noop","bsSize","unit","inputAddon","errorMessage","warningMessage","messageWhiteSpace","controls","digitPrecision","className","remainingProps","useRef","state","setState","useState","useAfterMount","applyValue","newValue","enteredValue","isValid","newValidValue","handleOnChange","handleKeyDown","handleBlur","lastEnteredValue","convertedEnteredValue","validNumber","handleWheel","target","hasFeedback","inputGroupClassNames","classNames","inputClassNames","input","jsx","jsxs","Fragment"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsxs as O, jsx as s } from "react/jsx-runtime";
2
- import u, { forwardRef as h, useState as E, useEffect as M, isValidElement as A } from "react";
2
+ import h, { forwardRef as u, isValidElement as E, useState as M, useEffect as A } from "react";
3
3
  import { PLACEMENT as t } from "../../values/Placement.js";
4
4
  const w = {
5
5
  AUTO: t.AUTO,
@@ -7,7 +7,7 @@ const w = {
7
7
  RIGHT: t.RIGHT,
8
8
  BOTTOM: t.BOTTOM,
9
9
  LEFT: t.LEFT
10
- }, a = ({ className: e = "", children: o }) => /* @__PURE__ */ s("div", { className: `popover-header popover-title ${e}`, children: o }), n = ({ className: e = "", children: o }) => /* @__PURE__ */ s("div", { className: `popover-content popover-body ${e}`, children: o }), x = (e) => A(e) && (e.type === a || e.type === n), c = h((e, o) => {
10
+ }, a = ({ className: e = "", children: o }) => /* @__PURE__ */ s("div", { className: `popover-header popover-title ${e}`, children: o }), n = ({ className: e = "", children: o }) => /* @__PURE__ */ s("div", { className: `popover-content popover-body ${e}`, children: o }), x = (e) => E(e) && (e.type === a || e.type === n), c = u((e, o) => {
11
11
  const {
12
12
  placement: l = "bottom",
13
13
  arrowProps: p,
@@ -17,8 +17,8 @@ const w = {
17
17
  children: r,
18
18
  className: d = "",
19
19
  ...v
20
- } = e, N = !!i, P = u.Children.toArray(r).some(x), [f, C] = E(!1);
21
- return M(() => C(!0), []), /* @__PURE__ */ O(
20
+ } = e, N = !!i, P = h.Children.toArray(r).some(x), [f, C] = M(!1);
21
+ return A(() => C(!0), []), /* @__PURE__ */ O(
22
22
  "div",
23
23
  {
24
24
  ...v,
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.js","sources":["../../../src/components/popover/Popover.tsx"],"sourcesContent":["import React, {\n forwardRef,\n type ForwardRefExoticComponent,\n type RefAttributes,\n type PropsWithChildren,\n type ReactNode,\n type ComponentProps,\n isValidElement,\n useState,\n useEffect,\n} from 'react';\n\nimport { PLACEMENT } from '../../values/Placement';\n\nexport const PLACEMENT_MAP = {\n AUTO: PLACEMENT.AUTO,\n TOP: PLACEMENT.TOP,\n RIGHT: PLACEMENT.RIGHT,\n BOTTOM: PLACEMENT.BOTTOM,\n LEFT: PLACEMENT.LEFT,\n} as const;\n\nexport type PopoverProps = Omit<ComponentProps<'div'>, 'title'> & {\n /**\n * HTML ID attribute, necessary for accessibility.\n */\n id: string;\n\n /**\n * Sets the direction the Popover is positioned towards.\n *\n * This is generally provided by the OverlayTrigger component positioning the Popover.\n *\n * Possible values are:\n *\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n */\n placement?: 'auto' | 'top' | 'right' | 'bottom' | 'left';\n\n /**\n * Additional props assigned to the arrow element. Internally used.\n */\n arrowProps?: Record<string, unknown>;\n\n /**\n * Any element to be rendered as the title of the Popover.\n *\n * It creates a `Popover.Title` inside the `Popover` passing the title directly into it.\n */\n title?: string | ReactNode;\n\n /**\n * Additional classes to be set on the `Popover.Title` element.\n */\n titleClassName?: string;\n\n /**\n * Additional classes to be set on the `Popover.Content` element.\n */\n contentClassName?: string;\n\n /**\n * Additional class names for the wrapper element.\n */\n className?: string;\n};\n\nconst PopoverTitle = ({ className = '', children }: PropsWithChildren<{ className?: string }>) => (\n <div className={`popover-header popover-title ${className}`}>{children}</div>\n);\n\nconst PopoverContent = ({ className = '', children }: PropsWithChildren<{ className?: string }>) => (\n <div className={`popover-content popover-body ${className}`}>{children}</div>\n);\n\nconst isPopoverTitleOrContent = (element: ReactNode): boolean => {\n return isValidElement(element) && (element.type === PopoverTitle || element.type === PopoverContent);\n};\n\ntype PopoverType = ForwardRefExoticComponent<PropsWithChildren<PopoverProps> & RefAttributes<HTMLDivElement>> & {\n Title: typeof PopoverTitle;\n Content: typeof PopoverContent;\n};\n\nconst Popover = forwardRef<HTMLDivElement, PropsWithChildren<PopoverProps>>((props, ref) => {\n const {\n placement = 'bottom',\n arrowProps,\n title,\n titleClassName = '',\n contentClassName = '',\n children,\n className = '',\n ...remainingProps\n } = props;\n\n const hasTitle = !!title;\n const hasCustomContent = React.Children.toArray(children).some(isPopoverTitleOrContent);\n\n // Mount the component but don't show it yet via CSS.\n // After it is mounted, we set the visibility class to use CSS animation\n const [isMounted, setIsMounted] = useState(false);\n useEffect(() => setIsMounted(true), []);\n\n return (\n <div\n {...remainingProps}\n role='tooltip'\n // x-placement is used by the css to define how to position the arrow.\n // eslint-disable-next-line react/no-unknown-property\n x-placement={placement}\n ref={ref}\n className={`popover fade ${isMounted ? 'show' : ''} ${className}`}\n >\n <div className='arrow' {...arrowProps} />\n {hasTitle && <PopoverTitle className={titleClassName}>{title}</PopoverTitle>}\n {hasCustomContent ? children : <PopoverContent className={contentClassName}>{children}</PopoverContent>}\n </div>\n );\n}) as PopoverType;\n\nPopover.Title = PopoverTitle;\nPopover.Content = PopoverContent;\n\nObject.assign(Popover, PLACEMENT_MAP);\n\nexport default Popover;\n"],"names":["PLACEMENT_MAP","PLACEMENT","PopoverTitle","className","children","jsx","PopoverContent","isPopoverTitleOrContent","element","isValidElement","Popover","forwardRef","props","ref","placement","arrowProps","title","titleClassName","contentClassName","remainingProps","hasTitle","hasCustomContent","React","isMounted","setIsMounted","useState","useEffect","jsxs"],"mappings":";;;AAcO,MAAMA,IAAgB;AAAA,EACzB,MAAMC,EAAU;AAAA,EAChB,KAAKA,EAAU;AAAA,EACf,OAAOA,EAAU;AAAA,EACjB,QAAQA,EAAU;AAAA,EAClB,MAAMA,EAAU;AACpB,GAmDMC,IAAe,CAAC,EAAE,WAAAC,IAAY,IAAI,UAAAC,EAAA,MACpC,gBAAAC,EAAC,OAAA,EAAI,WAAW,gCAAgCF,CAAS,IAAK,UAAAC,EAAA,CAAS,GAGrEE,IAAiB,CAAC,EAAE,WAAAH,IAAY,IAAI,UAAAC,EAAA,MACtC,gBAAAC,EAAC,OAAA,EAAI,WAAW,gCAAgCF,CAAS,IAAK,UAAAC,EAAA,CAAS,GAGrEG,IAA0B,CAACC,MACtBC,EAAeD,CAAO,MAAMA,EAAQ,SAASN,KAAgBM,EAAQ,SAASF,IAQnFI,IAAUC,EAA4D,CAACC,GAAOC,MAAQ;AACxF,QAAM;AAAA,IACF,WAAAC,IAAY;AAAA,IACZ,YAAAC;AAAA,IACA,OAAAC;AAAA,IACA,gBAAAC,IAAiB;AAAA,IACjB,kBAAAC,IAAmB;AAAA,IACnB,UAAAd;AAAA,IACA,WAAAD,IAAY;AAAA,IACZ,GAAGgB;AAAA,EAAA,IACHP,GAEEQ,IAAW,CAAC,CAACJ,GACbK,IAAmBC,EAAM,SAAS,QAAQlB,CAAQ,EAAE,KAAKG,CAAuB,GAIhF,CAACgB,GAAWC,CAAY,IAAIC,EAAS,EAAK;AAChD,SAAAC,EAAU,MAAMF,EAAa,EAAI,GAAG,CAAA,CAAE,GAGlC,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAGR;AAAA,MACJ,MAAK;AAAA,MAGL,eAAaL;AAAA,MACb,KAAAD;AAAA,MACA,WAAW,gBAAgBU,IAAY,SAAS,EAAE,IAAIpB,CAAS;AAAA,MAE/D,UAAA;AAAA,QAAA,gBAAAE,EAAC,OAAA,EAAI,WAAU,SAAS,GAAGU,EAAA,CAAY;AAAA,QACtCK,KAAY,gBAAAf,EAACH,GAAA,EAAa,WAAWe,GAAiB,UAAAD,GAAM;AAAA,QAC5DK,IAAmBjB,IAAW,gBAAAC,EAACC,GAAA,EAAe,WAAWY,GAAmB,UAAAd,EAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGlG,CAAC;AAEDM,EAAQ,QAAQR;AAChBQ,EAAQ,UAAUJ;AAElB,OAAO,OAAOI,GAASV,CAAa;"}
1
+ {"version":3,"file":"Popover.js","sources":["../../../src/components/popover/Popover.tsx"],"sourcesContent":["import React, {\n forwardRef,\n type ForwardRefExoticComponent,\n type RefAttributes,\n type PropsWithChildren,\n type ReactNode,\n type ComponentProps,\n isValidElement,\n useState,\n useEffect,\n} from 'react';\n\nimport { PLACEMENT } from '../../values/Placement';\n\nexport const PLACEMENT_MAP = {\n AUTO: PLACEMENT.AUTO,\n TOP: PLACEMENT.TOP,\n RIGHT: PLACEMENT.RIGHT,\n BOTTOM: PLACEMENT.BOTTOM,\n LEFT: PLACEMENT.LEFT,\n} as const;\n\nexport type PopoverProps = Omit<ComponentProps<'div'>, 'title'> & {\n /**\n * HTML ID attribute, necessary for accessibility.\n */\n id: string;\n\n /**\n * Sets the direction the Popover is positioned towards.\n *\n * This is generally provided by the OverlayTrigger component positioning the Popover.\n *\n * Possible values are:\n *\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n */\n placement?: 'auto' | 'top' | 'right' | 'bottom' | 'left';\n\n /**\n * Additional props assigned to the arrow element. Internally used.\n */\n arrowProps?: Record<string, unknown>;\n\n /**\n * Any element to be rendered as the title of the Popover.\n *\n * It creates a `Popover.Title` inside the `Popover` passing the title directly into it.\n */\n title?: string | ReactNode;\n\n /**\n * Additional classes to be set on the `Popover.Title` element.\n */\n titleClassName?: string;\n\n /**\n * Additional classes to be set on the `Popover.Content` element.\n */\n contentClassName?: string;\n\n /**\n * Additional class names for the wrapper element.\n */\n className?: string;\n};\n\nconst PopoverTitle = ({ className = '', children }: PropsWithChildren<{ className?: string }>) => (\n <div className={`popover-header popover-title ${className}`}>{children}</div>\n);\n\nconst PopoverContent = ({ className = '', children }: PropsWithChildren<{ className?: string }>) => (\n <div className={`popover-content popover-body ${className}`}>{children}</div>\n);\n\nconst isPopoverTitleOrContent = (element: ReactNode): boolean =>\n isValidElement(element) && (element.type === PopoverTitle || element.type === PopoverContent);\n\ntype PopoverType = ForwardRefExoticComponent<PropsWithChildren<PopoverProps> & RefAttributes<HTMLDivElement>> & {\n Title: typeof PopoverTitle;\n Content: typeof PopoverContent;\n};\n\nconst Popover = forwardRef<HTMLDivElement, PropsWithChildren<PopoverProps>>((props, ref) => {\n const {\n placement = 'bottom',\n arrowProps,\n title,\n titleClassName = '',\n contentClassName = '',\n children,\n className = '',\n ...remainingProps\n } = props;\n\n const hasTitle = !!title;\n const hasCustomContent = React.Children.toArray(children).some(isPopoverTitleOrContent);\n\n // Mount the component but don't show it yet via CSS.\n // After it is mounted, we set the visibility class to use CSS animation\n const [isMounted, setIsMounted] = useState(false);\n useEffect(() => setIsMounted(true), []);\n\n return (\n <div\n {...remainingProps}\n role='tooltip'\n // x-placement is used by the css to define how to position the arrow.\n // eslint-disable-next-line react/no-unknown-property\n x-placement={placement}\n ref={ref}\n className={`popover fade ${isMounted ? 'show' : ''} ${className}`}\n >\n <div className='arrow' {...arrowProps} />\n {hasTitle && <PopoverTitle className={titleClassName}>{title}</PopoverTitle>}\n {hasCustomContent ? children : <PopoverContent className={contentClassName}>{children}</PopoverContent>}\n </div>\n );\n}) as PopoverType;\n\nPopover.Title = PopoverTitle;\nPopover.Content = PopoverContent;\n\nObject.assign(Popover, PLACEMENT_MAP);\n\nexport default Popover;\n"],"names":["PLACEMENT_MAP","PLACEMENT","PopoverTitle","className","children","jsx","PopoverContent","isPopoverTitleOrContent","element","isValidElement","Popover","forwardRef","props","ref","placement","arrowProps","title","titleClassName","contentClassName","remainingProps","hasTitle","hasCustomContent","React","isMounted","setIsMounted","useState","useEffect","jsxs"],"mappings":";;;AAcO,MAAMA,IAAgB;AAAA,EACzB,MAAMC,EAAU;AAAA,EAChB,KAAKA,EAAU;AAAA,EACf,OAAOA,EAAU;AAAA,EACjB,QAAQA,EAAU;AAAA,EAClB,MAAMA,EAAU;AACpB,GAmDMC,IAAe,CAAC,EAAE,WAAAC,IAAY,IAAI,UAAAC,EAAA,MACpC,gBAAAC,EAAC,OAAA,EAAI,WAAW,gCAAgCF,CAAS,IAAK,UAAAC,EAAA,CAAS,GAGrEE,IAAiB,CAAC,EAAE,WAAAH,IAAY,IAAI,UAAAC,EAAA,MACtC,gBAAAC,EAAC,OAAA,EAAI,WAAW,gCAAgCF,CAAS,IAAK,UAAAC,EAAA,CAAS,GAGrEG,IAA0B,CAACC,MAC7BC,EAAeD,CAAO,MAAMA,EAAQ,SAASN,KAAgBM,EAAQ,SAASF,IAO5EI,IAAUC,EAA4D,CAACC,GAAOC,MAAQ;AACxF,QAAM;AAAA,IACF,WAAAC,IAAY;AAAA,IACZ,YAAAC;AAAA,IACA,OAAAC;AAAA,IACA,gBAAAC,IAAiB;AAAA,IACjB,kBAAAC,IAAmB;AAAA,IACnB,UAAAd;AAAA,IACA,WAAAD,IAAY;AAAA,IACZ,GAAGgB;AAAA,EAAA,IACHP,GAEEQ,IAAW,CAAC,CAACJ,GACbK,IAAmBC,EAAM,SAAS,QAAQlB,CAAQ,EAAE,KAAKG,CAAuB,GAIhF,CAACgB,GAAWC,CAAY,IAAIC,EAAS,EAAK;AAChD,SAAAC,EAAU,MAAMF,EAAa,EAAI,GAAG,CAAA,CAAE,GAGlC,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAGR;AAAA,MACJ,MAAK;AAAA,MAGL,eAAaL;AAAA,MACb,KAAAD;AAAA,MACA,WAAW,gBAAgBU,IAAY,SAAS,EAAE,IAAIpB,CAAS;AAAA,MAE/D,UAAA;AAAA,QAAA,gBAAAE,EAAC,OAAA,EAAI,WAAU,SAAS,GAAGU,EAAA,CAAY;AAAA,QACtCK,KAAY,gBAAAf,EAACH,GAAA,EAAa,WAAWe,GAAiB,UAAAD,GAAM;AAAA,QAC5DK,IAAmBjB,IAAW,gBAAAC,EAACC,GAAA,EAAe,WAAWY,GAAmB,UAAAd,EAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGlG,CAAC;AAEDM,EAAQ,QAAQR;AAChBQ,EAAQ,UAAUJ;AAElB,OAAO,OAAOI,GAASV,CAAa;"}
@@ -22,9 +22,12 @@ const z = "x", D = "y", M = "left", O = "right", P = "top", S = "bottom", w = (i
22
22
  children: y,
23
23
  ...I
24
24
  } = i, u = m(null), l = m(null), f = m(!1), c = m({ x: 0, y: 0 });
25
- X(() => () => {
26
- R();
27
- }, []);
25
+ X(
26
+ () => () => {
27
+ R();
28
+ },
29
+ []
30
+ );
28
31
  const v = (e) => {
29
32
  if (window.TouchEvent && e instanceof window.TouchEvent)
30
33
  return e.touches[0].clientX;
@@ -1 +1 @@
1
- {"version":3,"file":"Resizer.js","sources":["../../../src/components/resizer/Resizer.tsx"],"sourcesContent":["import React, { useEffect, useRef, type MouseEvent, type TouchEvent, type PropsWithChildren } from 'react';\nimport { noop } from 'es-toolkit/function';\n\nimport classNames from '../../utils/classNames';\n\nconst HORIZONTAL = 'x';\nconst VERTICAL = 'y';\n\nconst LEFT = 'left';\nconst RIGHT = 'right';\nconst TOP = 'top';\nconst BOTTOM = 'bottom';\n\nexport type ResizerProps = {\n /**\n * Defines where the resize handle is positioned relative to the element to resize.\n *\n * Possible values are:\n *\n * - `Resizer.LEFT`,\n * - `Resizer.RIGHT`,\n * - `Resizer.TOP`,\n * - `Resizer.BOTTOM`\n * - `'left`',\n * - `'right`',\n * - `'top`',\n * - `'bottom'`\n */\n position?: typeof LEFT | typeof RIGHT | typeof TOP | typeof BOTTOM;\n\n /**\n * Defines on which axis to resize.\n *\n * Possible values are:\n *\n * - `Resizer.HORIZONTAL`\n * - `Resizer.VERTICAL`\n * - `'x'`\n * - `'y'`\n */\n direction?: typeof HORIZONTAL | typeof VERTICAL;\n\n /**\n * Callback when the resize starts, means when the handle is pressed. It returns the respective event.\n *\n * @param event\n * @returns\n */\n onResizeStart?: (event: MouseEvent | TouchEvent) => void;\n\n /**\n * Callback when the resize handle is moved. The function returns the distant between the last\n * position and the mouse movement. Means you can either subtract or add this diff to the elements\n * width you want to change.\n *\n * @param diff\n * @returns\n */\n onResize?: (diff: number) => void;\n\n /**\n * Callback when the resize ends, means when the handle is released. It returns the respective event.\n *\n * @param event\n * @returns\n */\n onResizeEnd?: (event: Event) => void;\n\n /**\n * Additional classes to be set on the wrapper element.\n */\n className?: string;\n};\n\ntype Position = {\n x: number;\n y: number;\n};\n\nconst createListeners = (\n targetNode: HTMLDivElement | null,\n onEnd: (event: Event) => void,\n onMove: (event: Event) => void\n) => {\n if (!targetNode) {\n return;\n }\n\n // The read-only ownerDocument property of the Node interface returns\n // the top-level document object of the node.\n const ownerDocument = targetNode.ownerDocument;\n\n ownerDocument.addEventListener('mouseup', onEnd);\n ownerDocument.addEventListener('mousemove', onMove);\n ownerDocument.addEventListener('touchend', onEnd);\n ownerDocument.addEventListener('touchmove', onMove);\n return {\n remove: () => {\n ownerDocument.removeEventListener('mouseup', onEnd);\n ownerDocument.removeEventListener('mousemove', onMove);\n ownerDocument.removeEventListener('touchend', onEnd);\n ownerDocument.removeEventListener('touchmove', onMove);\n },\n };\n};\n\nconst Resizer = (props: PropsWithChildren<ResizerProps>) => {\n const {\n className = '',\n direction = HORIZONTAL,\n position = RIGHT,\n onResizeStart = noop,\n onResize = noop,\n onResizeEnd = noop,\n children,\n ...remainingProps\n } = props;\n\n const eventsRef = useRef<{ remove: () => void } | undefined | null>(null);\n\n // Use refs here instead of local state as the move event listener fired before the state is set\n // and then it would work with outdated state at that time.\n const elementRef = useRef<HTMLDivElement>(null);\n const isDragRef = useRef<boolean>(false);\n const startPositionRef = useRef<Position>({ x: 0, y: 0 });\n\n useEffect(() => {\n return () => {\n removeListeners();\n };\n }, []);\n\n const getClientX = (event: Event) => {\n // Note: some browsers don't provide the global \"TouchEvent\" constructor!\n if (!!window.TouchEvent && event instanceof window.TouchEvent) {\n return event.touches[0].clientX;\n }\n\n if (event instanceof MouseEvent) {\n return event.clientX;\n }\n\n throw new Error('Unsupported event type');\n };\n\n const getClientY = (event: Event) => {\n // Note: some browsers don't provide the global \"TouchEvent\" constructor!\n if (!!window.TouchEvent && event instanceof window.TouchEvent) {\n return event.touches[0].clientY;\n }\n\n if (event instanceof MouseEvent) {\n return event.clientY;\n }\n\n throw new Error('Unsupported event type');\n };\n\n const handleMouseStart = (event: React.MouseEvent) => {\n isDragRef.current = true;\n\n // Use the native event to check for the event type. Otherwise the type check\n // fails and the start position would be { x: 0, y: 0 }.\n const mouseEvent = event.nativeEvent;\n const { clientX, clientY } = mouseEvent;\n startPositionRef.current = {\n x: clientX,\n y: clientY,\n };\n\n onResizeStart(event);\n\n eventsRef.current = createListeners(elementRef.current, handleEnd, handleMove);\n };\n\n const handleTouchStart = (event: React.TouchEvent) => {\n isDragRef.current = true;\n\n // Use the native event to check for the event type. Otherwise the type check\n // fails and the start position would be { x: 0, y: 0 }.\n const touchEvent = event.nativeEvent;\n const firstTouch = touchEvent.touches[0];\n startPositionRef.current = {\n x: firstTouch.clientX,\n y: firstTouch.clientY,\n };\n\n onResizeStart(event);\n\n eventsRef.current = createListeners(elementRef.current, handleEnd, handleMove);\n };\n\n const handleMove = (event: Event) => {\n if (!isDragRef.current) {\n return;\n }\n\n if (direction === Resizer.HORIZONTAL) {\n const diff = startPositionRef.current.x - getClientX(event);\n\n if (diff !== 0) {\n onResize(diff);\n }\n }\n\n if (direction === Resizer.VERTICAL) {\n const diff = startPositionRef.current.y - getClientY(event);\n if (diff !== 0) {\n onResize(diff);\n }\n }\n\n startPositionRef.current = {\n x: getClientX(event),\n y: getClientY(event),\n };\n };\n\n const handleEnd = (event: Event) => {\n isDragRef.current = false;\n onResizeEnd(event);\n removeListeners();\n };\n\n const removeListeners = () => {\n if (eventsRef.current) {\n eventsRef.current.remove();\n }\n };\n\n const wrapperClasses = classNames(\n 'Resizer',\n direction === 'x' && 'resize-horizontal',\n direction === 'y' && 'resize-vertical',\n position === 'left' && 'resize-left',\n position === 'right' && 'resize-right',\n position === 'top' && 'resize-top',\n position === 'bottom' && 'resize-bottom',\n className && className\n );\n\n return (\n <div\n ref={elementRef}\n className={wrapperClasses}\n onMouseDown={handleMouseStart}\n onTouchStart={handleTouchStart}\n {...remainingProps}\n >\n {children}\n </div>\n );\n};\n\nResizer.HORIZONTAL = HORIZONTAL as typeof HORIZONTAL;\nResizer.VERTICAL = VERTICAL as typeof VERTICAL;\n\nResizer.LEFT = LEFT as typeof LEFT;\nResizer.RIGHT = RIGHT as typeof RIGHT;\nResizer.TOP = TOP as typeof TOP;\nResizer.BOTTOM = BOTTOM as typeof BOTTOM;\n\nexport default Resizer;\n"],"names":["HORIZONTAL","VERTICAL","LEFT","RIGHT","TOP","BOTTOM","createListeners","targetNode","onEnd","onMove","ownerDocument","Resizer","props","className","direction","position","onResizeStart","noop","onResize","onResizeEnd","children","remainingProps","eventsRef","useRef","elementRef","isDragRef","startPositionRef","useEffect","removeListeners","getClientX","event","getClientY","handleMouseStart","mouseEvent","clientX","clientY","handleEnd","handleMove","handleTouchStart","firstTouch","diff","wrapperClasses","classNames","jsx"],"mappings":"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"}
1
+ {"version":3,"file":"Resizer.js","sources":["../../../src/components/resizer/Resizer.tsx"],"sourcesContent":["import React, { useEffect, useRef, type MouseEvent, type TouchEvent, type PropsWithChildren } from 'react';\nimport { noop } from 'es-toolkit/function';\n\nimport classNames from '../../utils/classNames';\n\nconst HORIZONTAL = 'x';\nconst VERTICAL = 'y';\n\nconst LEFT = 'left';\nconst RIGHT = 'right';\nconst TOP = 'top';\nconst BOTTOM = 'bottom';\n\nexport type ResizerProps = {\n /**\n * Defines where the resize handle is positioned relative to the element to resize.\n *\n * Possible values are:\n *\n * - `Resizer.LEFT`,\n * - `Resizer.RIGHT`,\n * - `Resizer.TOP`,\n * - `Resizer.BOTTOM`\n * - `'left`',\n * - `'right`',\n * - `'top`',\n * - `'bottom'`\n */\n position?: typeof LEFT | typeof RIGHT | typeof TOP | typeof BOTTOM;\n\n /**\n * Defines on which axis to resize.\n *\n * Possible values are:\n *\n * - `Resizer.HORIZONTAL`\n * - `Resizer.VERTICAL`\n * - `'x'`\n * - `'y'`\n */\n direction?: typeof HORIZONTAL | typeof VERTICAL;\n\n /**\n * Callback when the resize starts, means when the handle is pressed. It returns the respective event.\n *\n * @param event\n * @returns\n */\n onResizeStart?: (event: MouseEvent | TouchEvent) => void;\n\n /**\n * Callback when the resize handle is moved. The function returns the distant between the last\n * position and the mouse movement. Means you can either subtract or add this diff to the elements\n * width you want to change.\n *\n * @param diff\n * @returns\n */\n onResize?: (diff: number) => void;\n\n /**\n * Callback when the resize ends, means when the handle is released. It returns the respective event.\n *\n * @param event\n * @returns\n */\n onResizeEnd?: (event: Event) => void;\n\n /**\n * Additional classes to be set on the wrapper element.\n */\n className?: string;\n};\n\ntype Position = {\n x: number;\n y: number;\n};\n\nconst createListeners = (\n targetNode: HTMLDivElement | null,\n onEnd: (event: Event) => void,\n onMove: (event: Event) => void\n) => {\n if (!targetNode) {\n return;\n }\n\n // The read-only ownerDocument property of the Node interface returns\n // the top-level document object of the node.\n const ownerDocument = targetNode.ownerDocument;\n\n ownerDocument.addEventListener('mouseup', onEnd);\n ownerDocument.addEventListener('mousemove', onMove);\n ownerDocument.addEventListener('touchend', onEnd);\n ownerDocument.addEventListener('touchmove', onMove);\n return {\n remove: () => {\n ownerDocument.removeEventListener('mouseup', onEnd);\n ownerDocument.removeEventListener('mousemove', onMove);\n ownerDocument.removeEventListener('touchend', onEnd);\n ownerDocument.removeEventListener('touchmove', onMove);\n },\n };\n};\n\nconst Resizer = (props: PropsWithChildren<ResizerProps>) => {\n const {\n className = '',\n direction = HORIZONTAL,\n position = RIGHT,\n onResizeStart = noop,\n onResize = noop,\n onResizeEnd = noop,\n children,\n ...remainingProps\n } = props;\n\n const eventsRef = useRef<{ remove: () => void } | undefined | null>(null);\n\n // Use refs here instead of local state as the move event listener fired before the state is set\n // and then it would work with outdated state at that time.\n const elementRef = useRef<HTMLDivElement>(null);\n const isDragRef = useRef<boolean>(false);\n const startPositionRef = useRef<Position>({ x: 0, y: 0 });\n\n useEffect(\n () => () => {\n removeListeners();\n },\n []\n );\n\n const getClientX = (event: Event) => {\n // Note: some browsers don't provide the global \"TouchEvent\" constructor!\n if (!!window.TouchEvent && event instanceof window.TouchEvent) {\n return event.touches[0].clientX;\n }\n\n if (event instanceof MouseEvent) {\n return event.clientX;\n }\n\n throw new Error('Unsupported event type');\n };\n\n const getClientY = (event: Event) => {\n // Note: some browsers don't provide the global \"TouchEvent\" constructor!\n if (!!window.TouchEvent && event instanceof window.TouchEvent) {\n return event.touches[0].clientY;\n }\n\n if (event instanceof MouseEvent) {\n return event.clientY;\n }\n\n throw new Error('Unsupported event type');\n };\n\n const handleMouseStart = (event: React.MouseEvent) => {\n isDragRef.current = true;\n\n // Use the native event to check for the event type. Otherwise the type check\n // fails and the start position would be { x: 0, y: 0 }.\n const mouseEvent = event.nativeEvent;\n const { clientX, clientY } = mouseEvent;\n startPositionRef.current = {\n x: clientX,\n y: clientY,\n };\n\n onResizeStart(event);\n\n eventsRef.current = createListeners(elementRef.current, handleEnd, handleMove);\n };\n\n const handleTouchStart = (event: React.TouchEvent) => {\n isDragRef.current = true;\n\n // Use the native event to check for the event type. Otherwise the type check\n // fails and the start position would be { x: 0, y: 0 }.\n const touchEvent = event.nativeEvent;\n const firstTouch = touchEvent.touches[0];\n startPositionRef.current = {\n x: firstTouch.clientX,\n y: firstTouch.clientY,\n };\n\n onResizeStart(event);\n\n eventsRef.current = createListeners(elementRef.current, handleEnd, handleMove);\n };\n\n const handleMove = (event: Event) => {\n if (!isDragRef.current) {\n return;\n }\n\n if (direction === Resizer.HORIZONTAL) {\n const diff = startPositionRef.current.x - getClientX(event);\n\n if (diff !== 0) {\n onResize(diff);\n }\n }\n\n if (direction === Resizer.VERTICAL) {\n const diff = startPositionRef.current.y - getClientY(event);\n if (diff !== 0) {\n onResize(diff);\n }\n }\n\n startPositionRef.current = {\n x: getClientX(event),\n y: getClientY(event),\n };\n };\n\n const handleEnd = (event: Event) => {\n isDragRef.current = false;\n onResizeEnd(event);\n removeListeners();\n };\n\n const removeListeners = () => {\n if (eventsRef.current) {\n eventsRef.current.remove();\n }\n };\n\n const wrapperClasses = classNames(\n 'Resizer',\n direction === 'x' && 'resize-horizontal',\n direction === 'y' && 'resize-vertical',\n position === 'left' && 'resize-left',\n position === 'right' && 'resize-right',\n position === 'top' && 'resize-top',\n position === 'bottom' && 'resize-bottom',\n className && className\n );\n\n return (\n <div\n ref={elementRef}\n className={wrapperClasses}\n onMouseDown={handleMouseStart}\n onTouchStart={handleTouchStart}\n {...remainingProps}\n >\n {children}\n </div>\n );\n};\n\nResizer.HORIZONTAL = HORIZONTAL as typeof HORIZONTAL;\nResizer.VERTICAL = VERTICAL as typeof VERTICAL;\n\nResizer.LEFT = LEFT as typeof LEFT;\nResizer.RIGHT = RIGHT as typeof RIGHT;\nResizer.TOP = TOP as typeof TOP;\nResizer.BOTTOM = BOTTOM as typeof BOTTOM;\n\nexport default Resizer;\n"],"names":["HORIZONTAL","VERTICAL","LEFT","RIGHT","TOP","BOTTOM","createListeners","targetNode","onEnd","onMove","ownerDocument","Resizer","props","className","direction","position","onResizeStart","noop","onResize","onResizeEnd","children","remainingProps","eventsRef","useRef","elementRef","isDragRef","startPositionRef","useEffect","removeListeners","getClientX","event","getClientY","handleMouseStart","mouseEvent","clientX","clientY","handleEnd","handleMove","handleTouchStart","firstTouch","diff","wrapperClasses","classNames","jsx"],"mappings":"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"}