@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":"FadeExpander.js","sources":["../../../src/components/fade/FadeExpander.tsx"],"sourcesContent":["import { useState, useEffect, type PropsWithChildren, useRef } from 'react';\nimport { motion, AnimatePresence } from 'motion/react';\n\ntype FadeExpanderProps = {\n /**\n * Defines if the content is shown or not.\n *\n * @default false\n */\n show: boolean;\n\n /**\n * Allows customization of animation duration.\n *\n * @default 0.2\n */\n duration?: number;\n\n /**\n * Delay in seconds before starting the animation.\n *\n * @default 0\n */\n delay?: number;\n\n /**\n * Additional classes set to the wrapper element.\n */\n className?: string;\n};\n\nconst THRESHOLD_TIMEOUT_MS = 200;\n\nconst FadeExpander = (props: PropsWithChildren<FadeExpanderProps>) => {\n const { children, show = false, duration = 0.2, delay = 0, className = '' } = props;\n\n const [isVisible, setIsVisible] = useState(show);\n const [overflow, setOverflow] = useState('hidden'); // Start with hidden overflow\n\n const durationRef = useRef(duration);\n\n // Effect to manage visibility based on show prop\n useEffect(() => {\n if (show) {\n // Set to visible when show is true\n setIsVisible(true);\n } else {\n // Set overflow to hidden immediately when show is false\n setOverflow('hidden');\n\n // Delay setting isVisible to false so the overflow can change before\n setTimeout(() => {\n setIsVisible(false);\n }, 0);\n }\n }, [show]);\n\n const handleAnimationComplete = () => {\n if (show) {\n // Set overflow to visible after animation is done\n setTimeout(() => setOverflow('visible'), durationRef.current * 1000 + THRESHOLD_TIMEOUT_MS);\n }\n };\n\n return (\n // @ts-ignore\n <AnimatePresence onExitComplete={() => setOverflow('hidden')}>\n {isVisible && (\n <motion.div\n initial={{ height: 0, opacity: 0 }}\n animate={{ height: 'auto', opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n transition={{\n height: { duration, delay },\n opacity: { duration, delay },\n ease: 'easeIn',\n }}\n // To ensures smooth height transition, the overflow should be \"hidden\" during the animation\n style={{ overflow }}\n onAnimationComplete={handleAnimationComplete}\n className={className}\n >\n {children}\n </motion.div>\n )}\n </AnimatePresence>\n );\n};\n\nexport default FadeExpander;\n"],"names":["THRESHOLD_TIMEOUT_MS","FadeExpander","props","children","show","duration","delay","className","isVisible","setIsVisible","useState","overflow","setOverflow","durationRef","useRef","useEffect","handleAnimationComplete","AnimatePresence","jsx","motion"],"mappings":";;;AA+BA,MAAMA,IAAuB,KAEvBC,IAAe,CAACC,MAAgD;AAClE,QAAM,EAAE,UAAAC,GAAU,MAAAC,IAAO,IAAO,UAAAC,IAAW,KAAK,OAAAC,IAAQ,GAAG,WAAAC,IAAY,GAAA,IAAOL,GAExE,CAACM,GAAWC,CAAY,IAAIC,EAASN,CAAI,GACzC,CAACO,GAAUC,CAAW,IAAIF,EAAS,QAAQ,GAE3CG,IAAcC,EAAOT,CAAQ;AAGnC,EAAAU,EAAU,MAAM;AACZ,IAAIX,IAEAK,EAAa,EAAI,KAGjBG,EAAY,QAAQ,GAGpB,WAAW,MAAM;AACb,MAAAH,EAAa,EAAK;AAAA,IACtB,GAAG,CAAC;AAAA,EAEZ,GAAG,CAACL,CAAI,CAAC;AAET,QAAMY,IAA0B,MAAM;AAClC,IAAIZ,KAEA,WAAW,MAAMQ,EAAY,SAAS,GAAGC,EAAY,UAAU,MAAOb,CAAoB;AAAA,EAElG;AAEA;AAAA;AAAA,sBAEKiB,GAAA,EAAgB,gBAAgB,MAAML,EAAY,QAAQ,GACtD,UAAAJ,KACG,gBAAAU;AAAA,MAACC,EAAO;AAAA,MAAP;AAAA,QACG,SAAS,EAAE,QAAQ,GAAG,SAAS,EAAA;AAAA,QAC/B,SAAS,EAAE,QAAQ,QAAQ,SAAS,EAAA;AAAA,QACpC,MAAM,EAAE,QAAQ,GAAG,SAAS,EAAA;AAAA,QAC5B,YAAY;AAAA,UACR,QAAQ,EAAE,UAAAd,GAAU,OAAAC,EAAA;AAAA,UACpB,SAAS,EAAE,UAAAD,GAAU,OAAAC,EAAA;AAAA,UACrB,MAAM;AAAA,QAAA;AAAA,QAGV,OAAO,EAAE,UAAAK,EAAA;AAAA,QACT,qBAAqBK;AAAA,QACrB,WAAAT;AAAA,QAEC,UAAAJ;AAAA,MAAA;AAAA,IAAA,EACL,CAER;AAAA;AAER;"}
1
+ {"version":3,"file":"FadeExpander.js","sources":["../../../src/components/fade/FadeExpander.tsx"],"sourcesContent":["import { useState, useEffect, type PropsWithChildren, useRef } from 'react';\nimport { motion, AnimatePresence } from 'motion/react';\n\ntype FadeExpanderProps = {\n /**\n * Defines if the content is shown or not.\n *\n * @default false\n */\n show: boolean;\n\n /**\n * Allows customization of animation duration.\n *\n * @default 0.2\n */\n duration?: number;\n\n /**\n * Delay in seconds before starting the animation.\n *\n * @default 0\n */\n delay?: number;\n\n /**\n * Additional classes set to the wrapper element.\n */\n className?: string;\n};\n\nconst THRESHOLD_TIMEOUT_MS = 200;\n\nconst FadeExpander = (props: PropsWithChildren<FadeExpanderProps>) => {\n const { children, show = false, duration = 0.2, delay = 0, className = '' } = props;\n\n const [isVisible, setIsVisible] = useState(show);\n const [overflow, setOverflow] = useState('hidden'); // Start with hidden overflow\n\n const durationRef = useRef(duration);\n\n // Effect to manage visibility based on show prop\n useEffect(() => {\n if (show) {\n // Set to visible when show is true\n setIsVisible(true);\n } else {\n // Set overflow to hidden immediately when show is false\n setOverflow('hidden');\n\n // Delay setting isVisible to false so the overflow can change before\n setTimeout(() => {\n setIsVisible(false);\n }, 0);\n }\n }, [show]);\n\n const handleAnimationComplete = () => {\n if (show) {\n // Set overflow to visible after animation is done\n setTimeout(() => setOverflow('visible'), durationRef.current * 1000 + THRESHOLD_TIMEOUT_MS);\n }\n };\n\n return (\n // @ts-expect-error\n <AnimatePresence onExitComplete={() => setOverflow('hidden')}>\n {isVisible && (\n <motion.div\n initial={{ height: 0, opacity: 0 }}\n animate={{ height: 'auto', opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n transition={{\n height: { duration, delay },\n opacity: { duration, delay },\n ease: 'easeIn',\n }}\n // To ensures smooth height transition, the overflow should be \"hidden\" during the animation\n style={{ overflow }}\n onAnimationComplete={handleAnimationComplete}\n className={className}\n >\n {children}\n </motion.div>\n )}\n </AnimatePresence>\n );\n};\n\nexport default FadeExpander;\n"],"names":["THRESHOLD_TIMEOUT_MS","FadeExpander","props","children","show","duration","delay","className","isVisible","setIsVisible","useState","overflow","setOverflow","durationRef","useRef","useEffect","handleAnimationComplete","AnimatePresence","jsx","motion"],"mappings":";;;AA+BA,MAAMA,IAAuB,KAEvBC,IAAe,CAACC,MAAgD;AAClE,QAAM,EAAE,UAAAC,GAAU,MAAAC,IAAO,IAAO,UAAAC,IAAW,KAAK,OAAAC,IAAQ,GAAG,WAAAC,IAAY,GAAA,IAAOL,GAExE,CAACM,GAAWC,CAAY,IAAIC,EAASN,CAAI,GACzC,CAACO,GAAUC,CAAW,IAAIF,EAAS,QAAQ,GAE3CG,IAAcC,EAAOT,CAAQ;AAGnC,EAAAU,EAAU,MAAM;AACZ,IAAIX,IAEAK,EAAa,EAAI,KAGjBG,EAAY,QAAQ,GAGpB,WAAW,MAAM;AACb,MAAAH,EAAa,EAAK;AAAA,IACtB,GAAG,CAAC;AAAA,EAEZ,GAAG,CAACL,CAAI,CAAC;AAET,QAAMY,IAA0B,MAAM;AAClC,IAAIZ,KAEA,WAAW,MAAMQ,EAAY,SAAS,GAAGC,EAAY,UAAU,MAAOb,CAAoB;AAAA,EAElG;AAEA;AAAA;AAAA,sBAEKiB,GAAA,EAAgB,gBAAgB,MAAML,EAAY,QAAQ,GACtD,UAAAJ,KACG,gBAAAU;AAAA,MAACC,EAAO;AAAA,MAAP;AAAA,QACG,SAAS,EAAE,QAAQ,GAAG,SAAS,EAAA;AAAA,QAC/B,SAAS,EAAE,QAAQ,QAAQ,SAAS,EAAA;AAAA,QACpC,MAAM,EAAE,QAAQ,GAAG,SAAS,EAAA;AAAA,QAC5B,YAAY;AAAA,UACR,QAAQ,EAAE,UAAAd,GAAU,OAAAC,EAAA;AAAA,UACpB,SAAS,EAAE,UAAAD,GAAU,OAAAC,EAAA;AAAA,UACrB,MAAM;AAAA,QAAA;AAAA,QAGV,OAAO,EAAE,UAAAK,EAAA;AAAA,QACT,qBAAqBK;AAAA,QACrB,WAAAT;AAAA,QAEC,UAAAJ;AAAA,MAAA;AAAA,IAAA,EACL,CAER;AAAA;AAER;"}
@@ -1 +1 @@
1
- {"version":3,"file":"FilePicker.js","sources":["../../../src/components/filepicker/FilePicker.tsx"],"sourcesContent":["import { type ReactNode, useCallback, useEffect, useRef } from 'react';\nimport Dropzone, { type FileRejection, type DropzoneProps, type DropzoneRef } from 'react-dropzone';\nimport { noop } from 'es-toolkit/compat';\n\nimport Button from '../button/Button';\n\ntype FilePickerRenderProps = {\n isDragActive: boolean;\n};\n\nexport type FilePickerProps = {\n /**\n * Defines the file picker display mode.\n *\n * Possible values are `'button'` for a single button, `'dropzone'` for a custom dropzone passed as child function,\n * or `'full'` for showing both.\n *\n * @default 'button'\n */\n displayMode?: 'button' | 'dropzone' | 'full';\n\n /**\n * Indicating if multiple files may be selected.\n *\n * @default true\n */\n multiple?: boolean; // multi select\n\n /**\n * Text to display on Button if displayMode is set to \"button\".\n *\n * @default 'Select files'\n */\n label?: string | ReactNode;\n\n /**\n * Maximum file size in byte. 5 MB = 5,242,880 byte\n */\n maxSize?: number;\n\n /**\n * Function called after one or multiple files have been picked.\n */\n onPick?: (files: File[], rejectedFiles: FileRejection[]) => void;\n\n /**\n * Additional classes for the select button.\n */\n className?: string;\n\n /**\n * Flag to set the dropzone wrapper element to 100% height.\n *\n * This comes in handy, when the dropzone should have 100 % height so it can grow.\n *\n * @default false\n */\n fullHeight?: boolean;\n\n /**\n * Object list of accepted Mime Types as keys and file extensions array as value.\n */\n accept?: { [mimeType: string]: string[] };\n\n /**\n * Pass a custom dropzone element as function receiving some render props.\n */\n children?: ({ isDragActive }: FilePickerRenderProps) => React.ReactElement;\n};\n\nconst FilePicker = (props: FilePickerProps) => {\n const {\n displayMode = 'button',\n multiple = true,\n label = 'Select files',\n maxSize,\n onPick = noop,\n className = '',\n accept,\n fullHeight = false,\n children,\n ...remainingProps\n } = props;\n\n const dropzoneRef = useRef<DropzoneRef>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const isFull = displayMode === 'full';\n const showButton = isFull || displayMode === 'button';\n const showDropzone = isFull || displayMode === 'dropzone';\n\n const handleDrop: NonNullable<DropzoneProps['onDrop']> = useCallback(\n (acceptedFiles, rejectedFiles) => {\n const hasImagesType = accept && Object.keys(accept).some(mimeType => mimeType.startsWith('image'));\n const files = hasImagesType\n ? acceptedFiles.map(file => Object.assign(file, { preview: URL.createObjectURL(file) }))\n : acceptedFiles;\n\n onPick(files, rejectedFiles);\n },\n [onPick, accept]\n );\n\n const handleClick = () => dropzoneRef.current?.open();\n\n useEffect(() => {\n // Set height to dropzones inner presentation div where there is no other access to this DOM element.\n // This comes in handy, when the dropzone should have 100 % height so it can grow.\n if (wrapperRef.current && fullHeight) {\n wrapperRef.current.querySelector('.FilePicker > div')?.setAttribute('class', 'height-100pct');\n }\n }, [fullHeight, wrapperRef.current]);\n\n return (\n <div ref={wrapperRef} className='FilePicker'>\n {showButton && (\n <Button onClick={handleClick} className={className}>\n {label}\n </Button>\n )}\n <Dropzone\n {...remainingProps}\n onDrop={handleDrop}\n accept={accept}\n multiple={multiple}\n maxSize={maxSize}\n ref={dropzoneRef}\n >\n {({ getRootProps, getInputProps, isDragActive }) => {\n return (\n <div {...getRootProps()}>\n <input {...getInputProps()} />\n {showDropzone && children && children({ isDragActive })}\n </div>\n );\n }}\n </Dropzone>\n </div>\n );\n};\n\nFilePicker.DISPLAY_MODE_BUTTON = 'button' as const;\nFilePicker.DISPLAY_MODE_DROPZONE = 'dropzone' as const;\nFilePicker.DISPLAY_MODE_FULL = 'full' as const;\n\nexport default FilePicker;\n"],"names":["FilePicker","props","displayMode","multiple","label","maxSize","onPick","noop","className","accept","fullHeight","children","remainingProps","dropzoneRef","useRef","wrapperRef","isFull","showButton","showDropzone","handleDrop","useCallback","acceptedFiles","rejectedFiles","files","mimeType","file","handleClick","useEffect","jsxs","jsx","Button","Dropzone","getRootProps","getInputProps","isDragActive"],"mappings":";;;;;AAsEA,MAAMA,IAAa,CAACC,MAA2B;AAC3C,QAAM;AAAA,IACF,aAAAC,IAAc;AAAA,IACd,UAAAC,IAAW;AAAA,IACX,OAAAC,IAAQ;AAAA,IACR,SAAAC;AAAA,IACA,QAAAC,IAASC;AAAA,IACT,WAAAC,IAAY;AAAA,IACZ,QAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACHX,GAEEY,IAAcC,EAAoB,IAAI,GACtCC,IAAaD,EAAuB,IAAI,GAExCE,IAASd,MAAgB,QACzBe,IAAaD,KAAUd,MAAgB,UACvCgB,IAAeF,KAAUd,MAAgB,YAEzCiB,IAAmDC;AAAA,IACrD,CAACC,GAAeC,MAAkB;AAE9B,YAAMC,IADgBd,KAAU,OAAO,KAAKA,CAAM,EAAE,KAAK,CAAAe,MAAYA,EAAS,WAAW,OAAO,CAAC,IAE3FH,EAAc,IAAI,CAAAI,MAAQ,OAAO,OAAOA,GAAM,EAAE,SAAS,IAAI,gBAAgBA,CAAI,EAAA,CAAG,CAAC,IACrFJ;AAEN,MAAAf,EAAOiB,GAAOD,CAAa;AAAA,IAC/B;AAAA,IACA,CAAChB,GAAQG,CAAM;AAAA,EAAA,GAGbiB,IAAc,MAAMb,EAAY,SAAS,KAAA;AAE/C,SAAAc,EAAU,MAAM;AAGZ,IAAIZ,EAAW,WAAWL,KACtBK,EAAW,QAAQ,cAAc,mBAAmB,GAAG,aAAa,SAAS,eAAe;AAAA,EAEpG,GAAG,CAACL,GAAYK,EAAW,OAAO,CAAC,GAG/B,gBAAAa,EAAC,OAAA,EAAI,KAAKb,GAAY,WAAU,cAC3B,UAAA;AAAA,IAAAE,KACG,gBAAAY,EAACC,GAAA,EAAO,SAASJ,GAAa,WAAAlB,GACzB,UAAAJ,GACL;AAAA,IAEJ,gBAAAyB;AAAA,MAACE;AAAA,MAAA;AAAA,QACI,GAAGnB;AAAA,QACJ,QAAQO;AAAA,QACR,QAAAV;AAAA,QACA,UAAAN;AAAA,QACA,SAAAE;AAAA,QACA,KAAKQ;AAAA,QAEJ,UAAA,CAAC,EAAE,cAAAmB,GAAc,eAAAC,GAAe,cAAAC,QAEzB,gBAAAN,EAAC,OAAA,EAAK,GAAGI,EAAA,GACL,UAAA;AAAA,UAAA,gBAAAH,EAAC,SAAA,EAAO,GAAGI,EAAA,EAAc,CAAG;AAAA,UAC3Bf,KAAgBP,KAAYA,EAAS,EAAE,cAAAuB,GAAc;AAAA,QAAA,GAC1D;AAAA,MAER;AAAA,IAAA;AAAA,EACJ,GACJ;AAER;AAEAlC,EAAW,sBAAsB;AACjCA,EAAW,wBAAwB;AACnCA,EAAW,oBAAoB;"}
1
+ {"version":3,"file":"FilePicker.js","sources":["../../../src/components/filepicker/FilePicker.tsx"],"sourcesContent":["import { type ReactNode, useCallback, useEffect, useRef } from 'react';\nimport Dropzone, { type FileRejection, type DropzoneProps, type DropzoneRef } from 'react-dropzone';\nimport { noop } from 'es-toolkit/compat';\n\nimport Button from '../button/Button';\n\ntype FilePickerRenderProps = {\n isDragActive: boolean;\n};\n\nexport type FilePickerProps = {\n /**\n * Defines the file picker display mode.\n *\n * Possible values are `'button'` for a single button, `'dropzone'` for a custom dropzone passed as child function,\n * or `'full'` for showing both.\n *\n * @default 'button'\n */\n displayMode?: 'button' | 'dropzone' | 'full';\n\n /**\n * Indicating if multiple files may be selected.\n *\n * @default true\n */\n multiple?: boolean; // multi select\n\n /**\n * Text to display on Button if displayMode is set to \"button\".\n *\n * @default 'Select files'\n */\n label?: string | ReactNode;\n\n /**\n * Maximum file size in byte. 5 MB = 5,242,880 byte\n */\n maxSize?: number;\n\n /**\n * Function called after one or multiple files have been picked.\n */\n onPick?: (files: File[], rejectedFiles: FileRejection[]) => void;\n\n /**\n * Additional classes for the select button.\n */\n className?: string;\n\n /**\n * Flag to set the dropzone wrapper element to 100% height.\n *\n * This comes in handy, when the dropzone should have 100 % height so it can grow.\n *\n * @default false\n */\n fullHeight?: boolean;\n\n /**\n * Object list of accepted Mime Types as keys and file extensions array as value.\n */\n accept?: { [mimeType: string]: string[] };\n\n /**\n * Pass a custom dropzone element as function receiving some render props.\n */\n children?: ({ isDragActive }: FilePickerRenderProps) => React.ReactElement;\n};\n\nconst FilePicker = (props: FilePickerProps) => {\n const {\n displayMode = 'button',\n multiple = true,\n label = 'Select files',\n maxSize,\n onPick = noop,\n className = '',\n accept,\n fullHeight = false,\n children,\n ...remainingProps\n } = props;\n\n const dropzoneRef = useRef<DropzoneRef>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const isFull = displayMode === 'full';\n const showButton = isFull || displayMode === 'button';\n const showDropzone = isFull || displayMode === 'dropzone';\n\n const handleDrop: NonNullable<DropzoneProps['onDrop']> = useCallback(\n (acceptedFiles, rejectedFiles) => {\n const hasImagesType = accept && Object.keys(accept).some(mimeType => mimeType.startsWith('image'));\n const files = hasImagesType\n ? acceptedFiles.map(file => Object.assign(file, { preview: URL.createObjectURL(file) }))\n : acceptedFiles;\n\n onPick(files, rejectedFiles);\n },\n [onPick, accept]\n );\n\n const handleClick = () => dropzoneRef.current?.open();\n\n useEffect(() => {\n // Set height to dropzones inner presentation div where there is no other access to this DOM element.\n // This comes in handy, when the dropzone should have 100 % height so it can grow.\n if (wrapperRef.current && fullHeight) {\n wrapperRef.current.querySelector('.FilePicker > div')?.setAttribute('class', 'height-100pct');\n }\n }, [fullHeight, wrapperRef.current]);\n\n return (\n <div ref={wrapperRef} className='FilePicker'>\n {showButton && (\n <Button onClick={handleClick} className={className}>\n {label}\n </Button>\n )}\n <Dropzone\n {...remainingProps}\n onDrop={handleDrop}\n accept={accept}\n multiple={multiple}\n maxSize={maxSize}\n ref={dropzoneRef}\n >\n {({ getRootProps, getInputProps, isDragActive }) => (\n <div {...getRootProps()}>\n <input {...getInputProps()} />\n {showDropzone && children && children({ isDragActive })}\n </div>\n )}\n </Dropzone>\n </div>\n );\n};\n\nFilePicker.DISPLAY_MODE_BUTTON = 'button' as const;\nFilePicker.DISPLAY_MODE_DROPZONE = 'dropzone' as const;\nFilePicker.DISPLAY_MODE_FULL = 'full' as const;\n\nexport default FilePicker;\n"],"names":["FilePicker","props","displayMode","multiple","label","maxSize","onPick","noop","className","accept","fullHeight","children","remainingProps","dropzoneRef","useRef","wrapperRef","isFull","showButton","showDropzone","handleDrop","useCallback","acceptedFiles","rejectedFiles","files","mimeType","file","handleClick","useEffect","jsxs","jsx","Button","Dropzone","getRootProps","getInputProps","isDragActive"],"mappings":";;;;;AAsEA,MAAMA,IAAa,CAACC,MAA2B;AAC3C,QAAM;AAAA,IACF,aAAAC,IAAc;AAAA,IACd,UAAAC,IAAW;AAAA,IACX,OAAAC,IAAQ;AAAA,IACR,SAAAC;AAAA,IACA,QAAAC,IAASC;AAAA,IACT,WAAAC,IAAY;AAAA,IACZ,QAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACHX,GAEEY,IAAcC,EAAoB,IAAI,GACtCC,IAAaD,EAAuB,IAAI,GAExCE,IAASd,MAAgB,QACzBe,IAAaD,KAAUd,MAAgB,UACvCgB,IAAeF,KAAUd,MAAgB,YAEzCiB,IAAmDC;AAAA,IACrD,CAACC,GAAeC,MAAkB;AAE9B,YAAMC,IADgBd,KAAU,OAAO,KAAKA,CAAM,EAAE,KAAK,CAAAe,MAAYA,EAAS,WAAW,OAAO,CAAC,IAE3FH,EAAc,IAAI,CAAAI,MAAQ,OAAO,OAAOA,GAAM,EAAE,SAAS,IAAI,gBAAgBA,CAAI,EAAA,CAAG,CAAC,IACrFJ;AAEN,MAAAf,EAAOiB,GAAOD,CAAa;AAAA,IAC/B;AAAA,IACA,CAAChB,GAAQG,CAAM;AAAA,EAAA,GAGbiB,IAAc,MAAMb,EAAY,SAAS,KAAA;AAE/C,SAAAc,EAAU,MAAM;AAGZ,IAAIZ,EAAW,WAAWL,KACtBK,EAAW,QAAQ,cAAc,mBAAmB,GAAG,aAAa,SAAS,eAAe;AAAA,EAEpG,GAAG,CAACL,GAAYK,EAAW,OAAO,CAAC,GAG/B,gBAAAa,EAAC,OAAA,EAAI,KAAKb,GAAY,WAAU,cAC3B,UAAA;AAAA,IAAAE,KACG,gBAAAY,EAACC,GAAA,EAAO,SAASJ,GAAa,WAAAlB,GACzB,UAAAJ,GACL;AAAA,IAEJ,gBAAAyB;AAAA,MAACE;AAAA,MAAA;AAAA,QACI,GAAGnB;AAAA,QACJ,QAAQO;AAAA,QACR,QAAAV;AAAA,QACA,UAAAN;AAAA,QACA,SAAAE;AAAA,QACA,KAAKQ;AAAA,QAEJ,UAAA,CAAC,EAAE,cAAAmB,GAAc,eAAAC,GAAe,cAAAC,EAAA,MAC7B,gBAAAN,EAAC,OAAA,EAAK,GAAGI,EAAA,GACL,UAAA;AAAA,UAAA,gBAAAH,EAAC,SAAA,EAAO,GAAGI,EAAA,EAAc,CAAG;AAAA,UAC3Bf,KAAgBP,KAAYA,EAAS,EAAE,cAAAuB,GAAc;AAAA,QAAA,EAAA,CAC1D;AAAA,MAAA;AAAA,IAAA;AAAA,EAER,GACJ;AAER;AAEAlC,EAAW,sBAAsB;AACjCA,EAAW,wBAAwB;AACnCA,EAAW,oBAAoB;"}
@@ -37,6 +37,11 @@ type LoadMoreButtonProps = {
37
37
  * Additional classes to be set on the wrapper element.
38
38
  */
39
39
  className?: string;
40
+ /**
41
+ * Hides the wrapper in print styles.
42
+ * @default true
43
+ */
44
+ hideOnPrint?: boolean;
40
45
  };
41
46
  export declare const LoadMoreButton: (props: LoadMoreButtonProps) => import("react/jsx-runtime").JSX.Element;
42
47
  export default LoadMoreButton;
@@ -1,50 +1,54 @@
1
- import { jsx as o, jsxs as s } from "react/jsx-runtime";
2
- import h from "../../utils/classNames.js";
3
- import { LoadMoreProgress as N } from "./LoadMoreProgress.js";
4
- const f = (i) => {
1
+ import { jsx as e, jsxs as r } from "react/jsx-runtime";
2
+ import N from "../../utils/classNames.js";
3
+ import { mergeClassNameOverrides as u } from "../../utils/mergeClassNameOverrides.js";
4
+ import { LoadMoreProgress as f } from "./LoadMoreProgress.js";
5
+ const x = (i) => {
5
6
  const {
6
- loaded: a = 0,
7
- total: e = 100,
7
+ loaded: o = 0,
8
+ total: a = 100,
8
9
  onLoadMore: d = () => {
9
10
  },
10
- loadMoreMessage: n = "",
11
+ loadMoreMessage: s = "",
11
12
  noMoreMessage: l = "",
12
- isInteractive: r = !0,
13
- progressBarStyle: c,
13
+ isInteractive: n = !0,
14
+ progressBarStyle: m,
14
15
  className: p = "",
15
- ...m
16
- } = i, g = h(
17
- "LoadMoreButton",
18
- "align-items-center",
19
- "display-flex",
20
- "justify-content-center",
21
- "margin-top-25",
22
- "margin-bottom-25",
23
- "non-printable",
16
+ hideOnPrint: c = !0,
17
+ ...g
18
+ } = i, h = u(
19
+ N(
20
+ "LoadMoreButton",
21
+ "align-items-center",
22
+ "display-flex",
23
+ "justify-content-center",
24
+ "margin-top-25",
25
+ "margin-bottom-25",
26
+ c && "non-printable"
27
+ ),
24
28
  p
25
- ), t = a > 0 && e > 0 && a < e;
26
- return /* @__PURE__ */ o("div", { ...m, className: g, children: /* @__PURE__ */ s("div", { className: "min-width-150", children: [
27
- /* @__PURE__ */ o(N, { loaded: a, total: e, progressBarStyle: c }),
28
- /* @__PURE__ */ s("div", { className: "display-flex justify-content-center", children: [
29
- t && r && /* @__PURE__ */ s(
29
+ ), t = o > 0 && a > 0 && o < a;
30
+ return /* @__PURE__ */ e("div", { ...g, className: h, children: /* @__PURE__ */ r("div", { className: "min-width-150", children: [
31
+ /* @__PURE__ */ e(f, { loaded: o, total: a, progressBarStyle: m }),
32
+ /* @__PURE__ */ r("div", { className: "display-flex justify-content-center", children: [
33
+ t && n && /* @__PURE__ */ r(
30
34
  "button",
31
35
  {
32
36
  className: "btn btn-link padding-right-20 margin-top--5",
33
37
  type: "button",
34
38
  onClick: d,
35
39
  children: [
36
- /* @__PURE__ */ o("span", { className: "rioglyph rioglyph-arrow-down" }),
37
- n
40
+ /* @__PURE__ */ e("span", { className: "rioglyph rioglyph-arrow-down" }),
41
+ s
38
42
  ]
39
43
  }
40
44
  ),
41
- t && !r && /* @__PURE__ */ o("span", { className: "padding-top-4 padding-bottom-10", children: n }),
42
- !t && /* @__PURE__ */ o("span", { className: "padding-top-4 padding-bottom-10", children: l })
45
+ t && !n && /* @__PURE__ */ e("span", { className: "padding-top-4 padding-bottom-10", children: s }),
46
+ !t && /* @__PURE__ */ e("span", { className: "padding-top-4 padding-bottom-10", children: l })
43
47
  ] })
44
48
  ] }) });
45
49
  };
46
50
  export {
47
- f as LoadMoreButton,
48
- f as default
51
+ x as LoadMoreButton,
52
+ x as default
49
53
  };
50
54
  //# sourceMappingURL=LoadMoreButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoadMoreButton.js","sources":["../../../src/components/loadMore/LoadMoreButton.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport classNames from '../../utils/classNames';\nimport { LoadMoreProgress, type ProgressBarStyle } from './LoadMoreProgress';\n\ntype LoadMoreButtonProps = {\n /**\n * The number of already loaded elements. If set to 0 the progress bar will not be shown.\n * @default 0\n */\n loaded?: number;\n\n /**\n * The number of all elements. If set to 0 the progress bar will not be shown.\n * @default 100\n */\n total?: number;\n\n /**\n * The message that will be shown when everything is loaded.\n */\n noMoreMessage?: string | ReactNode;\n\n /**\n * The text for the load more button.\n */\n loadMoreMessage?: string | ReactNode;\n\n /**\n * If set to `false`, the button will not be rendered. The loadMoreMessage will be shown as text.\n * @default true\n */\n isInteractive?: boolean;\n\n /**\n * Callback fired when clicking on the load more button.\n */\n onLoadMore?: VoidFunction;\n\n /**\n * In case the component is used on white background, set the progress bar style to `gray`.\n * @default 'white'\n */\n progressBarStyle?: ProgressBarStyle;\n\n /**\n * Additional classes to be set on the wrapper element.\n */\n className?: string;\n};\n\nexport const LoadMoreButton = (props: LoadMoreButtonProps) => {\n const {\n loaded = 0,\n total = 100,\n onLoadMore = () => {},\n loadMoreMessage = '',\n noMoreMessage = '',\n isInteractive = true,\n progressBarStyle,\n className = '',\n ...remainingProps\n } = props;\n\n const wrapperClassNames = classNames(\n 'LoadMoreButton',\n 'align-items-center',\n 'display-flex',\n 'justify-content-center',\n 'margin-top-25',\n 'margin-bottom-25',\n 'non-printable',\n className\n );\n\n const hasMoreToLoad = loaded > 0 && total > 0 && loaded < total;\n\n return (\n <div {...remainingProps} className={wrapperClassNames}>\n <div className='min-width-150'>\n <LoadMoreProgress loaded={loaded} total={total} progressBarStyle={progressBarStyle} />\n <div className='display-flex justify-content-center'>\n {hasMoreToLoad && isInteractive && (\n <button\n className='btn btn-link padding-right-20 margin-top--5'\n type='button'\n onClick={onLoadMore}\n >\n <span className='rioglyph rioglyph-arrow-down' />\n {loadMoreMessage}\n </button>\n )}\n {hasMoreToLoad && !isInteractive && (\n <span className='padding-top-4 padding-bottom-10'>{loadMoreMessage}</span>\n )}\n {!hasMoreToLoad && <span className='padding-top-4 padding-bottom-10'>{noMoreMessage}</span>}\n </div>\n </div>\n </div>\n );\n};\n\nexport default LoadMoreButton;\n"],"names":["LoadMoreButton","props","loaded","total","onLoadMore","loadMoreMessage","noMoreMessage","isInteractive","progressBarStyle","className","remainingProps","wrapperClassNames","classNames","hasMoreToLoad","jsx","jsxs","LoadMoreProgress"],"mappings":";;;AAmDO,MAAMA,IAAiB,CAACC,MAA+B;AAC1D,QAAM;AAAA,IACF,QAAAC,IAAS;AAAA,IACT,OAAAC,IAAQ;AAAA,IACR,YAAAC,IAAa,MAAM;AAAA,IAAC;AAAA,IACpB,iBAAAC,IAAkB;AAAA,IAClB,eAAAC,IAAgB;AAAA,IAChB,eAAAC,IAAgB;AAAA,IAChB,kBAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,GAAGC;AAAA,EAAA,IACHT,GAEEU,IAAoBC;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACAH;AAAA,EAAA,GAGEI,IAAgBX,IAAS,KAAKC,IAAQ,KAAKD,IAASC;AAE1D,SACI,gBAAAW,EAAC,SAAK,GAAGJ,GAAgB,WAAWC,GAChC,UAAA,gBAAAI,EAAC,OAAA,EAAI,WAAU,iBACX,UAAA;AAAA,IAAA,gBAAAD,EAACE,GAAA,EAAiB,QAAAd,GAAgB,OAAAC,GAAc,kBAAAK,EAAA,CAAoC;AAAA,IACpF,gBAAAO,EAAC,OAAA,EAAI,WAAU,uCACV,UAAA;AAAA,MAAAF,KAAiBN,KACd,gBAAAQ;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,WAAU;AAAA,UACV,MAAK;AAAA,UACL,SAASX;AAAA,UAET,UAAA;AAAA,YAAA,gBAAAU,EAAC,QAAA,EAAK,WAAU,+BAAA,CAA+B;AAAA,YAC9CT;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAGRQ,KAAiB,CAACN,uBACd,QAAA,EAAK,WAAU,mCAAmC,UAAAF,GAAgB;AAAA,MAEtE,CAACQ,KAAiB,gBAAAC,EAAC,QAAA,EAAK,WAAU,mCAAmC,UAAAR,EAAA,CAAc;AAAA,IAAA,EAAA,CACxF;AAAA,EAAA,EAAA,CACJ,EAAA,CACJ;AAER;"}
1
+ {"version":3,"file":"LoadMoreButton.js","sources":["../../../src/components/loadMore/LoadMoreButton.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport classNames from '../../utils/classNames';\nimport { mergeClassNameOverrides } from '../../utils/mergeClassNameOverrides';\nimport { LoadMoreProgress, type ProgressBarStyle } from './LoadMoreProgress';\n\ntype LoadMoreButtonProps = {\n /**\n * The number of already loaded elements. If set to 0 the progress bar will not be shown.\n * @default 0\n */\n loaded?: number;\n\n /**\n * The number of all elements. If set to 0 the progress bar will not be shown.\n * @default 100\n */\n total?: number;\n\n /**\n * The message that will be shown when everything is loaded.\n */\n noMoreMessage?: string | ReactNode;\n\n /**\n * The text for the load more button.\n */\n loadMoreMessage?: string | ReactNode;\n\n /**\n * If set to `false`, the button will not be rendered. The loadMoreMessage will be shown as text.\n * @default true\n */\n isInteractive?: boolean;\n\n /**\n * Callback fired when clicking on the load more button.\n */\n onLoadMore?: VoidFunction;\n\n /**\n * In case the component is used on white background, set the progress bar style to `gray`.\n * @default 'white'\n */\n progressBarStyle?: ProgressBarStyle;\n\n /**\n * Additional classes to be set on the wrapper element.\n */\n className?: string;\n\n /**\n * Hides the wrapper in print styles.\n * @default true\n */\n hideOnPrint?: boolean;\n};\n\nexport const LoadMoreButton = (props: LoadMoreButtonProps) => {\n const {\n loaded = 0,\n total = 100,\n onLoadMore = () => {},\n loadMoreMessage = '',\n noMoreMessage = '',\n isInteractive = true,\n progressBarStyle,\n className = '',\n hideOnPrint = true,\n ...remainingProps\n } = props;\n\n const wrapperClassNames = mergeClassNameOverrides(\n classNames(\n 'LoadMoreButton',\n 'align-items-center',\n 'display-flex',\n 'justify-content-center',\n 'margin-top-25',\n 'margin-bottom-25',\n hideOnPrint && 'non-printable'\n ),\n className\n );\n\n const hasMoreToLoad = loaded > 0 && total > 0 && loaded < total;\n\n return (\n <div {...remainingProps} className={wrapperClassNames}>\n <div className='min-width-150'>\n <LoadMoreProgress loaded={loaded} total={total} progressBarStyle={progressBarStyle} />\n <div className='display-flex justify-content-center'>\n {hasMoreToLoad && isInteractive && (\n <button\n className='btn btn-link padding-right-20 margin-top--5'\n type='button'\n onClick={onLoadMore}\n >\n <span className='rioglyph rioglyph-arrow-down' />\n {loadMoreMessage}\n </button>\n )}\n {hasMoreToLoad && !isInteractive && (\n <span className='padding-top-4 padding-bottom-10'>{loadMoreMessage}</span>\n )}\n {!hasMoreToLoad && <span className='padding-top-4 padding-bottom-10'>{noMoreMessage}</span>}\n </div>\n </div>\n </div>\n );\n};\n\nexport default LoadMoreButton;\n"],"names":["LoadMoreButton","props","loaded","total","onLoadMore","loadMoreMessage","noMoreMessage","isInteractive","progressBarStyle","className","hideOnPrint","remainingProps","wrapperClassNames","mergeClassNameOverrides","classNames","hasMoreToLoad","jsx","jsxs","LoadMoreProgress"],"mappings":";;;;AA0DO,MAAMA,IAAiB,CAACC,MAA+B;AAC1D,QAAM;AAAA,IACF,QAAAC,IAAS;AAAA,IACT,OAAAC,IAAQ;AAAA,IACR,YAAAC,IAAa,MAAM;AAAA,IAAC;AAAA,IACpB,iBAAAC,IAAkB;AAAA,IAClB,eAAAC,IAAgB;AAAA,IAChB,eAAAC,IAAgB;AAAA,IAChB,kBAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,aAAAC,IAAc;AAAA,IACd,GAAGC;AAAA,EAAA,IACHV,GAEEW,IAAoBC;AAAA,IACtBC;AAAA,MACI;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACAJ,KAAe;AAAA,IAAA;AAAA,IAEnBD;AAAA,EAAA,GAGEM,IAAgBb,IAAS,KAAKC,IAAQ,KAAKD,IAASC;AAE1D,SACI,gBAAAa,EAAC,SAAK,GAAGL,GAAgB,WAAWC,GAChC,UAAA,gBAAAK,EAAC,OAAA,EAAI,WAAU,iBACX,UAAA;AAAA,IAAA,gBAAAD,EAACE,GAAA,EAAiB,QAAAhB,GAAgB,OAAAC,GAAc,kBAAAK,EAAA,CAAoC;AAAA,IACpF,gBAAAS,EAAC,OAAA,EAAI,WAAU,uCACV,UAAA;AAAA,MAAAF,KAAiBR,KACd,gBAAAU;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,WAAU;AAAA,UACV,MAAK;AAAA,UACL,SAASb;AAAA,UAET,UAAA;AAAA,YAAA,gBAAAY,EAAC,QAAA,EAAK,WAAU,+BAAA,CAA+B;AAAA,YAC9CX;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAGRU,KAAiB,CAACR,uBACd,QAAA,EAAK,WAAU,mCAAmC,UAAAF,GAAgB;AAAA,MAEtE,CAACU,KAAiB,gBAAAC,EAAC,QAAA,EAAK,WAAU,mCAAmC,UAAAV,EAAA,CAAc;AAAA,IAAA,EAAA,CACxF;AAAA,EAAA,EAAA,CACJ,EAAA,CACJ;AAER;"}
@@ -5,19 +5,19 @@ import { useMapContext as M } from "../MapContext.js";
5
5
  const L = "H_context_menu_item", T = (
6
6
  // eslint-disable-next-line max-len
7
7
  '<svg aria-labelledby="ggtrwic-aria" role="img" height="14" width="135px" class="ContentLoader use-mix-blend-mode"><title id="ggtrwic-aria">Loading...</title><rect role="presentation" x="0" y="0" width="100%" height="100%" clip-path="url(#ggtrwic-diff)" style="fill: url(&quot;#ggtrwic-animated-diff&quot;);"></rect><defs><clipPath id="ggtrwic-diff"><rect width="100%" height="100%" rx="3" ry="3"></rect></clipPath><linearGradient id="ggtrwic-animated-diff"><stop offset="0%" stop-color="#f5f6f7" stop-opacity="1"><animate attributeName="offset" values="-2; -2; 1" keyTimes="0; 0.25; 1" dur="2s" repeatCount="indefinite"></animate></stop><stop offset="50%" stop-color="#aaaaaa" stop-opacity="1"><animate attributeName="offset" values="-1; -1; 2" keyTimes="0; 0.25; 1" dur="2s" repeatCount="indefinite"></animate></stop><stop offset="100%" stop-color="#f5f6f7" stop-opacity="1"><animate attributeName="offset" values="0; 0; 3" keyTimes="0; 0.25; 1" dur="2s" repeatCount="indefinite"></animate></stop></linearGradient></defs></svg>'
8
- ), h = () => [...document.getElementsByClassName(L)], w = (o, s) => {
9
- Array.from(o).forEach((n, a) => {
8
+ ), h = () => [...document.getElementsByClassName(L)], w = (n, s) => {
9
+ Array.from(n).forEach((o, a) => {
10
10
  const r = s[a];
11
11
  if (!r)
12
12
  return;
13
13
  const { hasSpinner: f, className: c, labelClassName: t = "", icon: i, label: p } = r.props, e = `<span class="${t}">${p}</span>`, l = `<span class="rioglyph ${i} margin-right-5"></span>${e}`, u = i ? l : e;
14
- f ? n.innerHTML = T : n.innerHTML = u;
15
- const x = n.classList;
14
+ f ? o.innerHTML = T : o.innerHTML = u;
15
+ const x = o.classList;
16
16
  c && c.split(" ").map((E) => x.add(E));
17
17
  });
18
- }, y = (o, s, n, a) => {
19
- const r = o.length - 1, f = s.viewportX, c = a || n.screenToGeo(f, s.viewportY);
20
- o.forEach((t, i) => {
18
+ }, y = (n, s, o, a) => {
19
+ const r = n.length - 1, f = s.viewportX, c = a || o.screenToGeo(f, s.viewportY);
20
+ n.forEach((t, i) => {
21
21
  if (!t)
22
22
  return;
23
23
  const { label: p, disabled: e, callback: l = b } = t.props;
@@ -29,20 +29,20 @@ const L = "H_context_menu_item", T = (
29
29
  })
30
30
  ), i < r && s.items.push(H.util.ContextItem.SEPARATOR);
31
31
  });
32
- }, v = (o) => o.type === "contextmenu", m = (o, s) => o.target === s || o.target?.data?.source_name?.startsWith("H-"), P = (o) => {
33
- const { onOpen: s = b, menuItems: n, contextMenuEvent: a, targetPosition: r } = o, { api: f, baseLayer: c } = M(), { map: t } = f, i = C();
32
+ }, v = (n) => n.type === "contextmenu", m = (n, s) => n.target === s || n.target?.data?.source_name?.startsWith("H-"), P = (n) => {
33
+ const { onOpen: s = b, menuItems: o, contextMenuEvent: a, targetPosition: r } = n, { api: f, baseLayer: c } = M(), { map: t } = f, i = C();
34
34
  i.current = r, d(() => {
35
- if (n && t) {
35
+ if (o && t) {
36
36
  const e = g(a?.items);
37
- a && !m(a, t) && e && y(n, a, t, i.current), w(h(), n);
37
+ a && !m(a, t) && e && y(o, a, t, i.current), w(h(), o);
38
38
  }
39
- }, [n, a, i.current]);
39
+ }, [o, a, i.current]);
40
40
  const p = (e) => {
41
41
  if (!v(e) || !t)
42
42
  return;
43
43
  m(e, t) && (i.current = void 0);
44
44
  const l = e.viewportX, u = i.current || t?.screenToGeo(l, e.viewportY);
45
- u && s(u), m(e, t) && n && g(e.items) && (y(n, e, t, r), w(h(), n));
45
+ u && s(u), m(e, t) && o && g(e.items) && (y(o, e, t, r), w(h(), o));
46
46
  };
47
47
  return d(() => {
48
48
  if (t)
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenu.js","sources":["../../../../../src/components/map/components/features/ContextMenu.tsx"],"sourcesContent":["/* eslint-disable no-undef */\nimport { useRef, useLayoutEffect } from 'react';\nimport { isEmpty } from 'es-toolkit/compat';\nimport { noop } from 'es-toolkit/function';\n\nimport { useMapContext } from '../MapContext';\nimport type { ContextMenuItemProps as ContextMenuItem } from './ContextMenuItem';\nimport type { Position } from '../../utils/mapTypes';\n\nconst HERE_ITEM_CLASS = 'H_context_menu_item';\n\nconst centeredSpinner =\n // eslint-disable-next-line max-len\n '<svg aria-labelledby=\"ggtrwic-aria\" role=\"img\" height=\"14\" width=\"135px\" class=\"ContentLoader use-mix-blend-mode\"><title id=\"ggtrwic-aria\">Loading...</title><rect role=\"presentation\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" clip-path=\"url(#ggtrwic-diff)\" style=\"fill: url(&quot;#ggtrwic-animated-diff&quot;);\"></rect><defs><clipPath id=\"ggtrwic-diff\"><rect width=\"100%\" height=\"100%\" rx=\"3\" ry=\"3\"></rect></clipPath><linearGradient id=\"ggtrwic-animated-diff\"><stop offset=\"0%\" stop-color=\"#f5f6f7\" stop-opacity=\"1\"><animate attributeName=\"offset\" values=\"-2; -2; 1\" keyTimes=\"0; 0.25; 1\" dur=\"2s\" repeatCount=\"indefinite\"></animate></stop><stop offset=\"50%\" stop-color=\"#aaaaaa\" stop-opacity=\"1\"><animate attributeName=\"offset\" values=\"-1; -1; 2\" keyTimes=\"0; 0.25; 1\" dur=\"2s\" repeatCount=\"indefinite\"></animate></stop><stop offset=\"100%\" stop-color=\"#f5f6f7\" stop-opacity=\"1\"><animate attributeName=\"offset\" values=\"0; 0; 3\" keyTimes=\"0; 0.25; 1\" dur=\"2s\" repeatCount=\"indefinite\"></animate></stop></linearGradient></defs></svg>';\n\nconst getDOMMenuItems = (): Element[] => [...document.getElementsByClassName(HERE_ITEM_CLASS)];\n\n// Query DOM nodes for \"H_context_menu_item\" and update label when children label has changed.\n// This function allows to use HTML markup for the menu items in the second render\nconst updateMenuItemLabels = (nodes: Element[], items: React.ReactElement<ContextMenuItem>[]) => {\n // setTimeout(() => {\n Array.from(nodes).forEach((itemNode, index) => {\n const item = items[index];\n if (!item) {\n return;\n }\n\n const { hasSpinner, className, labelClassName = '', icon, label } = item.props;\n\n const contentLabel = `<span class=\"${labelClassName}\">${label}</span>`;\n const labelWithIcon = `<span class=\"rioglyph ${icon} margin-right-5\"></span>${contentLabel}`;\n const content = icon ? labelWithIcon : contentLabel;\n\n if (hasSpinner) {\n itemNode.innerHTML = centeredSpinner;\n } else {\n itemNode.innerHTML = content;\n }\n\n const wrapperClassList = itemNode.classList;\n\n // Since classList.add() does not allow for space separated multiple classes, we have to add them separately\n if (className) {\n className.split(' ').map((singleClassName: string) => wrapperClassList.add(singleClassName));\n }\n });\n // }, 0);\n};\n\nconst addItemsToEvent = (\n items: React.ReactElement<ContextMenuItem>[],\n event: H.mapevents.ContextMenuEvent,\n map: H.Map,\n targetPosition?: Position\n) => {\n const amount = items.length - 1;\n\n // FIXME: The imported typing is wrong and according to\n // https://www.here.com/docs/bundle/maps-api-for-javascript-api-reference/page/H.mapevents.ContextMenuEvent.html#viewportX\n // it is a number\n const viewportX = event.viewportX as unknown as number;\n\n // Get geo coordinates from the screen coordinates or use a fixed set to be returned when\n // clicking the menu item.\n const coord = targetPosition || map.screenToGeo(viewportX, event.viewportY);\n\n items.forEach((item, index) => {\n if (!item) {\n return;\n }\n\n const { label, disabled, callback = noop } = item.props;\n\n // @ts-expect-error next-line FIXME: event.items is defined in the API but the imported types are wrong\n event.items.push(\n new H.util.ContextItem({\n label,\n disabled,\n callback: () => callback(coord),\n })\n );\n\n // add separator but for last element\n if (index < amount) {\n // @ts-expect-error next-line FIXME: event.items is defined in the API but the imported types are wrong\n event.items.push(H.util.ContextItem.SEPARATOR);\n }\n });\n};\n\nexport const isContextMenuEvent = (event: H.mapevents.ContextMenuEvent) => event.type === 'contextmenu';\n\n// Depending on the click target, it may be the map itself or individual parts of the map layer.\n// To check if the context menu click happened on a marker or polygon or circle, we need to check where\n// the user has clicked.\n//\n// Some map layer sources may be:\n// source_layer: \"buildings\", \"landuse\", \"pois\", \"roads\", \"water\", \"places\"\n// source_name: 'H-107';\nexport const isMapTarget = (event: H.mapevents.ContextMenuEvent, map: H.Map) => {\n return event.target === map || event.target?.data?.source_name?.startsWith('H-');\n};\n\nexport type ContextMenuProps = {\n onOpen?: (menuPosition: Position) => void;\n menuItems?: React.ReactElement<ContextMenuItem>[];\n contextMenuEvent?: H.mapevents.ContextMenuEvent;\n targetPosition?: Position;\n};\n\nconst ContextMenu = (props: ContextMenuProps) => {\n const { onOpen = noop, menuItems, contextMenuEvent, targetPosition } = props;\n\n const { api, baseLayer } = useMapContext();\n const { map: hereMap } = api;\n\n // Use a ref to store the target position used when a map object was clicked with a fixed\n // position to return that position in the onOpen callback instead of the dynamic map position\n const targetPositionRef = useRef<Position>();\n targetPositionRef.current = targetPosition;\n\n useLayoutEffect(() => {\n if (menuItems && hereMap) {\n // @ts-expect-error next-line FIXME: event.items is defined in the API but the imported types are wrong\n const hasNoEventItems = isEmpty(contextMenuEvent?.items);\n\n // Add the context menu item to the target event and not to the map event itself\n // as every element on the map need to have context menu items added to the event they\n // are triggered from\n if (contextMenuEvent && !isMapTarget(contextMenuEvent, hereMap) && hasNoEventItems) {\n addItemsToEvent(menuItems, contextMenuEvent, hereMap, targetPositionRef.current);\n }\n\n updateMenuItemLabels(getDOMMenuItems(), menuItems);\n }\n }, [menuItems, contextMenuEvent, targetPositionRef.current]);\n\n const handleMapContextMenu = (event: H.mapevents.ContextMenuEvent) => {\n if (!isContextMenuEvent(event) || !hereMap) {\n return;\n }\n\n // \"contextmenu\" event might be triggered not only by a pointer,\n // but a keyboard button as well. That's why ContextMenuEvent\n // doesn't have a \"currentPointer\" property.\n // Instead it has \"viewportX\" and \"viewportY\" properties\n // for the associates position.\n\n // Reset previous target positions when the map was clicked\n if (isMapTarget(event, hereMap)) {\n targetPositionRef.current = undefined;\n }\n\n // FIXME: The imported typing is wrong and according to\n // https://www.here.com/docs/bundle/maps-api-for-javascript-api-reference/page/H.mapevents.ContextMenuEvent.html#viewportX\n // it is a number\n const viewportX = event.viewportX as unknown as number;\n\n // Get geo coordinates from the screen coordinates.\n const coord = targetPositionRef.current || hereMap?.screenToGeo(viewportX, event.viewportY);\n if (coord) {\n onOpen(coord);\n }\n\n // As we already handle contextmenu event callback on map object like markers separately,\n // we don't do anything if target is different than the map.\n if (!isMapTarget(event, hereMap)) {\n return;\n }\n\n if (!menuItems) {\n return;\n }\n\n // @ts-expect-error next-line FIXME: event.items is defined in the API but the imported types are wrong\n if (isEmpty(event.items)) {\n addItemsToEvent(menuItems, event, hereMap, targetPosition);\n updateMenuItemLabels(getDOMMenuItems(), menuItems);\n }\n };\n\n // The contextmenu event handler has to be registered in any case to handle context menu events and to\n // trigger the callback when the menu opens. Take care to remove and add the event listener when the\n // base map layer changes as the map get re-initialized. Otherwise the context menu cannot be opened anymore\n // when switching to another map view.\n useLayoutEffect(() => {\n if (!hereMap) {\n return;\n }\n\n hereMap.addEventListener('contextmenu', handleMapContextMenu as any);\n\n return () => {\n hereMap.removeEventListener('contextmenu', handleMapContextMenu as any);\n };\n }, [baseLayer, hereMap]);\n\n return null;\n};\n\nexport default ContextMenu;\n"],"names":["HERE_ITEM_CLASS","centeredSpinner","getDOMMenuItems","updateMenuItemLabels","nodes","items","itemNode","index","item","hasSpinner","className","labelClassName","icon","label","contentLabel","labelWithIcon","content","wrapperClassList","singleClassName","addItemsToEvent","event","map","targetPosition","amount","viewportX","coord","disabled","callback","noop","isContextMenuEvent","isMapTarget","ContextMenu","props","onOpen","menuItems","contextMenuEvent","api","baseLayer","useMapContext","hereMap","targetPositionRef","useRef","useLayoutEffect","hasNoEventItems","isEmpty","handleMapContextMenu"],"mappings":"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"}
1
+ {"version":3,"file":"ContextMenu.js","sources":["../../../../../src/components/map/components/features/ContextMenu.tsx"],"sourcesContent":["/* eslint-disable no-undef */\nimport { useRef, useLayoutEffect } from 'react';\nimport { isEmpty } from 'es-toolkit/compat';\nimport { noop } from 'es-toolkit/function';\n\nimport { useMapContext } from '../MapContext';\nimport type { ContextMenuItemProps as ContextMenuItem } from './ContextMenuItem';\nimport type { Position } from '../../utils/mapTypes';\n\nconst HERE_ITEM_CLASS = 'H_context_menu_item';\n\nconst centeredSpinner =\n // eslint-disable-next-line max-len\n '<svg aria-labelledby=\"ggtrwic-aria\" role=\"img\" height=\"14\" width=\"135px\" class=\"ContentLoader use-mix-blend-mode\"><title id=\"ggtrwic-aria\">Loading...</title><rect role=\"presentation\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" clip-path=\"url(#ggtrwic-diff)\" style=\"fill: url(&quot;#ggtrwic-animated-diff&quot;);\"></rect><defs><clipPath id=\"ggtrwic-diff\"><rect width=\"100%\" height=\"100%\" rx=\"3\" ry=\"3\"></rect></clipPath><linearGradient id=\"ggtrwic-animated-diff\"><stop offset=\"0%\" stop-color=\"#f5f6f7\" stop-opacity=\"1\"><animate attributeName=\"offset\" values=\"-2; -2; 1\" keyTimes=\"0; 0.25; 1\" dur=\"2s\" repeatCount=\"indefinite\"></animate></stop><stop offset=\"50%\" stop-color=\"#aaaaaa\" stop-opacity=\"1\"><animate attributeName=\"offset\" values=\"-1; -1; 2\" keyTimes=\"0; 0.25; 1\" dur=\"2s\" repeatCount=\"indefinite\"></animate></stop><stop offset=\"100%\" stop-color=\"#f5f6f7\" stop-opacity=\"1\"><animate attributeName=\"offset\" values=\"0; 0; 3\" keyTimes=\"0; 0.25; 1\" dur=\"2s\" repeatCount=\"indefinite\"></animate></stop></linearGradient></defs></svg>';\n\nconst getDOMMenuItems = (): Element[] => [...document.getElementsByClassName(HERE_ITEM_CLASS)];\n\n// Query DOM nodes for \"H_context_menu_item\" and update label when children label has changed.\n// This function allows to use HTML markup for the menu items in the second render\nconst updateMenuItemLabels = (nodes: Element[], items: React.ReactElement<ContextMenuItem>[]) => {\n // setTimeout(() => {\n Array.from(nodes).forEach((itemNode, index) => {\n const item = items[index];\n if (!item) {\n return;\n }\n\n const { hasSpinner, className, labelClassName = '', icon, label } = item.props;\n\n const contentLabel = `<span class=\"${labelClassName}\">${label}</span>`;\n const labelWithIcon = `<span class=\"rioglyph ${icon} margin-right-5\"></span>${contentLabel}`;\n const content = icon ? labelWithIcon : contentLabel;\n\n if (hasSpinner) {\n itemNode.innerHTML = centeredSpinner;\n } else {\n itemNode.innerHTML = content;\n }\n\n const wrapperClassList = itemNode.classList;\n\n // Since classList.add() does not allow for space separated multiple classes, we have to add them separately\n if (className) {\n className.split(' ').map((singleClassName: string) => wrapperClassList.add(singleClassName));\n }\n });\n // }, 0);\n};\n\nconst addItemsToEvent = (\n items: React.ReactElement<ContextMenuItem>[],\n event: H.mapevents.ContextMenuEvent,\n map: H.Map,\n targetPosition?: Position\n) => {\n const amount = items.length - 1;\n\n // FIXME: The imported typing is wrong and according to\n // https://www.here.com/docs/bundle/maps-api-for-javascript-api-reference/page/H.mapevents.ContextMenuEvent.html#viewportX\n // it is a number\n const viewportX = event.viewportX as unknown as number;\n\n // Get geo coordinates from the screen coordinates or use a fixed set to be returned when\n // clicking the menu item.\n const coord = targetPosition || map.screenToGeo(viewportX, event.viewportY);\n\n items.forEach((item, index) => {\n if (!item) {\n return;\n }\n\n const { label, disabled, callback = noop } = item.props;\n\n // @ts-expect-error next-line FIXME: event.items is defined in the API but the imported types are wrong\n event.items.push(\n new H.util.ContextItem({\n label,\n disabled,\n callback: () => callback(coord),\n })\n );\n\n // add separator but for last element\n if (index < amount) {\n // @ts-expect-error next-line FIXME: event.items is defined in the API but the imported types are wrong\n event.items.push(H.util.ContextItem.SEPARATOR);\n }\n });\n};\n\nexport const isContextMenuEvent = (event: H.mapevents.ContextMenuEvent) => event.type === 'contextmenu';\n\n// Depending on the click target, it may be the map itself or individual parts of the map layer.\n// To check if the context menu click happened on a marker or polygon or circle, we need to check where\n// the user has clicked.\n//\n// Some map layer sources may be:\n// source_layer: \"buildings\", \"landuse\", \"pois\", \"roads\", \"water\", \"places\"\n// source_name: 'H-107';\nexport const isMapTarget = (event: H.mapevents.ContextMenuEvent, map: H.Map) =>\n event.target === map || event.target?.data?.source_name?.startsWith('H-');\n\nexport type ContextMenuProps = {\n onOpen?: (menuPosition: Position) => void;\n menuItems?: React.ReactElement<ContextMenuItem>[];\n contextMenuEvent?: H.mapevents.ContextMenuEvent;\n targetPosition?: Position;\n};\n\nconst ContextMenu = (props: ContextMenuProps) => {\n const { onOpen = noop, menuItems, contextMenuEvent, targetPosition } = props;\n\n const { api, baseLayer } = useMapContext();\n const { map: hereMap } = api;\n\n // Use a ref to store the target position used when a map object was clicked with a fixed\n // position to return that position in the onOpen callback instead of the dynamic map position\n const targetPositionRef = useRef<Position>();\n targetPositionRef.current = targetPosition;\n\n useLayoutEffect(() => {\n if (menuItems && hereMap) {\n // @ts-expect-error next-line FIXME: event.items is defined in the API but the imported types are wrong\n const hasNoEventItems = isEmpty(contextMenuEvent?.items);\n\n // Add the context menu item to the target event and not to the map event itself\n // as every element on the map need to have context menu items added to the event they\n // are triggered from\n if (contextMenuEvent && !isMapTarget(contextMenuEvent, hereMap) && hasNoEventItems) {\n addItemsToEvent(menuItems, contextMenuEvent, hereMap, targetPositionRef.current);\n }\n\n updateMenuItemLabels(getDOMMenuItems(), menuItems);\n }\n }, [menuItems, contextMenuEvent, targetPositionRef.current]);\n\n const handleMapContextMenu = (event: H.mapevents.ContextMenuEvent) => {\n if (!isContextMenuEvent(event) || !hereMap) {\n return;\n }\n\n // \"contextmenu\" event might be triggered not only by a pointer,\n // but a keyboard button as well. That's why ContextMenuEvent\n // doesn't have a \"currentPointer\" property.\n // Instead it has \"viewportX\" and \"viewportY\" properties\n // for the associates position.\n\n // Reset previous target positions when the map was clicked\n if (isMapTarget(event, hereMap)) {\n targetPositionRef.current = undefined;\n }\n\n // FIXME: The imported typing is wrong and according to\n // https://www.here.com/docs/bundle/maps-api-for-javascript-api-reference/page/H.mapevents.ContextMenuEvent.html#viewportX\n // it is a number\n const viewportX = event.viewportX as unknown as number;\n\n // Get geo coordinates from the screen coordinates.\n const coord = targetPositionRef.current || hereMap?.screenToGeo(viewportX, event.viewportY);\n if (coord) {\n onOpen(coord);\n }\n\n // As we already handle contextmenu event callback on map object like markers separately,\n // we don't do anything if target is different than the map.\n if (!isMapTarget(event, hereMap)) {\n return;\n }\n\n if (!menuItems) {\n return;\n }\n\n // @ts-expect-error next-line FIXME: event.items is defined in the API but the imported types are wrong\n if (isEmpty(event.items)) {\n addItemsToEvent(menuItems, event, hereMap, targetPosition);\n updateMenuItemLabels(getDOMMenuItems(), menuItems);\n }\n };\n\n // The contextmenu event handler has to be registered in any case to handle context menu events and to\n // trigger the callback when the menu opens. Take care to remove and add the event listener when the\n // base map layer changes as the map get re-initialized. Otherwise the context menu cannot be opened anymore\n // when switching to another map view.\n useLayoutEffect(() => {\n if (!hereMap) {\n return;\n }\n\n hereMap.addEventListener('contextmenu', handleMapContextMenu as any);\n\n return () => {\n hereMap.removeEventListener('contextmenu', handleMapContextMenu as any);\n };\n }, [baseLayer, hereMap]);\n\n return null;\n};\n\nexport default ContextMenu;\n"],"names":["HERE_ITEM_CLASS","centeredSpinner","getDOMMenuItems","updateMenuItemLabels","nodes","items","itemNode","index","item","hasSpinner","className","labelClassName","icon","label","contentLabel","labelWithIcon","content","wrapperClassList","singleClassName","addItemsToEvent","event","map","targetPosition","amount","viewportX","coord","disabled","callback","noop","isContextMenuEvent","isMapTarget","ContextMenu","props","onOpen","menuItems","contextMenuEvent","api","baseLayer","useMapContext","hereMap","targetPositionRef","useRef","useLayoutEffect","hasNoEventItems","isEmpty","handleMapContextMenu"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"InfoBubble.js","sources":["../../../../../../src/components/map/components/features/basics/InfoBubble.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport ReactDomServer from 'react-dom/server';\nimport { noop } from 'es-toolkit/function';\n\nimport type { MapApi, Position } from '../../../utils/mapTypes';\n\n// Default offset is defined according to the incidents layer marker\nconst DEFAULT_OFFSET_X = 0;\nconst DEFAULT_OFFSET_Y = 0;\n\nexport type InfoBubbleProps = {\n api: MapApi | undefined;\n position: Position;\n markerOffset?: {\n x: number;\n y: number;\n };\n content: string | JSX.Element | Node;\n onClose?: () => void;\n};\n\nconst InfoBubble = (props: InfoBubbleProps) => {\n const { api, content, position, markerOffset, onClose = noop } = props;\n\n const handleStateChange = (event: H.util.Event) => {\n if (event.target.getState() === 'closed') {\n onClose();\n }\n };\n\n useEffect(() => {\n let infoBubble: H.ui.InfoBubble;\n\n if (api?.map && api?.ui) {\n // Fix the position so the info bubble doesn't overlap the marker\n const screenPosition = api.map.geoToScreen(position);\n screenPosition.x += markerOffset?.x ?? DEFAULT_OFFSET_X;\n screenPosition.y += markerOffset?.y ?? DEFAULT_OFFSET_Y;\n\n infoBubble = new H.ui.InfoBubble(api.map.screenToGeo(screenPosition.x, screenPosition.y), {\n onStateChange: handleStateChange,\n content: React.isValidElement(content)\n ? ReactDomServer.renderToStaticMarkup(content)\n : (content as any),\n });\n\n api.ui.addBubble(infoBubble);\n }\n\n return () => {\n if (infoBubble) {\n try {\n api?.ui?.removeBubble(infoBubble);\n } catch (error) {\n // silence error that is cased when switching map types and the bubble cannot be removed\n // from the old map instance\n }\n }\n };\n }, [api]);\n\n return null;\n};\n\nexport default InfoBubble;\n"],"names":["DEFAULT_OFFSET_X","DEFAULT_OFFSET_Y","InfoBubble","props","api","content","position","markerOffset","onClose","noop","handleStateChange","event","useEffect","infoBubble","screenPosition","React","ReactDomServer"],"mappings":";;;AAOA,MAAMA,IAAmB,GACnBC,IAAmB,GAanBC,IAAa,CAACC,MAA2B;AAC3C,QAAM,EAAE,KAAAC,GAAK,SAAAC,GAAS,UAAAC,GAAU,cAAAC,GAAc,SAAAC,IAAUC,MAASN,GAE3DO,IAAoB,CAACC,MAAwB;AAC/C,IAAIA,EAAM,OAAO,SAAA,MAAe,YAC5BH,EAAA;AAAA,EAER;AAEA,SAAAI,EAAU,MAAM;AACZ,QAAIC;AAEJ,QAAIT,GAAK,OAAOA,GAAK,IAAI;AAErB,YAAMU,IAAiBV,EAAI,IAAI,YAAYE,CAAQ;AACnD,MAAAQ,EAAe,KAAKP,GAAc,KAAKP,GACvCc,EAAe,KAAKP,GAAc,KAAKN,GAEvCY,IAAa,IAAI,EAAE,GAAG,WAAWT,EAAI,IAAI,YAAYU,EAAe,GAAGA,EAAe,CAAC,GAAG;AAAA,QACtF,eAAeJ;AAAA,QACf,SAASK,EAAM,eAAeV,CAAO,IAC/BW,EAAe,qBAAqBX,CAAO,IAC1CA;AAAA,MAAA,CACV,GAEDD,EAAI,GAAG,UAAUS,CAAU;AAAA,IAC/B;AAEA,WAAO,MAAM;AACT,UAAIA;AACA,YAAI;AACA,UAAAT,GAAK,IAAI,aAAaS,CAAU;AAAA,QACpC,QAAgB;AAAA,QAGhB;AAAA,IAER;AAAA,EACJ,GAAG,CAACT,CAAG,CAAC,GAED;AACX;"}
1
+ {"version":3,"file":"InfoBubble.js","sources":["../../../../../../src/components/map/components/features/basics/InfoBubble.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport ReactDomServer from 'react-dom/server';\nimport { noop } from 'es-toolkit/function';\n\nimport type { MapApi, Position } from '../../../utils/mapTypes';\n\n// Default offset is defined according to the incidents layer marker\nconst DEFAULT_OFFSET_X = 0;\nconst DEFAULT_OFFSET_Y = 0;\n\nexport type InfoBubbleProps = {\n api: MapApi | undefined;\n position: Position;\n markerOffset?: {\n x: number;\n y: number;\n };\n content: string | JSX.Element | Node;\n onClose?: () => void;\n};\n\nconst InfoBubble = (props: InfoBubbleProps) => {\n const { api, content, position, markerOffset, onClose = noop } = props;\n\n const handleStateChange = (event: H.util.Event) => {\n if (event.target.getState() === 'closed') {\n onClose();\n }\n };\n\n useEffect(() => {\n let infoBubble: H.ui.InfoBubble;\n\n if (api?.map && api?.ui) {\n // Fix the position so the info bubble doesn't overlap the marker\n const screenPosition = api.map.geoToScreen(position);\n screenPosition.x += markerOffset?.x ?? DEFAULT_OFFSET_X;\n screenPosition.y += markerOffset?.y ?? DEFAULT_OFFSET_Y;\n\n infoBubble = new H.ui.InfoBubble(api.map.screenToGeo(screenPosition.x, screenPosition.y), {\n onStateChange: handleStateChange,\n content: React.isValidElement(content)\n ? ReactDomServer.renderToStaticMarkup(content)\n : (content as any),\n });\n\n api.ui.addBubble(infoBubble);\n }\n\n return () => {\n if (infoBubble) {\n try {\n api?.ui?.removeBubble(infoBubble);\n } catch {\n // silence error that is cased when switching map types and the bubble cannot be removed\n // from the old map instance\n }\n }\n };\n }, [api]);\n\n return null;\n};\n\nexport default InfoBubble;\n"],"names":["DEFAULT_OFFSET_X","DEFAULT_OFFSET_Y","InfoBubble","props","api","content","position","markerOffset","onClose","noop","handleStateChange","event","useEffect","infoBubble","screenPosition","React","ReactDomServer"],"mappings":";;;AAOA,MAAMA,IAAmB,GACnBC,IAAmB,GAanBC,IAAa,CAACC,MAA2B;AAC3C,QAAM,EAAE,KAAAC,GAAK,SAAAC,GAAS,UAAAC,GAAU,cAAAC,GAAc,SAAAC,IAAUC,MAASN,GAE3DO,IAAoB,CAACC,MAAwB;AAC/C,IAAIA,EAAM,OAAO,SAAA,MAAe,YAC5BH,EAAA;AAAA,EAER;AAEA,SAAAI,EAAU,MAAM;AACZ,QAAIC;AAEJ,QAAIT,GAAK,OAAOA,GAAK,IAAI;AAErB,YAAMU,IAAiBV,EAAI,IAAI,YAAYE,CAAQ;AACnD,MAAAQ,EAAe,KAAKP,GAAc,KAAKP,GACvCc,EAAe,KAAKP,GAAc,KAAKN,GAEvCY,IAAa,IAAI,EAAE,GAAG,WAAWT,EAAI,IAAI,YAAYU,EAAe,GAAGA,EAAe,CAAC,GAAG;AAAA,QACtF,eAAeJ;AAAA,QACf,SAASK,EAAM,eAAeV,CAAO,IAC/BW,EAAe,qBAAqBX,CAAO,IAC1CA;AAAA,MAAA,CACV,GAEDD,EAAI,GAAG,UAAUS,CAAU;AAAA,IAC/B;AAEA,WAAO,MAAM;AACT,UAAIA;AACA,YAAI;AACA,UAAAT,GAAK,IAAI,aAAaS,CAAU;AAAA,QACpC,QAAQ;AAAA,QAGR;AAAA,IAER;AAAA,EACJ,GAAG,CAACT,CAAG,CAAC,GAED;AACX;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MapSettingsTile.js","sources":["../../../../../../src/components/map/components/features/settings/MapSettingsTile.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { AnimatePresence, motion, type Transition } from 'motion/react';\nimport { noop } from 'es-toolkit/function';\nimport { usePopper } from 'react-popper';\n\nimport classNames from '../../../../../utils/classNames';\nimport OverlayTrigger from '../../../../overlay/OverlayTrigger';\nimport Tooltip from '../../../../tooltip/Tooltip';\nimport useClickOutside, { useClickOutsideWithRef } from '../../../../../hooks/useClickOutside';\nimport MenuItemList from '../../../../menuItems/MenuItemList';\nimport MenuItem from '../../../../menuItems/MenuItem';\nimport { isMobileScreen } from '../../../../../utils/deviceUtils';\n\nconst TOOLTIP_SHOW_TIMEOUT_IN_MS = 800;\nconst TOOLTIP_HIDE_TIMEOUT_IN_MS = 100;\n\nconst tileAnimation = {\n initial: { opacity: 0, y: 10 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: 10 },\n transition: { duration: 0.08, ease: 'easeOut' } as Transition,\n};\n\nconst getComponentWithTooltip = (component: React.ReactNode, tooltip: React.ReactNode) => {\n return (\n <OverlayTrigger\n placement={Tooltip.TOP}\n delay={{ show: TOOLTIP_SHOW_TIMEOUT_IN_MS, hide: TOOLTIP_HIDE_TIMEOUT_IN_MS }}\n overlay={\n <Tooltip id='tooltip' width='auto'>\n {tooltip}\n </Tooltip>\n }\n >\n {component}\n </OverlayTrigger>\n );\n};\n\nexport type MapSettingsTileProps = {\n onToggle?: (newState: boolean) => void;\n tooltip?: React.ReactNode;\n panel?: React.ReactNode;\n items?: JSX.Element[] | undefined;\n activeIcon?: JSX.Element | undefined;\n inactiveIcon?: JSX.Element | undefined;\n isActive?: boolean;\n buttonClassName?: string;\n className?: string;\n};\n\nconst MapSettingsTile = (props: MapSettingsTileProps) => {\n const {\n onToggle = noop,\n activeIcon,\n inactiveIcon,\n isActive = false,\n panel,\n items,\n className,\n buttonClassName,\n tooltip,\n ...remainingProps\n } = props;\n\n const [isOpen, setIsOpen] = useState(false);\n\n const handleToggle = () => {\n const newState = !isOpen;\n setIsOpen(newState);\n onToggle(newState);\n\n buttonRef.current.blur();\n };\n\n const handleClosePanel = () => {\n if (isOpen && panel) {\n setIsOpen(false);\n onToggle(false);\n buttonRef.current.blur();\n }\n };\n\n const buttonRef = useClickOutside(handleClosePanel);\n\n const [toggleRef, setToggleRef] = useState<HTMLDivElement | null>(null);\n const [refDropdownMenu, setRefDropdownMenu] = useState<HTMLUListElement | null>(null);\n\n const { styles, attributes } = usePopper(toggleRef, refDropdownMenu, {\n placement: 'top-end',\n modifiers:\n isOpen && isMobileScreen()\n ? [\n {\n name: 'offset',\n options: {\n offset: [-60, -60],\n },\n },\n ]\n : [],\n });\n\n useClickOutsideWithRef(refDropdownMenu, (event: MouseEvent | TouchEvent) => {\n const target = event.target instanceof Node ? event.target : null;\n\n if (target && toggleRef?.contains(target)) {\n return;\n }\n\n if (isOpen) {\n setIsOpen(false);\n onToggle(false);\n }\n });\n\n const wrapperClasses = classNames('MapSettingsTile', className);\n\n const buttonClasses = classNames('MapSettingsButton', isOpen && 'active', buttonClassName);\n\n const activeIconClassNames = classNames(\n 'MapSettingsTileIcon',\n 'hover-scale-110',\n isActive ? 'display-block' : 'display-none',\n activeIcon?.props.className || ''\n );\n\n const inactiveIconClassNames = classNames(\n 'MapSettingsTileIcon',\n 'hover-scale-110',\n isActive ? 'display-none' : 'display-block',\n inactiveIcon?.props.className || ''\n );\n\n const button = (\n <div className={buttonClasses} onClick={handleToggle}>\n {activeIcon &&\n React.cloneElement(activeIcon, {\n className: activeIconClassNames,\n })}\n {inactiveIcon &&\n React.cloneElement(inactiveIcon, {\n className: inactiveIconClassNames,\n })}\n </div>\n );\n\n return (\n <div className={wrapperClasses} ref={buttonRef} {...remainingProps}>\n {/* backwards compatible way of still showing a panel without labels */}\n {!items && (\n <>\n {tooltip && !isOpen ? getComponentWithTooltip(button, tooltip) : button}\n <div className='overflow-hidden'>\n <AnimatePresence>\n {isOpen && panel && (\n <motion.div\n initial={tileAnimation.initial}\n animate={tileAnimation.animate}\n exit={tileAnimation.exit}\n transition={tileAnimation.transition}\n >\n {panel}\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </>\n )}\n {/* new way of showing a dropdown without labels */}\n {items && (\n <div className='MapSettingsTile-inner position-relative' ref={setToggleRef}>\n {tooltip && !isOpen ? getComponentWithTooltip(button, tooltip) : button}\n <AnimatePresence>\n {isOpen && items && (\n <motion.div\n className='dropdown'\n initial={tileAnimation.initial}\n animate={tileAnimation.animate}\n exit={tileAnimation.exit}\n transition={tileAnimation.transition}\n >\n <MenuItemList\n className='margin-bottom-5 shadow-smooth border-none'\n ref={setRefDropdownMenu}\n style={{ ...styles.popper, minWidth: '180px' }}\n {...attributes.popper}\n >\n {items?.map((item, index) => {\n if (item.type.isMapSettingsDropdownHeader) {\n return item;\n }\n return <MenuItem key={index} value={item} />;\n })}\n </MenuItemList>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n )}\n </div>\n );\n};\n\nexport default MapSettingsTile;\n"],"names":["TOOLTIP_SHOW_TIMEOUT_IN_MS","TOOLTIP_HIDE_TIMEOUT_IN_MS","tileAnimation","getComponentWithTooltip","component","tooltip","jsx","OverlayTrigger","Tooltip","MapSettingsTile","props","onToggle","noop","activeIcon","inactiveIcon","isActive","panel","items","className","buttonClassName","remainingProps","isOpen","setIsOpen","useState","handleToggle","newState","buttonRef","useClickOutside","toggleRef","setToggleRef","refDropdownMenu","setRefDropdownMenu","styles","attributes","usePopper","isMobileScreen","useClickOutsideWithRef","event","target","wrapperClasses","classNames","buttonClasses","activeIconClassNames","inactiveIconClassNames","button","jsxs","React","Fragment","AnimatePresence","motion","MenuItemList","item","index","MenuItem"],"mappings":"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"}
1
+ {"version":3,"file":"MapSettingsTile.js","sources":["../../../../../../src/components/map/components/features/settings/MapSettingsTile.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { AnimatePresence, motion, type Transition } from 'motion/react';\nimport { noop } from 'es-toolkit/function';\nimport { usePopper } from 'react-popper';\n\nimport classNames from '../../../../../utils/classNames';\nimport OverlayTrigger from '../../../../overlay/OverlayTrigger';\nimport Tooltip from '../../../../tooltip/Tooltip';\nimport useClickOutside, { useClickOutsideWithRef } from '../../../../../hooks/useClickOutside';\nimport MenuItemList from '../../../../menuItems/MenuItemList';\nimport MenuItem from '../../../../menuItems/MenuItem';\nimport { isMobileScreen } from '../../../../../utils/deviceUtils';\n\nconst TOOLTIP_SHOW_TIMEOUT_IN_MS = 800;\nconst TOOLTIP_HIDE_TIMEOUT_IN_MS = 100;\n\nconst tileAnimation = {\n initial: { opacity: 0, y: 10 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: 10 },\n transition: { duration: 0.08, ease: 'easeOut' } as Transition,\n};\n\nconst getComponentWithTooltip = (component: React.ReactNode, tooltip: React.ReactNode) => (\n <OverlayTrigger\n placement={Tooltip.TOP}\n delay={{ show: TOOLTIP_SHOW_TIMEOUT_IN_MS, hide: TOOLTIP_HIDE_TIMEOUT_IN_MS }}\n overlay={\n <Tooltip id='tooltip' width='auto'>\n {tooltip}\n </Tooltip>\n }\n >\n {component}\n </OverlayTrigger>\n);\n\nexport type MapSettingsTileProps = {\n onToggle?: (newState: boolean) => void;\n tooltip?: React.ReactNode;\n panel?: React.ReactNode;\n items?: JSX.Element[] | undefined;\n activeIcon?: JSX.Element | undefined;\n inactiveIcon?: JSX.Element | undefined;\n isActive?: boolean;\n buttonClassName?: string;\n className?: string;\n};\n\nconst MapSettingsTile = (props: MapSettingsTileProps) => {\n const {\n onToggle = noop,\n activeIcon,\n inactiveIcon,\n isActive = false,\n panel,\n items,\n className,\n buttonClassName,\n tooltip,\n ...remainingProps\n } = props;\n\n const [isOpen, setIsOpen] = useState(false);\n\n const handleToggle = () => {\n const newState = !isOpen;\n setIsOpen(newState);\n onToggle(newState);\n\n buttonRef.current.blur();\n };\n\n const handleClosePanel = () => {\n if (isOpen && panel) {\n setIsOpen(false);\n onToggle(false);\n buttonRef.current.blur();\n }\n };\n\n const buttonRef = useClickOutside(handleClosePanel);\n\n const [toggleRef, setToggleRef] = useState<HTMLDivElement | null>(null);\n const [refDropdownMenu, setRefDropdownMenu] = useState<HTMLUListElement | null>(null);\n\n const { styles, attributes } = usePopper(toggleRef, refDropdownMenu, {\n placement: 'top-end',\n modifiers:\n isOpen && isMobileScreen()\n ? [\n {\n name: 'offset',\n options: {\n offset: [-60, -60],\n },\n },\n ]\n : [],\n });\n\n useClickOutsideWithRef(refDropdownMenu, (event: MouseEvent | TouchEvent) => {\n const target = event.target instanceof Node ? event.target : null;\n\n if (target && toggleRef?.contains(target)) {\n return;\n }\n\n if (isOpen) {\n setIsOpen(false);\n onToggle(false);\n }\n });\n\n const wrapperClasses = classNames('MapSettingsTile', className);\n\n const buttonClasses = classNames('MapSettingsButton', isOpen && 'active', buttonClassName);\n\n const activeIconClassNames = classNames(\n 'MapSettingsTileIcon',\n 'hover-scale-110',\n isActive ? 'display-block' : 'display-none',\n activeIcon?.props.className || ''\n );\n\n const inactiveIconClassNames = classNames(\n 'MapSettingsTileIcon',\n 'hover-scale-110',\n isActive ? 'display-none' : 'display-block',\n inactiveIcon?.props.className || ''\n );\n\n const button = (\n <div className={buttonClasses} onClick={handleToggle}>\n {activeIcon &&\n React.cloneElement(activeIcon, {\n className: activeIconClassNames,\n })}\n {inactiveIcon &&\n React.cloneElement(inactiveIcon, {\n className: inactiveIconClassNames,\n })}\n </div>\n );\n\n return (\n <div className={wrapperClasses} ref={buttonRef} {...remainingProps}>\n {/* backwards compatible way of still showing a panel without labels */}\n {!items && (\n <>\n {tooltip && !isOpen ? getComponentWithTooltip(button, tooltip) : button}\n <div className='overflow-hidden'>\n <AnimatePresence>\n {isOpen && panel && (\n <motion.div\n initial={tileAnimation.initial}\n animate={tileAnimation.animate}\n exit={tileAnimation.exit}\n transition={tileAnimation.transition}\n >\n {panel}\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </>\n )}\n {/* new way of showing a dropdown without labels */}\n {items && (\n <div className='MapSettingsTile-inner position-relative' ref={setToggleRef}>\n {tooltip && !isOpen ? getComponentWithTooltip(button, tooltip) : button}\n <AnimatePresence>\n {isOpen && items && (\n <motion.div\n className='dropdown'\n initial={tileAnimation.initial}\n animate={tileAnimation.animate}\n exit={tileAnimation.exit}\n transition={tileAnimation.transition}\n >\n <MenuItemList\n className='margin-bottom-5 shadow-smooth border-none'\n ref={setRefDropdownMenu}\n style={{ ...styles.popper, minWidth: '180px' }}\n {...attributes.popper}\n >\n {items?.map((item, index) => {\n if (item.type.isMapSettingsDropdownHeader) {\n return item;\n }\n return <MenuItem key={index} value={item} />;\n })}\n </MenuItemList>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n )}\n </div>\n );\n};\n\nexport default MapSettingsTile;\n"],"names":["TOOLTIP_SHOW_TIMEOUT_IN_MS","TOOLTIP_HIDE_TIMEOUT_IN_MS","tileAnimation","getComponentWithTooltip","component","tooltip","jsx","OverlayTrigger","Tooltip","MapSettingsTile","props","onToggle","noop","activeIcon","inactiveIcon","isActive","panel","items","className","buttonClassName","remainingProps","isOpen","setIsOpen","useState","handleToggle","newState","buttonRef","useClickOutside","toggleRef","setToggleRef","refDropdownMenu","setRefDropdownMenu","styles","attributes","usePopper","isMobileScreen","useClickOutsideWithRef","event","target","wrapperClasses","classNames","buttonClasses","activeIconClassNames","inactiveIconClassNames","button","jsxs","React","Fragment","AnimatePresence","motion","MenuItemList","item","index","MenuItem"],"mappings":"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"}
@@ -92,7 +92,7 @@ const le = (R) => {
92
92
  label: y
93
93
  },
94
94
  "MapTypeSatellite"
95
- ), u = /* @__PURE__ */ e(
95
+ ), L = /* @__PURE__ */ e(
96
96
  M,
97
97
  {
98
98
  className: "MapTypeTerrain",
@@ -103,7 +103,7 @@ const le = (R) => {
103
103
  label: I
104
104
  },
105
105
  "MapTypeTerrain"
106
- ), L = /* @__PURE__ */ e(
106
+ ), u = /* @__PURE__ */ e(
107
107
  M,
108
108
  {
109
109
  className: "MapTypeFlatTruck",
@@ -129,8 +129,8 @@ const le = (R) => {
129
129
  j,
130
130
  m && S,
131
131
  i(p) && h,
132
- i(s) && u,
133
- i(n) && L,
132
+ i(s) && L,
133
+ i(n) && u,
134
134
  i(t) && d
135
135
  ]), C = b([
136
136
  i(t) && A,
@@ -148,8 +148,8 @@ const le = (R) => {
148
148
  panel: !C && /* @__PURE__ */ U(W, { children: [
149
149
  m && S,
150
150
  i(p) && h,
151
- i(s) && u,
152
- i(n) && L,
151
+ i(s) && L,
152
+ i(n) && u,
153
153
  i(t) && d
154
154
  ] }),
155
155
  ...w
@@ -1 +1 @@
1
- {"version":3,"file":"MapTypeSettings.js","sources":["../../../../../../../src/components/map/components/features/settings/builtinSettings/MapTypeSettings.tsx"],"sourcesContent":["import React from 'react';\nimport { useEffect, useMemo } from 'react';\nimport { noop } from 'es-toolkit/function';\nimport { compact } from 'es-toolkit/compat';\n\nimport {\n MAP_TYPE_DEFAULT,\n MAP_TYPE_FLEET_STYLE,\n MAP_TYPE_NIGHT,\n MAP_TYPE_SATELLITE,\n MAP_TYPE_TERRAIN,\n} from '../../../constants';\nimport MapSettingsPanel from '../MapSettingsPanel';\nimport MapSettingsItem from '../MapSettingsItem';\nimport MapSettingsTile from '../MapSettingsTile';\n\nimport {\n MapIcon,\n MAP_TYPE_FLAT_ACTIVE,\n MAP_TYPE_FLAT_INACTIVE,\n MAP_TYPE_FLAT_TRUCK_ACTIVE,\n MAP_TYPE_FLAT_TRUCK_INACTIVE,\n MAP_TYPE_SATELLITE_ACTIVE,\n MAP_TYPE_SATELLITE_INACTIVE,\n MAP_TYPE_TERRAIN_ACTIVE,\n MAP_TYPE_TERRAIN_INACTIVE,\n MAP_TYPE_NIGHT_ACTIVE,\n MAP_TYPE_NIGHT_INACTIVE,\n} from '../../../../icons/MapIcon';\nimport type { MapType } from '../../../../utils/mapTypes';\nimport MapSettingsDropdownHeader from '../items/MapSettingsDropdownHeader';\n\nexport type MapTypeSettingsProps = {\n /**\n * Currently selected base map type.\n */\n mapType?: MapType;\n\n /**\n * Global switch to enable or disable the night map type entry.\n *\n * @deprecated Prefer controlling night visibility via `visibleMapTypes`\n * by including or excluding `MAP_TYPE_NIGHT`.\n */\n enableNightMap?: boolean;\n\n /**\n * Map types that should be shown in the settings panel/dropdown.\n */\n visibleMapTypes?: MapType[];\n\n /**\n * Called when the user selects a different map type.\n */\n onMapTypeChange?: (type: MapType) => void;\n\n /**\n * Custom label for the default map type entry.\n */\n defaultTypeLabel?: string | JSX.Element;\n\n /**\n * Custom label for the truck/fleet-style map type entry.\n */\n truckTypeLabel?: string | JSX.Element;\n\n /**\n * Custom label for the terrain map type entry.\n */\n terrainTypeLabel?: string | JSX.Element;\n\n /**\n * Custom label for the satellite map type entry.\n */\n satelliteTypeLabel?: string | JSX.Element;\n\n /**\n * Custom label for the night map type entry.\n */\n nightTypeLabel?: string | JSX.Element;\n\n /**\n * Tooltip content shown for the map type settings trigger.\n */\n tooltip?: string | React.ReactNode;\n\n /**\n * Optional dropdown header text shown above labeled map type entries.\n */\n dropdownHeaderText?: string | JSX.Element;\n};\n\nconst MapTypeSettings = (props: MapTypeSettingsProps) => {\n const {\n mapType,\n onMapTypeChange = noop,\n enableNightMap = true,\n visibleMapTypes = [\n MAP_TYPE_DEFAULT,\n MAP_TYPE_FLEET_STYLE,\n MAP_TYPE_TERRAIN,\n MAP_TYPE_SATELLITE,\n MAP_TYPE_NIGHT,\n ],\n defaultTypeLabel,\n truckTypeLabel,\n terrainTypeLabel,\n satelliteTypeLabel,\n nightTypeLabel,\n dropdownHeaderText,\n ...remainingProps\n } = props;\n\n const visibleMapTypesSet = useMemo(() => {\n return new Set(visibleMapTypes);\n }, [visibleMapTypes]);\n\n const isMapTypeVisible = (type: MapType) => visibleMapTypesSet.has(type);\n\n const isNightMapVisible = isMapTypeVisible(MAP_TYPE_NIGHT) && enableNightMap;\n\n const visibleMapTypesWithoutLabel = useMemo(\n () =>\n compact([\n visibleMapTypesSet.has(MAP_TYPE_DEFAULT) && !defaultTypeLabel && MAP_TYPE_DEFAULT,\n visibleMapTypesSet.has(MAP_TYPE_FLEET_STYLE) && !truckTypeLabel && MAP_TYPE_FLEET_STYLE,\n visibleMapTypesSet.has(MAP_TYPE_TERRAIN) && !terrainTypeLabel && MAP_TYPE_TERRAIN,\n visibleMapTypesSet.has(MAP_TYPE_SATELLITE) && !satelliteTypeLabel && MAP_TYPE_SATELLITE,\n isNightMapVisible && !nightTypeLabel && MAP_TYPE_NIGHT,\n ]),\n [\n defaultTypeLabel,\n isNightMapVisible,\n nightTypeLabel,\n satelliteTypeLabel,\n terrainTypeLabel,\n truckTypeLabel,\n visibleMapTypesSet,\n ]\n );\n\n useEffect(() => {\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'production') {\n return;\n }\n\n if (visibleMapTypesWithoutLabel.length === 0) {\n return;\n }\n\n console.warn(\n `[MapTypeSettings] Missing labels for visible map types: ${visibleMapTypesWithoutLabel.join(', ')}. ` +\n 'Pass the corresponding `...TypeLabel` props to improve clarity.'\n );\n }, [visibleMapTypesWithoutLabel]);\n\n const type = useMemo(\n () => ({\n isDefault: mapType === MAP_TYPE_DEFAULT,\n isFleetStyle: mapType === MAP_TYPE_FLEET_STYLE,\n isTerrain: mapType === MAP_TYPE_TERRAIN,\n isSatellite: mapType === MAP_TYPE_SATELLITE,\n isNight: mapType === MAP_TYPE_NIGHT,\n }),\n [mapType]\n );\n\n const getIcon = (currentType: typeof type) => {\n if (currentType.isDefault) {\n return <MapIcon name={MAP_TYPE_FLAT_INACTIVE} />;\n }\n if (currentType.isFleetStyle) {\n return <MapIcon name={MAP_TYPE_FLAT_TRUCK_INACTIVE} />;\n }\n if (currentType.isTerrain) {\n return <MapIcon name={MAP_TYPE_TERRAIN_INACTIVE} />;\n }\n if (currentType.isSatellite) {\n return <MapIcon name={MAP_TYPE_SATELLITE_INACTIVE} />;\n }\n if (currentType.isNight) {\n return <MapIcon name={MAP_TYPE_NIGHT_INACTIVE} />;\n }\n };\n\n const dropdownHeader = dropdownHeaderText && (\n <MapSettingsDropdownHeader key='mapTypeDropdownHeader' label={dropdownHeaderText} />\n );\n\n const mapTypeNight = (\n <MapSettingsItem\n key='MapTypeNight'\n className='MapTypeNight'\n onClick={() => onMapTypeChange(MAP_TYPE_NIGHT)}\n isActive={type.isNight}\n activeIcon={<MapIcon name={MAP_TYPE_NIGHT_ACTIVE} />}\n inactiveIcon={<MapIcon name={MAP_TYPE_NIGHT_INACTIVE} />}\n label={nightTypeLabel}\n />\n );\n\n const mapTypeSatellite = (\n <MapSettingsItem\n key='MapTypeSatellite'\n className='MapTypeSatellite'\n onClick={() => onMapTypeChange(MAP_TYPE_SATELLITE)}\n isActive={type.isSatellite}\n activeIcon={<MapIcon name={MAP_TYPE_SATELLITE_ACTIVE} />}\n inactiveIcon={<MapIcon name={MAP_TYPE_SATELLITE_INACTIVE} />}\n label={satelliteTypeLabel}\n />\n );\n\n const mapTypeTerrain = (\n <MapSettingsItem\n key='MapTypeTerrain'\n className='MapTypeTerrain'\n onClick={() => onMapTypeChange(MAP_TYPE_TERRAIN)}\n isActive={type.isTerrain}\n activeIcon={<MapIcon name={MAP_TYPE_TERRAIN_ACTIVE} />}\n inactiveIcon={<MapIcon name={MAP_TYPE_TERRAIN_INACTIVE} />}\n label={terrainTypeLabel}\n />\n );\n\n const mapTypeTruck = (\n <MapSettingsItem\n key='MapTypeFlatTruck'\n className='MapTypeFlatTruck'\n onClick={() => onMapTypeChange(MAP_TYPE_FLEET_STYLE)}\n isActive={type.isFleetStyle}\n activeIcon={<MapIcon name={MAP_TYPE_FLAT_TRUCK_ACTIVE} />}\n inactiveIcon={<MapIcon name={MAP_TYPE_FLAT_TRUCK_INACTIVE} />}\n label={truckTypeLabel}\n />\n );\n\n const mapTypeDefault = (\n <MapSettingsItem\n key='MapTypeFlat'\n className='MapTypeFlat'\n onClick={() => onMapTypeChange(MAP_TYPE_DEFAULT)}\n isActive={type.isDefault}\n activeIcon={<MapIcon name={MAP_TYPE_FLAT_ACTIVE} />}\n inactiveIcon={<MapIcon name={MAP_TYPE_FLAT_INACTIVE} />}\n label={defaultTypeLabel}\n />\n );\n\n const mapTypeItems = compact([\n dropdownHeader,\n isNightMapVisible && mapTypeNight,\n isMapTypeVisible(MAP_TYPE_SATELLITE) && mapTypeSatellite,\n isMapTypeVisible(MAP_TYPE_TERRAIN) && mapTypeTerrain,\n isMapTypeVisible(MAP_TYPE_FLEET_STYLE) && mapTypeTruck,\n isMapTypeVisible(MAP_TYPE_DEFAULT) && mapTypeDefault,\n ]);\n\n const hasVisibleLabels =\n compact([\n isMapTypeVisible(MAP_TYPE_DEFAULT) && defaultTypeLabel,\n isMapTypeVisible(MAP_TYPE_FLEET_STYLE) && truckTypeLabel,\n isMapTypeVisible(MAP_TYPE_TERRAIN) && terrainTypeLabel,\n isMapTypeVisible(MAP_TYPE_SATELLITE) && satelliteTypeLabel,\n isNightMapVisible && nightTypeLabel,\n ]).length > 0;\n\n return (\n <MapSettingsTile\n className='MapTypeSettings'\n inactiveIcon={getIcon(type)}\n items={hasVisibleLabels ? mapTypeItems : undefined}\n panel={\n !hasVisibleLabels && (\n <MapSettingsPanel>\n {isNightMapVisible && mapTypeNight}\n {isMapTypeVisible(MAP_TYPE_SATELLITE) && mapTypeSatellite}\n {isMapTypeVisible(MAP_TYPE_TERRAIN) && mapTypeTerrain}\n {isMapTypeVisible(MAP_TYPE_FLEET_STYLE) && mapTypeTruck}\n {isMapTypeVisible(MAP_TYPE_DEFAULT) && mapTypeDefault}\n </MapSettingsPanel>\n )\n }\n {...remainingProps}\n />\n );\n};\n\nexport default MapTypeSettings;\n"],"names":["MapTypeSettings","props","mapType","onMapTypeChange","noop","enableNightMap","visibleMapTypes","MAP_TYPE_DEFAULT","MAP_TYPE_FLEET_STYLE","MAP_TYPE_TERRAIN","MAP_TYPE_SATELLITE","MAP_TYPE_NIGHT","defaultTypeLabel","truckTypeLabel","terrainTypeLabel","satelliteTypeLabel","nightTypeLabel","dropdownHeaderText","remainingProps","visibleMapTypesSet","useMemo","isMapTypeVisible","type","isNightMapVisible","visibleMapTypesWithoutLabel","compact","useEffect","getIcon","currentType","jsx","MapIcon","MAP_TYPE_FLAT_INACTIVE","MAP_TYPE_FLAT_TRUCK_INACTIVE","MAP_TYPE_TERRAIN_INACTIVE","MAP_TYPE_SATELLITE_INACTIVE","MAP_TYPE_NIGHT_INACTIVE","dropdownHeader","MapSettingsDropdownHeader","mapTypeNight","MapSettingsItem","MAP_TYPE_NIGHT_ACTIVE","mapTypeSatellite","MAP_TYPE_SATELLITE_ACTIVE","mapTypeTerrain","MAP_TYPE_TERRAIN_ACTIVE","mapTypeTruck","MAP_TYPE_FLAT_TRUCK_ACTIVE","mapTypeDefault","MAP_TYPE_FLAT_ACTIVE","mapTypeItems","hasVisibleLabels","MapSettingsTile","jsxs","MapSettingsPanel"],"mappings":"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"}
1
+ {"version":3,"file":"MapTypeSettings.js","sources":["../../../../../../../src/components/map/components/features/settings/builtinSettings/MapTypeSettings.tsx"],"sourcesContent":["import type React from 'react';\nimport { useEffect, useMemo } from 'react';\nimport { noop } from 'es-toolkit/function';\nimport { compact } from 'es-toolkit/compat';\n\nimport {\n MAP_TYPE_DEFAULT,\n MAP_TYPE_FLEET_STYLE,\n MAP_TYPE_NIGHT,\n MAP_TYPE_SATELLITE,\n MAP_TYPE_TERRAIN,\n} from '../../../constants';\nimport MapSettingsPanel from '../MapSettingsPanel';\nimport MapSettingsItem from '../MapSettingsItem';\nimport MapSettingsTile from '../MapSettingsTile';\n\nimport {\n MapIcon,\n MAP_TYPE_FLAT_ACTIVE,\n MAP_TYPE_FLAT_INACTIVE,\n MAP_TYPE_FLAT_TRUCK_ACTIVE,\n MAP_TYPE_FLAT_TRUCK_INACTIVE,\n MAP_TYPE_SATELLITE_ACTIVE,\n MAP_TYPE_SATELLITE_INACTIVE,\n MAP_TYPE_TERRAIN_ACTIVE,\n MAP_TYPE_TERRAIN_INACTIVE,\n MAP_TYPE_NIGHT_ACTIVE,\n MAP_TYPE_NIGHT_INACTIVE,\n} from '../../../../icons/MapIcon';\nimport type { MapType } from '../../../../utils/mapTypes';\nimport MapSettingsDropdownHeader from '../items/MapSettingsDropdownHeader';\n\nexport type MapTypeSettingsProps = {\n /**\n * Currently selected base map type.\n */\n mapType?: MapType;\n\n /**\n * Global switch to enable or disable the night map type entry.\n *\n * @deprecated Prefer controlling night visibility via `visibleMapTypes`\n * by including or excluding `MAP_TYPE_NIGHT`.\n */\n enableNightMap?: boolean;\n\n /**\n * Map types that should be shown in the settings panel/dropdown.\n */\n visibleMapTypes?: MapType[];\n\n /**\n * Called when the user selects a different map type.\n */\n onMapTypeChange?: (type: MapType) => void;\n\n /**\n * Custom label for the default map type entry.\n */\n defaultTypeLabel?: string | JSX.Element;\n\n /**\n * Custom label for the truck/fleet-style map type entry.\n */\n truckTypeLabel?: string | JSX.Element;\n\n /**\n * Custom label for the terrain map type entry.\n */\n terrainTypeLabel?: string | JSX.Element;\n\n /**\n * Custom label for the satellite map type entry.\n */\n satelliteTypeLabel?: string | JSX.Element;\n\n /**\n * Custom label for the night map type entry.\n */\n nightTypeLabel?: string | JSX.Element;\n\n /**\n * Tooltip content shown for the map type settings trigger.\n */\n tooltip?: string | React.ReactNode;\n\n /**\n * Optional dropdown header text shown above labeled map type entries.\n */\n dropdownHeaderText?: string | JSX.Element;\n};\n\nconst MapTypeSettings = (props: MapTypeSettingsProps) => {\n const {\n mapType,\n onMapTypeChange = noop,\n enableNightMap = true,\n visibleMapTypes = [\n MAP_TYPE_DEFAULT,\n MAP_TYPE_FLEET_STYLE,\n MAP_TYPE_TERRAIN,\n MAP_TYPE_SATELLITE,\n MAP_TYPE_NIGHT,\n ],\n defaultTypeLabel,\n truckTypeLabel,\n terrainTypeLabel,\n satelliteTypeLabel,\n nightTypeLabel,\n dropdownHeaderText,\n ...remainingProps\n } = props;\n\n const visibleMapTypesSet = useMemo(() => new Set(visibleMapTypes), [visibleMapTypes]);\n\n const isMapTypeVisible = (type: MapType) => visibleMapTypesSet.has(type);\n\n const isNightMapVisible = isMapTypeVisible(MAP_TYPE_NIGHT) && enableNightMap;\n\n const visibleMapTypesWithoutLabel = useMemo(\n () =>\n compact([\n visibleMapTypesSet.has(MAP_TYPE_DEFAULT) && !defaultTypeLabel && MAP_TYPE_DEFAULT,\n visibleMapTypesSet.has(MAP_TYPE_FLEET_STYLE) && !truckTypeLabel && MAP_TYPE_FLEET_STYLE,\n visibleMapTypesSet.has(MAP_TYPE_TERRAIN) && !terrainTypeLabel && MAP_TYPE_TERRAIN,\n visibleMapTypesSet.has(MAP_TYPE_SATELLITE) && !satelliteTypeLabel && MAP_TYPE_SATELLITE,\n isNightMapVisible && !nightTypeLabel && MAP_TYPE_NIGHT,\n ]),\n [\n defaultTypeLabel,\n isNightMapVisible,\n nightTypeLabel,\n satelliteTypeLabel,\n terrainTypeLabel,\n truckTypeLabel,\n visibleMapTypesSet,\n ]\n );\n\n useEffect(() => {\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'production') {\n return;\n }\n\n if (visibleMapTypesWithoutLabel.length === 0) {\n return;\n }\n\n console.warn(\n `[MapTypeSettings] Missing labels for visible map types: ${visibleMapTypesWithoutLabel.join(', ')}. ` +\n 'Pass the corresponding `...TypeLabel` props to improve clarity.'\n );\n }, [visibleMapTypesWithoutLabel]);\n\n const type = useMemo(\n () => ({\n isDefault: mapType === MAP_TYPE_DEFAULT,\n isFleetStyle: mapType === MAP_TYPE_FLEET_STYLE,\n isTerrain: mapType === MAP_TYPE_TERRAIN,\n isSatellite: mapType === MAP_TYPE_SATELLITE,\n isNight: mapType === MAP_TYPE_NIGHT,\n }),\n [mapType]\n );\n\n const getIcon = (currentType: typeof type) => {\n if (currentType.isDefault) {\n return <MapIcon name={MAP_TYPE_FLAT_INACTIVE} />;\n }\n if (currentType.isFleetStyle) {\n return <MapIcon name={MAP_TYPE_FLAT_TRUCK_INACTIVE} />;\n }\n if (currentType.isTerrain) {\n return <MapIcon name={MAP_TYPE_TERRAIN_INACTIVE} />;\n }\n if (currentType.isSatellite) {\n return <MapIcon name={MAP_TYPE_SATELLITE_INACTIVE} />;\n }\n if (currentType.isNight) {\n return <MapIcon name={MAP_TYPE_NIGHT_INACTIVE} />;\n }\n };\n\n const dropdownHeader = dropdownHeaderText && (\n <MapSettingsDropdownHeader key='mapTypeDropdownHeader' label={dropdownHeaderText} />\n );\n\n const mapTypeNight = (\n <MapSettingsItem\n key='MapTypeNight'\n className='MapTypeNight'\n onClick={() => onMapTypeChange(MAP_TYPE_NIGHT)}\n isActive={type.isNight}\n activeIcon={<MapIcon name={MAP_TYPE_NIGHT_ACTIVE} />}\n inactiveIcon={<MapIcon name={MAP_TYPE_NIGHT_INACTIVE} />}\n label={nightTypeLabel}\n />\n );\n\n const mapTypeSatellite = (\n <MapSettingsItem\n key='MapTypeSatellite'\n className='MapTypeSatellite'\n onClick={() => onMapTypeChange(MAP_TYPE_SATELLITE)}\n isActive={type.isSatellite}\n activeIcon={<MapIcon name={MAP_TYPE_SATELLITE_ACTIVE} />}\n inactiveIcon={<MapIcon name={MAP_TYPE_SATELLITE_INACTIVE} />}\n label={satelliteTypeLabel}\n />\n );\n\n const mapTypeTerrain = (\n <MapSettingsItem\n key='MapTypeTerrain'\n className='MapTypeTerrain'\n onClick={() => onMapTypeChange(MAP_TYPE_TERRAIN)}\n isActive={type.isTerrain}\n activeIcon={<MapIcon name={MAP_TYPE_TERRAIN_ACTIVE} />}\n inactiveIcon={<MapIcon name={MAP_TYPE_TERRAIN_INACTIVE} />}\n label={terrainTypeLabel}\n />\n );\n\n const mapTypeTruck = (\n <MapSettingsItem\n key='MapTypeFlatTruck'\n className='MapTypeFlatTruck'\n onClick={() => onMapTypeChange(MAP_TYPE_FLEET_STYLE)}\n isActive={type.isFleetStyle}\n activeIcon={<MapIcon name={MAP_TYPE_FLAT_TRUCK_ACTIVE} />}\n inactiveIcon={<MapIcon name={MAP_TYPE_FLAT_TRUCK_INACTIVE} />}\n label={truckTypeLabel}\n />\n );\n\n const mapTypeDefault = (\n <MapSettingsItem\n key='MapTypeFlat'\n className='MapTypeFlat'\n onClick={() => onMapTypeChange(MAP_TYPE_DEFAULT)}\n isActive={type.isDefault}\n activeIcon={<MapIcon name={MAP_TYPE_FLAT_ACTIVE} />}\n inactiveIcon={<MapIcon name={MAP_TYPE_FLAT_INACTIVE} />}\n label={defaultTypeLabel}\n />\n );\n\n const mapTypeItems = compact([\n dropdownHeader,\n isNightMapVisible && mapTypeNight,\n isMapTypeVisible(MAP_TYPE_SATELLITE) && mapTypeSatellite,\n isMapTypeVisible(MAP_TYPE_TERRAIN) && mapTypeTerrain,\n isMapTypeVisible(MAP_TYPE_FLEET_STYLE) && mapTypeTruck,\n isMapTypeVisible(MAP_TYPE_DEFAULT) && mapTypeDefault,\n ]);\n\n const hasVisibleLabels =\n compact([\n isMapTypeVisible(MAP_TYPE_DEFAULT) && defaultTypeLabel,\n isMapTypeVisible(MAP_TYPE_FLEET_STYLE) && truckTypeLabel,\n isMapTypeVisible(MAP_TYPE_TERRAIN) && terrainTypeLabel,\n isMapTypeVisible(MAP_TYPE_SATELLITE) && satelliteTypeLabel,\n isNightMapVisible && nightTypeLabel,\n ]).length > 0;\n\n return (\n <MapSettingsTile\n className='MapTypeSettings'\n inactiveIcon={getIcon(type)}\n items={hasVisibleLabels ? mapTypeItems : undefined}\n panel={\n !hasVisibleLabels && (\n <MapSettingsPanel>\n {isNightMapVisible && mapTypeNight}\n {isMapTypeVisible(MAP_TYPE_SATELLITE) && mapTypeSatellite}\n {isMapTypeVisible(MAP_TYPE_TERRAIN) && mapTypeTerrain}\n {isMapTypeVisible(MAP_TYPE_FLEET_STYLE) && mapTypeTruck}\n {isMapTypeVisible(MAP_TYPE_DEFAULT) && mapTypeDefault}\n </MapSettingsPanel>\n )\n }\n {...remainingProps}\n />\n );\n};\n\nexport default MapTypeSettings;\n"],"names":["MapTypeSettings","props","mapType","onMapTypeChange","noop","enableNightMap","visibleMapTypes","MAP_TYPE_DEFAULT","MAP_TYPE_FLEET_STYLE","MAP_TYPE_TERRAIN","MAP_TYPE_SATELLITE","MAP_TYPE_NIGHT","defaultTypeLabel","truckTypeLabel","terrainTypeLabel","satelliteTypeLabel","nightTypeLabel","dropdownHeaderText","remainingProps","visibleMapTypesSet","useMemo","isMapTypeVisible","type","isNightMapVisible","visibleMapTypesWithoutLabel","compact","useEffect","getIcon","currentType","jsx","MapIcon","MAP_TYPE_FLAT_INACTIVE","MAP_TYPE_FLAT_TRUCK_INACTIVE","MAP_TYPE_TERRAIN_INACTIVE","MAP_TYPE_SATELLITE_INACTIVE","MAP_TYPE_NIGHT_INACTIVE","dropdownHeader","MapSettingsDropdownHeader","mapTypeNight","MapSettingsItem","MAP_TYPE_NIGHT_ACTIVE","mapTypeSatellite","MAP_TYPE_SATELLITE_ACTIVE","mapTypeTerrain","MAP_TYPE_TERRAIN_ACTIVE","mapTypeTruck","MAP_TYPE_FLAT_TRUCK_ACTIVE","mapTypeDefault","MAP_TYPE_FLAT_ACTIVE","mapTypeItems","hasVisibleLabels","MapSettingsTile","jsxs","MapSettingsPanel"],"mappings":"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"}
@@ -1,37 +1,37 @@
1
1
  const s = (e = 250) => {
2
2
  let n;
3
- const t = (r, ...E) => {
4
- o(), n = setTimeout(() => r(...E), e);
5
- }, o = () => {
3
+ const t = (o, ...E) => {
4
+ r(), n = setTimeout(() => o(...E), e);
5
+ }, r = () => {
6
6
  clearTimeout(n);
7
7
  };
8
8
  return {
9
9
  delayTime: e,
10
10
  timer: n,
11
11
  delay: t,
12
- cancel: o
12
+ cancel: r
13
13
  };
14
14
  }, i = (e, n) => {
15
15
  if (!e || !e.currentPointer)
16
16
  return {
17
17
  map: n
18
18
  };
19
- const t = e.currentPointer.viewportX, o = e.currentPointer.viewportY;
19
+ const t = e.currentPointer.viewportX, r = e.currentPointer.viewportY;
20
20
  return {
21
21
  viewportX: t,
22
- viewportY: o,
22
+ viewportY: r,
23
23
  map: n,
24
- calculateGeoCoords: () => n.screenToGeo(t, o)
24
+ calculateGeoCoords: () => n.screenToGeo(t, r)
25
25
  };
26
26
  }, T = (e, n) => (t) => e(t, i(t, n)), l = (e, n, t) => {
27
27
  if (!n)
28
28
  return;
29
- const o = {};
30
- Object.keys(n).forEach((r) => {
31
- const E = T(n[r], t);
32
- e.addEventListener(r, E), o[r] = E;
33
- }), e.rioMapRemoveEvents = () => (Object.keys(o).forEach((r) => {
34
- e.removeEventListener(r, o[r]);
29
+ const r = {};
30
+ Object.keys(n).forEach((o) => {
31
+ const E = T(n[o], t);
32
+ e.addEventListener(o, E), r[o] = E;
33
+ }), e.rioMapRemoveEvents = () => (Object.keys(r).forEach((o) => {
34
+ e.removeEventListener(o, r[o]);
35
35
  }), delete e.rioMapRemoveEvents, t);
36
36
  }, N = (e) => {
37
37
  if (e.rioMapRemoveEvents)
@@ -40,11 +40,11 @@ const s = (e = 250) => {
40
40
  const t = { ...e };
41
41
  if (!e[c.TAP] || !e[c.DBL_TAP])
42
42
  return t;
43
- const o = s(n);
44
- return t[c.TAP] = (...r) => {
45
- o.delay(e[c.TAP], ...r);
46
- }, t[c.DBL_TAP] = (...r) => {
47
- o.cancel(), e[c.DBL_TAP](...r);
43
+ const r = s(n);
44
+ return t[c.TAP] = (...o) => {
45
+ r.delay(e[c.TAP], ...o);
46
+ }, t[c.DBL_TAP] = (...o) => {
47
+ r.cancel(), e[c.DBL_TAP](...o);
48
48
  }, t;
49
49
  }, a = (e) => e.originalEvent.button, _ = (e) => a(e) === c.MOUSE_BUTTONS.RIGHT, c = {
50
50
  MOUSE_BUTTONS: {