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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (412) hide show
  1. package/AnalyticsAnalysisOverlay.d.ts +1 -0
  2. package/AnalyticsAnalysisOverlay.js +5 -0
  3. package/AnalyticsAnalysisOverlay.js.map +1 -0
  4. package/Table.d.ts +2 -0
  5. package/Table.js +23 -0
  6. package/Table.js.map +1 -0
  7. package/TableCol.d.ts +2 -2
  8. package/TableCol.js +1 -1
  9. package/TableHead.d.ts +2 -2
  10. package/TableHead.js +1 -1
  11. package/TableSettingsDialog.d.ts +2 -2
  12. package/TableSettingsDialog.js +1 -1
  13. package/TableToolbar.js +3 -2
  14. package/analyticsAnalysisUtils.d.ts +1 -0
  15. package/analyticsAnalysisUtils.js +13 -0
  16. package/analyticsAnalysisUtils.js.map +1 -0
  17. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.d.ts +18 -0
  18. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.js +128 -0
  19. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.js.map +1 -0
  20. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.d.ts +9 -0
  21. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.js +73 -0
  22. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.js.map +1 -0
  23. package/components/applicationHeader/AppMenuContent.js.map +1 -1
  24. package/components/applicationHeader/ApplicationActionBar.js +4 -4
  25. package/components/applicationHeader/ApplicationActionBar.js.map +1 -1
  26. package/components/applicationHeader/CollapsedNavItem.js +5 -14
  27. package/components/applicationHeader/CollapsedNavItem.js.map +1 -1
  28. package/components/applicationHeader/NavItems.js +10 -10
  29. package/components/applicationHeader/NavItems.js.map +1 -1
  30. package/components/assetTree/AssetTree.js +23 -23
  31. package/components/assetTree/AssetTree.js.map +1 -1
  32. package/components/assetTree/TreeNothingFound.js +2 -2
  33. package/components/assetTree/TreeNothingFound.js.map +1 -1
  34. package/components/assetTree/treeUtils.js.map +1 -1
  35. package/components/autosuggest/AutoSuggest.js +31 -31
  36. package/components/autosuggest/AutoSuggest.js.map +1 -1
  37. package/components/autosuggest/AutoSuggestAddons.js +9 -9
  38. package/components/autosuggest/AutoSuggestAddons.js.map +1 -1
  39. package/components/banner/BannerActions.js +2 -2
  40. package/components/banner/BannerActions.js.map +1 -1
  41. package/components/banner/BannerIcon.js +3 -3
  42. package/components/banner/BannerIcon.js.map +1 -1
  43. package/components/banner/BannerPage.js +4 -4
  44. package/components/banner/BannerPage.js.map +1 -1
  45. package/components/button/Button.d.ts +7 -0
  46. package/components/button/Button.js +73 -65
  47. package/components/button/Button.js.map +1 -1
  48. package/components/checkbox/Checkbox.js +18 -17
  49. package/components/checkbox/Checkbox.js.map +1 -1
  50. package/components/datepicker/DateRangePicker.js +0 -2
  51. package/components/datepicker/DateRangePicker.js.map +1 -1
  52. package/components/datepicker/DayPicker.js +16 -16
  53. package/components/datepicker/DayPicker.js.map +1 -1
  54. package/components/dialog/Dialog.js.map +1 -1
  55. package/components/dialog/DialogHeader.js +23 -20
  56. package/components/dialog/DialogHeader.js.map +1 -1
  57. package/components/dialog/MediaDialog.js +1 -1
  58. package/components/dialog/MediaDialog.js.map +1 -1
  59. package/components/editableContent/EditableContent.js +7 -7
  60. package/components/editableContent/EditableContent.js.map +1 -1
  61. package/components/expander/ExpanderList.d.ts +5 -0
  62. package/components/expander/ExpanderList.js +25 -16
  63. package/components/expander/ExpanderList.js.map +1 -1
  64. package/components/expander/ExpanderPanel.d.ts +5 -0
  65. package/components/expander/ExpanderPanel.js +29 -28
  66. package/components/expander/ExpanderPanel.js.map +1 -1
  67. package/components/fade/FadeExpander.js +1 -1
  68. package/components/fade/FadeExpander.js.map +1 -1
  69. package/components/filepicker/FilePicker.js.map +1 -1
  70. package/components/loadMore/LoadMoreButton.d.ts +5 -0
  71. package/components/loadMore/LoadMoreButton.js +33 -29
  72. package/components/loadMore/LoadMoreButton.js.map +1 -1
  73. package/components/map/components/features/ContextMenu.js +13 -13
  74. package/components/map/components/features/ContextMenu.js.map +1 -1
  75. package/components/map/components/features/basics/InfoBubble.js.map +1 -1
  76. package/components/map/components/features/settings/MapSettingsTile.js.map +1 -1
  77. package/components/map/components/features/settings/builtinSettings/MapTypeSettings.js +6 -6
  78. package/components/map/components/features/settings/builtinSettings/MapTypeSettings.js.map +1 -1
  79. package/components/map/utils/eventHandling.js +18 -18
  80. package/components/map/utils/eventHandling.js.map +1 -1
  81. package/components/map/utils/positions.d.ts +1 -1
  82. package/components/map/utils/positions.js +15 -12
  83. package/components/map/utils/positions.js.map +1 -1
  84. package/components/map/utils/rendering.d.ts +1 -1
  85. package/components/menuItems/MenuItems.js +6 -6
  86. package/components/menuItems/MenuItems.js.map +1 -1
  87. package/components/notification/NotificationsContainer.js.map +1 -1
  88. package/components/numberInput/NumberInput.js +57 -56
  89. package/components/numberInput/NumberInput.js.map +1 -1
  90. package/components/popover/Popover.js +4 -4
  91. package/components/popover/Popover.js.map +1 -1
  92. package/components/resizer/Resizer.js +6 -3
  93. package/components/resizer/Resizer.js.map +1 -1
  94. package/components/selects/BaseSelectDropdown.js +34 -32
  95. package/components/selects/BaseSelectDropdown.js.map +1 -1
  96. package/components/selects/MultiselectTogglePlaceholder.js.map +1 -1
  97. package/components/selects/MultiselectToggleSelection.js +11 -11
  98. package/components/selects/MultiselectToggleSelection.js.map +1 -1
  99. package/components/sidebars/Sidebar.js +12 -12
  100. package/components/sidebars/Sidebar.js.map +1 -1
  101. package/components/sidebars/SidebarCloseButton.js +2 -2
  102. package/components/sidebars/SidebarCloseButton.js.map +1 -1
  103. package/components/smoothScrollbars/SmoothScrollbars.d.ts +4 -3
  104. package/components/smoothScrollbars/SmoothScrollbars.js +11 -11
  105. package/components/smoothScrollbars/SmoothScrollbars.js.map +1 -1
  106. package/components/states/CustomState.js.map +1 -1
  107. package/components/svgImage/svgConverter.js.map +1 -1
  108. package/components/table/Table.d.ts +267 -0
  109. package/components/table/Table.js +233 -0
  110. package/components/table/Table.js.map +1 -0
  111. package/components/table/Table.types.d.ts +207 -0
  112. package/components/table/TableBody.d.ts +10 -0
  113. package/components/table/TableBody.js +5 -0
  114. package/components/table/TableBody.js.map +1 -0
  115. package/components/table/TableCard.d.ts +63 -0
  116. package/components/table/TableCard.js +150 -0
  117. package/components/table/TableCard.js.map +1 -0
  118. package/components/table/TableColumn.d.ts +47 -0
  119. package/components/table/TableColumn.js +5 -0
  120. package/components/table/TableColumn.js.map +1 -0
  121. package/components/table/TableExpandedContentRow.d.ts +22 -0
  122. package/components/table/TableExpandedContentRow.js +5 -0
  123. package/components/table/TableExpandedContentRow.js.map +1 -0
  124. package/components/table/TableExpandedRow.d.ts +17 -0
  125. package/components/table/TableExpandedRow.js +5 -0
  126. package/components/table/TableExpandedRow.js.map +1 -0
  127. package/components/table/TableExpanderButton.d.ts +25 -0
  128. package/components/table/TableExpanderButton.js +22 -0
  129. package/components/table/TableExpanderButton.js.map +1 -0
  130. package/components/table/TableFooter.d.ts +13 -0
  131. package/components/table/TableFooter.js +5 -0
  132. package/components/table/TableFooter.js.map +1 -0
  133. package/components/table/TableGroupFooterRow.d.ts +18 -0
  134. package/components/table/TableGroupFooterRow.js +5 -0
  135. package/components/table/TableGroupFooterRow.js.map +1 -0
  136. package/components/table/TableGroupRow.d.ts +24 -0
  137. package/components/table/TableGroupRow.js +5 -0
  138. package/components/table/TableGroupRow.js.map +1 -0
  139. package/components/table/TableHeader.d.ts +9 -0
  140. package/components/table/TableHeader.js +5 -0
  141. package/components/table/TableHeader.js.map +1 -0
  142. package/components/table/TableHeaderColumn.d.ts +70 -0
  143. package/components/table/TableHeaderColumn.js +5 -0
  144. package/components/table/TableHeaderColumn.js.map +1 -0
  145. package/components/table/TableHeaderRow.d.ts +9 -0
  146. package/components/table/TableHeaderRow.js +5 -0
  147. package/components/table/TableHeaderRow.js.map +1 -0
  148. package/components/table/TableRow.d.ts +19 -0
  149. package/components/table/TableRow.js +5 -0
  150. package/components/table/TableRow.js.map +1 -0
  151. package/components/table/TableSpacerRow.d.ts +12 -0
  152. package/components/table/TableSpacerRow.js +5 -0
  153. package/components/table/TableSpacerRow.js.map +1 -0
  154. package/components/table/TableToolbar.d.ts +23 -1
  155. package/components/table/TableToolbar.js +38 -4
  156. package/components/table/TableToolbar.js.map +1 -1
  157. package/components/table/TableViewToggles.d.ts +18 -0
  158. package/components/table/TableViewToggles.js +59 -87
  159. package/components/table/TableViewToggles.js.map +1 -1
  160. package/components/table/layout/columnSizing.d.ts +3 -0
  161. package/components/table/layout/columnSizing.js +23 -0
  162. package/components/table/layout/columnSizing.js.map +1 -0
  163. package/components/table/layout/useDraggableColumns.d.ts +14 -0
  164. package/components/table/layout/useDraggableColumns.js +47 -0
  165. package/components/table/layout/useDraggableColumns.js.map +1 -0
  166. package/components/table/layout/useHorizontalSectionSync.d.ts +11 -0
  167. package/components/table/layout/useHorizontalSectionSync.js +39 -0
  168. package/components/table/layout/useHorizontalSectionSync.js.map +1 -0
  169. package/components/table/layout/useMeasuredColumnMaxWidths.d.ts +12 -0
  170. package/components/table/layout/useMeasuredColumnMaxWidths.js +85 -0
  171. package/components/table/layout/useMeasuredColumnMaxWidths.js.map +1 -0
  172. package/components/table/layout/useResizableColumns.d.ts +14 -0
  173. package/components/table/layout/useResizableColumns.js +91 -0
  174. package/components/table/layout/useResizableColumns.js.map +1 -0
  175. package/components/table/layout/useTableLayout.d.ts +25 -0
  176. package/components/table/layout/useTableLayout.js +56 -0
  177. package/components/table/layout/useTableLayout.js.map +1 -0
  178. package/components/table/layout/useTableVirtualization.d.ts +22 -0
  179. package/components/table/layout/useTableVirtualization.js +125 -0
  180. package/components/table/layout/useTableVirtualization.js.map +1 -0
  181. package/components/table/model/buildTableViewModel.d.ts +28 -0
  182. package/components/table/model/buildTableViewModel.js +221 -0
  183. package/components/table/model/buildTableViewModel.js.map +1 -0
  184. package/components/table/model/resolveCellContent.d.ts +2 -0
  185. package/components/table/model/resolveCellContent.js +5 -0
  186. package/components/table/model/resolveCellContent.js.map +1 -0
  187. package/components/table/model/resolveRowMeta.d.ts +2 -0
  188. package/components/table/model/resolveRowMeta.js +15 -0
  189. package/components/table/model/resolveRowMeta.js.map +1 -0
  190. package/components/table/model/resolveTableClassConfig.d.ts +48 -0
  191. package/components/table/model/resolveTableClassConfig.js +64 -0
  192. package/components/table/model/resolveTableClassConfig.js.map +1 -0
  193. package/components/table/model/tableViewModel.types.d.ts +153 -0
  194. package/components/table/native/TableCol.js.map +1 -0
  195. package/components/table/{TableHead.js → native/TableHead.js} +2 -2
  196. package/components/table/native/TableHead.js.map +1 -0
  197. package/components/table/native/TableSettingsColumnButtons.js +59 -0
  198. package/components/table/native/TableSettingsColumnButtons.js.map +1 -0
  199. package/components/table/{TableSettingsColumnDetails.js → native/TableSettingsColumnDetails.js} +2 -2
  200. package/components/table/native/TableSettingsColumnDetails.js.map +1 -0
  201. package/components/table/{TableSettingsDialog.d.ts → native/TableSettingsDialog.d.ts} +2 -3
  202. package/components/table/native/TableSettingsDialog.js +216 -0
  203. package/components/table/native/TableSettingsDialog.js.map +1 -0
  204. package/components/table/{TableSettingsDialogFooter.js → native/TableSettingsDialogFooter.js} +2 -2
  205. package/components/table/native/TableSettingsDialogFooter.js.map +1 -0
  206. package/components/table/native/TableSettingsListContainer.js.map +1 -0
  207. package/components/table/native/TableSettingsListItem.js +100 -0
  208. package/components/table/native/TableSettingsListItem.js.map +1 -0
  209. package/components/table/parse/parseBody.d.ts +3 -0
  210. package/components/table/parse/parseBody.js +13 -0
  211. package/components/table/parse/parseBody.js.map +1 -0
  212. package/components/table/parse/parseColumns.d.ts +3 -0
  213. package/components/table/parse/parseColumns.js +81 -0
  214. package/components/table/parse/parseColumns.js.map +1 -0
  215. package/components/table/parse/parseFooter.d.ts +3 -0
  216. package/components/table/parse/parseFooter.js +39 -0
  217. package/components/table/parse/parseFooter.js.map +1 -0
  218. package/components/table/parse/parseHeaders.d.ts +4 -0
  219. package/components/table/parse/parseHeaders.js +89 -0
  220. package/components/table/parse/parseHeaders.js.map +1 -0
  221. package/components/table/parse/parseRows.d.ts +3 -0
  222. package/components/table/parse/parseRows.js +93 -0
  223. package/components/table/parse/parseRows.js.map +1 -0
  224. package/components/table/parse/tableChildGuards.d.ts +25 -0
  225. package/components/table/parse/tableChildGuards.js +29 -0
  226. package/components/table/parse/tableChildGuards.js.map +1 -0
  227. package/components/table/render/body/TableBodyRow.d.ts +16 -0
  228. package/components/table/render/body/TableBodyRow.js +84 -0
  229. package/components/table/render/body/TableBodyRow.js.map +1 -0
  230. package/components/table/render/body/TableBodySection.d.ts +20 -0
  231. package/components/table/render/body/TableBodySection.js +68 -0
  232. package/components/table/render/body/TableBodySection.js.map +1 -0
  233. package/components/table/render/body/TableDataRow.d.ts +15 -0
  234. package/components/table/render/body/TableDataRow.js +143 -0
  235. package/components/table/render/body/TableDataRow.js.map +1 -0
  236. package/components/table/render/body/TableEmptyRow.d.ts +7 -0
  237. package/components/table/render/body/TableEmptyRow.js +6 -0
  238. package/components/table/render/body/TableEmptyRow.js.map +1 -0
  239. package/components/table/render/body/TableExpandedRow.d.ts +8 -0
  240. package/components/table/render/body/TableExpandedRow.js +84 -0
  241. package/components/table/render/body/TableExpandedRow.js.map +1 -0
  242. package/components/table/render/body/TableGroupRow.d.ts +8 -0
  243. package/components/table/render/body/TableGroupRow.js +21 -0
  244. package/components/table/render/body/TableGroupRow.js.map +1 -0
  245. package/components/table/render/body/TableSpacerRow.d.ts +7 -0
  246. package/components/table/render/body/TableSpacerRow.js +15 -0
  247. package/components/table/render/body/TableSpacerRow.js.map +1 -0
  248. package/components/table/render/footer/TableFooterCell.d.ts +8 -0
  249. package/components/table/render/footer/TableFooterCell.js +31 -0
  250. package/components/table/render/footer/TableFooterCell.js.map +1 -0
  251. package/components/table/render/footer/TableFooterContent.d.ts +6 -0
  252. package/components/table/render/footer/TableFooterContent.js +6 -0
  253. package/components/table/render/footer/TableFooterContent.js.map +1 -0
  254. package/components/table/render/footer/TableFooterSection.d.ts +10 -0
  255. package/components/table/render/footer/TableFooterSection.js +28 -0
  256. package/components/table/render/footer/TableFooterSection.js.map +1 -0
  257. package/components/table/render/header/TableBatchDropdown.d.ts +9 -0
  258. package/components/table/render/header/TableBatchDropdown.js +28 -0
  259. package/components/table/render/header/TableBatchDropdown.js.map +1 -0
  260. package/components/table/render/header/TableColumnFilter.d.ts +66 -0
  261. package/components/table/render/header/TableColumnFilter.js +70 -0
  262. package/components/table/render/header/TableColumnFilter.js.map +1 -0
  263. package/components/table/render/header/TableDraggableHeaderCell.d.ts +3 -0
  264. package/components/table/render/header/TableDraggableHeaderCell.js +54 -0
  265. package/components/table/render/header/TableDraggableHeaderCell.js.map +1 -0
  266. package/components/table/render/header/TableHeader.types.d.ts +35 -0
  267. package/components/table/render/header/TableHeaderCellContent.d.ts +3 -0
  268. package/components/table/render/header/TableHeaderCellContent.js +57 -0
  269. package/components/table/render/header/TableHeaderCellContent.js.map +1 -0
  270. package/components/table/render/header/TableHeaderCellResizeHandle.d.ts +3 -0
  271. package/components/table/render/header/TableHeaderCellResizeHandle.js +22 -0
  272. package/components/table/render/header/TableHeaderCellResizeHandle.js.map +1 -0
  273. package/components/table/render/header/TableHeaderDragOverlay.d.ts +13 -0
  274. package/components/table/render/header/TableHeaderDragOverlay.js +35 -0
  275. package/components/table/render/header/TableHeaderDragOverlay.js.map +1 -0
  276. package/components/table/render/header/TableHeaderSection.d.ts +3 -0
  277. package/components/table/render/header/TableHeaderSection.js +104 -0
  278. package/components/table/render/header/TableHeaderSection.js.map +1 -0
  279. package/components/table/render/header/TableHeaderSelectionCell.d.ts +9 -0
  280. package/components/table/render/header/TableHeaderSelectionCell.js +41 -0
  281. package/components/table/render/header/TableHeaderSelectionCell.js.map +1 -0
  282. package/components/table/render/header/TableStaticHeaderCell.d.ts +3 -0
  283. package/components/table/render/header/TableStaticHeaderCell.js +36 -0
  284. package/components/table/render/header/TableStaticHeaderCell.js.map +1 -0
  285. package/components/table/render/header/resolveAriaSort.d.ts +2 -0
  286. package/components/table/render/header/resolveAriaSort.js +8 -0
  287. package/components/table/render/header/resolveAriaSort.js.map +1 -0
  288. package/components/table/render/header/resolveColumnCollisionDetection.d.ts +2 -0
  289. package/components/table/render/header/resolveColumnCollisionDetection.js +9 -0
  290. package/components/table/render/header/resolveColumnCollisionDetection.js.map +1 -0
  291. package/components/table/render/header/resolveHeaderCellClassName.d.ts +10 -0
  292. package/components/table/render/header/resolveHeaderCellClassName.js +22 -0
  293. package/components/table/render/header/resolveHeaderCellClassName.js.map +1 -0
  294. package/components/table/render/header/resolveHeaderCellStyle.d.ts +829 -0
  295. package/components/table/render/header/resolveHeaderCellStyle.js +9 -0
  296. package/components/table/render/header/resolveHeaderCellStyle.js.map +1 -0
  297. package/components/table/selection/useTableSelection.d.ts +82 -0
  298. package/components/table/selection/useTableSelection.js +35 -0
  299. package/components/table/selection/useTableSelection.js.map +1 -0
  300. package/components/table/settings/TableColumnsDropdown.d.ts +90 -0
  301. package/components/table/settings/TableColumnsDropdown.js +137 -0
  302. package/components/table/settings/TableColumnsDropdown.js.map +1 -0
  303. package/components/table/settings/TableColumnsDropdownItem.d.ts +8 -0
  304. package/components/table/settings/TableColumnsDropdownItem.js +66 -0
  305. package/components/table/settings/TableColumnsDropdownItem.js.map +1 -0
  306. package/components/table/shared/getAlignClassName.d.ts +3 -0
  307. package/components/table/shared/getAlignClassName.js +6 -0
  308. package/components/table/shared/getAlignClassName.js.map +1 -0
  309. package/components/table/shared/getInteractiveRowProps.d.ts +14 -0
  310. package/components/table/shared/getInteractiveRowProps.js +15 -0
  311. package/components/table/shared/getInteractiveRowProps.js.map +1 -0
  312. package/components/table/shared/resolveTableAria.d.ts +2 -0
  313. package/components/table/shared/resolveTableAria.js +6 -0
  314. package/components/table/shared/resolveTableAria.js.map +1 -0
  315. package/components/table/tableSizing.constants.d.ts +4 -0
  316. package/components/table/tableSizing.constants.js +8 -0
  317. package/components/table/tableSizing.constants.js.map +1 -0
  318. package/components/teaser/TeaserContainer.js +3 -3
  319. package/components/teaser/TeaserContainer.js.map +1 -1
  320. package/components/virtualList/VirtualList.js +16 -13
  321. package/components/virtualList/VirtualList.js.map +1 -1
  322. package/googleAnalyticsUtils.d.ts +1 -0
  323. package/googleAnalyticsUtils.js +9 -0
  324. package/googleAnalyticsUtils.js.map +1 -0
  325. package/hooks/useCookies.js +17 -17
  326. package/hooks/useCookies.js.map +1 -1
  327. package/hooks/useDraggableElement.d.ts +35 -0
  328. package/hooks/useDraggableElement.js +49 -0
  329. package/hooks/useDraggableElement.js.map +1 -0
  330. package/hooks/useElapsedTime.js +4 -4
  331. package/hooks/useElapsedTime.js.map +1 -1
  332. package/hooks/useLocationSuggestions.js +13 -10
  333. package/hooks/useLocationSuggestions.js.map +1 -1
  334. package/hooks/useMergeRefs.js +12 -12
  335. package/hooks/useMergeRefs.js.map +1 -1
  336. package/hooks/usePrevious.d.ts +1 -1
  337. package/hooks/usePrevious.js.map +1 -1
  338. package/hooks/useResizeObserver.js +25 -10
  339. package/hooks/useResizeObserver.js.map +1 -1
  340. package/hooks/useRioCookieConsent.js +7 -4
  341. package/hooks/useRioCookieConsent.js.map +1 -1
  342. package/hooks/useSorting.js +10 -10
  343. package/hooks/useSorting.js.map +1 -1
  344. package/hooks/useStorage.js +12 -12
  345. package/hooks/useStorage.js.map +1 -1
  346. package/hooks/useSum.js +10 -7
  347. package/hooks/useSum.js.map +1 -1
  348. package/hooks/useTableSelection.js.map +1 -1
  349. package/hooks/useTimeout.js +6 -3
  350. package/hooks/useTimeout.js.map +1 -1
  351. package/package.json +3 -3
  352. package/routeUtils.js +12 -10
  353. package/utils/analytics/analyticsAnalysisUtils.d.ts +27 -0
  354. package/utils/analytics/analyticsAnalysisUtils.js +161 -0
  355. package/utils/analytics/analyticsAnalysisUtils.js.map +1 -0
  356. package/utils/analytics/autoTracking.d.ts +14 -0
  357. package/utils/analytics/autoTracking.js +19 -0
  358. package/utils/analytics/autoTracking.js.map +1 -0
  359. package/utils/analytics/createAnalyticsOverlayTooltip.d.ts +36 -0
  360. package/utils/analytics/createAnalyticsOverlayTooltip.js +203 -0
  361. package/utils/analytics/createAnalyticsOverlayTooltip.js.map +1 -0
  362. package/utils/analytics/googleAnalyticsUtils.d.ts +37 -0
  363. package/utils/analytics/googleAnalyticsUtils.js +37 -0
  364. package/utils/analytics/googleAnalyticsUtils.js.map +1 -0
  365. package/utils/analytics/logAnalyticsOverlayUnmatchedEntries.d.ts +8 -0
  366. package/utils/analytics/logAnalyticsOverlayUnmatchedEntries.js +61 -0
  367. package/utils/analytics/logAnalyticsOverlayUnmatchedEntries.js.map +1 -0
  368. package/utils/analytics/useAnalyticsOverlayDom.d.ts +11 -0
  369. package/utils/analytics/useAnalyticsOverlayDom.js +120 -0
  370. package/utils/analytics/useAnalyticsOverlayDom.js.map +1 -0
  371. package/utils/arrayMove.js +11 -0
  372. package/utils/arrayMove.js.map +1 -0
  373. package/utils/cssuseragent.js +2 -2
  374. package/utils/cssuseragent.js.map +1 -1
  375. package/utils/deviceUtils.js.map +1 -1
  376. package/utils/formatUtils.js.map +1 -1
  377. package/utils/hasUtilityClass.js +3 -3
  378. package/utils/hasUtilityClass.js.map +1 -1
  379. package/utils/hidePiiData.js.map +1 -1
  380. package/utils/init/checkForReleaseVersion.js +4 -4
  381. package/utils/init/checkForReleaseVersion.js.map +1 -1
  382. package/utils/init/styledLogs.js.map +1 -1
  383. package/utils/mergeRefs.js +3 -3
  384. package/utils/mergeRefs.js.map +1 -1
  385. package/utils/routeUtils.d.ts +32 -1
  386. package/utils/routeUtils.js +85 -67
  387. package/utils/routeUtils.js.map +1 -1
  388. package/utils/storageUtils.js +9 -9
  389. package/utils/storageUtils.js.map +1 -1
  390. package/version.d.ts +1 -1
  391. package/version.js +2 -2
  392. package/version.js.map +1 -1
  393. package/components/table/TableCol.js.map +0 -1
  394. package/components/table/TableHead.js.map +0 -1
  395. package/components/table/TableSettingsColumnButtons.js +0 -45
  396. package/components/table/TableSettingsColumnButtons.js.map +0 -1
  397. package/components/table/TableSettingsColumnDetails.js.map +0 -1
  398. package/components/table/TableSettingsDialog.js +0 -208
  399. package/components/table/TableSettingsDialog.js.map +0 -1
  400. package/components/table/TableSettingsDialogFooter.js.map +0 -1
  401. package/components/table/TableSettingsListContainer.js.map +0 -1
  402. package/components/table/TableSettingsListItem.js +0 -96
  403. package/components/table/TableSettingsListItem.js.map +0 -1
  404. /package/components/table/{TableCol.d.ts → native/TableCol.d.ts} +0 -0
  405. /package/components/table/{TableCol.js → native/TableCol.js} +0 -0
  406. /package/components/table/{TableHead.d.ts → native/TableHead.d.ts} +0 -0
  407. /package/components/table/{TableSettingsColumnButtons.d.ts → native/TableSettingsColumnButtons.d.ts} +0 -0
  408. /package/components/table/{TableSettingsColumnDetails.d.ts → native/TableSettingsColumnDetails.d.ts} +0 -0
  409. /package/components/table/{TableSettingsDialogFooter.d.ts → native/TableSettingsDialogFooter.d.ts} +0 -0
  410. /package/components/table/{TableSettingsListContainer.d.ts → native/TableSettingsListContainer.d.ts} +0 -0
  411. /package/components/table/{TableSettingsListContainer.js → native/TableSettingsListContainer.js} +0 -0
  412. /package/components/table/{TableSettingsListItem.d.ts → native/TableSettingsListItem.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ export * from './components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay';
@@ -0,0 +1,5 @@
1
+ import { AnalyticsAnalysisOverlay as r } from "./components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.js";
2
+ export {
3
+ r as AnalyticsAnalysisOverlay
4
+ };
5
+ //# sourceMappingURL=AnalyticsAnalysisOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalyticsAnalysisOverlay.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/Table.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export { default } from './components/table/Table';
2
+ export * from './components/table/Table';
package/Table.js ADDED
@@ -0,0 +1,23 @@
1
+ import { TableBatchDropdown as a, TableBody as l, TableColumn as b, TableColumnFilter as T, TableColumnsDropdown as r, TableExpandedContentRow as d, TableExpandedRow as n, TableExpanderButton as t, TableFooter as p, TableGroupFooterRow as u, TableGroupRow as w, TableHeader as R, TableHeaderColumn as m, TableHeaderRow as x, TableRow as C, TableSpacerRow as f, default as c } from "./components/table/Table.js";
2
+ import { default as B } from "./components/table/selection/useTableSelection.js";
3
+ export {
4
+ a as TableBatchDropdown,
5
+ l as TableBody,
6
+ b as TableColumn,
7
+ T as TableColumnFilter,
8
+ r as TableColumnsDropdown,
9
+ d as TableExpandedContentRow,
10
+ n as TableExpandedRow,
11
+ t as TableExpanderButton,
12
+ p as TableFooter,
13
+ u as TableGroupFooterRow,
14
+ w as TableGroupRow,
15
+ R as TableHeader,
16
+ m as TableHeaderColumn,
17
+ x as TableHeaderRow,
18
+ C as TableRow,
19
+ f as TableSpacerRow,
20
+ c as default,
21
+ B as useTableSelection
22
+ };
23
+ //# sourceMappingURL=Table.js.map
package/Table.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
package/TableCol.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { default } from './components/table/TableCol';
2
- export * from './components/table/TableCol';
1
+ export { default } from './components/table/native/TableCol';
2
+ export * from './components/table/native/TableCol';
package/TableCol.js CHANGED
@@ -1,4 +1,4 @@
1
- import { default as o } from "./components/table/TableCol.js";
1
+ import { default as o } from "./components/table/native/TableCol.js";
2
2
  export {
3
3
  o as default
4
4
  };
package/TableHead.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { default } from './components/table/TableHead';
2
- export * from './components/table/TableHead';
1
+ export { default } from './components/table/native/TableHead';
2
+ export * from './components/table/native/TableHead';
package/TableHead.js CHANGED
@@ -1,4 +1,4 @@
1
- import { default as o } from "./components/table/TableHead.js";
1
+ import { default as o } from "./components/table/native/TableHead.js";
2
2
  export {
3
3
  o as default
4
4
  };
@@ -1,2 +1,2 @@
1
- export { default } from './components/table/TableSettingsDialog';
2
- export * from './components/table/TableSettingsDialog';
1
+ export { default } from './components/table/native/TableSettingsDialog';
2
+ export * from './components/table/native/TableSettingsDialog';
@@ -1,4 +1,4 @@
1
- import { default as o } from "./components/table/TableSettingsDialog.js";
1
+ import { default as o } from "./components/table/native/TableSettingsDialog.js";
2
2
  export {
3
3
  o as default
4
4
  };
package/TableToolbar.js CHANGED
@@ -1,5 +1,6 @@
1
- import { default as o } from "./components/table/TableToolbar.js";
1
+ import { TableToolbarColumn as a, default as e } from "./components/table/TableToolbar.js";
2
2
  export {
3
- o as default
3
+ a as TableToolbarColumn,
4
+ e as default
4
5
  };
5
6
  //# sourceMappingURL=TableToolbar.js.map
@@ -0,0 +1 @@
1
+ export * from './utils/analytics/analyticsAnalysisUtils';
@@ -0,0 +1,13 @@
1
+ import { ANALYTICS_OVERLAY_SELECTOR as E, EVENT_TYPE_ICON_CLASS as a, LOOKUP_MAX_LENGTH as t, REQUIRED_ANALYTICS_HEADER_ROW as _, buildAnalyticsAnalysisData as s, createAnalyticsLookupKey as R, hasRequiredAnalyticsHeaderRow as L, parseAnalyticsReportCsv as i, toEventType as o } from "./utils/analytics/analyticsAnalysisUtils.js";
2
+ export {
3
+ E as ANALYTICS_OVERLAY_SELECTOR,
4
+ a as EVENT_TYPE_ICON_CLASS,
5
+ t as LOOKUP_MAX_LENGTH,
6
+ _ as REQUIRED_ANALYTICS_HEADER_ROW,
7
+ s as buildAnalyticsAnalysisData,
8
+ R as createAnalyticsLookupKey,
9
+ L as hasRequiredAnalyticsHeaderRow,
10
+ i as parseAnalyticsReportCsv,
11
+ o as toEventType
12
+ };
13
+ //# sourceMappingURL=analyticsAnalysisUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyticsAnalysisUtils.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,18 @@
1
+ import { CSSProperties, PointerEvent as ReactPointerEvent, RefObject } from 'react';
2
+ type AnalyticsAnalysisBannerProps = {
3
+ host: HTMLDivElement | null;
4
+ bannerRef: RefObject<HTMLDivElement>;
5
+ bannerStyle: CSSProperties;
6
+ analyticsDateRangeLabel: string | null;
7
+ loadedCsvName: string | null;
8
+ showOverlayDetails: boolean;
9
+ showOverlayLabelText: boolean;
10
+ isDragging: boolean;
11
+ onCsvPick: (files: File[]) => void;
12
+ onToggleOverlayDetails: () => void;
13
+ onToggleOverlayLabelText: () => void;
14
+ onClearCsv: () => void;
15
+ onDragHandlePointerDown: (event: ReactPointerEvent<HTMLElement>) => void;
16
+ };
17
+ export declare const AnalyticsAnalysisBanner: (props: AnalyticsAnalysisBannerProps) => import('react').ReactPortal | null;
18
+ export type { AnalyticsAnalysisBannerProps };
@@ -0,0 +1,128 @@
1
+ import { jsx as e, jsxs as l } from "react/jsx-runtime";
2
+ import { createPortal as u } from "react-dom";
3
+ import c from "../filepicker/FilePicker.js";
4
+ import r from "../button/Button.js";
5
+ const S = (d) => {
6
+ const {
7
+ host: n,
8
+ bannerRef: p,
9
+ bannerStyle: y,
10
+ analyticsDateRangeLabel: o,
11
+ loadedCsvName: i,
12
+ showOverlayDetails: t,
13
+ showOverlayLabelText: s,
14
+ isDragging: g,
15
+ onCsvPick: h,
16
+ onToggleOverlayDetails: m,
17
+ onToggleOverlayLabelText: x,
18
+ onClearCsv: b,
19
+ onDragHandlePointerDown: v
20
+ } = d;
21
+ return n ? u(
22
+ /* @__PURE__ */ e(
23
+ "div",
24
+ {
25
+ ref: p,
26
+ className: "position-fixed rounded padding-x-10 padding-y-10 text-color-white bg-secondary shadow-focused pointer-events-all z-index-max",
27
+ style: y,
28
+ children: /* @__PURE__ */ l("div", { className: "display-flex align-items-center gap-10", children: [
29
+ /* @__PURE__ */ e(
30
+ "span",
31
+ {
32
+ role: "button",
33
+ tabIndex: 0,
34
+ "aria-label": "Drag analytics overlay banner",
35
+ className: "rioglyph rioglyph-drag-n-drop text-size-20 margin-top-2",
36
+ style: {
37
+ cursor: g ? "grabbing" : "grab",
38
+ touchAction: "none"
39
+ },
40
+ onPointerDown: v
41
+ }
42
+ ),
43
+ /* @__PURE__ */ l("div", { children: [
44
+ !i && /* @__PURE__ */ e(
45
+ c,
46
+ {
47
+ displayMode: c.DISPLAY_MODE_DROPZONE,
48
+ onPick: h,
49
+ accept: {
50
+ "text/csv": [".csv"],
51
+ "application/vnd.ms-excel": [".csv"]
52
+ },
53
+ children: ({ isDragActive: a }) => /* @__PURE__ */ e(
54
+ "div",
55
+ {
56
+ className: "rounded border border-style-dashed border-color-white bg-transparent text-center text-color-white padding-y-10 padding-x-15 cursor-pointer",
57
+ children: a ? "Drop analytics CSV here ..." : "Drop analytics CSV here, or click to select"
58
+ }
59
+ )
60
+ }
61
+ ),
62
+ i && /* @__PURE__ */ l("div", { className: "display-flex align-items-center justify-content-center gap-15", children: [
63
+ /* @__PURE__ */ l("div", { className: "line-height-14 display-flex flex-column gap-2", children: [
64
+ o && /* @__PURE__ */ e("div", { className: "text-bold", children: o }),
65
+ /* @__PURE__ */ e("div", { children: i })
66
+ ] }),
67
+ /* @__PURE__ */ l("div", { className: "display-flex gap-5", children: [
68
+ /* @__PURE__ */ e(
69
+ r,
70
+ {
71
+ bsSize: "xs",
72
+ bsStyle: "muted-filled",
73
+ iconOnly: !0,
74
+ onClick: (a) => {
75
+ a.preventDefault(), a.stopPropagation(), m();
76
+ },
77
+ "aria-label": t ? "Hide analytics overlay details" : "Show analytics overlay details",
78
+ children: /* @__PURE__ */ e(
79
+ "span",
80
+ {
81
+ className: `rioglyph ${t ? "rioglyph-eye-open" : "rioglyph-eye-closed"}`
82
+ }
83
+ )
84
+ }
85
+ ),
86
+ /* @__PURE__ */ e(
87
+ r,
88
+ {
89
+ bsSize: "xs",
90
+ bsStyle: "muted-filled",
91
+ iconOnly: !0,
92
+ onClick: (a) => {
93
+ a.preventDefault(), a.stopPropagation(), x();
94
+ },
95
+ "aria-label": s ? "Hide analytics label text" : "Show analytics label text",
96
+ children: /* @__PURE__ */ e(
97
+ "span",
98
+ {
99
+ className: `rioglyph rotate-90 ${s ? "rioglyph-arrows-collapse" : "rioglyph-arrows-expand"}`
100
+ }
101
+ )
102
+ }
103
+ ),
104
+ /* @__PURE__ */ e(
105
+ r,
106
+ {
107
+ bsSize: "xs",
108
+ bsStyle: "muted-filled",
109
+ iconName: "rioglyph-trash",
110
+ iconOnly: !0,
111
+ onClick: (a) => {
112
+ a.preventDefault(), a.stopPropagation(), b();
113
+ }
114
+ }
115
+ )
116
+ ] })
117
+ ] })
118
+ ] })
119
+ ] })
120
+ }
121
+ ),
122
+ n
123
+ ) : null;
124
+ };
125
+ export {
126
+ S as AnalyticsAnalysisBanner
127
+ };
128
+ //# sourceMappingURL=AnalyticsAnalysisBanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalyticsAnalysisBanner.js","sources":["../../../src/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.tsx"],"sourcesContent":["import { createPortal } from 'react-dom';\nimport type { CSSProperties, PointerEvent as ReactPointerEvent, RefObject } from 'react';\n\nimport FilePicker from '../filepicker/FilePicker';\nimport Button from '../button/Button';\n\ntype AnalyticsAnalysisBannerProps = {\n host: HTMLDivElement | null;\n bannerRef: RefObject<HTMLDivElement>;\n bannerStyle: CSSProperties;\n analyticsDateRangeLabel: string | null;\n loadedCsvName: string | null;\n showOverlayDetails: boolean;\n showOverlayLabelText: boolean;\n isDragging: boolean;\n onCsvPick: (files: File[]) => void;\n onToggleOverlayDetails: () => void;\n onToggleOverlayLabelText: () => void;\n onClearCsv: () => void;\n onDragHandlePointerDown: (event: ReactPointerEvent<HTMLElement>) => void;\n};\n\nexport const AnalyticsAnalysisBanner = (props: AnalyticsAnalysisBannerProps) => {\n const {\n host,\n bannerRef,\n bannerStyle,\n analyticsDateRangeLabel,\n loadedCsvName,\n showOverlayDetails,\n showOverlayLabelText,\n isDragging,\n onCsvPick,\n onToggleOverlayDetails,\n onToggleOverlayLabelText,\n onClearCsv,\n onDragHandlePointerDown,\n } = props;\n\n if (!host) {\n return null;\n }\n\n return createPortal(\n <div\n ref={bannerRef}\n className='position-fixed rounded padding-x-10 padding-y-10 text-color-white bg-secondary shadow-focused pointer-events-all z-index-max'\n style={bannerStyle}\n >\n <div className='display-flex align-items-center gap-10'>\n <span\n role='button'\n tabIndex={0}\n aria-label='Drag analytics overlay banner'\n className='rioglyph rioglyph-drag-n-drop text-size-20 margin-top-2'\n style={{\n cursor: isDragging ? 'grabbing' : 'grab',\n touchAction: 'none',\n }}\n onPointerDown={onDragHandlePointerDown}\n />\n\n <div>\n {!loadedCsvName && (\n <FilePicker\n displayMode={FilePicker.DISPLAY_MODE_DROPZONE}\n onPick={onCsvPick}\n accept={{\n 'text/csv': ['.csv'],\n 'application/vnd.ms-excel': ['.csv'],\n }}\n >\n {({ isDragActive }) => (\n <div\n className={\n 'rounded border border-style-dashed border-color-white bg-transparent ' +\n 'text-center text-color-white padding-y-10 padding-x-15 cursor-pointer'\n }\n >\n {isDragActive\n ? 'Drop analytics CSV here ...'\n : 'Drop analytics CSV here, or click to select'}\n </div>\n )}\n </FilePicker>\n )}\n\n {loadedCsvName && (\n <div className='display-flex align-items-center justify-content-center gap-15'>\n <div className='line-height-14 display-flex flex-column gap-2'>\n {analyticsDateRangeLabel && <div className='text-bold'>{analyticsDateRangeLabel}</div>}\n <div>{loadedCsvName}</div>\n </div>\n <div className='display-flex gap-5'>\n <Button\n bsSize='xs'\n bsStyle='muted-filled'\n iconOnly\n onClick={event => {\n event.preventDefault();\n event.stopPropagation();\n onToggleOverlayDetails();\n }}\n aria-label={\n showOverlayDetails\n ? 'Hide analytics overlay details'\n : 'Show analytics overlay details'\n }\n >\n <span\n className={`rioglyph ${\n showOverlayDetails ? 'rioglyph-eye-open' : 'rioglyph-eye-closed'\n }`}\n />\n </Button>\n <Button\n bsSize='xs'\n bsStyle='muted-filled'\n iconOnly\n onClick={event => {\n event.preventDefault();\n event.stopPropagation();\n onToggleOverlayLabelText();\n }}\n aria-label={\n showOverlayLabelText ? 'Hide analytics label text' : 'Show analytics label text'\n }\n >\n <span\n className={`rioglyph rotate-90 ${\n showOverlayLabelText ? 'rioglyph-arrows-collapse' : 'rioglyph-arrows-expand'\n }`}\n />\n </Button>\n <Button\n bsSize='xs'\n bsStyle='muted-filled'\n iconName='rioglyph-trash'\n iconOnly\n onClick={event => {\n event.preventDefault();\n event.stopPropagation();\n onClearCsv();\n }}\n />\n </div>\n </div>\n )}\n </div>\n </div>\n </div>,\n host\n );\n};\n\nexport type { AnalyticsAnalysisBannerProps };\n"],"names":["AnalyticsAnalysisBanner","props","host","bannerRef","bannerStyle","analyticsDateRangeLabel","loadedCsvName","showOverlayDetails","showOverlayLabelText","isDragging","onCsvPick","onToggleOverlayDetails","onToggleOverlayLabelText","onClearCsv","onDragHandlePointerDown","createPortal","jsx","jsxs","FilePicker","isDragActive","Button","event"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ type AnalyticsAnalysisOverlayProps = {
2
+ overlayBackgroundOpacity?: number;
3
+ bannerStartCoordinates?: {
4
+ top: number;
5
+ left: number;
6
+ };
7
+ };
8
+ export declare const AnalyticsAnalysisOverlay: (props: AnalyticsAnalysisOverlayProps) => import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,73 @@
1
+ import { jsx as $ } from "react/jsx-runtime";
2
+ import { useState as t, useCallback as g } from "react";
3
+ import H from "../notification/Notification.js";
4
+ import P from "../../hooks/useDraggableElement.js";
5
+ import { hasRequiredAnalyticsHeaderRow as q, buildAnalyticsAnalysisData as I } from "../../utils/analytics/analyticsAnalysisUtils.js";
6
+ import V from "../../utils/analytics/useAnalyticsOverlayDom.js";
7
+ import { AnalyticsAnalysisBanner as j } from "./AnalyticsAnalysisBanner.js";
8
+ const Q = (v) => {
9
+ const { overlayBackgroundOpacity: b = 0.5, bannerStartCoordinates: p } = v, h = Math.min(1, Math.max(0, b)), o = p?.top, r = p?.left, A = typeof o == "number" && Number.isFinite(o) && typeof r == "number" && Number.isFinite(r), [C, e] = t(() => /* @__PURE__ */ new Map()), [D, n] = t(null), [w, s] = t(null), [O, l] = t(null), [u, x] = t(!0), [m, L] = t(!0), { draggableRef: T, isDragging: k, position: i, onDragHandlePointerDown: R } = P(), S = V({
10
+ analyticsLookup: C,
11
+ overlayBackgroundOpacity: h,
12
+ showOverlayDetails: u,
13
+ showOverlayLabelText: m,
14
+ analyticsTotalUsers: w
15
+ }), M = g(async (a) => {
16
+ const d = a.filter((F) => F.name.toLowerCase().endsWith(".csv"));
17
+ if (d.length === 0) {
18
+ e(/* @__PURE__ */ new Map()), n(null), s(null), l(null);
19
+ return;
20
+ }
21
+ const c = d[0], f = await c.text();
22
+ if (!q(f)) {
23
+ H.error(
24
+ 'A Google Analytics CSV report based on the "UIKIT AnalyticsAnalysisOverlay Template" is required.',
25
+ {
26
+ title: "Unsupported CSV"
27
+ }
28
+ ), e(/* @__PURE__ */ new Map()), n(null), s(null), l(null);
29
+ return;
30
+ }
31
+ const U = [
32
+ {
33
+ reportName: c.name,
34
+ csvRaw: f
35
+ }
36
+ ], y = I(U);
37
+ e(y.analyticsLookup), n(y.analyticsDateRangeLabel), s(y.analyticsTotalUsers), l(c.name);
38
+ }, []), N = g(() => {
39
+ e(/* @__PURE__ */ new Map()), n(null), s(null), l(null);
40
+ }, []), B = i.hasDragged ? {
41
+ top: `${i.top}px`,
42
+ left: `${i.left}px`
43
+ } : A ? {
44
+ top: `${o}px`,
45
+ left: `${r}px`
46
+ } : {
47
+ top: "70px",
48
+ left: "50%",
49
+ transform: "translateX(-50%)"
50
+ };
51
+ return /* @__PURE__ */ $(
52
+ j,
53
+ {
54
+ host: S,
55
+ bannerRef: T,
56
+ bannerStyle: B,
57
+ analyticsDateRangeLabel: D,
58
+ loadedCsvName: O,
59
+ showOverlayDetails: u,
60
+ showOverlayLabelText: m,
61
+ isDragging: k,
62
+ onCsvPick: M,
63
+ onToggleOverlayDetails: () => x((a) => !a),
64
+ onToggleOverlayLabelText: () => L((a) => !a),
65
+ onClearCsv: N,
66
+ onDragHandlePointerDown: R
67
+ }
68
+ );
69
+ };
70
+ export {
71
+ Q as AnalyticsAnalysisOverlay
72
+ };
73
+ //# sourceMappingURL=AnalyticsAnalysisOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalyticsAnalysisOverlay.js","sources":["../../../src/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.tsx"],"sourcesContent":["import { useCallback, useState, type CSSProperties } from 'react';\n\nimport Notification from '../../Notification';\nimport useDraggableElement from '../../hooks/useDraggableElement';\nimport {\n buildAnalyticsAnalysisData,\n hasRequiredAnalyticsHeaderRow,\n type AnalyticsReportEntry,\n} from '../../utils/analytics/analyticsAnalysisUtils';\nimport useAnalyticsOverlayDom from '../../utils/analytics/useAnalyticsOverlayDom';\nimport { AnalyticsAnalysisBanner } from './AnalyticsAnalysisBanner';\n\ntype AnalyticsAnalysisOverlayProps = {\n overlayBackgroundOpacity?: number;\n bannerStartCoordinates?: {\n top: number;\n left: number;\n };\n};\n\nexport const AnalyticsAnalysisOverlay = (props: AnalyticsAnalysisOverlayProps) => {\n const { overlayBackgroundOpacity = 0.5, bannerStartCoordinates } = props;\n const normalizedOverlayBackgroundOpacity = Math.min(1, Math.max(0, overlayBackgroundOpacity));\n const startTop = bannerStartCoordinates?.top;\n const startLeft = bannerStartCoordinates?.left;\n const hasCustomStartCoordinates =\n typeof startTop === 'number' &&\n Number.isFinite(startTop) &&\n typeof startLeft === 'number' &&\n Number.isFinite(startLeft);\n const [analyticsLookup, setAnalyticsLookup] = useState<Map<string, AnalyticsReportEntry[]>>(() => new Map());\n const [analyticsDateRangeLabel, setAnalyticsDateRangeLabel] = useState<string | null>(null);\n const [analyticsTotalUsers, setAnalyticsTotalUsers] = useState<number | null>(null);\n const [loadedCsvName, setLoadedCsvName] = useState<string | null>(null);\n const [showOverlayDetails, setShowOverlayDetails] = useState(true);\n const [showOverlayLabelText, setShowOverlayLabelText] = useState(true);\n const { draggableRef, isDragging, position, onDragHandlePointerDown } = useDraggableElement<HTMLDivElement>();\n const metadataBannerHost = useAnalyticsOverlayDom({\n analyticsLookup,\n overlayBackgroundOpacity: normalizedOverlayBackgroundOpacity,\n showOverlayDetails,\n showOverlayLabelText,\n analyticsTotalUsers,\n });\n\n const handleCsvPick = useCallback(async (files: File[]) => {\n const csvFiles = files.filter(file => file.name.toLowerCase().endsWith('.csv'));\n\n if (csvFiles.length === 0) {\n setAnalyticsLookup(new Map());\n setAnalyticsDateRangeLabel(null);\n setAnalyticsTotalUsers(null);\n setLoadedCsvName(null);\n return;\n }\n\n const selectedFile = csvFiles[0];\n const csvRaw = await selectedFile.text();\n\n if (!hasRequiredAnalyticsHeaderRow(csvRaw)) {\n Notification.error(\n 'A Google Analytics CSV report based on the \"UIKIT AnalyticsAnalysisOverlay Template\" is required.',\n {\n title: 'Unsupported CSV',\n }\n );\n setAnalyticsLookup(new Map());\n setAnalyticsDateRangeLabel(null);\n setAnalyticsTotalUsers(null);\n setLoadedCsvName(null);\n return;\n }\n\n const uploads = [\n {\n reportName: selectedFile.name,\n csvRaw,\n },\n ];\n const analysisData = buildAnalyticsAnalysisData(uploads);\n\n setAnalyticsLookup(analysisData.analyticsLookup);\n setAnalyticsDateRangeLabel(analysisData.analyticsDateRangeLabel);\n setAnalyticsTotalUsers(analysisData.analyticsTotalUsers);\n setLoadedCsvName(selectedFile.name);\n }, []);\n\n const handleClearCsv = useCallback(() => {\n setAnalyticsLookup(new Map());\n setAnalyticsDateRangeLabel(null);\n setAnalyticsTotalUsers(null);\n setLoadedCsvName(null);\n }, []);\n\n const bannerStyle: CSSProperties = position.hasDragged\n ? {\n top: `${position.top}px`,\n left: `${position.left}px`,\n }\n : hasCustomStartCoordinates\n ? {\n top: `${startTop}px`,\n left: `${startLeft}px`,\n }\n : {\n top: '70px',\n left: '50%',\n transform: 'translateX(-50%)',\n };\n\n return (\n <AnalyticsAnalysisBanner\n host={metadataBannerHost}\n bannerRef={draggableRef}\n bannerStyle={bannerStyle}\n analyticsDateRangeLabel={analyticsDateRangeLabel}\n loadedCsvName={loadedCsvName}\n showOverlayDetails={showOverlayDetails}\n showOverlayLabelText={showOverlayLabelText}\n isDragging={isDragging}\n onCsvPick={handleCsvPick}\n onToggleOverlayDetails={() => setShowOverlayDetails(previousState => !previousState)}\n onToggleOverlayLabelText={() => setShowOverlayLabelText(previousState => !previousState)}\n onClearCsv={handleClearCsv}\n onDragHandlePointerDown={onDragHandlePointerDown}\n />\n );\n};\n"],"names":["AnalyticsAnalysisOverlay","props","overlayBackgroundOpacity","bannerStartCoordinates","normalizedOverlayBackgroundOpacity","startTop","startLeft","hasCustomStartCoordinates","analyticsLookup","setAnalyticsLookup","useState","analyticsDateRangeLabel","setAnalyticsDateRangeLabel","analyticsTotalUsers","setAnalyticsTotalUsers","loadedCsvName","setLoadedCsvName","showOverlayDetails","setShowOverlayDetails","showOverlayLabelText","setShowOverlayLabelText","draggableRef","isDragging","position","onDragHandlePointerDown","useDraggableElement","metadataBannerHost","useAnalyticsOverlayDom","handleCsvPick","useCallback","files","csvFiles","file","selectedFile","csvRaw","hasRequiredAnalyticsHeaderRow","Notification","uploads","analysisData","buildAnalyticsAnalysisData","handleClearCsv","bannerStyle","jsx","AnalyticsAnalysisBanner","previousState"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AppMenuContent.js","sources":["../../../src/components/applicationHeader/AppMenuContent.tsx"],"sourcesContent":["import type React from 'react';\n\nimport type { ModulePropType } from './ApplicationHeader';\n\nexport type AppMenuContentProps = {\n appMenuItems: ModulePropType[];\n appNavigator?: React.ReactNode;\n};\n\nconst AppMenuContent = (props: AppMenuContentProps) => {\n const { appMenuItems, appNavigator } = props;\n\n // In case there is a navigation component injected into the header,\n // render this component\n if (appNavigator) {\n return (\n <li role='presentation' key='app-navigator'>\n {appNavigator}\n </li>\n );\n }\n\n // If there is a list of appMenuItems given, render them as a list\n return (\n <>\n {appMenuItems.map(module => {\n return (\n <li role='presentation' key={`link-icon-${module.key}`}>\n {module.route}\n </li>\n );\n })}\n </>\n );\n};\n\nexport default AppMenuContent;\n"],"names":["AppMenuContent","props","appMenuItems","appNavigator","jsx","Fragment","module"],"mappings":";AASA,MAAMA,IAAiB,CAACC,MAA+B;AACnD,QAAM,EAAE,cAAAC,GAAc,cAAAC,EAAA,IAAiBF;AAIvC,SAAIE,IAEI,gBAAAC,EAAC,MAAA,EAAG,MAAK,gBACJ,eADuB,eAE5B,IAMJ,gBAAAA,EAAAC,GAAA,EACK,UAAAH,EAAa,IAAI,CAAAI,MAEV,gBAAAF,EAAC,QAAG,MAAK,gBACJ,YAAO,MAAA,GADiB,aAAaE,EAAO,GAAG,EAEpD,CAEP,EAAA,CACL;AAER;"}
1
+ {"version":3,"file":"AppMenuContent.js","sources":["../../../src/components/applicationHeader/AppMenuContent.tsx"],"sourcesContent":["import type React from 'react';\n\nimport type { ModulePropType } from './ApplicationHeader';\n\nexport type AppMenuContentProps = {\n appMenuItems: ModulePropType[];\n appNavigator?: React.ReactNode;\n};\n\nconst AppMenuContent = (props: AppMenuContentProps) => {\n const { appMenuItems, appNavigator } = props;\n\n // In case there is a navigation component injected into the header,\n // render this component\n if (appNavigator) {\n return (\n <li role='presentation' key='app-navigator'>\n {appNavigator}\n </li>\n );\n }\n\n // If there is a list of appMenuItems given, render them as a list\n return (\n <>\n {appMenuItems.map(module => (\n <li role='presentation' key={`link-icon-${module.key}`}>\n {module.route}\n </li>\n ))}\n </>\n );\n};\n\nexport default AppMenuContent;\n"],"names":["AppMenuContent","props","appMenuItems","appNavigator","jsx","Fragment","module"],"mappings":";AASA,MAAMA,IAAiB,CAACC,MAA+B;AACnD,QAAM,EAAE,cAAAC,GAAc,cAAAC,EAAA,IAAiBF;AAIvC,SAAIE,IAEI,gBAAAC,EAAC,MAAA,EAAG,MAAK,gBACJ,eADuB,eAE5B,IAMJ,gBAAAA,EAAAC,GAAA,EACK,UAAAH,EAAa,IAAI,CAAAI,wBACb,MAAA,EAAG,MAAK,gBACJ,UAAAA,EAAO,SADiB,aAAaA,EAAO,GAAG,EAEpD,CACH,GACL;AAER;"}
@@ -1,13 +1,13 @@
1
1
  import { jsx as a } from "react/jsx-runtime";
2
2
  const l = (n) => {
3
- const { items: r, nodeRef: e, className: i = "", ...t } = n;
3
+ const { items: e, nodeRef: i, className: r = "", ...t } = n;
4
4
  return /* @__PURE__ */ a(
5
5
  "ul",
6
6
  {
7
7
  ...t,
8
- className: `ApplicationActionBar nav navbar-nav navbar-right ${i}`,
9
- ref: e,
10
- children: r?.map((o, s) => /* @__PURE__ */ a("li", { role: "presentation", className: "navigationItem", children: o }, s))
8
+ className: `ApplicationActionBar nav navbar-nav navbar-right ${r}`,
9
+ ref: i,
10
+ children: e?.map((o, s) => /* @__PURE__ */ a("li", { role: "presentation", className: "navigationItem", children: o }, s))
11
11
  }
12
12
  );
13
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationActionBar.js","sources":["../../../src/components/applicationHeader/ApplicationActionBar.tsx"],"sourcesContent":["import type React from 'react';\n\nexport type ApplicationActionBarProps = {\n items?: React.ReactNode[];\n nodeRef?: React.MutableRefObject<HTMLUListElement | null> | undefined;\n className?: string;\n};\n\nconst ApplicationActionBar = (props: ApplicationActionBarProps) => {\n const { items, nodeRef, className = '', ...remainingProps } = props;\n\n return (\n <ul\n {...remainingProps}\n className={`ApplicationActionBar nav navbar-nav navbar-right ${className}`}\n ref={nodeRef}\n >\n {items?.map((item, index) => {\n return (\n <li key={index} role='presentation' className='navigationItem'>\n {item}\n </li>\n );\n })}\n </ul>\n );\n};\n\nexport default ApplicationActionBar;\n"],"names":["ApplicationActionBar","props","items","nodeRef","className","remainingProps","jsx","item","index"],"mappings":";AAQA,MAAMA,IAAuB,CAACC,MAAqC;AAC/D,QAAM,EAAE,OAAAC,GAAO,SAAAC,GAAS,WAAAC,IAAY,IAAI,GAAGC,MAAmBJ;AAE9D,SACI,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAGD;AAAA,MACJ,WAAW,oDAAoDD,CAAS;AAAA,MACxE,KAAKD;AAAA,MAEJ,UAAAD,GAAO,IAAI,CAACK,GAAMC,wBAEV,MAAA,EAAe,MAAK,gBAAe,WAAU,kBACzC,eADIA,CAET,CAEP;AAAA,IAAA;AAAA,EAAA;AAGb;"}
1
+ {"version":3,"file":"ApplicationActionBar.js","sources":["../../../src/components/applicationHeader/ApplicationActionBar.tsx"],"sourcesContent":["import type React from 'react';\n\nexport type ApplicationActionBarProps = {\n items?: React.ReactNode[];\n nodeRef?: React.MutableRefObject<HTMLUListElement | null> | undefined;\n className?: string;\n};\n\nconst ApplicationActionBar = (props: ApplicationActionBarProps) => {\n const { items, nodeRef, className = '', ...remainingProps } = props;\n\n return (\n <ul\n {...remainingProps}\n className={`ApplicationActionBar nav navbar-nav navbar-right ${className}`}\n ref={nodeRef}\n >\n {items?.map((item, index) => (\n <li key={index} role='presentation' className='navigationItem'>\n {item}\n </li>\n ))}\n </ul>\n );\n};\n\nexport default ApplicationActionBar;\n"],"names":["ApplicationActionBar","props","items","nodeRef","className","remainingProps","jsx","item","index"],"mappings":";AAQA,MAAMA,IAAuB,CAACC,MAAqC;AAC/D,QAAM,EAAE,OAAAC,GAAO,SAAAC,GAAS,WAAAC,IAAY,IAAI,GAAGC,MAAmBJ;AAE9D,SACI,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAGD;AAAA,MACJ,WAAW,oDAAoDD,CAAS;AAAA,MACxE,KAAKD;AAAA,MAEJ,UAAAD,GAAO,IAAI,CAACK,GAAMC,MACf,gBAAAF,EAAC,MAAA,EAAe,MAAK,gBAAe,WAAU,kBACzC,UAAAC,EAAA,GADIC,CAET,CACH;AAAA,IAAA;AAAA,EAAA;AAGb;"}
@@ -1,9 +1,9 @@
1
1
  import { jsxs as t, jsx as o } from "react/jsx-runtime";
2
2
  import { forwardRef as c } from "react";
3
- import { isEmpty as e } from "es-toolkit/compat";
4
- const f = c((l, n) => {
5
- const { show: s = !1, navItems: r, actionBarItems: d, onDropdownClick: p, onItemClick: i } = l;
6
- return e(r) && e(d) ? null : /* @__PURE__ */ t("li", { className: `CollapsedDropdown dropdown ${s ? "open" : ""}`, ref: n, children: [
3
+ import { isEmpty as l } from "es-toolkit/compat";
4
+ const f = c((r, n) => {
5
+ const { show: s = !1, navItems: e, actionBarItems: d, onDropdownClick: p, onItemClick: i } = r;
6
+ return l(e) && l(d) ? null : /* @__PURE__ */ t("li", { className: `CollapsedDropdown dropdown ${s ? "open" : ""}`, ref: n, children: [
7
7
  /* @__PURE__ */ o(
8
8
  "a",
9
9
  {
@@ -16,16 +16,7 @@ const f = c((l, n) => {
16
16
  children: /* @__PURE__ */ o("span", { className: "rioglyph rioglyph-option-horizontal", "aria-hidden": "true" })
17
17
  }
18
18
  ),
19
- /* @__PURE__ */ o("ul", { className: "dropdown-menu", role: "menu", "aria-labelledby": "basic-nav-dropdown", children: r.map((a) => /* @__PURE__ */ o(
20
- "li",
21
- {
22
- className: "submodule",
23
- onClick: i,
24
- "data-nav-item-key": a.key,
25
- children: a.route
26
- },
27
- a.key
28
- )) })
19
+ /* @__PURE__ */ o("ul", { className: "dropdown-menu", role: "menu", "aria-labelledby": "basic-nav-dropdown", children: e.map((a) => /* @__PURE__ */ o("li", { className: "submodule", onClick: i, "data-nav-item-key": a.key, children: a.route }, a.key)) })
29
20
  ] }, "collapsed-dropdown");
30
21
  });
31
22
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"CollapsedNavItem.js","sources":["../../../src/components/applicationHeader/CollapsedNavItem.tsx"],"sourcesContent":["import React, { forwardRef, type ForwardedRef } from 'react';\nimport { isEmpty } from 'es-toolkit/compat';\n\nimport type { ModulePropType } from './ApplicationHeader';\n\ntype CollapsedNavItemProps = {\n show: boolean;\n navItems: ModulePropType[];\n actionBarItems: React.ReactNode[];\n onDropdownClick: () => void;\n onItemClick: () => void;\n};\n\ntype Ref = ForwardedRef<HTMLLIElement>;\n\nconst CollapsedNavItem = forwardRef((props: CollapsedNavItemProps, ref: Ref) => {\n const { show = false, navItems, actionBarItems, onDropdownClick, onItemClick } = props;\n\n if (isEmpty(navItems) && isEmpty(actionBarItems)) {\n return null;\n }\n\n const collapsedDropdownClass = show ? 'open' : '';\n\n return (\n <li className={`CollapsedDropdown dropdown ${collapsedDropdownClass}`} key='collapsed-dropdown' ref={ref}>\n <a\n id='basic-nav-dropdown'\n role='button'\n className='dropdown-toggle text-color-gray'\n aria-haspopup='true'\n aria-expanded='true'\n onClick={onDropdownClick}\n >\n <span className='rioglyph rioglyph-option-horizontal' aria-hidden='true' />\n </a>\n\n <ul className='dropdown-menu' role='menu' aria-labelledby='basic-nav-dropdown'>\n {navItems.map(navItem => {\n return (\n <li\n key={navItem.key}\n className='submodule'\n onClick={onItemClick}\n data-nav-item-key={navItem.key}\n >\n {navItem.route}\n </li>\n );\n })}\n </ul>\n </li>\n );\n});\n\nexport default CollapsedNavItem;\n"],"names":["CollapsedNavItem","forwardRef","props","ref","show","navItems","actionBarItems","onDropdownClick","onItemClick","isEmpty","jsx","navItem"],"mappings":";;;AAeA,MAAMA,IAAmBC,EAAW,CAACC,GAA8BC,MAAa;AAC5E,QAAM,EAAE,MAAAC,IAAO,IAAO,UAAAC,GAAU,gBAAAC,GAAgB,iBAAAC,GAAiB,aAAAC,MAAgBN;AAEjF,SAAIO,EAAQJ,CAAQ,KAAKI,EAAQH,CAAc,IACpC,yBAMN,MAAA,EAAG,WAAW,8BAHYF,IAAO,SAAS,EAGwB,IAA6B,KAAAD,GAC5F,UAAA;AAAA,IAAA,gBAAAO;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,MAAK;AAAA,QACL,WAAU;AAAA,QACV,iBAAc;AAAA,QACd,iBAAc;AAAA,QACd,SAASH;AAAA,QAET,UAAA,gBAAAG,EAAC,QAAA,EAAK,WAAU,uCAAsC,eAAY,OAAA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,IAG7E,gBAAAA,EAAC,MAAA,EAAG,WAAU,iBAAgB,MAAK,QAAO,mBAAgB,sBACrD,UAAAL,EAAS,IAAI,CAAAM,MAEN,gBAAAD;AAAA,MAAC;AAAA,MAAA;AAAA,QAEG,WAAU;AAAA,QACV,SAASF;AAAA,QACT,qBAAmBG,EAAQ;AAAA,QAE1B,UAAAA,EAAQ;AAAA,MAAA;AAAA,MALJA,EAAQ;AAAA,IAAA,CAQxB,EAAA,CACL;AAAA,EAAA,EAAA,GAzBuE,oBA0B3E;AAER,CAAC;"}
1
+ {"version":3,"file":"CollapsedNavItem.js","sources":["../../../src/components/applicationHeader/CollapsedNavItem.tsx"],"sourcesContent":["import React, { forwardRef, type ForwardedRef } from 'react';\nimport { isEmpty } from 'es-toolkit/compat';\n\nimport type { ModulePropType } from './ApplicationHeader';\n\ntype CollapsedNavItemProps = {\n show: boolean;\n navItems: ModulePropType[];\n actionBarItems: React.ReactNode[];\n onDropdownClick: () => void;\n onItemClick: () => void;\n};\n\ntype Ref = ForwardedRef<HTMLLIElement>;\n\nconst CollapsedNavItem = forwardRef((props: CollapsedNavItemProps, ref: Ref) => {\n const { show = false, navItems, actionBarItems, onDropdownClick, onItemClick } = props;\n\n if (isEmpty(navItems) && isEmpty(actionBarItems)) {\n return null;\n }\n\n const collapsedDropdownClass = show ? 'open' : '';\n\n return (\n <li className={`CollapsedDropdown dropdown ${collapsedDropdownClass}`} key='collapsed-dropdown' ref={ref}>\n <a\n id='basic-nav-dropdown'\n role='button'\n className='dropdown-toggle text-color-gray'\n aria-haspopup='true'\n aria-expanded='true'\n onClick={onDropdownClick}\n >\n <span className='rioglyph rioglyph-option-horizontal' aria-hidden='true' />\n </a>\n\n <ul className='dropdown-menu' role='menu' aria-labelledby='basic-nav-dropdown'>\n {navItems.map(navItem => (\n <li key={navItem.key} className='submodule' onClick={onItemClick} data-nav-item-key={navItem.key}>\n {navItem.route}\n </li>\n ))}\n </ul>\n </li>\n );\n});\n\nexport default CollapsedNavItem;\n"],"names":["CollapsedNavItem","forwardRef","props","ref","show","navItems","actionBarItems","onDropdownClick","onItemClick","isEmpty","jsx","navItem"],"mappings":";;;AAeA,MAAMA,IAAmBC,EAAW,CAACC,GAA8BC,MAAa;AAC5E,QAAM,EAAE,MAAAC,IAAO,IAAO,UAAAC,GAAU,gBAAAC,GAAgB,iBAAAC,GAAiB,aAAAC,MAAgBN;AAEjF,SAAIO,EAAQJ,CAAQ,KAAKI,EAAQH,CAAc,IACpC,yBAMN,MAAA,EAAG,WAAW,8BAHYF,IAAO,SAAS,EAGwB,IAA6B,KAAAD,GAC5F,UAAA;AAAA,IAAA,gBAAAO;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,MAAK;AAAA,QACL,WAAU;AAAA,QACV,iBAAc;AAAA,QACd,iBAAc;AAAA,QACd,SAASH;AAAA,QAET,UAAA,gBAAAG,EAAC,QAAA,EAAK,WAAU,uCAAsC,eAAY,OAAA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,IAG7E,gBAAAA,EAAC,MAAA,EAAG,WAAU,iBAAgB,MAAK,QAAO,mBAAgB,sBACrD,UAAAL,EAAS,IAAI,CAAAM,MACV,gBAAAD,EAAC,QAAqB,WAAU,aAAY,SAASF,GAAa,qBAAmBG,EAAQ,KACxF,UAAAA,EAAQ,MAAA,GADJA,EAAQ,GAEjB,CACH,EAAA,CACL;AAAA,EAAA,EAAA,GAlBuE,oBAmB3E;AAER,CAAC;"}
@@ -5,10 +5,10 @@ import q from "../../utils/classNames.js";
5
5
  import z from "../../hooks/useClickOutside.js";
6
6
  import B from "./CollapsedNavItem.js";
7
7
  const $ = 50, F = 15, Q = (C) => {
8
- const { navItems: r = [], actionBarItems: d = [], containerWidth: k } = C, [n, a] = m(!1), [u, W] = m([]), [y, g] = m([]), w = z(() => a(!1)), f = b(null), t = b(!0);
8
+ const { navItems: n = [], actionBarItems: d = [], containerWidth: k } = C, [o, a] = m(!1), [u, W] = m([]), [y, g] = m([]), w = z(() => a(!1)), f = b(null), t = b(!0);
9
9
  L(() => {
10
10
  t.current = !0;
11
- }, [r, d, k]), V(() => {
11
+ }, [n, d, k]), V(() => {
12
12
  t.current && E();
13
13
  });
14
14
  const D = (e) => e.scrollWidth - $ - F, E = () => {
@@ -18,22 +18,22 @@ const $ = 50, F = 15, Q = (C) => {
18
18
  const s = [...e.children || []], v = D(e);
19
19
  if (v < 0)
20
20
  return;
21
- let o = 0;
21
+ let r = 0;
22
22
  const I = [], N = [];
23
23
  s.forEach((l) => {
24
24
  if (!l.className)
25
25
  return;
26
- o = o + l.scrollWidth;
27
- const c = r.find((A) => {
26
+ r = r + l.scrollWidth;
27
+ const c = n.find((A) => {
28
28
  const h = l.attributes.getNamedItem("data-nav-item-key");
29
29
  return h && A.key === h.value;
30
30
  });
31
- c && (v > o ? I.push(c) : N.push(c));
31
+ c && (v > r ? I.push(c) : N.push(c));
32
32
  }), t.current = !1, g(I), W(N);
33
33
  }, O = () => {
34
- a(!n);
34
+ a(!o);
35
35
  }, S = () => {
36
- n && a(!1);
36
+ o && a(!1);
37
37
  }, p = (e, s) => /* @__PURE__ */ i(
38
38
  "li",
39
39
  {
@@ -48,7 +48,7 @@ const $ = 50, F = 15, Q = (C) => {
48
48
  B,
49
49
  {
50
50
  ref: w,
51
- show: n,
51
+ show: o,
52
52
  navItems: u,
53
53
  actionBarItems: d,
54
54
  onDropdownClick: O,
@@ -56,7 +56,7 @@ const $ = 50, F = 15, Q = (C) => {
56
56
  },
57
57
  "CollapsedNavItem"
58
58
  )
59
- ] : r.map((e) => p(e, t.current)), R = q("SubmoduleNavigation", "nav");
59
+ ] : n.map((e) => p(e, t.current)), R = q("SubmoduleNavigation", "nav");
60
60
  return /* @__PURE__ */ i("ul", { className: R, ref: f, children: x() });
61
61
  };
62
62
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"NavItems.js","sources":["../../../src/components/applicationHeader/NavItems.tsx"],"sourcesContent":["import type React from 'react';\nimport { useState, useEffect, useLayoutEffect, useRef } from 'react';\nimport { isEmpty } from 'es-toolkit/compat';\n\nimport classNames from '../../utils/classNames';\nimport useClickOutside from '../../hooks/useClickOutside';\nimport CollapsedNavItem from './CollapsedNavItem';\nimport type { ModulePropType } from './ApplicationHeader';\n\nconst collapsedDropdownWidth = 50;\nconst paddingLeft = 15;\n\nexport type NavItemsProps = {\n navItems?: ModulePropType[];\n containerWidth: number;\n actionBarItems?: React.ReactNode[];\n};\n\nexport const NavItems = (props: NavItemsProps) => {\n const { navItems: externalNavItems = [], actionBarItems = [], containerWidth } = props;\n\n const [isCollapsedNavItemOpen, setIsCollapsedNavItemOpen] = useState(false);\n const [collapsedNavItems, setCollapsedNavItems] = useState<ModulePropType[]>([]);\n const [visibleNavItems, setVisibleNavItems] = useState<ModulePropType[]>([]);\n\n const collapsedDropdownRef = useClickOutside(() => setIsCollapsedNavItemOpen(false));\n\n const navigationRef = useRef(null);\n const isOffscreen = useRef(true);\n\n // console.log({ containerWidth });\n\n // Before any new changes are applied\n useEffect(() => {\n // After the component received new props, every nav item has to be rendered offscreen\n // again without collapsing them into the dropdown to measure its width\n isOffscreen.current = true;\n }, [externalNavItems, actionBarItems, containerWidth]);\n\n // After the component has been rendered\n useLayoutEffect(() => {\n // After every nav item was rendered offscreen again we need to recalculate the width\n // of the items again and render the result with possible collapsible dropdown.\n if (isOffscreen.current) {\n computeNavItems();\n }\n });\n\n const getAvailableWidth = (element: HTMLElement) => {\n // Get relevant elements\n // const parent = element.parentNode;\n\n // const actionBar = head(parent.getElementsByClassName('ApplicationActionBar'));\n // const actionBarWidth = actionBar && actionBar.childElementCount > 0 ? actionBar.scrollWidth : 0;\n\n // Since the collapsed dropdown has not been rendered yet,\n // use the fixed with for it to compute available width\n const availableWidth = element.scrollWidth - collapsedDropdownWidth - paddingLeft;\n return availableWidth;\n };\n\n const computeNavItems = () => {\n const element: HTMLElement | null = navigationRef.current;\n\n if (!element) {\n return;\n }\n\n const navItems = [...((element as HTMLElement).children || [])];\n\n const availableWidth = getAvailableWidth(element);\n\n if (availableWidth < 0) {\n return;\n }\n\n // Iterate over all rendered navItems to figure out their widths in order to figure out\n // which navItems need to be rendered in the collapsed dropdown\n let requiredNavItemsSize = 0;\n\n const updatedVisibleItems: ModulePropType[] = [];\n const updatedCollapsedItems: ModulePropType[] = [];\n\n navItems.forEach(item => {\n if (!item.className) {\n return;\n }\n\n // Calculate the remaining width\n requiredNavItemsSize = requiredNavItemsSize + item.scrollWidth;\n\n // console.log({ requiredNavItemsSize });\n\n // Use the navItems.key to find corresponding navItems for each DOM node\n const matchedNavItem = externalNavItems.find(navItem => {\n const dataAttr = item.attributes.getNamedItem('data-nav-item-key');\n return dataAttr && navItem.key === dataAttr.value;\n });\n\n if (!matchedNavItem) {\n return;\n }\n\n // Add navItems to the visible group until the available with exceeds.\n // All other navItems will be added to the collapsed group\n if (availableWidth > requiredNavItemsSize) {\n updatedVisibleItems.push(matchedNavItem);\n } else {\n updatedCollapsedItems.push(matchedNavItem);\n }\n });\n\n // Set the state to render the navItems again\n isOffscreen.current = false;\n\n setVisibleNavItems(updatedVisibleItems);\n setCollapsedNavItems(updatedCollapsedItems);\n };\n\n const handleCollapsedDropdown = () => {\n // When the dropdown is open, set showCollapsedNavItems to false so all submodule items\n // are rendered and their size can be computed\n if (isCollapsedNavItemOpen) {\n setIsCollapsedNavItemOpen(false);\n } else {\n // When the dropdown is closed, just set the flag to open is enough\n setIsCollapsedNavItemOpen(true);\n }\n };\n\n const handleCollapsedNavItemSelected = () => {\n // Close collapsed dropdown on item select\n if (isCollapsedNavItemOpen) {\n setIsCollapsedNavItemOpen(false);\n }\n };\n\n const renderNavItem = (navItem: ModulePropType, isItemOffscreen: boolean) => {\n return (\n <li\n key={navItem.key}\n className={`submodule ${isItemOffscreen ? 'offscreen' : ''}`}\n data-nav-item-key={navItem.key}\n >\n {navItem.route}\n </li>\n );\n };\n\n const renderNavItems = () => {\n if (!isOffscreen.current && !isEmpty(collapsedNavItems)) {\n const visibleItems = visibleNavItems.map(navItem => renderNavItem(navItem, isOffscreen.current));\n\n return [\n ...visibleItems,\n <CollapsedNavItem\n key='CollapsedNavItem'\n ref={collapsedDropdownRef}\n show={isCollapsedNavItemOpen}\n navItems={collapsedNavItems}\n actionBarItems={actionBarItems}\n onDropdownClick={handleCollapsedDropdown}\n onItemClick={handleCollapsedNavItemSelected}\n />,\n ];\n }\n\n return externalNavItems.map(navItem => renderNavItem(navItem, isOffscreen.current));\n };\n\n // As all navItems need to be added to the DOM first in order to get their real size\n // the computation whether a navItem need to be shown under the collapsed dropdown or not\n // needs to be done after the component did mount to the DOM.\n\n const classes = classNames('SubmoduleNavigation', 'nav');\n\n return (\n <ul className={classes} ref={navigationRef}>\n {renderNavItems()}\n </ul>\n );\n};\n\nexport default NavItems;\n"],"names":["collapsedDropdownWidth","paddingLeft","NavItems","props","externalNavItems","actionBarItems","containerWidth","isCollapsedNavItemOpen","setIsCollapsedNavItemOpen","useState","collapsedNavItems","setCollapsedNavItems","visibleNavItems","setVisibleNavItems","collapsedDropdownRef","useClickOutside","navigationRef","useRef","isOffscreen","useEffect","useLayoutEffect","computeNavItems","getAvailableWidth","element","navItems","availableWidth","requiredNavItemsSize","updatedVisibleItems","updatedCollapsedItems","item","matchedNavItem","navItem","dataAttr","handleCollapsedDropdown","handleCollapsedNavItemSelected","renderNavItem","isItemOffscreen","jsx","renderNavItems","isEmpty","CollapsedNavItem","classes","classNames"],"mappings":";;;;;;AASA,MAAMA,IAAyB,IACzBC,IAAc,IAQPC,IAAW,CAACC,MAAyB;AAC9C,QAAM,EAAE,UAAUC,IAAmB,CAAA,GAAI,gBAAAC,IAAiB,CAAA,GAAI,gBAAAC,EAAA,IAAmBH,GAE3E,CAACI,GAAwBC,CAAyB,IAAIC,EAAS,EAAK,GACpE,CAACC,GAAmBC,CAAoB,IAAIF,EAA2B,CAAA,CAAE,GACzE,CAACG,GAAiBC,CAAkB,IAAIJ,EAA2B,CAAA,CAAE,GAErEK,IAAuBC,EAAgB,MAAMP,EAA0B,EAAK,CAAC,GAE7EQ,IAAgBC,EAAO,IAAI,GAC3BC,IAAcD,EAAO,EAAI;AAK/B,EAAAE,EAAU,MAAM;AAGZ,IAAAD,EAAY,UAAU;AAAA,EAC1B,GAAG,CAACd,GAAkBC,GAAgBC,CAAc,CAAC,GAGrDc,EAAgB,MAAM;AAGlB,IAAIF,EAAY,WACZG,EAAA;AAAA,EAER,CAAC;AAED,QAAMC,IAAoB,CAACC,MASAA,EAAQ,cAAcvB,IAAyBC,GAIpEoB,IAAkB,MAAM;AAC1B,UAAME,IAA8BP,EAAc;AAElD,QAAI,CAACO;AACD;AAGJ,UAAMC,IAAW,CAAC,GAAKD,EAAwB,YAAY,CAAA,CAAG,GAExDE,IAAiBH,EAAkBC,CAAO;AAEhD,QAAIE,IAAiB;AACjB;AAKJ,QAAIC,IAAuB;AAE3B,UAAMC,IAAwC,CAAA,GACxCC,IAA0C,CAAA;AAEhD,IAAAJ,EAAS,QAAQ,CAAAK,MAAQ;AACrB,UAAI,CAACA,EAAK;AACN;AAIJ,MAAAH,IAAuBA,IAAuBG,EAAK;AAKnD,YAAMC,IAAiB1B,EAAiB,KAAK,CAAA2B,MAAW;AACpD,cAAMC,IAAWH,EAAK,WAAW,aAAa,mBAAmB;AACjE,eAAOG,KAAYD,EAAQ,QAAQC,EAAS;AAAA,MAChD,CAAC;AAED,MAAKF,MAMDL,IAAiBC,IACjBC,EAAoB,KAAKG,CAAc,IAEvCF,EAAsB,KAAKE,CAAc;AAAA,IAEjD,CAAC,GAGDZ,EAAY,UAAU,IAEtBL,EAAmBc,CAAmB,GACtChB,EAAqBiB,CAAqB;AAAA,EAC9C,GAEMK,IAA0B,MAAM;AAGlC,IACIzB,EADA,CAAAD,CAC+B;AAAA,EAKvC,GAEM2B,IAAiC,MAAM;AAEzC,IAAI3B,KACAC,EAA0B,EAAK;AAAA,EAEvC,GAEM2B,IAAgB,CAACJ,GAAyBK,MAExC,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MAEG,WAAW,aAAaD,IAAkB,cAAc,EAAE;AAAA,MAC1D,qBAAmBL,EAAQ;AAAA,MAE1B,UAAAA,EAAQ;AAAA,IAAA;AAAA,IAJJA,EAAQ;AAAA,EAAA,GASnBO,IAAiB,MACf,CAACpB,EAAY,WAAW,CAACqB,EAAQ7B,CAAiB,IAG3C;AAAA,IACH,GAHiBE,EAAgB,IAAI,CAAAmB,MAAWI,EAAcJ,GAASb,EAAY,OAAO,CAAC;AAAA,IAI3F,gBAAAmB;AAAA,MAACG;AAAA,MAAA;AAAA,QAEG,KAAK1B;AAAA,QACL,MAAMP;AAAA,QACN,UAAUG;AAAA,QACV,gBAAAL;AAAA,QACA,iBAAiB4B;AAAA,QACjB,aAAaC;AAAA,MAAA;AAAA,MANT;AAAA,IAAA;AAAA,EAOR,IAID9B,EAAiB,IAAI,CAAA2B,MAAWI,EAAcJ,GAASb,EAAY,OAAO,CAAC,GAOhFuB,IAAUC,EAAW,uBAAuB,KAAK;AAEvD,2BACK,MAAA,EAAG,WAAWD,GAAS,KAAKzB,GACxB,eACL;AAER;"}
1
+ {"version":3,"file":"NavItems.js","sources":["../../../src/components/applicationHeader/NavItems.tsx"],"sourcesContent":["import type React from 'react';\nimport { useState, useEffect, useLayoutEffect, useRef } from 'react';\nimport { isEmpty } from 'es-toolkit/compat';\n\nimport classNames from '../../utils/classNames';\nimport useClickOutside from '../../hooks/useClickOutside';\nimport CollapsedNavItem from './CollapsedNavItem';\nimport type { ModulePropType } from './ApplicationHeader';\n\nconst collapsedDropdownWidth = 50;\nconst paddingLeft = 15;\n\nexport type NavItemsProps = {\n navItems?: ModulePropType[];\n containerWidth: number;\n actionBarItems?: React.ReactNode[];\n};\n\nexport const NavItems = (props: NavItemsProps) => {\n const { navItems: externalNavItems = [], actionBarItems = [], containerWidth } = props;\n\n const [isCollapsedNavItemOpen, setIsCollapsedNavItemOpen] = useState(false);\n const [collapsedNavItems, setCollapsedNavItems] = useState<ModulePropType[]>([]);\n const [visibleNavItems, setVisibleNavItems] = useState<ModulePropType[]>([]);\n\n const collapsedDropdownRef = useClickOutside(() => setIsCollapsedNavItemOpen(false));\n\n const navigationRef = useRef(null);\n const isOffscreen = useRef(true);\n\n // console.log({ containerWidth });\n\n // Before any new changes are applied\n useEffect(() => {\n // After the component received new props, every nav item has to be rendered offscreen\n // again without collapsing them into the dropdown to measure its width\n isOffscreen.current = true;\n }, [externalNavItems, actionBarItems, containerWidth]);\n\n // After the component has been rendered\n useLayoutEffect(() => {\n // After every nav item was rendered offscreen again we need to recalculate the width\n // of the items again and render the result with possible collapsible dropdown.\n if (isOffscreen.current) {\n computeNavItems();\n }\n });\n\n const getAvailableWidth = (element: HTMLElement) => {\n // Get relevant elements\n // const parent = element.parentNode;\n\n // const actionBar = head(parent.getElementsByClassName('ApplicationActionBar'));\n // const actionBarWidth = actionBar && actionBar.childElementCount > 0 ? actionBar.scrollWidth : 0;\n\n // Since the collapsed dropdown has not been rendered yet,\n // use the fixed with for it to compute available width\n const availableWidth = element.scrollWidth - collapsedDropdownWidth - paddingLeft;\n return availableWidth;\n };\n\n const computeNavItems = () => {\n const element: HTMLElement | null = navigationRef.current;\n\n if (!element) {\n return;\n }\n\n const navItems = [...((element as HTMLElement).children || [])];\n\n const availableWidth = getAvailableWidth(element);\n\n if (availableWidth < 0) {\n return;\n }\n\n // Iterate over all rendered navItems to figure out their widths in order to figure out\n // which navItems need to be rendered in the collapsed dropdown\n let requiredNavItemsSize = 0;\n\n const updatedVisibleItems: ModulePropType[] = [];\n const updatedCollapsedItems: ModulePropType[] = [];\n\n navItems.forEach(item => {\n if (!item.className) {\n return;\n }\n\n // Calculate the remaining width\n requiredNavItemsSize = requiredNavItemsSize + item.scrollWidth;\n\n // console.log({ requiredNavItemsSize });\n\n // Use the navItems.key to find corresponding navItems for each DOM node\n const matchedNavItem = externalNavItems.find(navItem => {\n const dataAttr = item.attributes.getNamedItem('data-nav-item-key');\n return dataAttr && navItem.key === dataAttr.value;\n });\n\n if (!matchedNavItem) {\n return;\n }\n\n // Add navItems to the visible group until the available with exceeds.\n // All other navItems will be added to the collapsed group\n if (availableWidth > requiredNavItemsSize) {\n updatedVisibleItems.push(matchedNavItem);\n } else {\n updatedCollapsedItems.push(matchedNavItem);\n }\n });\n\n // Set the state to render the navItems again\n isOffscreen.current = false;\n\n setVisibleNavItems(updatedVisibleItems);\n setCollapsedNavItems(updatedCollapsedItems);\n };\n\n const handleCollapsedDropdown = () => {\n // When the dropdown is open, set showCollapsedNavItems to false so all submodule items\n // are rendered and their size can be computed\n if (isCollapsedNavItemOpen) {\n setIsCollapsedNavItemOpen(false);\n } else {\n // When the dropdown is closed, just set the flag to open is enough\n setIsCollapsedNavItemOpen(true);\n }\n };\n\n const handleCollapsedNavItemSelected = () => {\n // Close collapsed dropdown on item select\n if (isCollapsedNavItemOpen) {\n setIsCollapsedNavItemOpen(false);\n }\n };\n\n const renderNavItem = (navItem: ModulePropType, isItemOffscreen: boolean) => (\n <li\n key={navItem.key}\n className={`submodule ${isItemOffscreen ? 'offscreen' : ''}`}\n data-nav-item-key={navItem.key}\n >\n {navItem.route}\n </li>\n );\n\n const renderNavItems = () => {\n if (!isOffscreen.current && !isEmpty(collapsedNavItems)) {\n const visibleItems = visibleNavItems.map(navItem => renderNavItem(navItem, isOffscreen.current));\n\n return [\n ...visibleItems,\n <CollapsedNavItem\n key='CollapsedNavItem'\n ref={collapsedDropdownRef}\n show={isCollapsedNavItemOpen}\n navItems={collapsedNavItems}\n actionBarItems={actionBarItems}\n onDropdownClick={handleCollapsedDropdown}\n onItemClick={handleCollapsedNavItemSelected}\n />,\n ];\n }\n\n return externalNavItems.map(navItem => renderNavItem(navItem, isOffscreen.current));\n };\n\n // As all navItems need to be added to the DOM first in order to get their real size\n // the computation whether a navItem need to be shown under the collapsed dropdown or not\n // needs to be done after the component did mount to the DOM.\n\n const classes = classNames('SubmoduleNavigation', 'nav');\n\n return (\n <ul className={classes} ref={navigationRef}>\n {renderNavItems()}\n </ul>\n );\n};\n\nexport default NavItems;\n"],"names":["collapsedDropdownWidth","paddingLeft","NavItems","props","externalNavItems","actionBarItems","containerWidth","isCollapsedNavItemOpen","setIsCollapsedNavItemOpen","useState","collapsedNavItems","setCollapsedNavItems","visibleNavItems","setVisibleNavItems","collapsedDropdownRef","useClickOutside","navigationRef","useRef","isOffscreen","useEffect","useLayoutEffect","computeNavItems","getAvailableWidth","element","navItems","availableWidth","requiredNavItemsSize","updatedVisibleItems","updatedCollapsedItems","item","matchedNavItem","navItem","dataAttr","handleCollapsedDropdown","handleCollapsedNavItemSelected","renderNavItem","isItemOffscreen","jsx","renderNavItems","isEmpty","CollapsedNavItem","classes","classNames"],"mappings":";;;;;;AASA,MAAMA,IAAyB,IACzBC,IAAc,IAQPC,IAAW,CAACC,MAAyB;AAC9C,QAAM,EAAE,UAAUC,IAAmB,CAAA,GAAI,gBAAAC,IAAiB,CAAA,GAAI,gBAAAC,EAAA,IAAmBH,GAE3E,CAACI,GAAwBC,CAAyB,IAAIC,EAAS,EAAK,GACpE,CAACC,GAAmBC,CAAoB,IAAIF,EAA2B,CAAA,CAAE,GACzE,CAACG,GAAiBC,CAAkB,IAAIJ,EAA2B,CAAA,CAAE,GAErEK,IAAuBC,EAAgB,MAAMP,EAA0B,EAAK,CAAC,GAE7EQ,IAAgBC,EAAO,IAAI,GAC3BC,IAAcD,EAAO,EAAI;AAK/B,EAAAE,EAAU,MAAM;AAGZ,IAAAD,EAAY,UAAU;AAAA,EAC1B,GAAG,CAACd,GAAkBC,GAAgBC,CAAc,CAAC,GAGrDc,EAAgB,MAAM;AAGlB,IAAIF,EAAY,WACZG,EAAA;AAAA,EAER,CAAC;AAED,QAAMC,IAAoB,CAACC,MASAA,EAAQ,cAAcvB,IAAyBC,GAIpEoB,IAAkB,MAAM;AAC1B,UAAME,IAA8BP,EAAc;AAElD,QAAI,CAACO;AACD;AAGJ,UAAMC,IAAW,CAAC,GAAKD,EAAwB,YAAY,CAAA,CAAG,GAExDE,IAAiBH,EAAkBC,CAAO;AAEhD,QAAIE,IAAiB;AACjB;AAKJ,QAAIC,IAAuB;AAE3B,UAAMC,IAAwC,CAAA,GACxCC,IAA0C,CAAA;AAEhD,IAAAJ,EAAS,QAAQ,CAAAK,MAAQ;AACrB,UAAI,CAACA,EAAK;AACN;AAIJ,MAAAH,IAAuBA,IAAuBG,EAAK;AAKnD,YAAMC,IAAiB1B,EAAiB,KAAK,CAAA2B,MAAW;AACpD,cAAMC,IAAWH,EAAK,WAAW,aAAa,mBAAmB;AACjE,eAAOG,KAAYD,EAAQ,QAAQC,EAAS;AAAA,MAChD,CAAC;AAED,MAAKF,MAMDL,IAAiBC,IACjBC,EAAoB,KAAKG,CAAc,IAEvCF,EAAsB,KAAKE,CAAc;AAAA,IAEjD,CAAC,GAGDZ,EAAY,UAAU,IAEtBL,EAAmBc,CAAmB,GACtChB,EAAqBiB,CAAqB;AAAA,EAC9C,GAEMK,IAA0B,MAAM;AAGlC,IACIzB,EADA,CAAAD,CAC+B;AAAA,EAKvC,GAEM2B,IAAiC,MAAM;AAEzC,IAAI3B,KACAC,EAA0B,EAAK;AAAA,EAEvC,GAEM2B,IAAgB,CAACJ,GAAyBK,MAC5C,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MAEG,WAAW,aAAaD,IAAkB,cAAc,EAAE;AAAA,MAC1D,qBAAmBL,EAAQ;AAAA,MAE1B,UAAAA,EAAQ;AAAA,IAAA;AAAA,IAJJA,EAAQ;AAAA,EAAA,GAQfO,IAAiB,MACf,CAACpB,EAAY,WAAW,CAACqB,EAAQ7B,CAAiB,IAG3C;AAAA,IACH,GAHiBE,EAAgB,IAAI,CAAAmB,MAAWI,EAAcJ,GAASb,EAAY,OAAO,CAAC;AAAA,IAI3F,gBAAAmB;AAAA,MAACG;AAAA,MAAA;AAAA,QAEG,KAAK1B;AAAA,QACL,MAAMP;AAAA,QACN,UAAUG;AAAA,QACV,gBAAAL;AAAA,QACA,iBAAiB4B;AAAA,QACjB,aAAaC;AAAA,MAAA;AAAA,MANT;AAAA,IAAA;AAAA,EAOR,IAID9B,EAAiB,IAAI,CAAA2B,MAAWI,EAAcJ,GAASb,EAAY,OAAO,CAAC,GAOhFuB,IAAUC,EAAW,uBAAuB,KAAK;AAEvD,2BACK,MAAA,EAAG,WAAWD,GAAS,KAAKzB,GACxB,eACL;AAER;"}