@rio-cloud/rio-uikit 2.2.1 → 2.3.0-beta.2

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 (475) hide show
  1. package/AnalyticsAnalysisOverlay.d.ts +1 -0
  2. package/AnalyticsAnalysisOverlay.js +5 -0
  3. package/AnalyticsAnalysisOverlay.js.map +1 -0
  4. package/DayPicker.js +6 -2
  5. package/DayPicker.js.map +1 -1
  6. package/DayPickerCalendar.d.ts +2 -0
  7. package/DayPickerCalendar.js +5 -0
  8. package/DayPickerCalendar.js.map +1 -0
  9. package/DayPickerPrototype.d.ts +2 -0
  10. package/DayPickerPrototype.js +5 -0
  11. package/DayPickerPrototype.js.map +1 -0
  12. package/Table.d.ts +2 -0
  13. package/Table.js +23 -0
  14. package/Table.js.map +1 -0
  15. package/TableCol.d.ts +2 -2
  16. package/TableCol.js +1 -1
  17. package/TableHead.d.ts +2 -2
  18. package/TableHead.js +1 -1
  19. package/TableNext.d.ts +2 -0
  20. package/TableNext.js +23 -0
  21. package/TableNext.js.map +1 -0
  22. package/TableSettingsDialog.d.ts +2 -2
  23. package/TableSettingsDialog.js +1 -1
  24. package/TableToolbar.js +4 -2
  25. package/TableToolbar.js.map +1 -1
  26. package/analyticsAnalysisUtils.d.ts +1 -0
  27. package/analyticsAnalysisUtils.js +13 -0
  28. package/analyticsAnalysisUtils.js.map +1 -0
  29. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.d.ts +18 -0
  30. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.js +128 -0
  31. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.js.map +1 -0
  32. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.d.ts +9 -0
  33. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.js +73 -0
  34. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.js.map +1 -0
  35. package/components/applicationHeader/AppMenuContent.js.map +1 -1
  36. package/components/applicationHeader/ApplicationActionBar.js +4 -4
  37. package/components/applicationHeader/ApplicationActionBar.js.map +1 -1
  38. package/components/applicationHeader/CollapsedNavItem.js +5 -14
  39. package/components/applicationHeader/CollapsedNavItem.js.map +1 -1
  40. package/components/applicationHeader/NavItems.js +10 -10
  41. package/components/applicationHeader/NavItems.js.map +1 -1
  42. package/components/assetTree/AssetTree.js +23 -23
  43. package/components/assetTree/AssetTree.js.map +1 -1
  44. package/components/assetTree/Tree.js +13 -13
  45. package/components/assetTree/TreeNothingFound.js +2 -2
  46. package/components/assetTree/TreeNothingFound.js.map +1 -1
  47. package/components/assetTree/treeUtils.js.map +1 -1
  48. package/components/autosuggest/AutoSuggest.js +31 -31
  49. package/components/autosuggest/AutoSuggest.js.map +1 -1
  50. package/components/autosuggest/AutoSuggestAddons.js +9 -9
  51. package/components/autosuggest/AutoSuggestAddons.js.map +1 -1
  52. package/components/banner/BannerActions.js +2 -2
  53. package/components/banner/BannerActions.js.map +1 -1
  54. package/components/banner/BannerIcon.js +3 -3
  55. package/components/banner/BannerIcon.js.map +1 -1
  56. package/components/banner/BannerPage.js +4 -4
  57. package/components/banner/BannerPage.js.map +1 -1
  58. package/components/button/Button.d.ts +7 -0
  59. package/components/button/Button.js +73 -65
  60. package/components/button/Button.js.map +1 -1
  61. package/components/charts/Area.d.ts +5 -3
  62. package/components/charts/Area.js +4 -3
  63. package/components/charts/Area.js.map +1 -1
  64. package/components/charts/AreaChart.js.map +1 -1
  65. package/components/charts/ComposedChart.js.map +1 -1
  66. package/components/checkbox/Checkbox.js +18 -17
  67. package/components/checkbox/Checkbox.js.map +1 -1
  68. package/components/clearableInput/ClearableInput.d.ts +30 -0
  69. package/components/clearableInput/ClearableInput.js +81 -78
  70. package/components/clearableInput/ClearableInput.js.map +1 -1
  71. package/components/datepicker/DateRangePicker.js +0 -2
  72. package/components/datepicker/DateRangePicker.js.map +1 -1
  73. package/components/datepicker/DayPicker.d.ts +4 -51
  74. package/components/datepicker/DayPicker.js +264 -256
  75. package/components/datepicker/DayPicker.js.map +1 -1
  76. package/components/datepicker/DayPickerCalendar.d.ts +4 -0
  77. package/components/datepicker/DayPickerCalendar.js +129 -0
  78. package/components/datepicker/DayPickerCalendar.js.map +1 -0
  79. package/components/datepicker/DayPickerDropdown.d.ts +18 -0
  80. package/components/datepicker/DayPickerDropdown.js +75 -0
  81. package/components/datepicker/DayPickerDropdown.js.map +1 -0
  82. package/components/datepicker/DayPickerDropdownFooter.d.ts +7 -0
  83. package/components/datepicker/DayPickerDropdownFooter.js +7 -0
  84. package/components/datepicker/DayPickerDropdownFooter.js.map +1 -0
  85. package/components/datepicker/DayPickerDropdownSidebar.d.ts +8 -0
  86. package/components/datepicker/DayPickerDropdownSidebar.js +7 -0
  87. package/components/datepicker/DayPickerDropdownSidebar.js.map +1 -0
  88. package/components/datepicker/DayPickerInput.d.ts +28 -0
  89. package/components/datepicker/DayPickerInput.js +65 -0
  90. package/components/datepicker/DayPickerInput.js.map +1 -0
  91. package/components/datepicker/DayPickerPrototype.d.ts +53 -0
  92. package/components/datepicker/DayPickerPrototype.js +285 -0
  93. package/components/datepicker/DayPickerPrototype.js.map +1 -0
  94. package/components/datepicker/dayPickerRangeSelectionUtils.d.ts +15 -0
  95. package/components/datepicker/dayPickerRangeSelectionUtils.js +31 -0
  96. package/components/datepicker/dayPickerRangeSelectionUtils.js.map +1 -0
  97. package/components/datepicker/dayPickerTypes.d.ts +517 -0
  98. package/components/datepicker/dayPickerTypes.js +7 -0
  99. package/components/datepicker/dayPickerTypes.js.map +1 -0
  100. package/components/datepicker/dayPickerUtils.d.ts +10 -0
  101. package/components/datepicker/dayPickerUtils.js +92 -0
  102. package/components/datepicker/dayPickerUtils.js.map +1 -0
  103. package/components/datepicker/useDayPickerInputState.d.ts +32 -0
  104. package/components/datepicker/useDayPickerInputState.js +85 -0
  105. package/components/datepicker/useDayPickerInputState.js.map +1 -0
  106. package/components/datepicker/useStackedDayPickerCalendars.d.ts +5 -0
  107. package/components/datepicker/useStackedDayPickerCalendars.js +39 -0
  108. package/components/datepicker/useStackedDayPickerCalendars.js.map +1 -0
  109. package/components/dialog/Dialog.js.map +1 -1
  110. package/components/dialog/DialogHeader.js +23 -20
  111. package/components/dialog/DialogHeader.js.map +1 -1
  112. package/components/dialog/MediaDialog.js +1 -1
  113. package/components/dialog/MediaDialog.js.map +1 -1
  114. package/components/divider/Divider.js +6 -6
  115. package/components/dropdown/ButtonDropdown.d.ts +4 -0
  116. package/components/dropdown/ButtonDropdown.js +70 -68
  117. package/components/dropdown/ButtonDropdown.js.map +1 -1
  118. package/components/dropdown/DropdownToggleButton.d.ts +1 -0
  119. package/components/dropdown/DropdownToggleButton.js +17 -15
  120. package/components/dropdown/DropdownToggleButton.js.map +1 -1
  121. package/components/editableContent/EditableContent.js +7 -7
  122. package/components/editableContent/EditableContent.js.map +1 -1
  123. package/components/expander/ExpanderList.d.ts +5 -0
  124. package/components/expander/ExpanderList.js +25 -16
  125. package/components/expander/ExpanderList.js.map +1 -1
  126. package/components/expander/ExpanderPanel.d.ts +5 -0
  127. package/components/expander/ExpanderPanel.js +29 -28
  128. package/components/expander/ExpanderPanel.js.map +1 -1
  129. package/components/fade/FadeExpander.js +17 -20
  130. package/components/fade/FadeExpander.js.map +1 -1
  131. package/components/filepicker/FilePicker.js.map +1 -1
  132. package/components/loadMore/LoadMoreButton.d.ts +5 -0
  133. package/components/loadMore/LoadMoreButton.js +33 -29
  134. package/components/loadMore/LoadMoreButton.js.map +1 -1
  135. package/components/loadMore/LoadMoreProgress.js +6 -7
  136. package/components/map/components/Map.js +3 -3
  137. package/components/map/components/features/ContextMenu.js +13 -13
  138. package/components/map/components/features/ContextMenu.js.map +1 -1
  139. package/components/map/components/features/basics/InfoBubble.js.map +1 -1
  140. package/components/map/components/features/settings/MapSettingsTile.js.map +1 -1
  141. package/components/map/components/features/settings/builtinSettings/MapTypeSettings.js +6 -6
  142. package/components/map/components/features/settings/builtinSettings/MapTypeSettings.js.map +1 -1
  143. package/components/map/utils/eventHandling.js +18 -18
  144. package/components/map/utils/eventHandling.js.map +1 -1
  145. package/components/map/utils/positions.d.ts +1 -1
  146. package/components/map/utils/positions.js +15 -12
  147. package/components/map/utils/positions.js.map +1 -1
  148. package/components/map/utils/rendering.d.ts +1 -1
  149. package/components/map/utils/rendering.js +5 -5
  150. package/components/menuItems/MenuItems.js +6 -6
  151. package/components/menuItems/MenuItems.js.map +1 -1
  152. package/components/notification/NotificationsContainer.js.map +1 -1
  153. package/components/numberInput/NumberInput.js +57 -56
  154. package/components/numberInput/NumberInput.js.map +1 -1
  155. package/components/popover/Popover.js +3 -3
  156. package/components/popover/Popover.js.map +1 -1
  157. package/components/radiobutton/RadioCardGroup.js +3 -3
  158. package/components/resizer/Resizer.js +6 -3
  159. package/components/resizer/Resizer.js.map +1 -1
  160. package/components/rioglyph/RioglyphIconType.d.ts +1 -1
  161. package/components/selects/BaseSelectDropdown.js +34 -32
  162. package/components/selects/BaseSelectDropdown.js.map +1 -1
  163. package/components/selects/Multiselect.d.ts +6 -0
  164. package/components/selects/Multiselect.js +164 -150
  165. package/components/selects/Multiselect.js.map +1 -1
  166. package/components/selects/MultiselectTogglePlaceholder.js.map +1 -1
  167. package/components/selects/MultiselectToggleSelection.js +11 -11
  168. package/components/selects/MultiselectToggleSelection.js.map +1 -1
  169. package/components/selects/Select.js +39 -37
  170. package/components/selects/Select.js.map +1 -1
  171. package/components/sidebars/Sidebar.js +12 -12
  172. package/components/sidebars/Sidebar.js.map +1 -1
  173. package/components/sidebars/SidebarCloseButton.js +2 -2
  174. package/components/sidebars/SidebarCloseButton.js.map +1 -1
  175. package/components/smoothScrollbars/SmoothScrollbars.d.ts +4 -3
  176. package/components/smoothScrollbars/SmoothScrollbars.js +11 -11
  177. package/components/smoothScrollbars/SmoothScrollbars.js.map +1 -1
  178. package/components/states/CustomState.js.map +1 -1
  179. package/components/svgImage/svgConverter.js.map +1 -1
  180. package/components/table/Table.d.ts +46 -0
  181. package/components/table/Table.js +256 -0
  182. package/components/table/Table.js.map +1 -0
  183. package/components/table/Table.types.d.ts +379 -0
  184. package/components/table/TableBody.d.ts +70 -0
  185. package/components/table/TableBody.js +135 -0
  186. package/components/table/TableBody.js.map +1 -0
  187. package/components/table/TableCardsSorting.js +25 -32
  188. package/components/table/TableCardsSorting.js.map +1 -1
  189. package/components/table/TableColumn.d.ts +55 -0
  190. package/components/table/TableColumn.js +115 -0
  191. package/components/table/TableColumn.js.map +1 -0
  192. package/components/table/TableExpandedContentRow.d.ts +22 -0
  193. package/components/table/TableExpandedContentRow.js +110 -0
  194. package/components/table/TableExpandedContentRow.js.map +1 -0
  195. package/components/table/TableExpandedRow.d.ts +22 -0
  196. package/components/table/TableExpandedRow.js +150 -0
  197. package/components/table/TableExpandedRow.js.map +1 -0
  198. package/components/table/TableExpanderButton.d.ts +25 -0
  199. package/components/table/TableExpanderButton.js +24 -0
  200. package/components/table/TableExpanderButton.js.map +1 -0
  201. package/components/table/TableFooter.d.ts +17 -0
  202. package/components/table/TableFooter.js +52 -0
  203. package/components/table/TableFooter.js.map +1 -0
  204. package/components/table/TableGroupFooterRow.d.ts +18 -0
  205. package/components/table/TableGroupFooterRow.js +30 -0
  206. package/components/table/TableGroupFooterRow.js.map +1 -0
  207. package/components/table/TableGroupRow.d.ts +24 -0
  208. package/components/table/TableGroupRow.js +36 -0
  209. package/components/table/TableGroupRow.js.map +1 -0
  210. package/components/table/TableHeader.d.ts +14 -0
  211. package/components/table/TableHeader.js +107 -0
  212. package/components/table/TableHeader.js.map +1 -0
  213. package/components/table/TableHeaderColumn.d.ts +76 -0
  214. package/components/table/TableHeaderColumn.js +81 -0
  215. package/components/table/TableHeaderColumn.js.map +1 -0
  216. package/components/table/TableHeaderRow.d.ts +9 -0
  217. package/components/table/TableHeaderRow.js +14 -0
  218. package/components/table/TableHeaderRow.js.map +1 -0
  219. package/components/table/TableRow.d.ts +24 -0
  220. package/components/table/TableRow.js +111 -0
  221. package/components/table/TableRow.js.map +1 -0
  222. package/components/table/TableSpacerRow.d.ts +13 -0
  223. package/components/table/TableSpacerRow.js +29 -0
  224. package/components/table/TableSpacerRow.js.map +1 -0
  225. package/components/table/TableToolbar.d.ts +3 -0
  226. package/components/table/TableToolbar.js +49 -4
  227. package/components/table/TableToolbar.js.map +1 -1
  228. package/components/table/TableToolbarColumn.d.ts +31 -0
  229. package/components/table/TableToolbarColumn.js +33 -0
  230. package/components/table/TableToolbarColumn.js.map +1 -0
  231. package/components/table/TableViewToggles.d.ts +21 -3
  232. package/components/table/TableViewToggles.js +59 -87
  233. package/components/table/TableViewToggles.js.map +1 -1
  234. package/components/table/context/TableInteractionContext.d.ts +26 -0
  235. package/components/table/context/TableInteractionContext.js +7 -0
  236. package/components/table/context/TableInteractionContext.js.map +1 -0
  237. package/components/table/context/TableLayoutContext.d.ts +25 -0
  238. package/components/table/context/TableLayoutContext.js +7 -0
  239. package/components/table/context/TableLayoutContext.js.map +1 -0
  240. package/components/table/context/TableRenderConfigContext.d.ts +27 -0
  241. package/components/table/context/TableRenderConfigContext.js +7 -0
  242. package/components/table/context/TableRenderConfigContext.js.map +1 -0
  243. package/components/table/context/TableRenderContext.d.ts +85 -0
  244. package/components/table/context/TableRenderContext.js +7 -0
  245. package/components/table/context/TableRenderContext.js.map +1 -0
  246. package/components/table/context/TableStructureContext.d.ts +31 -0
  247. package/components/table/context/TableStructureContext.js +17 -0
  248. package/components/table/context/TableStructureContext.js.map +1 -0
  249. package/components/table/layout/columnSizing.d.ts +3 -0
  250. package/components/table/layout/columnSizing.js +23 -0
  251. package/components/table/layout/columnSizing.js.map +1 -0
  252. package/components/table/layout/useDraggableColumns.d.ts +14 -0
  253. package/components/table/layout/useDraggableColumns.js +47 -0
  254. package/components/table/layout/useDraggableColumns.js.map +1 -0
  255. package/components/table/layout/useHorizontalSectionSync.d.ts +13 -0
  256. package/components/table/layout/useHorizontalSectionSync.js +43 -0
  257. package/components/table/layout/useHorizontalSectionSync.js.map +1 -0
  258. package/components/table/layout/useMeasuredColumnMaxWidths.d.ts +12 -0
  259. package/components/table/layout/useMeasuredColumnMaxWidths.js +85 -0
  260. package/components/table/layout/useMeasuredColumnMaxWidths.js.map +1 -0
  261. package/components/table/layout/useResizableColumns.d.ts +15 -0
  262. package/components/table/layout/useResizableColumns.js +132 -0
  263. package/components/table/layout/useResizableColumns.js.map +1 -0
  264. package/components/table/layout/useTableBodyScrollBottom.d.ts +12 -0
  265. package/components/table/layout/useTableBodyScrollBottom.js +37 -0
  266. package/components/table/layout/useTableBodyScrollBottom.js.map +1 -0
  267. package/components/table/layout/useTableLayout.d.ts +36 -0
  268. package/components/table/layout/useTableLayout.js +59 -0
  269. package/components/table/layout/useTableLayout.js.map +1 -0
  270. package/components/table/layout/useTableVirtualization.d.ts +22 -0
  271. package/components/table/layout/useTableVirtualization.js +125 -0
  272. package/components/table/layout/useTableVirtualization.js.map +1 -0
  273. package/components/table/model/resolveRowMeta.d.ts +3 -0
  274. package/components/table/model/resolveRowMeta.js +15 -0
  275. package/components/table/model/resolveRowMeta.js.map +1 -0
  276. package/components/table/model/resolveTableClassConfig.d.ts +47 -0
  277. package/components/table/model/resolveTableClassConfig.js +64 -0
  278. package/components/table/model/resolveTableClassConfig.js.map +1 -0
  279. package/components/table/model/tableView.types.d.ts +41 -0
  280. package/components/table/native/TableCol.js.map +1 -0
  281. package/components/table/{TableHead.js → native/TableHead.js} +2 -2
  282. package/components/table/native/TableHead.js.map +1 -0
  283. package/components/table/native/TableSettingsColumnButtons.js +59 -0
  284. package/components/table/native/TableSettingsColumnButtons.js.map +1 -0
  285. package/components/table/{TableSettingsColumnDetails.js → native/TableSettingsColumnDetails.js} +2 -2
  286. package/components/table/native/TableSettingsColumnDetails.js.map +1 -0
  287. package/components/table/{TableSettingsDialog.d.ts → native/TableSettingsDialog.d.ts} +2 -3
  288. package/components/table/native/TableSettingsDialog.js +216 -0
  289. package/components/table/native/TableSettingsDialog.js.map +1 -0
  290. package/components/table/{TableSettingsDialogFooter.js → native/TableSettingsDialogFooter.js} +2 -2
  291. package/components/table/native/TableSettingsDialogFooter.js.map +1 -0
  292. package/components/table/native/TableSettingsListContainer.js.map +1 -0
  293. package/components/table/native/TableSettingsListItem.js +100 -0
  294. package/components/table/native/TableSettingsListItem.js.map +1 -0
  295. package/components/table/render/body/TableBodyContent.d.ts +21 -0
  296. package/components/table/render/body/TableBodyContent.js +52 -0
  297. package/components/table/render/body/TableBodyContent.js.map +1 -0
  298. package/components/table/render/body/TableEmptyRow.d.ts +7 -0
  299. package/components/table/render/body/TableEmptyRow.js +6 -0
  300. package/components/table/render/body/TableEmptyRow.js.map +1 -0
  301. package/components/table/render/footer/TableFooterContent.d.ts +6 -0
  302. package/components/table/render/footer/TableFooterContent.js +6 -0
  303. package/components/table/render/footer/TableFooterContent.js.map +1 -0
  304. package/components/table/render/header/TableBatchDropdown.d.ts +13 -0
  305. package/components/table/render/header/TableBatchDropdown.js +30 -0
  306. package/components/table/render/header/TableBatchDropdown.js.map +1 -0
  307. package/components/table/render/header/TableColumnFilter.d.ts +66 -0
  308. package/components/table/render/header/TableColumnFilter.js +72 -0
  309. package/components/table/render/header/TableColumnFilter.js.map +1 -0
  310. package/components/table/render/header/TableDraggableHeaderCell.d.ts +4 -0
  311. package/components/table/render/header/TableDraggableHeaderCell.js +64 -0
  312. package/components/table/render/header/TableDraggableHeaderCell.js.map +1 -0
  313. package/components/table/render/header/TableHeader.types.d.ts +37 -0
  314. package/components/table/render/header/TableHeaderCellContent.d.ts +4 -0
  315. package/components/table/render/header/TableHeaderCellContent.js +57 -0
  316. package/components/table/render/header/TableHeaderCellContent.js.map +1 -0
  317. package/components/table/render/header/TableHeaderCellResizeHandle.d.ts +4 -0
  318. package/components/table/render/header/TableHeaderCellResizeHandle.js +22 -0
  319. package/components/table/render/header/TableHeaderCellResizeHandle.js.map +1 -0
  320. package/components/table/render/header/TableHeaderDragOverlay.d.ts +14 -0
  321. package/components/table/render/header/TableHeaderDragOverlay.js +35 -0
  322. package/components/table/render/header/TableHeaderDragOverlay.js.map +1 -0
  323. package/components/table/render/header/TableHeaderSelectionCell.d.ts +9 -0
  324. package/components/table/render/header/TableHeaderSelectionCell.js +41 -0
  325. package/components/table/render/header/TableHeaderSelectionCell.js.map +1 -0
  326. package/components/table/render/header/TableStaticHeaderCell.d.ts +4 -0
  327. package/components/table/render/header/TableStaticHeaderCell.js +48 -0
  328. package/components/table/render/header/TableStaticHeaderCell.js.map +1 -0
  329. package/components/table/render/header/resolveAriaSort.d.ts +3 -0
  330. package/components/table/render/header/resolveAriaSort.js +8 -0
  331. package/components/table/render/header/resolveAriaSort.js.map +1 -0
  332. package/components/table/render/header/resolveColumnCollisionDetection.d.ts +2 -0
  333. package/components/table/render/header/resolveColumnCollisionDetection.js +9 -0
  334. package/components/table/render/header/resolveColumnCollisionDetection.js.map +1 -0
  335. package/components/table/render/header/resolveHeaderCellClassName.d.ts +12 -0
  336. package/components/table/render/header/resolveHeaderCellClassName.js +23 -0
  337. package/components/table/render/header/resolveHeaderCellClassName.js.map +1 -0
  338. package/components/table/render/header/resolveHeaderCellStyle.d.ts +830 -0
  339. package/components/table/render/header/resolveHeaderCellStyle.js +9 -0
  340. package/components/table/render/header/resolveHeaderCellStyle.js.map +1 -0
  341. package/components/table/runtime/shouldAnimateBodyRows.d.ts +17 -0
  342. package/components/table/runtime/shouldAnimateBodyRows.js +5 -0
  343. package/components/table/runtime/shouldAnimateBodyRows.js.map +1 -0
  344. package/components/table/runtime/useRenderDraftState.d.ts +14 -0
  345. package/components/table/runtime/useRenderDraftState.js +80 -0
  346. package/components/table/runtime/useRenderDraftState.js.map +1 -0
  347. package/components/table/runtime/useResolvedRenderColumns.d.ts +43 -0
  348. package/components/table/runtime/useResolvedRenderColumns.js +113 -0
  349. package/components/table/runtime/useResolvedRenderColumns.js.map +1 -0
  350. package/components/table/runtime/useResolvedRenderHeader.d.ts +27 -0
  351. package/components/table/runtime/useResolvedRenderHeader.js +67 -0
  352. package/components/table/runtime/useResolvedRenderHeader.js.map +1 -0
  353. package/components/table/selection/useInternalTableSelectionState.d.ts +17 -0
  354. package/components/table/selection/useInternalTableSelectionState.js +28 -0
  355. package/components/table/selection/useInternalTableSelectionState.js.map +1 -0
  356. package/components/table/selection/useTableSelection.d.ts +82 -0
  357. package/components/table/selection/useTableSelection.js +35 -0
  358. package/components/table/selection/useTableSelection.js.map +1 -0
  359. package/components/table/settings/TableColumnsDropdown.d.ts +90 -0
  360. package/components/table/settings/TableColumnsDropdown.js +137 -0
  361. package/components/table/settings/TableColumnsDropdown.js.map +1 -0
  362. package/components/table/settings/TableColumnsDropdownItem.d.ts +8 -0
  363. package/components/table/settings/TableColumnsDropdownItem.js +66 -0
  364. package/components/table/settings/TableColumnsDropdownItem.js.map +1 -0
  365. package/components/table/shared/getAlignClassName.d.ts +3 -0
  366. package/components/table/shared/getAlignClassName.js +6 -0
  367. package/components/table/shared/getAlignClassName.js.map +1 -0
  368. package/components/table/shared/getCellContentOverflowClassName.d.ts +3 -0
  369. package/components/table/shared/getCellContentOverflowClassName.js +18 -0
  370. package/components/table/shared/getCellContentOverflowClassName.js.map +1 -0
  371. package/components/table/shared/getInteractiveRowProps.d.ts +15 -0
  372. package/components/table/shared/getInteractiveRowProps.js +15 -0
  373. package/components/table/shared/getInteractiveRowProps.js.map +1 -0
  374. package/components/table/shared/resolveTableAria.d.ts +2 -0
  375. package/components/table/shared/resolveTableAria.js +6 -0
  376. package/components/table/shared/resolveTableAria.js.map +1 -0
  377. package/components/table/tableSizing.constants.d.ts +4 -0
  378. package/components/table/tableSizing.constants.js +8 -0
  379. package/components/table/tableSizing.constants.js.map +1 -0
  380. package/components/teaser/TeaserContainer.js +3 -3
  381. package/components/teaser/TeaserContainer.js.map +1 -1
  382. package/components/virtualList/VirtualList.js +16 -13
  383. package/components/virtualList/VirtualList.js.map +1 -1
  384. package/googleAnalyticsUtils.d.ts +1 -0
  385. package/googleAnalyticsUtils.js +9 -0
  386. package/googleAnalyticsUtils.js.map +1 -0
  387. package/hooks/useCookies.js +17 -17
  388. package/hooks/useCookies.js.map +1 -1
  389. package/hooks/useDraggableElement.d.ts +35 -0
  390. package/hooks/useDraggableElement.js +49 -0
  391. package/hooks/useDraggableElement.js.map +1 -0
  392. package/hooks/useElapsedTime.js +4 -4
  393. package/hooks/useElapsedTime.js.map +1 -1
  394. package/hooks/useLocationSuggestions.js +13 -10
  395. package/hooks/useLocationSuggestions.js.map +1 -1
  396. package/hooks/useMergeRefs.js +12 -12
  397. package/hooks/useMergeRefs.js.map +1 -1
  398. package/hooks/usePrevious.d.ts +1 -1
  399. package/hooks/usePrevious.js.map +1 -1
  400. package/hooks/useResizeObserver.js +25 -10
  401. package/hooks/useResizeObserver.js.map +1 -1
  402. package/hooks/useRioCookieConsent.js +7 -4
  403. package/hooks/useRioCookieConsent.js.map +1 -1
  404. package/hooks/useSorting.js +10 -10
  405. package/hooks/useSorting.js.map +1 -1
  406. package/hooks/useStorage.js +12 -12
  407. package/hooks/useStorage.js.map +1 -1
  408. package/hooks/useSum.js +10 -7
  409. package/hooks/useSum.js.map +1 -1
  410. package/hooks/useTableSelection.js.map +1 -1
  411. package/hooks/useTimeout.js +6 -3
  412. package/hooks/useTimeout.js.map +1 -1
  413. package/hooks/useUrlState.js +3 -3
  414. package/package.json +17 -18
  415. package/routeUtils.js +12 -10
  416. package/utils/analytics/analyticsAnalysisUtils.d.ts +27 -0
  417. package/utils/analytics/analyticsAnalysisUtils.js +161 -0
  418. package/utils/analytics/analyticsAnalysisUtils.js.map +1 -0
  419. package/utils/analytics/autoTracking.d.ts +14 -0
  420. package/utils/analytics/autoTracking.js +19 -0
  421. package/utils/analytics/autoTracking.js.map +1 -0
  422. package/utils/analytics/createAnalyticsOverlayTooltip.d.ts +36 -0
  423. package/utils/analytics/createAnalyticsOverlayTooltip.js +203 -0
  424. package/utils/analytics/createAnalyticsOverlayTooltip.js.map +1 -0
  425. package/utils/analytics/googleAnalyticsUtils.d.ts +37 -0
  426. package/utils/analytics/googleAnalyticsUtils.js +37 -0
  427. package/utils/analytics/googleAnalyticsUtils.js.map +1 -0
  428. package/utils/analytics/logAnalyticsOverlayUnmatchedEntries.d.ts +8 -0
  429. package/utils/analytics/logAnalyticsOverlayUnmatchedEntries.js +61 -0
  430. package/utils/analytics/logAnalyticsOverlayUnmatchedEntries.js.map +1 -0
  431. package/utils/analytics/useAnalyticsOverlayDom.d.ts +11 -0
  432. package/utils/analytics/useAnalyticsOverlayDom.js +120 -0
  433. package/utils/analytics/useAnalyticsOverlayDom.js.map +1 -0
  434. package/utils/arrayMove.js +11 -0
  435. package/utils/arrayMove.js.map +1 -0
  436. package/utils/cssuseragent.js +2 -2
  437. package/utils/cssuseragent.js.map +1 -1
  438. package/utils/deviceUtils.js.map +1 -1
  439. package/utils/formatUtils.js.map +1 -1
  440. package/utils/hasUtilityClass.js +3 -3
  441. package/utils/hasUtilityClass.js.map +1 -1
  442. package/utils/hidePiiData.js.map +1 -1
  443. package/utils/init/checkForReleaseVersion.js +4 -4
  444. package/utils/init/checkForReleaseVersion.js.map +1 -1
  445. package/utils/init/styledLogs.js.map +1 -1
  446. package/utils/mergeRefs.js +3 -3
  447. package/utils/mergeRefs.js.map +1 -1
  448. package/utils/routeUtils.d.ts +37 -3
  449. package/utils/routeUtils.js +88 -70
  450. package/utils/routeUtils.js.map +1 -1
  451. package/utils/storageUtils.js +9 -9
  452. package/utils/storageUtils.js.map +1 -1
  453. package/version.d.ts +1 -1
  454. package/version.js +2 -2
  455. package/version.js.map +1 -1
  456. package/components/table/TableCol.js.map +0 -1
  457. package/components/table/TableHead.js.map +0 -1
  458. package/components/table/TableSettingsColumnButtons.js +0 -45
  459. package/components/table/TableSettingsColumnButtons.js.map +0 -1
  460. package/components/table/TableSettingsColumnDetails.js.map +0 -1
  461. package/components/table/TableSettingsDialog.js +0 -208
  462. package/components/table/TableSettingsDialog.js.map +0 -1
  463. package/components/table/TableSettingsDialogFooter.js.map +0 -1
  464. package/components/table/TableSettingsListContainer.js.map +0 -1
  465. package/components/table/TableSettingsListItem.js +0 -96
  466. package/components/table/TableSettingsListItem.js.map +0 -1
  467. /package/components/table/{TableCol.d.ts → native/TableCol.d.ts} +0 -0
  468. /package/components/table/{TableCol.js → native/TableCol.js} +0 -0
  469. /package/components/table/{TableHead.d.ts → native/TableHead.d.ts} +0 -0
  470. /package/components/table/{TableSettingsColumnButtons.d.ts → native/TableSettingsColumnButtons.d.ts} +0 -0
  471. /package/components/table/{TableSettingsColumnDetails.d.ts → native/TableSettingsColumnDetails.d.ts} +0 -0
  472. /package/components/table/{TableSettingsDialogFooter.d.ts → native/TableSettingsDialogFooter.d.ts} +0 -0
  473. /package/components/table/{TableSettingsListContainer.d.ts → native/TableSettingsListContainer.d.ts} +0 -0
  474. /package/components/table/{TableSettingsListContainer.js → native/TableSettingsListContainer.js} +0 -0
  475. /package/components/table/{TableSettingsListItem.d.ts → native/TableSettingsListItem.d.ts} +0 -0
@@ -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":";;;;;;;;;;;;AAaA,MAAMA,IAA6B,KAC7BC,IAA6B,KAE7BC,IAAgB;AAAA,EAClB,SAAS,EAAE,SAAS,GAAG,GAAG,GAAA;AAAA,EAC1B,SAAS,EAAE,SAAS,GAAG,GAAG,EAAA;AAAA,EAC1B,MAAM,EAAE,SAAS,GAAG,GAAG,GAAA;AAAA,EACvB,YAAY,EAAE,UAAU,MAAM,MAAM,UAAA;AACxC,GAEMC,IAA0B,CAACC,GAA4BC,MAErD,gBAAAC;AAAA,EAACC;AAAA,EAAA;AAAA,IACG,WAAWC,EAAQ;AAAA,IACnB,OAAO,EAAE,MAAMR,GAA4B,MAAMC,EAAA;AAAA,IACjD,SACI,gBAAAK,EAACE,GAAA,EAAQ,IAAG,WAAU,OAAM,QACvB,UAAAH,GACL;AAAA,IAGH,UAAAD;AAAA,EAAA;AAAA,GAiBPK,KAAkB,CAACC,MAAgC;AACrD,QAAM;AAAA,IACF,UAAAC,IAAWC;AAAA,IACX,YAAAC;AAAA,IACA,cAAAC;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,OAAAC;AAAA,IACA,OAAAC;AAAA,IACA,WAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,SAAAd;AAAA,IACA,GAAGe;AAAA,EAAA,IACHV,GAEE,CAACW,GAAQC,CAAS,IAAIC,EAAS,EAAK,GAEpCC,IAAe,MAAM;AACvB,UAAMC,IAAW,CAACJ;AAClB,IAAAC,EAAUG,CAAQ,GAClBd,EAASc,CAAQ,GAEjBC,EAAU,QAAQ,KAAA;AAAA,EACtB,GAUMA,IAAYC,EARO,MAAM;AAC3B,IAAIN,KAAUL,MACVM,EAAU,EAAK,GACfX,EAAS,EAAK,GACde,EAAU,QAAQ,KAAA;AAAA,EAE1B,CAEkD,GAE5C,CAACE,GAAWC,CAAY,IAAIN,EAAgC,IAAI,GAChE,CAACO,GAAiBC,CAAkB,IAAIR,EAAkC,IAAI,GAE9E,EAAE,QAAAS,GAAQ,YAAAC,EAAA,IAAeC,EAAUN,GAAWE,GAAiB;AAAA,IACjE,WAAW;AAAA,IACX,WACIT,KAAUc,MACJ;AAAA,MACI;AAAA,QACI,MAAM;AAAA,QACN,SAAS;AAAA,UACL,QAAQ,CAAC,KAAK,GAAG;AAAA,QAAA;AAAA,MACrB;AAAA,IACJ,IAEJ,CAAA;AAAA,EAAC,CACd;AAED,EAAAC,EAAuBN,GAAiB,CAACO,MAAmC;AACxE,UAAMC,IAASD,EAAM,kBAAkB,OAAOA,EAAM,SAAS;AAE7D,IAAIC,KAAUV,GAAW,SAASU,CAAM,KAIpCjB,MACAC,EAAU,EAAK,GACfX,EAAS,EAAK;AAAA,EAEtB,CAAC;AAED,QAAM4B,IAAiBC,EAAW,mBAAmBtB,CAAS,GAExDuB,IAAgBD,EAAW,qBAAqBnB,KAAU,UAAUF,CAAe,GAEnFuB,IAAuBF;AAAA,IACzB;AAAA,IACA;AAAA,IACAzB,IAAW,kBAAkB;AAAA,IAC7BF,GAAY,MAAM,aAAa;AAAA,EAAA,GAG7B8B,IAAyBH;AAAA,IAC3B;AAAA,IACA;AAAA,IACAzB,IAAW,iBAAiB;AAAA,IAC5BD,GAAc,MAAM,aAAa;AAAA,EAAA,GAG/B8B,IACF,gBAAAC,EAAC,OAAA,EAAI,WAAWJ,GAAe,SAASjB,GACnC,UAAA;AAAA,IAAAX,KACGiC,EAAM,aAAajC,GAAY;AAAA,MAC3B,WAAW6B;AAAA,IAAA,CACd;AAAA,IACJ5B,KACGgC,EAAM,aAAahC,GAAc;AAAA,MAC7B,WAAW6B;AAAA,IAAA,CACd;AAAA,EAAA,GACT;AAGJ,2BACK,OAAA,EAAI,WAAWJ,GAAgB,KAAKb,GAAY,GAAGN,GAE/C,UAAA;AAAA,IAAA,CAACH,KACE,gBAAA4B,EAAAE,GAAA,EACK,UAAA;AAAA,MAAA1C,KAAW,CAACgB,IAASlB,EAAwByC,GAAQvC,CAAO,IAAIuC;AAAA,wBAChE,OAAA,EAAI,WAAU,mBACX,UAAA,gBAAAtC,EAAC0C,GAAA,EACI,eAAUhC,KACP,gBAAAV;AAAA,QAAC2C,EAAO;AAAA,QAAP;AAAA,UACG,SAAS/C,EAAc;AAAA,UACvB,SAASA,EAAc;AAAA,UACvB,MAAMA,EAAc;AAAA,UACpB,YAAYA,EAAc;AAAA,UAEzB,UAAAc;AAAA,QAAA;AAAA,MAAA,GAGb,EAAA,CACJ;AAAA,IAAA,GACJ;AAAA,IAGHC,KACG,gBAAA4B,EAAC,OAAA,EAAI,WAAU,2CAA0C,KAAKhB,GACzD,UAAA;AAAA,MAAAxB,KAAW,CAACgB,IAASlB,EAAwByC,GAAQvC,CAAO,IAAIuC;AAAA,MACjE,gBAAAtC,EAAC0C,GAAA,EACI,UAAA3B,KAAUJ,KACP,gBAAAX;AAAA,QAAC2C,EAAO;AAAA,QAAP;AAAA,UACG,WAAU;AAAA,UACV,SAAS/C,EAAc;AAAA,UACvB,SAASA,EAAc;AAAA,UACvB,MAAMA,EAAc;AAAA,UACpB,YAAYA,EAAc;AAAA,UAE1B,UAAA,gBAAAI;AAAA,YAAC4C;AAAA,YAAA;AAAA,cACG,WAAU;AAAA,cACV,KAAKnB;AAAA,cACL,OAAO,EAAE,GAAGC,EAAO,QAAQ,UAAU,QAAA;AAAA,cACpC,GAAGC,EAAW;AAAA,cAEd,UAAAhB,GAAO,IAAI,CAACkC,GAAMC,MACXD,EAAK,KAAK,8BACHA,IAEJ,gBAAA7C,EAAC+C,GAAA,EAAqB,OAAOF,EAAA,GAAdC,CAAoB,CAC7C;AAAA,YAAA;AAAA,UAAA;AAAA,QACL;AAAA,MAAA,EACJ,CAER;AAAA,IAAA,EAAA,CACJ;AAAA,EAAA,GAER;AAER;"}
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: {
@@ -1 +1 @@
1
- {"version":3,"file":"eventHandling.js","sources":["../../../../src/components/map/utils/eventHandling.ts"],"sourcesContent":["import type { MapEvent } from './mapTypes';\n\nexport type EventListenerMap = {\n [key: string]: Function;\n};\n\ntype MapTimeGuard = {\n delayTime: number;\n timer: NodeJS.Timeout | undefined;\n delay(callback: Function, ...args: any[]): void;\n cancel(): void;\n};\n\nconst createMapTimeGuard = (delay = 250): MapTimeGuard => {\n let timer: NodeJS.Timeout | undefined;\n\n const delayFunc = <T>(callback: Function, ...args: T[]): void => {\n cancelFunc();\n timer = setTimeout(() => callback(...args), delay);\n };\n\n const cancelFunc = (): void => {\n clearTimeout(timer);\n };\n\n return {\n delayTime: delay,\n timer,\n delay: delayFunc,\n cancel: cancelFunc,\n };\n};\n\ntype EnhancedMapEvent = {\n viewportX: number;\n viewportY: number;\n map: H.Map;\n calculateGeoCoords(): H.geo.Point;\n};\n\nexport const createEnhancedMapEvent = (\n event: H.mapevents.Event | null,\n mapApi: H.Map\n): EnhancedMapEvent | { map: H.Map } => {\n if (!event || !event.currentPointer) {\n return {\n map: mapApi,\n };\n }\n\n const viewportX = event.currentPointer.viewportX;\n const viewportY = event.currentPointer.viewportY;\n\n const calculateGeoCoords = (): H.geo.Point => {\n return mapApi.screenToGeo(viewportX, viewportY);\n };\n\n return {\n viewportX,\n viewportY,\n map: mapApi,\n calculateGeoCoords,\n };\n};\n\nexport const createEnhancedListener = (listener: Function, mapApi: H.Map) => {\n return (event: H.mapevents.Event) => listener(event, createEnhancedMapEvent(event, mapApi));\n};\n\nexport type RioEventTarget = H.util.EventTarget & {\n rioMapRemoveEvents?: Function;\n};\n\nexport const addEventListenerMap = (\n eventTarget: RioEventTarget,\n eventListenerMap: EventListenerMap | undefined,\n mapApi: H.Map\n) => {\n if (!eventListenerMap) {\n return;\n }\n\n const enhancedMap: Record<string, any> = {};\n\n Object.keys(eventListenerMap).forEach(key => {\n const enhancedListener = createEnhancedListener(eventListenerMap[key], mapApi);\n eventTarget.addEventListener(key, enhancedListener as any);\n enhancedMap[key] = enhancedListener;\n });\n\n eventTarget.rioMapRemoveEvents = () => {\n Object.keys(enhancedMap).forEach(key => {\n eventTarget.removeEventListener(key, enhancedMap[key]);\n });\n\n delete eventTarget.rioMapRemoveEvents;\n\n return mapApi;\n };\n};\n\nexport const removeEventListenerMap = (eventTarget: RioEventTarget) => {\n if (eventTarget.rioMapRemoveEvents) {\n return eventTarget.rioMapRemoveEvents();\n }\n};\n\nexport const createTapOnDblTapPreventer = (\n eventListenerMap: EventListenerMap,\n delayBetweenTaps = 300\n): EventListenerMap => {\n const result = { ...eventListenerMap };\n if (!eventListenerMap[EventUtils.TAP] || !eventListenerMap[EventUtils.DBL_TAP]) {\n return result;\n }\n\n const guard = createMapTimeGuard(delayBetweenTaps);\n\n result[EventUtils.TAP] = <T>(...args: T[]) => {\n guard.delay(eventListenerMap[EventUtils.TAP], ...args);\n };\n\n result[EventUtils.DBL_TAP] = <T>(...args: T[]) => {\n guard.cancel();\n eventListenerMap[EventUtils.DBL_TAP](...args);\n };\n\n return result;\n};\n\nexport const getMouseButton = (event: MapEvent): number => {\n return (event.originalEvent as unknown as H.mapevents.Pointer).button;\n};\n\nexport const isRightClick = (event: MapEvent): boolean => {\n return getMouseButton(event) === EventUtils.MOUSE_BUTTONS.RIGHT;\n};\n\nexport const EventUtils = {\n MOUSE_BUTTONS: {\n LEFT: 0,\n MIDDLE: 1,\n RIGHT: 2,\n },\n\n POINTER_DOWN: 'pointerdown',\n POINTER_UP: 'pointerup',\n POINTER_MOVE: 'pointermove',\n POINTER_ENTER: 'pointerenter',\n POINTER_LEAVE: 'pointerleave',\n POINTER_CANCEL: 'pointercancel',\n\n DRAG_START: 'dragstart',\n DRAG: 'drag',\n DRAG_END: 'dragend',\n TAP: 'tap',\n DBL_TAP: 'dbltap',\n LONGPRESS: 'longpress',\n\n CONTEXTMENU: 'contextmenu',\n CONTEXTMENU_CLOSE: 'contextmenuclose',\n\n MAP_VIEW_CHANGE_START: 'mapviewchangestart',\n MAP_VIEW_CHANGE: 'mapviewchange',\n MAP_VIEW_CHANGE_END: 'mapviewchangeend',\n\n BASE_LAYER_CHANGE: 'baselayerchange',\n ENGINE_CHANGE: 'enginechange',\n\n createTapOnDblTapPreventer,\n getMouseButton,\n isRightClick,\n};\n\nexport default EventUtils;\n"],"names":["createMapTimeGuard","delay","timer","delayFunc","callback","args","cancelFunc","createEnhancedMapEvent","event","mapApi","viewportX","viewportY","createEnhancedListener","listener","addEventListenerMap","eventTarget","eventListenerMap","enhancedMap","key","enhancedListener","removeEventListenerMap","createTapOnDblTapPreventer","delayBetweenTaps","result","EventUtils","guard","getMouseButton","isRightClick"],"mappings":"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"}
1
+ {"version":3,"file":"eventHandling.js","sources":["../../../../src/components/map/utils/eventHandling.ts"],"sourcesContent":["import type { MapEvent } from './mapTypes';\n\nexport type EventListenerMap = {\n [key: string]: Function;\n};\n\ntype MapTimeGuard = {\n delayTime: number;\n timer: NodeJS.Timeout | undefined;\n delay(callback: Function, ...args: any[]): void;\n cancel(): void;\n};\n\nconst createMapTimeGuard = (delay = 250): MapTimeGuard => {\n let timer: NodeJS.Timeout | undefined;\n\n const delayFunc = <T>(callback: Function, ...args: T[]): void => {\n cancelFunc();\n timer = setTimeout(() => callback(...args), delay);\n };\n\n const cancelFunc = (): void => {\n clearTimeout(timer);\n };\n\n return {\n delayTime: delay,\n timer,\n delay: delayFunc,\n cancel: cancelFunc,\n };\n};\n\ntype EnhancedMapEvent = {\n viewportX: number;\n viewportY: number;\n map: H.Map;\n calculateGeoCoords(): H.geo.Point;\n};\n\nexport const createEnhancedMapEvent = (\n event: H.mapevents.Event | null,\n mapApi: H.Map\n): EnhancedMapEvent | { map: H.Map } => {\n if (!event || !event.currentPointer) {\n return {\n map: mapApi,\n };\n }\n\n const viewportX = event.currentPointer.viewportX;\n const viewportY = event.currentPointer.viewportY;\n\n const calculateGeoCoords = (): H.geo.Point => mapApi.screenToGeo(viewportX, viewportY);\n\n return {\n viewportX,\n viewportY,\n map: mapApi,\n calculateGeoCoords,\n };\n};\n\nexport const createEnhancedListener = (listener: Function, mapApi: H.Map) => (event: H.mapevents.Event) =>\n listener(event, createEnhancedMapEvent(event, mapApi));\n\nexport type RioEventTarget = H.util.EventTarget & {\n rioMapRemoveEvents?: Function;\n};\n\nexport const addEventListenerMap = (\n eventTarget: RioEventTarget,\n eventListenerMap: EventListenerMap | undefined,\n mapApi: H.Map\n) => {\n if (!eventListenerMap) {\n return;\n }\n\n const enhancedMap: Record<string, any> = {};\n\n Object.keys(eventListenerMap).forEach(key => {\n const enhancedListener = createEnhancedListener(eventListenerMap[key], mapApi);\n eventTarget.addEventListener(key, enhancedListener as any);\n enhancedMap[key] = enhancedListener;\n });\n\n eventTarget.rioMapRemoveEvents = () => {\n Object.keys(enhancedMap).forEach(key => {\n eventTarget.removeEventListener(key, enhancedMap[key]);\n });\n\n delete eventTarget.rioMapRemoveEvents;\n\n return mapApi;\n };\n};\n\nexport const removeEventListenerMap = (eventTarget: RioEventTarget) => {\n if (eventTarget.rioMapRemoveEvents) {\n return eventTarget.rioMapRemoveEvents();\n }\n};\n\nexport const createTapOnDblTapPreventer = (\n eventListenerMap: EventListenerMap,\n delayBetweenTaps = 300\n): EventListenerMap => {\n const result = { ...eventListenerMap };\n if (!eventListenerMap[EventUtils.TAP] || !eventListenerMap[EventUtils.DBL_TAP]) {\n return result;\n }\n\n const guard = createMapTimeGuard(delayBetweenTaps);\n\n result[EventUtils.TAP] = <T>(...args: T[]) => {\n guard.delay(eventListenerMap[EventUtils.TAP], ...args);\n };\n\n result[EventUtils.DBL_TAP] = <T>(...args: T[]) => {\n guard.cancel();\n eventListenerMap[EventUtils.DBL_TAP](...args);\n };\n\n return result;\n};\n\nexport const getMouseButton = (event: MapEvent): number =>\n (event.originalEvent as unknown as H.mapevents.Pointer).button;\n\nexport const isRightClick = (event: MapEvent): boolean => getMouseButton(event) === EventUtils.MOUSE_BUTTONS.RIGHT;\n\nexport const EventUtils = {\n MOUSE_BUTTONS: {\n LEFT: 0,\n MIDDLE: 1,\n RIGHT: 2,\n },\n\n POINTER_DOWN: 'pointerdown',\n POINTER_UP: 'pointerup',\n POINTER_MOVE: 'pointermove',\n POINTER_ENTER: 'pointerenter',\n POINTER_LEAVE: 'pointerleave',\n POINTER_CANCEL: 'pointercancel',\n\n DRAG_START: 'dragstart',\n DRAG: 'drag',\n DRAG_END: 'dragend',\n TAP: 'tap',\n DBL_TAP: 'dbltap',\n LONGPRESS: 'longpress',\n\n CONTEXTMENU: 'contextmenu',\n CONTEXTMENU_CLOSE: 'contextmenuclose',\n\n MAP_VIEW_CHANGE_START: 'mapviewchangestart',\n MAP_VIEW_CHANGE: 'mapviewchange',\n MAP_VIEW_CHANGE_END: 'mapviewchangeend',\n\n BASE_LAYER_CHANGE: 'baselayerchange',\n ENGINE_CHANGE: 'enginechange',\n\n createTapOnDblTapPreventer,\n getMouseButton,\n isRightClick,\n};\n\nexport default EventUtils;\n"],"names":["createMapTimeGuard","delay","timer","delayFunc","callback","args","cancelFunc","createEnhancedMapEvent","event","mapApi","viewportX","viewportY","createEnhancedListener","listener","addEventListenerMap","eventTarget","eventListenerMap","enhancedMap","key","enhancedListener","removeEventListenerMap","createTapOnDblTapPreventer","delayBetweenTaps","result","EventUtils","guard","getMouseButton","isRightClick"],"mappings":"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"}
@@ -25,4 +25,4 @@ export declare const ease: (startCoord?: {
25
25
  }, endCoord?: {
26
26
  lat: number;
27
27
  lng: number;
28
- }, durationMs?: number, onStep?: (pos: Position) => void, onComplete?: () => void) => void;
28
+ }, durationMs?: number, onStep?: (_pos: Position) => void, onComplete?: () => void) => void;
@@ -3,12 +3,15 @@ const c = () => ({
3
3
  right: Number.NEGATIVE_INFINITY,
4
4
  bottom: Number.POSITIVE_INFINITY,
5
5
  left: Number.POSITIVE_INFINITY
6
- }), E = (t) => t.top !== Number.NEGATIVE_INFINITY && t.bottom !== Number.POSITIVE_INFINITY && t.left !== Number.POSITIVE_INFINITY && t.right !== Number.NEGATIVE_INFINITY, h = (t) => t.reduce((n, e) => ({
7
- top: Math.max(n.top, e.lat),
8
- right: Math.max(n.right, e.lng),
9
- bottom: Math.min(n.bottom, e.lat),
10
- left: Math.min(n.left, e.lng)
11
- }), c()), T = /^\s*(-?\d+(\.\d+)?)\s*[,\s]\s*(-?\d+(\.\d+)?)\s*$/, V = (t) => {
6
+ }), E = (t) => t.top !== Number.NEGATIVE_INFINITY && t.bottom !== Number.POSITIVE_INFINITY && t.left !== Number.POSITIVE_INFINITY && t.right !== Number.NEGATIVE_INFINITY, h = (t) => t.reduce(
7
+ (n, e) => ({
8
+ top: Math.max(n.top, e.lat),
9
+ right: Math.max(n.right, e.lng),
10
+ bottom: Math.min(n.bottom, e.lat),
11
+ left: Math.min(n.left, e.lng)
12
+ }),
13
+ c()
14
+ ), T = /^\s*(-?\d+(\.\d+)?)\s*[,\s]\s*(-?\d+(\.\d+)?)\s*$/, V = (t) => {
12
15
  const n = T.exec(t);
13
16
  if (n) {
14
17
  const e = Number.parseFloat(n[1]), I = Number.parseFloat(n[3]);
@@ -19,14 +22,14 @@ const c = () => ({
19
22
  };
20
23
  }
21
24
  }, F = (t = { lat: 0, lng: 0 }, n = { lat: 1, lng: 1 }, e = 200, I = (a) => {
22
- }, u = () => {
25
+ }, r = () => {
23
26
  }) => {
24
- const a = window.requestAnimationFrame, r = e / 16, m = (n.lat - t.lat) / r, i = (n.lng - t.lng) / r, g = Math.PI / r;
25
- let s = t.lat, N = t.lng, l = 0;
26
- const o = () => {
27
- l += g, s += m * Math.sin(l) ** 2 * 2, N += i * Math.sin(l) ** 2 * 2, l < Math.PI ? (I({ lat: s, lng: N }), a(o)) : (I(n), u());
27
+ const a = window.requestAnimationFrame, s = e / 16, i = (n.lat - t.lat) / s, u = (n.lng - t.lng) / s, g = Math.PI / s;
28
+ let N = t.lat, o = t.lng, l = 0;
29
+ const m = () => {
30
+ l += g, N += i * Math.sin(l) ** 2 * 2, o += u * Math.sin(l) ** 2 * 2, l < Math.PI ? (I({ lat: N, lng: o }), a(m)) : (I(n), r());
28
31
  };
29
- a(o);
32
+ a(m);
30
33
  };
31
34
  export {
32
35
  h as calculateBoundingBox,
@@ -1 +1 @@
1
- {"version":3,"file":"positions.js","sources":["../../../../src/components/map/utils/positions.ts"],"sourcesContent":["import type { BoundingBox, Position } from '../../../mapTypes';\n\nconst createBoundingBox = (): BoundingBox => ({\n top: Number.NEGATIVE_INFINITY,\n right: Number.NEGATIVE_INFINITY,\n bottom: Number.POSITIVE_INFINITY,\n left: Number.POSITIVE_INFINITY,\n});\n\nexport const isValidBoundingBox = (box: BoundingBox): boolean => {\n return (\n box.top !== Number.NEGATIVE_INFINITY &&\n box.bottom !== Number.POSITIVE_INFINITY &&\n box.left !== Number.POSITIVE_INFINITY &&\n box.right !== Number.NEGATIVE_INFINITY\n );\n};\n\nexport const calculateBoundingBox = (positions: { lat: number; lng: number }[]): BoundingBox => {\n return positions.reduce((acc, cur) => {\n return {\n top: Math.max(acc.top, cur.lat),\n right: Math.max(acc.right, cur.lng),\n bottom: Math.min(acc.bottom, cur.lat),\n left: Math.min(acc.left, cur.lng),\n };\n }, createBoundingBox());\n};\n\nconst COORDS_REGEX = /^\\s*(-?\\d+(\\.\\d+)?)\\s*[,\\s]\\s*(-?\\d+(\\.\\d+)?)\\s*$/;\n\nexport const parsePositionFromString = (value: string) => {\n const match = COORDS_REGEX.exec(value);\n if (match) {\n const lat = Number.parseFloat(match[1]);\n const lng = Number.parseFloat(match[3]);\n if (lat >= -90 && lat <= 90 && lng >= -180 && lng <= 180) {\n return {\n lat,\n lng,\n };\n }\n }\n};\n\n/**\n * Ease function that can be used to animate positions on the map.\n *\n * See: https://developer.here.com/documentation/examples/maps-js/markers/markers-update-position-with-animation\n *\n * @param {H.geo.IPoint} startCoord start geo coordinate\n * @param {H.geo.IPoint} endCoord end geo coordinate\n * @param number durationMs duration of animation between start & end coordinates\n * @param function onStep callback executed each step\n * @param function onStep callback executed at the end\n */\nexport const ease = (\n startCoord = { lat: 0, lng: 0 },\n endCoord = { lat: 1, lng: 1 },\n durationMs = 200,\n onStep = (pos: Position) => {},\n onComplete = () => {}\n) => {\n const raf = window.requestAnimationFrame;\n\n const stepCount = durationMs / 16;\n\n const valueIncrementLat = (endCoord.lat - startCoord.lat) / stepCount;\n const valueIncrementLng = (endCoord.lng - startCoord.lng) / stepCount;\n const sinValueIncrement = Math.PI / stepCount;\n\n let currentValueLat = startCoord.lat;\n let currentValueLng = startCoord.lng;\n let currentSinValue = 0;\n\n const step = () => {\n currentSinValue += sinValueIncrement;\n currentValueLat += valueIncrementLat * Math.sin(currentSinValue) ** 2 * 2;\n currentValueLng += valueIncrementLng * Math.sin(currentSinValue) ** 2 * 2;\n\n if (currentSinValue < Math.PI) {\n onStep({ lat: currentValueLat, lng: currentValueLng });\n raf(step);\n } else {\n onStep(endCoord);\n onComplete();\n }\n };\n\n raf(step);\n};\n"],"names":["createBoundingBox","isValidBoundingBox","box","calculateBoundingBox","positions","acc","cur","COORDS_REGEX","parsePositionFromString","value","match","lat","lng","ease","startCoord","endCoord","durationMs","onStep","pos","onComplete","raf","stepCount","valueIncrementLat","valueIncrementLng","sinValueIncrement","currentValueLat","currentValueLng","currentSinValue","step"],"mappings":"AAEA,MAAMA,IAAoB,OAAoB;AAAA,EAC1C,KAAK,OAAO;AAAA,EACZ,OAAO,OAAO;AAAA,EACd,QAAQ,OAAO;AAAA,EACf,MAAM,OAAO;AACjB,IAEaC,IAAqB,CAACC,MAE3BA,EAAI,QAAQ,OAAO,qBACnBA,EAAI,WAAW,OAAO,qBACtBA,EAAI,SAAS,OAAO,qBACpBA,EAAI,UAAU,OAAO,mBAIhBC,IAAuB,CAACC,MAC1BA,EAAU,OAAO,CAACC,GAAKC,OACnB;AAAA,EACH,KAAK,KAAK,IAAID,EAAI,KAAKC,EAAI,GAAG;AAAA,EAC9B,OAAO,KAAK,IAAID,EAAI,OAAOC,EAAI,GAAG;AAAA,EAClC,QAAQ,KAAK,IAAID,EAAI,QAAQC,EAAI,GAAG;AAAA,EACpC,MAAM,KAAK,IAAID,EAAI,MAAMC,EAAI,GAAG;AAAA,IAErCN,GAAmB,GAGpBO,IAAe,qDAERC,IAA0B,CAACC,MAAkB;AACtD,QAAMC,IAAQH,EAAa,KAAKE,CAAK;AACrC,MAAIC,GAAO;AACP,UAAMC,IAAM,OAAO,WAAWD,EAAM,CAAC,CAAC,GAChCE,IAAM,OAAO,WAAWF,EAAM,CAAC,CAAC;AACtC,QAAIC,KAAO,OAAOA,KAAO,MAAMC,KAAO,QAAQA,KAAO;AACjD,aAAO;AAAA,QACH,KAAAD;AAAA,QACA,KAAAC;AAAA,MAAA;AAAA,EAGZ;AACJ,GAaaC,IAAO,CAChBC,IAAa,EAAE,KAAK,GAAG,KAAK,KAC5BC,IAAW,EAAE,KAAK,GAAG,KAAK,EAAA,GAC1BC,IAAa,KACbC,IAAS,CAACC,MAAkB;AAAC,GAC7BC,IAAa,MAAM;AAAC,MACnB;AACD,QAAMC,IAAM,OAAO,uBAEbC,IAAYL,IAAa,IAEzBM,KAAqBP,EAAS,MAAMD,EAAW,OAAOO,GACtDE,KAAqBR,EAAS,MAAMD,EAAW,OAAOO,GACtDG,IAAoB,KAAK,KAAKH;AAEpC,MAAII,IAAkBX,EAAW,KAC7BY,IAAkBZ,EAAW,KAC7Ba,IAAkB;AAEtB,QAAMC,IAAO,MAAM;AACf,IAAAD,KAAmBH,GACnBC,KAAmBH,IAAoB,KAAK,IAAIK,CAAe,KAAK,IAAI,GACxED,KAAmBH,IAAoB,KAAK,IAAII,CAAe,KAAK,IAAI,GAEpEA,IAAkB,KAAK,MACvBV,EAAO,EAAE,KAAKQ,GAAiB,KAAKC,GAAiB,GACrDN,EAAIQ,CAAI,MAERX,EAAOF,CAAQ,GACfI,EAAA;AAAA,EAER;AAEA,EAAAC,EAAIQ,CAAI;AACZ;"}
1
+ {"version":3,"file":"positions.js","sources":["../../../../src/components/map/utils/positions.ts"],"sourcesContent":["import type { BoundingBox, Position } from '../../../mapTypes';\n\nconst createBoundingBox = (): BoundingBox => ({\n top: Number.NEGATIVE_INFINITY,\n right: Number.NEGATIVE_INFINITY,\n bottom: Number.POSITIVE_INFINITY,\n left: Number.POSITIVE_INFINITY,\n});\n\nexport const isValidBoundingBox = (box: BoundingBox): boolean =>\n box.top !== Number.NEGATIVE_INFINITY &&\n box.bottom !== Number.POSITIVE_INFINITY &&\n box.left !== Number.POSITIVE_INFINITY &&\n box.right !== Number.NEGATIVE_INFINITY;\n\nexport const calculateBoundingBox = (positions: { lat: number; lng: number }[]): BoundingBox =>\n positions.reduce(\n (acc, cur) => ({\n top: Math.max(acc.top, cur.lat),\n right: Math.max(acc.right, cur.lng),\n bottom: Math.min(acc.bottom, cur.lat),\n left: Math.min(acc.left, cur.lng),\n }),\n createBoundingBox()\n );\n\nconst COORDS_REGEX = /^\\s*(-?\\d+(\\.\\d+)?)\\s*[,\\s]\\s*(-?\\d+(\\.\\d+)?)\\s*$/;\n\nexport const parsePositionFromString = (value: string) => {\n const match = COORDS_REGEX.exec(value);\n if (match) {\n const lat = Number.parseFloat(match[1]);\n const lng = Number.parseFloat(match[3]);\n if (lat >= -90 && lat <= 90 && lng >= -180 && lng <= 180) {\n return {\n lat,\n lng,\n };\n }\n }\n};\n\n/**\n * Ease function that can be used to animate positions on the map.\n *\n * See: https://developer.here.com/documentation/examples/maps-js/markers/markers-update-position-with-animation\n *\n * @param {H.geo.IPoint} startCoord start geo coordinate\n * @param {H.geo.IPoint} endCoord end geo coordinate\n * @param number durationMs duration of animation between start & end coordinates\n * @param function onStep callback executed each step\n * @param function onStep callback executed at the end\n */\nexport const ease = (\n startCoord = { lat: 0, lng: 0 },\n endCoord = { lat: 1, lng: 1 },\n durationMs = 200,\n onStep = (_pos: Position) => {},\n onComplete = () => {}\n) => {\n const raf = window.requestAnimationFrame;\n\n const stepCount = durationMs / 16;\n\n const valueIncrementLat = (endCoord.lat - startCoord.lat) / stepCount;\n const valueIncrementLng = (endCoord.lng - startCoord.lng) / stepCount;\n const sinValueIncrement = Math.PI / stepCount;\n\n let currentValueLat = startCoord.lat;\n let currentValueLng = startCoord.lng;\n let currentSinValue = 0;\n\n const step = () => {\n currentSinValue += sinValueIncrement;\n currentValueLat += valueIncrementLat * Math.sin(currentSinValue) ** 2 * 2;\n currentValueLng += valueIncrementLng * Math.sin(currentSinValue) ** 2 * 2;\n\n if (currentSinValue < Math.PI) {\n onStep({ lat: currentValueLat, lng: currentValueLng });\n raf(step);\n } else {\n onStep(endCoord);\n onComplete();\n }\n };\n\n raf(step);\n};\n"],"names":["createBoundingBox","isValidBoundingBox","box","calculateBoundingBox","positions","acc","cur","COORDS_REGEX","parsePositionFromString","value","match","lat","lng","ease","startCoord","endCoord","durationMs","onStep","_pos","onComplete","raf","stepCount","valueIncrementLat","valueIncrementLng","sinValueIncrement","currentValueLat","currentValueLng","currentSinValue","step"],"mappings":"AAEA,MAAMA,IAAoB,OAAoB;AAAA,EAC1C,KAAK,OAAO;AAAA,EACZ,OAAO,OAAO;AAAA,EACd,QAAQ,OAAO;AAAA,EACf,MAAM,OAAO;AACjB,IAEaC,IAAqB,CAACC,MAC/BA,EAAI,QAAQ,OAAO,qBACnBA,EAAI,WAAW,OAAO,qBACtBA,EAAI,SAAS,OAAO,qBACpBA,EAAI,UAAU,OAAO,mBAEZC,IAAuB,CAACC,MACjCA,EAAU;AAAA,EACN,CAACC,GAAKC,OAAS;AAAA,IACX,KAAK,KAAK,IAAID,EAAI,KAAKC,EAAI,GAAG;AAAA,IAC9B,OAAO,KAAK,IAAID,EAAI,OAAOC,EAAI,GAAG;AAAA,IAClC,QAAQ,KAAK,IAAID,EAAI,QAAQC,EAAI,GAAG;AAAA,IACpC,MAAM,KAAK,IAAID,EAAI,MAAMC,EAAI,GAAG;AAAA,EAAA;AAAA,EAEpCN,EAAA;AACJ,GAEEO,IAAe,qDAERC,IAA0B,CAACC,MAAkB;AACtD,QAAMC,IAAQH,EAAa,KAAKE,CAAK;AACrC,MAAIC,GAAO;AACP,UAAMC,IAAM,OAAO,WAAWD,EAAM,CAAC,CAAC,GAChCE,IAAM,OAAO,WAAWF,EAAM,CAAC,CAAC;AACtC,QAAIC,KAAO,OAAOA,KAAO,MAAMC,KAAO,QAAQA,KAAO;AACjD,aAAO;AAAA,QACH,KAAAD;AAAA,QACA,KAAAC;AAAA,MAAA;AAAA,EAGZ;AACJ,GAaaC,IAAO,CAChBC,IAAa,EAAE,KAAK,GAAG,KAAK,KAC5BC,IAAW,EAAE,KAAK,GAAG,KAAK,EAAA,GAC1BC,IAAa,KACbC,IAAS,CAACC,MAAmB;AAAC,GAC9BC,IAAa,MAAM;AAAC,MACnB;AACD,QAAMC,IAAM,OAAO,uBAEbC,IAAYL,IAAa,IAEzBM,KAAqBP,EAAS,MAAMD,EAAW,OAAOO,GACtDE,KAAqBR,EAAS,MAAMD,EAAW,OAAOO,GACtDG,IAAoB,KAAK,KAAKH;AAEpC,MAAII,IAAkBX,EAAW,KAC7BY,IAAkBZ,EAAW,KAC7Ba,IAAkB;AAEtB,QAAMC,IAAO,MAAM;AACf,IAAAD,KAAmBH,GACnBC,KAAmBH,IAAoB,KAAK,IAAIK,CAAe,KAAK,IAAI,GACxED,KAAmBH,IAAoB,KAAK,IAAII,CAAe,KAAK,IAAI,GAEpEA,IAAkB,KAAK,MACvBV,EAAO,EAAE,KAAKQ,GAAiB,KAAKC,GAAiB,GACrDN,EAAIQ,CAAI,MAERX,EAAOF,CAAQ,GACfI,EAAA;AAAA,EAER;AAEA,EAAAC,EAAIQ,CAAI;AACZ;"}
@@ -1,5 +1,5 @@
1
1
  import { MapCredentials, MapType } from './mapTypes';
2
- export declare const getPPI: () => 200 | 100;
2
+ export declare const getPPI: () => 100 | 200;
3
3
  export declare const isVectorBased: (enableWebGL: boolean, baseLayer: MapType) => boolean;
4
4
  export declare const getPlatform: (credentials: MapCredentials) => H.service.Platform;
5
5
  export declare const getBaseTileLayer: <T>(rasterTileService: T, engineType: H.Map.EngineType, minZoom: number, maxZoom: number) => H.map.layer.TileLayer;
@@ -1,4 +1,4 @@
1
- import { MAP_TYPE_TERRAIN as _, MAP_TYPE_FLEET_STYLE as v, ENGINE_TYPE_HARP as M, ENGINE_TYPE_P2D as l, MAP_TYPE_DEFAULT as p, MAP_TYPE_NIGHT as A, MAP_TYPE_SATELLITE as d, DEFAULT_RASTER_LAYER_FORMAT as L } from "../components/constants.js";
1
+ import { MAP_TYPE_TERRAIN as _, MAP_TYPE_FLEET_STYLE as v, MAP_TYPE_DEFAULT as M, MAP_TYPE_NIGHT as p, MAP_TYPE_SATELLITE as A, ENGINE_TYPE_HARP as d, ENGINE_TYPE_P2D as l, DEFAULT_RASTER_LAYER_FORMAT as L } from "../components/constants.js";
2
2
  const h = () => window.devicePixelRatio >= 1.7 ? 200 : 100, u = (r, e) => r && e !== _ && e !== v, w = (r) => (
3
3
  // Initiate and authenticate your connection to the HERE platform:
4
4
  new H.service.Platform({
@@ -26,7 +26,7 @@ const h = () => window.devicePixelRatio >= 1.7 ? 200 : 100, u = (r, e) => r && e
26
26
  case _:
27
27
  return l;
28
28
  default:
29
- return e ? M : l;
29
+ return e ? d : l;
30
30
  }
31
31
  }, b = async ({
32
32
  baseLayerName: r,
@@ -39,12 +39,12 @@ const h = () => window.devicePixelRatio >= 1.7 ? 200 : 100, u = (r, e) => r && e
39
39
  maxZoom: c
40
40
  }) => {
41
41
  const T = "pois:all,environmental_zones:all,congestion_zones:all,vehicle_restrictions:disabled";
42
- if (a && r === p)
42
+ if (a && r === M)
43
43
  return e?.vector.normal.map.setMin(i), e?.vector.normal.map.setMax(c), {
44
44
  baseLayer: e?.vector.normal.map
45
45
  };
46
46
  switch (r) {
47
- case d: {
47
+ case A: {
48
48
  if (a) {
49
49
  const y = {
50
50
  base: {
@@ -89,7 +89,7 @@ const h = () => window.devicePixelRatio >= 1.7 ? 200 : 100, u = (r, e) => r && e
89
89
  c
90
90
  )
91
91
  };
92
- case A:
92
+ case p:
93
93
  return a ? (e?.vector.normal.mapnight.setMin(i), e?.vector.normal.mapnight.setMax(c), {
94
94
  // @ts-expect-error-next-line "vector.normal.mapnight" is newer than the types
95
95
  baseLayer: e.vector.normal.mapnight
@@ -1,17 +1,17 @@
1
1
  import { jsx as e, Fragment as a } from "react/jsx-runtime";
2
- import { noop as n } from "es-toolkit/function";
2
+ import { noop as m } from "es-toolkit/function";
3
3
  import d from "./MenuItem.js";
4
- const u = ({ items: m, closeMenu: t = n, onMouseEnter: p = n }) => /* @__PURE__ */ e(a, { children: m.map((r, o) => /* @__PURE__ */ e(
4
+ const x = ({ items: n, closeMenu: t = m, onMouseEnter: p = m }) => /* @__PURE__ */ e(a, { children: n.map((o, r) => /* @__PURE__ */ e(
5
5
  d,
6
6
  {
7
- ...r,
8
- index: r.index ?? o,
7
+ ...o,
8
+ index: o.index ?? r,
9
9
  closeMenu: t,
10
10
  onMouseEnter: p
11
11
  },
12
- r.index ?? o
12
+ o.index ?? r
13
13
  )) });
14
14
  export {
15
- u as default
15
+ x as default
16
16
  };
17
17
  //# sourceMappingURL=MenuItems.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItems.js","sources":["../../../src/components/menuItems/MenuItems.tsx"],"sourcesContent":["import { noop } from 'es-toolkit/function';\n\nimport MenuItemComponent, { type MenuItemProps as MenuItem } from './MenuItem';\n\nexport type MenuItemsProps = {\n items: MenuItem[];\n closeMenu?: () => void;\n onMouseEnter?: () => void;\n};\n\nconst MenuItems = ({ items, closeMenu = noop, onMouseEnter = noop }: MenuItemsProps) => {\n return (\n <>\n {items.map((item, index) => (\n <MenuItemComponent\n key={item.index ?? index}\n {...item}\n index={item.index ?? index}\n closeMenu={closeMenu}\n onMouseEnter={onMouseEnter}\n />\n ))}\n </>\n );\n};\n\nexport default MenuItems;\n"],"names":["MenuItems","items","closeMenu","noop","onMouseEnter","jsx","Fragment","item","index","MenuItemComponent"],"mappings":";;;AAUA,MAAMA,IAAY,CAAC,EAAE,OAAAC,GAAO,WAAAC,IAAYC,GAAM,cAAAC,IAAeD,QAErD,gBAAAE,EAAAC,GAAA,EACK,UAAAL,EAAM,IAAI,CAACM,GAAMC,MACd,gBAAAH;AAAA,EAACI;AAAAA,EAAA;AAAA,IAEI,GAAGF;AAAA,IACJ,OAAOA,EAAK,SAASC;AAAA,IACrB,WAAAN;AAAA,IACA,cAAAE;AAAA,EAAA;AAAA,EAJKG,EAAK,SAASC;AAAA,CAM1B,GACL;"}
1
+ {"version":3,"file":"MenuItems.js","sources":["../../../src/components/menuItems/MenuItems.tsx"],"sourcesContent":["import { noop } from 'es-toolkit/function';\n\nimport MenuItemComponent, { type MenuItemProps as MenuItem } from './MenuItem';\n\nexport type MenuItemsProps = {\n items: MenuItem[];\n closeMenu?: () => void;\n onMouseEnter?: () => void;\n};\n\nconst MenuItems = ({ items, closeMenu = noop, onMouseEnter = noop }: MenuItemsProps) => (\n <>\n {items.map((item, index) => (\n <MenuItemComponent\n key={item.index ?? index}\n {...item}\n index={item.index ?? index}\n closeMenu={closeMenu}\n onMouseEnter={onMouseEnter}\n />\n ))}\n </>\n);\n\nexport default MenuItems;\n"],"names":["MenuItems","items","closeMenu","noop","onMouseEnter","jsx","Fragment","item","index","MenuItemComponent"],"mappings":";;;AAUA,MAAMA,IAAY,CAAC,EAAE,OAAAC,GAAO,WAAAC,IAAYC,GAAM,cAAAC,IAAeD,EAAA,MACzD,gBAAAE,EAAAC,GAAA,EACK,UAAAL,EAAM,IAAI,CAACM,GAAMC,MACd,gBAAAH;AAAA,EAACI;AAAAA,EAAA;AAAA,IAEI,GAAGF;AAAA,IACJ,OAAOA,EAAK,SAASC;AAAA,IACrB,WAAAN;AAAA,IACA,cAAAE;AAAA,EAAA;AAAA,EAJKG,EAAK,SAASC;AAKvB,CACH,EAAA,CACL;"}
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationsContainer.js","sources":["../../../src/components/notification/NotificationsContainer.tsx"],"sourcesContent":["import { ToastContainer } from 'react-toastify';\n\n// Note:\n// With the new library we have to decide to either stack them all or to show a limit and one they are gone,\n// the remaining notifications slide in.\n\nconst NotificationsContainer = () => {\n return (\n <div className='notification-container-wrapper'>\n <ToastContainer className='notification-container' stacked={false} limit={5} />\n </div>\n );\n};\n\nexport default NotificationsContainer;\n"],"names":["NotificationsContainer","jsx","ToastContainer"],"mappings":";;AAMA,MAAMA,IAAyB,MAEvB,gBAAAC,EAAC,OAAA,EAAI,WAAU,kCACX,UAAA,gBAAAA,EAACC,GAAA,EAAe,WAAU,0BAAyB,SAAS,IAAO,OAAO,EAAA,CAAG,GACjF;"}
1
+ {"version":3,"file":"NotificationsContainer.js","sources":["../../../src/components/notification/NotificationsContainer.tsx"],"sourcesContent":["import { ToastContainer } from 'react-toastify';\n\n// Note:\n// With the new library we have to decide to either stack them all or to show a limit and one they are gone,\n// the remaining notifications slide in.\n\nconst NotificationsContainer = () => (\n <div className='notification-container-wrapper'>\n <ToastContainer className='notification-container' stacked={false} limit={5} />\n </div>\n);\n\nexport default NotificationsContainer;\n"],"names":["NotificationsContainer","jsx","ToastContainer"],"mappings":";;AAMA,MAAMA,IAAyB,MAC3B,gBAAAC,EAAC,OAAA,EAAI,WAAU,kCACX,UAAA,gBAAAA,EAACC,GAAA,EAAe,WAAU,0BAAyB,SAAS,IAAO,OAAO,GAAG,EAAA,CACjF;"}