@cratis/components 1.5.1 → 1.6.6

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 (380) hide show
  1. package/dist/cjs/CommandDialog/CommandDialog.js +9 -2
  2. package/dist/cjs/CommandDialog/CommandDialog.js.map +1 -1
  3. package/dist/cjs/CommandDialog/StepperCommandDialog.js +21 -2
  4. package/dist/cjs/CommandDialog/StepperCommandDialog.js.map +1 -1
  5. package/dist/cjs/CommandDialog/index.js +2 -1
  6. package/dist/cjs/CommandDialog/index.js.map +1 -1
  7. package/dist/cjs/CommandForm/fields/CalendarField.js.map +1 -1
  8. package/dist/cjs/CommandForm/fields/CheckboxField.js.map +1 -1
  9. package/dist/cjs/CommandForm/fields/ChipsField.js.map +1 -1
  10. package/dist/cjs/CommandForm/fields/ColorPickerField.js.map +1 -1
  11. package/dist/cjs/CommandForm/fields/DropdownField.js.map +1 -1
  12. package/dist/cjs/CommandForm/fields/InputTextField.js.map +1 -1
  13. package/dist/cjs/CommandForm/fields/MultiSelectField.js.map +1 -1
  14. package/dist/cjs/CommandForm/fields/NumberField.js.map +1 -1
  15. package/dist/cjs/CommandForm/fields/SliderField.js.map +1 -1
  16. package/dist/cjs/CommandForm/fields/TextAreaField.js.map +1 -1
  17. package/dist/cjs/CommandForm/index.js +2 -34
  18. package/dist/cjs/CommandForm/index.js.map +1 -1
  19. package/dist/cjs/Common/ErrorBoundary.js.map +1 -1
  20. package/dist/cjs/Common/FormElement.js.map +1 -1
  21. package/dist/cjs/Common/Page.js.map +1 -1
  22. package/dist/cjs/Common/Tooltip.js +4 -0
  23. package/dist/cjs/Common/Tooltip.js.map +1 -1
  24. package/dist/cjs/Common/index.js +2 -1
  25. package/dist/cjs/Common/index.js.map +1 -1
  26. package/dist/cjs/DataPage/DataPage.js +6 -0
  27. package/dist/cjs/DataPage/DataPage.js.map +1 -1
  28. package/dist/cjs/DataPage/index.js +2 -1
  29. package/dist/cjs/DataPage/index.js.map +1 -1
  30. package/dist/cjs/DataTables/DataTableForObservableQuery.js +5 -0
  31. package/dist/cjs/DataTables/DataTableForObservableQuery.js.map +1 -1
  32. package/dist/cjs/DataTables/DataTableForQuery.js +5 -0
  33. package/dist/cjs/DataTables/DataTableForQuery.js.map +1 -1
  34. package/dist/cjs/DataTables/index.js +2 -1
  35. package/dist/cjs/DataTables/index.js.map +1 -1
  36. package/dist/cjs/Dialogs/BusyIndicatorDialog.js.map +1 -1
  37. package/dist/cjs/Dialogs/ConfirmationDialog.js.map +1 -1
  38. package/dist/cjs/Dialogs/Dialog.js +7 -1
  39. package/dist/cjs/Dialogs/Dialog.js.map +1 -1
  40. package/dist/cjs/Dialogs/index.js +2 -1
  41. package/dist/cjs/Dialogs/index.js.map +1 -1
  42. package/dist/cjs/Dropdown/Dropdown.js +1 -0
  43. package/dist/cjs/Dropdown/Dropdown.js.map +1 -1
  44. package/dist/cjs/Dropdown/index.js +2 -1
  45. package/dist/cjs/Dropdown/index.js.map +1 -1
  46. package/dist/cjs/ObjectContentEditor/ObjectContentEditor.js.map +1 -1
  47. package/dist/cjs/ObjectContentEditor/index.js +2 -1
  48. package/dist/cjs/ObjectContentEditor/index.js.map +1 -1
  49. package/dist/cjs/ObjectContentEditor/objectHelpers.js +6 -0
  50. package/dist/cjs/ObjectContentEditor/objectHelpers.js.map +1 -1
  51. package/dist/cjs/ObjectNavigationalBar/ObjectNavigationalBar.js.map +1 -1
  52. package/dist/cjs/ObjectNavigationalBar/breadcrumbHelpers.js +6 -0
  53. package/dist/cjs/ObjectNavigationalBar/breadcrumbHelpers.js.map +1 -1
  54. package/dist/cjs/ObjectNavigationalBar/index.js +2 -1
  55. package/dist/cjs/ObjectNavigationalBar/index.js.map +1 -1
  56. package/dist/cjs/PivotViewer/PivotViewer.js +28 -0
  57. package/dist/cjs/PivotViewer/PivotViewer.js.map +1 -1
  58. package/dist/cjs/PivotViewer/components/AxisLabels.js +4 -0
  59. package/dist/cjs/PivotViewer/components/AxisLabels.js.map +1 -1
  60. package/dist/cjs/PivotViewer/components/DetailPanel.js.map +1 -1
  61. package/dist/cjs/PivotViewer/components/FilterPanel.js +4 -0
  62. package/dist/cjs/PivotViewer/components/FilterPanel.js.map +1 -1
  63. package/dist/cjs/PivotViewer/components/FilterPanelContainer.js.map +1 -1
  64. package/dist/cjs/PivotViewer/components/PivotCanvas.js +138 -2
  65. package/dist/cjs/PivotViewer/components/PivotCanvas.js.map +1 -1
  66. package/dist/cjs/PivotViewer/components/PivotViewerMain.js +4 -0
  67. package/dist/cjs/PivotViewer/components/PivotViewerMain.js.map +1 -1
  68. package/dist/cjs/PivotViewer/components/RangeHistogramFilter.js.map +1 -1
  69. package/dist/cjs/PivotViewer/components/Spinner.js.map +1 -1
  70. package/dist/cjs/PivotViewer/components/Toolbar.js.map +1 -1
  71. package/dist/cjs/PivotViewer/components/ToolbarContainer.js.map +1 -1
  72. package/dist/cjs/PivotViewer/components/pivot/animation.js +8 -1
  73. package/dist/cjs/PivotViewer/components/pivot/animation.js.map +1 -1
  74. package/dist/cjs/PivotViewer/components/pivot/colorResolver.js +3 -1
  75. package/dist/cjs/PivotViewer/components/pivot/colorResolver.js.map +1 -1
  76. package/dist/cjs/PivotViewer/components/pivot/constants.js +8 -5
  77. package/dist/cjs/PivotViewer/components/pivot/constants.js.map +1 -1
  78. package/dist/cjs/PivotViewer/components/pivot/groups.js +15 -0
  79. package/dist/cjs/PivotViewer/components/pivot/groups.js.map +1 -1
  80. package/dist/cjs/PivotViewer/components/pivot/sprites.js +32 -13
  81. package/dist/cjs/PivotViewer/components/pivot/sprites.js.map +1 -1
  82. package/dist/cjs/PivotViewer/components/pivot/visibility.js +102 -3
  83. package/dist/cjs/PivotViewer/components/pivot/visibility.js.map +1 -1
  84. package/dist/cjs/PivotViewer/constants.js +2 -0
  85. package/dist/cjs/PivotViewer/constants.js.map +1 -1
  86. package/dist/cjs/PivotViewer/engine/layout.js +23 -0
  87. package/dist/cjs/PivotViewer/engine/layout.js.map +1 -1
  88. package/dist/cjs/PivotViewer/engine/store.js +29 -0
  89. package/dist/cjs/PivotViewer/engine/store.js.map +1 -1
  90. package/dist/cjs/PivotViewer/hooks/useAnimationModeTracking.js +8 -0
  91. package/dist/cjs/PivotViewer/hooks/useAnimationModeTracking.js.map +1 -1
  92. package/dist/cjs/PivotViewer/hooks/useCardSelection.js +10 -1
  93. package/dist/cjs/PivotViewer/hooks/useCardSelection.js.map +1 -1
  94. package/dist/cjs/PivotViewer/hooks/useContainerDimensions.js +11 -0
  95. package/dist/cjs/PivotViewer/hooks/useContainerDimensions.js.map +1 -1
  96. package/dist/cjs/PivotViewer/hooks/useCurrentFilters.js +6 -0
  97. package/dist/cjs/PivotViewer/hooks/useCurrentFilters.js.map +1 -1
  98. package/dist/cjs/PivotViewer/hooks/useDetailPanelClose.js +11 -1
  99. package/dist/cjs/PivotViewer/hooks/useDetailPanelClose.js.map +1 -1
  100. package/dist/cjs/PivotViewer/hooks/useDimensionState.js +2 -0
  101. package/dist/cjs/PivotViewer/hooks/useDimensionState.js.map +1 -1
  102. package/dist/cjs/PivotViewer/hooks/useFieldExtractors.js +2 -0
  103. package/dist/cjs/PivotViewer/hooks/useFieldExtractors.js.map +1 -1
  104. package/dist/cjs/PivotViewer/hooks/useFilterOptions.js +2 -0
  105. package/dist/cjs/PivotViewer/hooks/useFilterOptions.js.map +1 -1
  106. package/dist/cjs/PivotViewer/hooks/useFilterState.js +5 -0
  107. package/dist/cjs/PivotViewer/hooks/useFilterState.js.map +1 -1
  108. package/dist/cjs/PivotViewer/hooks/usePanning.js +14 -0
  109. package/dist/cjs/PivotViewer/hooks/usePanning.js.map +1 -1
  110. package/dist/cjs/PivotViewer/hooks/usePivotEngine.js +7 -0
  111. package/dist/cjs/PivotViewer/hooks/usePivotEngine.js.map +1 -1
  112. package/dist/cjs/PivotViewer/hooks/useScrollSync.js +6 -0
  113. package/dist/cjs/PivotViewer/hooks/useScrollSync.js.map +1 -1
  114. package/dist/cjs/PivotViewer/hooks/useViewModeScrollHandling.js +9 -0
  115. package/dist/cjs/PivotViewer/hooks/useViewModeScrollHandling.js.map +1 -1
  116. package/dist/cjs/PivotViewer/hooks/useWheelZoom.js +8 -2
  117. package/dist/cjs/PivotViewer/hooks/useWheelZoom.js.map +1 -1
  118. package/dist/cjs/PivotViewer/hooks/useZoomState.js +2 -0
  119. package/dist/cjs/PivotViewer/hooks/useZoomState.js.map +1 -1
  120. package/dist/cjs/PivotViewer/index.js +2 -1
  121. package/dist/cjs/PivotViewer/index.js.map +1 -1
  122. package/dist/cjs/PivotViewer/types.js +11 -0
  123. package/dist/cjs/PivotViewer/types.js.map +1 -1
  124. package/dist/cjs/PivotViewer/utils/animations.js +35 -2
  125. package/dist/cjs/PivotViewer/utils/animations.js.map +1 -1
  126. package/dist/cjs/PivotViewer/utils/cardPosition.js +21 -3
  127. package/dist/cjs/PivotViewer/utils/cardPosition.js.map +1 -1
  128. package/dist/cjs/PivotViewer/utils/constants.js +3 -0
  129. package/dist/cjs/PivotViewer/utils/constants.js.map +1 -1
  130. package/dist/cjs/PivotViewer/utils/idResolution.js +16 -0
  131. package/dist/cjs/PivotViewer/utils/idResolution.js.map +1 -1
  132. package/dist/cjs/PivotViewer/utils/selection.js +25 -0
  133. package/dist/cjs/PivotViewer/utils/selection.js.map +1 -1
  134. package/dist/cjs/PivotViewer/utils/utils.js +5 -0
  135. package/dist/cjs/PivotViewer/utils/utils.js.map +1 -1
  136. package/dist/cjs/SchemaEditor/NameCell.js.map +1 -1
  137. package/dist/cjs/SchemaEditor/SchemaEditor.js.map +1 -1
  138. package/dist/cjs/SchemaEditor/TypeCell.js.map +1 -1
  139. package/dist/cjs/SchemaEditor/index.js +2 -1
  140. package/dist/cjs/SchemaEditor/index.js.map +1 -1
  141. package/dist/cjs/SchemaEditor/schemaHelpers.js +8 -0
  142. package/dist/cjs/SchemaEditor/schemaHelpers.js.map +1 -1
  143. package/dist/cjs/TimeMachine/EventsView.js +2 -0
  144. package/dist/cjs/TimeMachine/EventsView.js.map +1 -1
  145. package/dist/cjs/TimeMachine/Properties.js.map +1 -1
  146. package/dist/cjs/TimeMachine/ReadModelView.js +1 -0
  147. package/dist/cjs/TimeMachine/ReadModelView.js.map +1 -1
  148. package/dist/cjs/TimeMachine/TimeMachine.js +11 -1
  149. package/dist/cjs/TimeMachine/TimeMachine.js.map +1 -1
  150. package/dist/cjs/TimeMachine/index.js +2 -1
  151. package/dist/cjs/TimeMachine/index.js.map +1 -1
  152. package/dist/cjs/TimeMachine/propertiesHelpers.js +5 -0
  153. package/dist/cjs/TimeMachine/propertiesHelpers.js.map +1 -1
  154. package/dist/cjs/Toolbar/Toolbar.css +8 -0
  155. package/dist/cjs/Toolbar/Toolbar.js +7 -1
  156. package/dist/cjs/Toolbar/Toolbar.js.map +1 -1
  157. package/dist/cjs/Toolbar/ToolbarButton.js +16 -2
  158. package/dist/cjs/Toolbar/ToolbarButton.js.map +1 -1
  159. package/dist/cjs/Toolbar/ToolbarContext.js +8 -0
  160. package/dist/cjs/Toolbar/ToolbarContext.js.map +1 -1
  161. package/dist/cjs/Toolbar/ToolbarDragContext.js +24 -0
  162. package/dist/cjs/Toolbar/ToolbarDragContext.js.map +1 -0
  163. package/dist/cjs/Toolbar/ToolbarFanOutItem.js +11 -0
  164. package/dist/cjs/Toolbar/ToolbarFanOutItem.js.map +1 -1
  165. package/dist/cjs/Toolbar/ToolbarSection.js +18 -1
  166. package/dist/cjs/Toolbar/ToolbarSection.js.map +1 -1
  167. package/dist/cjs/Toolbar/ToolbarSeparator.js +6 -0
  168. package/dist/cjs/Toolbar/ToolbarSeparator.js.map +1 -1
  169. package/dist/cjs/Toolbar/index.js +2 -1
  170. package/dist/cjs/Toolbar/index.js.map +1 -1
  171. package/dist/cjs/tailwind-utilities.css +16 -1
  172. package/dist/cjs/types/TypeFormat.js +2 -0
  173. package/dist/cjs/types/TypeFormat.js.map +1 -1
  174. package/dist/cjs/types/index.js +2 -1
  175. package/dist/cjs/types/index.js.map +1 -1
  176. package/dist/cjs/useOverlayZIndex.js +10 -0
  177. package/dist/cjs/useOverlayZIndex.js.map +1 -1
  178. package/dist/esm/CommandDialog/CommandDialog.d.ts +2 -2
  179. package/dist/esm/CommandDialog/CommandDialog.d.ts.map +1 -1
  180. package/dist/esm/CommandDialog/CommandDialog.js +9 -2
  181. package/dist/esm/CommandDialog/CommandDialog.js.map +1 -1
  182. package/dist/esm/CommandDialog/CommandDialog.stories.d.ts +1 -0
  183. package/dist/esm/CommandDialog/CommandDialog.stories.d.ts.map +1 -1
  184. package/dist/esm/CommandDialog/CommandDialog.stories.js +52 -0
  185. package/dist/esm/CommandDialog/CommandDialog.stories.js.map +1 -1
  186. package/dist/esm/CommandDialog/StepperCommandDialog.d.ts +2 -2
  187. package/dist/esm/CommandDialog/StepperCommandDialog.d.ts.map +1 -1
  188. package/dist/esm/CommandDialog/StepperCommandDialog.js +21 -2
  189. package/dist/esm/CommandDialog/StepperCommandDialog.js.map +1 -1
  190. package/dist/esm/CommandDialog/StepperCommandDialog.stories.d.ts +1 -0
  191. package/dist/esm/CommandDialog/StepperCommandDialog.stories.d.ts.map +1 -1
  192. package/dist/esm/CommandDialog/StepperCommandDialog.stories.js +54 -0
  193. package/dist/esm/CommandDialog/StepperCommandDialog.stories.js.map +1 -1
  194. package/dist/esm/CommandDialog/index.js +3 -0
  195. package/dist/esm/CommandDialog/index.js.map +1 -1
  196. package/dist/esm/CommandForm/fields/CalendarField.js.map +1 -1
  197. package/dist/esm/CommandForm/fields/CheckboxField.js.map +1 -1
  198. package/dist/esm/CommandForm/fields/ChipsField.js.map +1 -1
  199. package/dist/esm/CommandForm/fields/ColorPickerField.js.map +1 -1
  200. package/dist/esm/CommandForm/fields/DropdownField.js.map +1 -1
  201. package/dist/esm/CommandForm/fields/InputTextField.js.map +1 -1
  202. package/dist/esm/CommandForm/fields/MultiSelectField.js.map +1 -1
  203. package/dist/esm/CommandForm/fields/NumberField.js.map +1 -1
  204. package/dist/esm/CommandForm/fields/SliderField.js.map +1 -1
  205. package/dist/esm/CommandForm/fields/TextAreaField.js.map +1 -1
  206. package/dist/esm/CommandForm/index.d.ts +0 -1
  207. package/dist/esm/CommandForm/index.d.ts.map +1 -1
  208. package/dist/esm/CommandForm/index.js +3 -1
  209. package/dist/esm/CommandForm/index.js.map +1 -1
  210. package/dist/esm/Common/ErrorBoundary.js.map +1 -1
  211. package/dist/esm/Common/FormElement.js.map +1 -1
  212. package/dist/esm/Common/Page.js.map +1 -1
  213. package/dist/esm/Common/Tooltip.js +4 -0
  214. package/dist/esm/Common/Tooltip.js.map +1 -1
  215. package/dist/esm/Common/index.js +3 -0
  216. package/dist/esm/Common/index.js.map +1 -1
  217. package/dist/esm/DataPage/DataPage.js +6 -0
  218. package/dist/esm/DataPage/DataPage.js.map +1 -1
  219. package/dist/esm/DataPage/index.js +3 -0
  220. package/dist/esm/DataPage/index.js.map +1 -1
  221. package/dist/esm/DataTables/DataTableForObservableQuery.js +5 -0
  222. package/dist/esm/DataTables/DataTableForObservableQuery.js.map +1 -1
  223. package/dist/esm/DataTables/DataTableForQuery.js +5 -0
  224. package/dist/esm/DataTables/DataTableForQuery.js.map +1 -1
  225. package/dist/esm/DataTables/index.js +3 -0
  226. package/dist/esm/DataTables/index.js.map +1 -1
  227. package/dist/esm/Dialogs/BusyIndicatorDialog.js.map +1 -1
  228. package/dist/esm/Dialogs/ConfirmationDialog.js.map +1 -1
  229. package/dist/esm/Dialogs/Dialog.js +7 -1
  230. package/dist/esm/Dialogs/Dialog.js.map +1 -1
  231. package/dist/esm/Dialogs/index.js +3 -0
  232. package/dist/esm/Dialogs/index.js.map +1 -1
  233. package/dist/esm/Dropdown/Dropdown.js +1 -0
  234. package/dist/esm/Dropdown/Dropdown.js.map +1 -1
  235. package/dist/esm/Dropdown/index.js +3 -0
  236. package/dist/esm/Dropdown/index.js.map +1 -1
  237. package/dist/esm/ObjectContentEditor/ObjectContentEditor.js.map +1 -1
  238. package/dist/esm/ObjectContentEditor/index.js +3 -0
  239. package/dist/esm/ObjectContentEditor/index.js.map +1 -1
  240. package/dist/esm/ObjectContentEditor/objectHelpers.js +6 -0
  241. package/dist/esm/ObjectContentEditor/objectHelpers.js.map +1 -1
  242. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.js.map +1 -1
  243. package/dist/esm/ObjectNavigationalBar/breadcrumbHelpers.js +6 -0
  244. package/dist/esm/ObjectNavigationalBar/breadcrumbHelpers.js.map +1 -1
  245. package/dist/esm/ObjectNavigationalBar/index.js +3 -0
  246. package/dist/esm/ObjectNavigationalBar/index.js.map +1 -1
  247. package/dist/esm/PivotViewer/PivotViewer.js +28 -0
  248. package/dist/esm/PivotViewer/PivotViewer.js.map +1 -1
  249. package/dist/esm/PivotViewer/components/AxisLabels.js +4 -0
  250. package/dist/esm/PivotViewer/components/AxisLabels.js.map +1 -1
  251. package/dist/esm/PivotViewer/components/DetailPanel.js.map +1 -1
  252. package/dist/esm/PivotViewer/components/FilterPanel.js +4 -0
  253. package/dist/esm/PivotViewer/components/FilterPanel.js.map +1 -1
  254. package/dist/esm/PivotViewer/components/FilterPanelContainer.js.map +1 -1
  255. package/dist/esm/PivotViewer/components/PivotCanvas.js +138 -2
  256. package/dist/esm/PivotViewer/components/PivotCanvas.js.map +1 -1
  257. package/dist/esm/PivotViewer/components/PivotViewerMain.js +4 -0
  258. package/dist/esm/PivotViewer/components/PivotViewerMain.js.map +1 -1
  259. package/dist/esm/PivotViewer/components/RangeHistogramFilter.js.map +1 -1
  260. package/dist/esm/PivotViewer/components/Spinner.js.map +1 -1
  261. package/dist/esm/PivotViewer/components/Toolbar.js.map +1 -1
  262. package/dist/esm/PivotViewer/components/ToolbarContainer.js.map +1 -1
  263. package/dist/esm/PivotViewer/components/pivot/animation.js +8 -1
  264. package/dist/esm/PivotViewer/components/pivot/animation.js.map +1 -1
  265. package/dist/esm/PivotViewer/components/pivot/colorResolver.js +3 -1
  266. package/dist/esm/PivotViewer/components/pivot/colorResolver.js.map +1 -1
  267. package/dist/esm/PivotViewer/components/pivot/constants.js +8 -5
  268. package/dist/esm/PivotViewer/components/pivot/constants.js.map +1 -1
  269. package/dist/esm/PivotViewer/components/pivot/groups.js +15 -0
  270. package/dist/esm/PivotViewer/components/pivot/groups.js.map +1 -1
  271. package/dist/esm/PivotViewer/components/pivot/sprites.js +19 -0
  272. package/dist/esm/PivotViewer/components/pivot/sprites.js.map +1 -1
  273. package/dist/esm/PivotViewer/components/pivot/visibility.js +102 -3
  274. package/dist/esm/PivotViewer/components/pivot/visibility.js.map +1 -1
  275. package/dist/esm/PivotViewer/constants.js +2 -0
  276. package/dist/esm/PivotViewer/constants.js.map +1 -1
  277. package/dist/esm/PivotViewer/engine/layout.js +23 -0
  278. package/dist/esm/PivotViewer/engine/layout.js.map +1 -1
  279. package/dist/esm/PivotViewer/engine/store.js +29 -0
  280. package/dist/esm/PivotViewer/engine/store.js.map +1 -1
  281. package/dist/esm/PivotViewer/hooks/useAnimationModeTracking.js +8 -0
  282. package/dist/esm/PivotViewer/hooks/useAnimationModeTracking.js.map +1 -1
  283. package/dist/esm/PivotViewer/hooks/useCardSelection.js +10 -1
  284. package/dist/esm/PivotViewer/hooks/useCardSelection.js.map +1 -1
  285. package/dist/esm/PivotViewer/hooks/useContainerDimensions.js +11 -0
  286. package/dist/esm/PivotViewer/hooks/useContainerDimensions.js.map +1 -1
  287. package/dist/esm/PivotViewer/hooks/useCurrentFilters.js +6 -0
  288. package/dist/esm/PivotViewer/hooks/useCurrentFilters.js.map +1 -1
  289. package/dist/esm/PivotViewer/hooks/useDetailPanelClose.js +11 -1
  290. package/dist/esm/PivotViewer/hooks/useDetailPanelClose.js.map +1 -1
  291. package/dist/esm/PivotViewer/hooks/useDimensionState.js +2 -0
  292. package/dist/esm/PivotViewer/hooks/useDimensionState.js.map +1 -1
  293. package/dist/esm/PivotViewer/hooks/useFieldExtractors.js +2 -0
  294. package/dist/esm/PivotViewer/hooks/useFieldExtractors.js.map +1 -1
  295. package/dist/esm/PivotViewer/hooks/useFilterOptions.js +2 -0
  296. package/dist/esm/PivotViewer/hooks/useFilterOptions.js.map +1 -1
  297. package/dist/esm/PivotViewer/hooks/useFilterState.js +5 -0
  298. package/dist/esm/PivotViewer/hooks/useFilterState.js.map +1 -1
  299. package/dist/esm/PivotViewer/hooks/usePanning.js +14 -0
  300. package/dist/esm/PivotViewer/hooks/usePanning.js.map +1 -1
  301. package/dist/esm/PivotViewer/hooks/usePivotEngine.js +7 -0
  302. package/dist/esm/PivotViewer/hooks/usePivotEngine.js.map +1 -1
  303. package/dist/esm/PivotViewer/hooks/useScrollSync.js +6 -0
  304. package/dist/esm/PivotViewer/hooks/useScrollSync.js.map +1 -1
  305. package/dist/esm/PivotViewer/hooks/useViewModeScrollHandling.js +9 -0
  306. package/dist/esm/PivotViewer/hooks/useViewModeScrollHandling.js.map +1 -1
  307. package/dist/esm/PivotViewer/hooks/useWheelZoom.js +8 -2
  308. package/dist/esm/PivotViewer/hooks/useWheelZoom.js.map +1 -1
  309. package/dist/esm/PivotViewer/hooks/useZoomState.js +2 -0
  310. package/dist/esm/PivotViewer/hooks/useZoomState.js.map +1 -1
  311. package/dist/esm/PivotViewer/index.js +3 -0
  312. package/dist/esm/PivotViewer/index.js.map +1 -1
  313. package/dist/esm/PivotViewer/types.js +11 -0
  314. package/dist/esm/PivotViewer/types.js.map +1 -1
  315. package/dist/esm/PivotViewer/utils/animations.js +35 -2
  316. package/dist/esm/PivotViewer/utils/animations.js.map +1 -1
  317. package/dist/esm/PivotViewer/utils/cardPosition.js +21 -3
  318. package/dist/esm/PivotViewer/utils/cardPosition.js.map +1 -1
  319. package/dist/esm/PivotViewer/utils/constants.js +3 -0
  320. package/dist/esm/PivotViewer/utils/constants.js.map +1 -1
  321. package/dist/esm/PivotViewer/utils/idResolution.js +16 -0
  322. package/dist/esm/PivotViewer/utils/idResolution.js.map +1 -1
  323. package/dist/esm/PivotViewer/utils/selection.js +25 -0
  324. package/dist/esm/PivotViewer/utils/selection.js.map +1 -1
  325. package/dist/esm/PivotViewer/utils/utils.js +5 -0
  326. package/dist/esm/PivotViewer/utils/utils.js.map +1 -1
  327. package/dist/esm/SchemaEditor/NameCell.js.map +1 -1
  328. package/dist/esm/SchemaEditor/SchemaEditor.js.map +1 -1
  329. package/dist/esm/SchemaEditor/TypeCell.js.map +1 -1
  330. package/dist/esm/SchemaEditor/index.js +3 -0
  331. package/dist/esm/SchemaEditor/index.js.map +1 -1
  332. package/dist/esm/SchemaEditor/schemaHelpers.js +8 -0
  333. package/dist/esm/SchemaEditor/schemaHelpers.js.map +1 -1
  334. package/dist/esm/TimeMachine/EventsView.js +2 -0
  335. package/dist/esm/TimeMachine/EventsView.js.map +1 -1
  336. package/dist/esm/TimeMachine/Properties.js.map +1 -1
  337. package/dist/esm/TimeMachine/ReadModelView.js +1 -0
  338. package/dist/esm/TimeMachine/ReadModelView.js.map +1 -1
  339. package/dist/esm/TimeMachine/TimeMachine.js +11 -1
  340. package/dist/esm/TimeMachine/TimeMachine.js.map +1 -1
  341. package/dist/esm/TimeMachine/index.js +3 -0
  342. package/dist/esm/TimeMachine/index.js.map +1 -1
  343. package/dist/esm/TimeMachine/propertiesHelpers.js +5 -0
  344. package/dist/esm/TimeMachine/propertiesHelpers.js.map +1 -1
  345. package/dist/esm/Toolbar/Toolbar.css +8 -0
  346. package/dist/esm/Toolbar/Toolbar.d.ts +3 -1
  347. package/dist/esm/Toolbar/Toolbar.d.ts.map +1 -1
  348. package/dist/esm/Toolbar/Toolbar.js +7 -1
  349. package/dist/esm/Toolbar/Toolbar.js.map +1 -1
  350. package/dist/esm/Toolbar/Toolbar.stories.d.ts +1 -0
  351. package/dist/esm/Toolbar/Toolbar.stories.d.ts.map +1 -1
  352. package/dist/esm/Toolbar/Toolbar.stories.js +23 -0
  353. package/dist/esm/Toolbar/Toolbar.stories.js.map +1 -1
  354. package/dist/esm/Toolbar/ToolbarButton.d.ts +4 -1
  355. package/dist/esm/Toolbar/ToolbarButton.d.ts.map +1 -1
  356. package/dist/esm/Toolbar/ToolbarButton.js +16 -2
  357. package/dist/esm/Toolbar/ToolbarButton.js.map +1 -1
  358. package/dist/esm/Toolbar/ToolbarContext.js +8 -0
  359. package/dist/esm/Toolbar/ToolbarContext.js.map +1 -1
  360. package/dist/esm/Toolbar/ToolbarDragContext.d.ts +7 -0
  361. package/dist/esm/Toolbar/ToolbarDragContext.d.ts.map +1 -0
  362. package/dist/esm/Toolbar/ToolbarDragContext.js +21 -0
  363. package/dist/esm/Toolbar/ToolbarDragContext.js.map +1 -0
  364. package/dist/esm/Toolbar/ToolbarFanOutItem.js +11 -0
  365. package/dist/esm/Toolbar/ToolbarFanOutItem.js.map +1 -1
  366. package/dist/esm/Toolbar/ToolbarSection.js +18 -1
  367. package/dist/esm/Toolbar/ToolbarSection.js.map +1 -1
  368. package/dist/esm/Toolbar/ToolbarSeparator.js +6 -0
  369. package/dist/esm/Toolbar/ToolbarSeparator.js.map +1 -1
  370. package/dist/esm/Toolbar/index.js +3 -0
  371. package/dist/esm/Toolbar/index.js.map +1 -1
  372. package/dist/esm/tailwind-utilities.css +16 -1
  373. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  374. package/dist/esm/types/TypeFormat.js +2 -0
  375. package/dist/esm/types/TypeFormat.js.map +1 -1
  376. package/dist/esm/types/index.js +3 -0
  377. package/dist/esm/types/index.js.map +1 -1
  378. package/dist/esm/useOverlayZIndex.js +10 -0
  379. package/dist/esm/useOverlayZIndex.js.map +1 -1
  380. package/package.json +8 -8
@@ -2,6 +2,8 @@
2
2
 
3
3
  var constants = require('../constants.js');
4
4
 
5
+ // Copyright (c) Cratis. All rights reserved.
6
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
5
7
  function computeLayout(grouping, spec) {
6
8
  const positions = new Map();
7
9
  if (spec.viewMode === 'collection') {
@@ -15,6 +17,7 @@ function computeCollectionLayout(grouping, spec, positions) {
15
17
  const { cardWidth, cardHeight, containerWidth } = spec;
16
18
  const slotWidth = cardWidth + constants.CARD_GAP;
17
19
  const slotHeight = cardHeight + constants.CARD_GAP;
20
+ // Calculate how many cards fit per row based on container width (include gap)
18
21
  const cardsPerRow = Math.max(1, Math.floor((containerWidth + constants.CARD_GAP - (constants.CANVAS_PADDING * 2)) / slotWidth));
19
22
  let x = constants.CANVAS_PADDING;
20
23
  let y = constants.CANVAS_PADDING;
@@ -28,8 +31,10 @@ function computeCollectionLayout(grouping, spec, positions) {
28
31
  y,
29
32
  groupIndex: 0,
30
33
  });
34
+ // Move to next position horizontally (left to right)
31
35
  column++;
32
36
  x += slotWidth;
37
+ // Wrap to next row when we've filled the width
33
38
  if (column >= cardsPerRow) {
34
39
  column = 0;
35
40
  x = constants.CANVAS_PADDING;
@@ -48,22 +53,32 @@ function computeCollectionLayout(grouping, spec, positions) {
48
53
  }
49
54
  function computeGroupedLayout(grouping, spec, positions) {
50
55
  const { cardWidth, cardHeight, cardsPerColumn } = spec;
56
+ // Override group spacing to ensure consistent card spacing across groups
57
+ // We want visual gap between groups to match gap between cards (CARD_GAP)
51
58
  const effectiveGroupSpacing = 0;
52
59
  const slotWidth = cardWidth + constants.CARD_GAP;
53
60
  const slotHeight = cardHeight + constants.CARD_GAP;
61
+ // Bottom gap = BOTTOM_MARGIN + CARD_GAP - CANVAS_PADDING.
62
+ // To match the left/right edge padding within each bucket (CARD_GAP / 2 = 5px):
63
+ // BOTTOM_MARGIN = CANVAS_PADDING - CARD_GAP + (CARD_GAP / 2) = CANVAS_PADDING - CARD_GAP / 2
54
64
  const BOTTOM_MARGIN = constants.CANVAS_PADDING - constants.CARD_GAP / 2;
65
+ // Fixed bucket width: 2 columns of cards per bucket (always)
55
66
  const COLUMNS_PER_BUCKET = 2;
56
67
  const bucketWidth = COLUMNS_PER_BUCKET * slotWidth;
57
68
  let groupX = 0;
69
+ // Use container height for layout, or fallback to cardsPerColumn height
58
70
  const layoutHeight = spec.containerHeight || (cardsPerColumn * slotHeight);
59
71
  const bucketWidths = [];
60
72
  const groupXs = [];
61
73
  let maxRows = 0;
74
+ // First pass: calculate max rows to determine total height
62
75
  for (const group of grouping.groups) {
63
76
  const itemsInGroup = group.ids.length;
64
77
  const rowsInGroup = Math.ceil(itemsInGroup / COLUMNS_PER_BUCKET);
65
78
  maxRows = Math.max(maxRows, rowsInGroup);
66
79
  }
80
+ // Calculate actual content height needed (ensure it's at least as tall as the container)
81
+ // We need to fit the tallest column plus the bottom margin
67
82
  const contentHeight = Math.max(layoutHeight, (maxRows * slotHeight) + BOTTOM_MARGIN);
68
83
  for (let groupIndex = 0; groupIndex < grouping.groups.length; groupIndex++) {
69
84
  const group = grouping.groups[groupIndex];
@@ -71,9 +86,15 @@ function computeGroupedLayout(grouping, spec, positions) {
71
86
  const itemsInGroup = group.ids.length;
72
87
  for (let i = 0; i < itemsInGroup; i++) {
73
88
  const id = group.ids[i];
89
+ // Cards fill from left to right, bottom to top
90
+ // For a 2-column bucket: i=0,1 in row 0; i=2,3 in row 1; etc.
74
91
  const col = i % COLUMNS_PER_BUCKET;
75
92
  const row = Math.floor(i / COLUMNS_PER_BUCKET);
93
+ // Center the cards within the bucket
94
+ // The bucket width fits 2 slots (2W + 2G). Cards take 2W + G.
95
+ // So we have G/2 padding on each side to center them.
76
96
  const x = groupX + (col * slotWidth) + (constants.CARD_GAP / 2);
97
+ // Position cards from bottom of container, stacking upwards, starting at row 0 (bottom)
77
98
  const y = constants.CANVAS_PADDING + contentHeight - BOTTOM_MARGIN - ((row + 1) * slotHeight);
78
99
  positions.set(id, {
79
100
  x,
@@ -81,7 +102,9 @@ function computeGroupedLayout(grouping, spec, positions) {
81
102
  groupIndex,
82
103
  });
83
104
  }
105
+ // Always use fixed bucket width
84
106
  bucketWidths.push(bucketWidth);
107
+ // Advance position by fixed bucket width + spacing
85
108
  groupX += bucketWidth;
86
109
  if (groupIndex < grouping.groups.length - 1) {
87
110
  groupX += effectiveGroupSpacing;
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sources":["../../../../PivotViewer/engine/layout.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport type {\n LayoutSpec,\n LayoutResult,\n ItemPosition,\n GroupingResult,\n ItemId,\n} from './types';\nimport { CARD_GAP, CANVAS_PADDING } from '../constants';\n\nexport function computeLayout(\n grouping: GroupingResult,\n spec: LayoutSpec\n): LayoutResult {\n const positions = new Map<ItemId, ItemPosition>();\n\n if (spec.viewMode === 'collection') {\n return computeCollectionLayout(grouping, spec, positions);\n } else {\n return computeGroupedLayout(grouping, spec, positions);\n }\n}\n\nfunction computeCollectionLayout(\n grouping: GroupingResult,\n spec: LayoutSpec,\n positions: Map<ItemId, ItemPosition>\n): LayoutResult {\n const { cardWidth, cardHeight, containerWidth } = spec;\n const slotWidth = cardWidth + CARD_GAP;\n const slotHeight = cardHeight + CARD_GAP;\n\n // Calculate how many cards fit per row based on container width (include gap)\n const cardsPerRow = Math.max(1, Math.floor((containerWidth + CARD_GAP - (CANVAS_PADDING * 2)) / slotWidth));\n\n let x = CANVAS_PADDING;\n let y = CANVAS_PADDING;\n let column = 0;\n let itemCount = 0;\n\n for (const group of grouping.groups) {\n for (let i = 0; i < group.ids.length; i++) {\n const id = group.ids[i];\n\n positions.set(id, {\n x,\n y,\n groupIndex: 0,\n });\n\n // Move to next position horizontally (left to right)\n column++;\n x += slotWidth;\n\n // Wrap to next row when we've filled the width\n if (column >= cardsPerRow) {\n column = 0;\n x = CANVAS_PADDING;\n y += slotHeight;\n }\n\n itemCount++;\n }\n }\n\n const rows = Math.ceil(itemCount / cardsPerRow);\n const contentWidth = Math.min(itemCount, cardsPerRow) * slotWidth;\n\n return {\n positions,\n totalWidth: Math.max(containerWidth, contentWidth + (CANVAS_PADDING * 2)),\n totalHeight: (rows * slotHeight) + (CANVAS_PADDING * 2),\n };\n}\n\nfunction computeGroupedLayout(\n grouping: GroupingResult,\n spec: LayoutSpec,\n positions: Map<ItemId, ItemPosition>\n): LayoutResult {\n const { cardWidth, cardHeight, cardsPerColumn } = spec;\n // Override group spacing to ensure consistent card spacing across groups\n // We want visual gap between groups to match gap between cards (CARD_GAP)\n const effectiveGroupSpacing = 0;\n\n const slotWidth = cardWidth + CARD_GAP;\n const slotHeight = cardHeight + CARD_GAP;\n // Bottom gap = BOTTOM_MARGIN + CARD_GAP - CANVAS_PADDING.\n // To match the left/right edge padding within each bucket (CARD_GAP / 2 = 5px):\n // BOTTOM_MARGIN = CANVAS_PADDING - CARD_GAP + (CARD_GAP / 2) = CANVAS_PADDING - CARD_GAP / 2\n const BOTTOM_MARGIN = CANVAS_PADDING - CARD_GAP / 2;\n\n // Fixed bucket width: 2 columns of cards per bucket (always)\n const COLUMNS_PER_BUCKET = 2;\n const bucketWidth = COLUMNS_PER_BUCKET * slotWidth;\n\n let groupX = 0;\n // Use container height for layout, or fallback to cardsPerColumn height\n const layoutHeight = spec.containerHeight || (cardsPerColumn * slotHeight);\n const bucketWidths: number[] = [];\n const groupXs: number[] = [];\n let maxRows = 0;\n\n // First pass: calculate max rows to determine total height\n for (const group of grouping.groups) {\n const itemsInGroup = group.ids.length;\n const rowsInGroup = Math.ceil(itemsInGroup / COLUMNS_PER_BUCKET);\n maxRows = Math.max(maxRows, rowsInGroup);\n }\n\n // Calculate actual content height needed (ensure it's at least as tall as the container)\n // We need to fit the tallest column plus the bottom margin\n const contentHeight = Math.max(layoutHeight, (maxRows * slotHeight) + BOTTOM_MARGIN);\n\n for (let groupIndex = 0; groupIndex < grouping.groups.length; groupIndex++) {\n const group = grouping.groups[groupIndex];\n groupXs.push(groupX);\n\n const itemsInGroup = group.ids.length;\n\n for (let i = 0; i < itemsInGroup; i++) {\n const id = group.ids[i];\n\n // Cards fill from left to right, bottom to top\n // For a 2-column bucket: i=0,1 in row 0; i=2,3 in row 1; etc.\n const col = i % COLUMNS_PER_BUCKET;\n const row = Math.floor(i / COLUMNS_PER_BUCKET);\n\n // Center the cards within the bucket\n // The bucket width fits 2 slots (2W + 2G). Cards take 2W + G.\n // So we have G/2 padding on each side to center them.\n const x = groupX + (col * slotWidth) + (CARD_GAP / 2);\n\n // Position cards from bottom of container, stacking upwards, starting at row 0 (bottom)\n const y = CANVAS_PADDING + contentHeight - BOTTOM_MARGIN - ((row + 1) * slotHeight);\n\n positions.set(id, {\n x,\n y,\n groupIndex,\n });\n }\n\n // Always use fixed bucket width\n bucketWidths.push(bucketWidth);\n\n // Advance position by fixed bucket width + spacing\n groupX += bucketWidth;\n if (groupIndex < grouping.groups.length - 1) {\n groupX += effectiveGroupSpacing;\n }\n }\n\n return {\n positions,\n totalWidth: groupX + CANVAS_PADDING,\n totalHeight: contentHeight,\n bucketWidths,\n groupXs,\n };\n}\n"],"names":["CARD_GAP","CANVAS_PADDING"],"mappings":";;;;AAYM,SAAU,aAAa,CAC3B,QAAwB,EACxB,IAAgB,EAAA;AAEhB,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwB;AAEjD,IAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY,EAAE;QAClC,OAAO,uBAAuB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC;IAC3D;SAAO;QACL,OAAO,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC;IACxD;AACF;AAEA,SAAS,uBAAuB,CAC9B,QAAwB,EACxB,IAAgB,EAChB,SAAoC,EAAA;IAEpC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,IAAI;AACtD,IAAA,MAAM,SAAS,GAAG,SAAS,GAAGA,kBAAQ;AACtC,IAAA,MAAM,UAAU,GAAG,UAAU,GAAGA,kBAAQ;IAGxC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,GAAGA,kBAAQ,IAAIC,wBAAc,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAE3G,IAAI,CAAC,GAAGA,wBAAc;IACtB,IAAI,CAAC,GAAGA,wBAAc;IACtB,IAAI,MAAM,GAAG,CAAC;IACd,IAAI,SAAS,GAAG,CAAC;AAEjB,IAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE;AACnC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvB,YAAA,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE;gBAChB,CAAC;gBACD,CAAC;AACD,gBAAA,UAAU,EAAE,CAAC;AACd,aAAA,CAAC;AAGF,YAAA,MAAM,EAAE;YACR,CAAC,IAAI,SAAS;AAGd,YAAA,IAAI,MAAM,IAAI,WAAW,EAAE;gBACzB,MAAM,GAAG,CAAC;gBACV,CAAC,GAAGA,wBAAc;gBAClB,CAAC,IAAI,UAAU;YACjB;AAEA,YAAA,SAAS,EAAE;QACb;IACF;IAEA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;AAC/C,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,SAAS;IAEjE,OAAO;QACL,SAAS;AACT,QAAA,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,IAAIA,wBAAc,GAAG,CAAC,CAAC,CAAC;QACzE,WAAW,EAAE,CAAC,IAAI,GAAG,UAAU,KAAKA,wBAAc,GAAG,CAAC,CAAC;KACxD;AACH;AAEA,SAAS,oBAAoB,CAC3B,QAAwB,EACxB,IAAgB,EAChB,SAAoC,EAAA;IAEpC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,IAAI;IAGtD,MAAM,qBAAqB,GAAG,CAAC;AAE/B,IAAA,MAAM,SAAS,GAAG,SAAS,GAAGD,kBAAQ;AACtC,IAAA,MAAM,UAAU,GAAG,UAAU,GAAGA,kBAAQ;AAIxC,IAAA,MAAM,aAAa,GAAGC,wBAAc,GAAGD,kBAAQ,GAAG,CAAC;IAGnD,MAAM,kBAAkB,GAAG,CAAC;AAC5B,IAAA,MAAM,WAAW,GAAG,kBAAkB,GAAG,SAAS;IAElD,IAAI,MAAM,GAAG,CAAC;IAEd,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,KAAK,cAAc,GAAG,UAAU,CAAC;IAC1E,MAAM,YAAY,GAAa,EAAE;IACjC,MAAM,OAAO,GAAa,EAAE;IAC5B,IAAI,OAAO,GAAG,CAAC;AAGf,IAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE;AACnC,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC;QAChE,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC;IAC1C;AAIA,IAAA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,OAAO,GAAG,UAAU,IAAI,aAAa,CAAC;AAEpF,IAAA,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;QAC1E,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;AACzC,QAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAEpB,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM;AAErC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAIvB,YAAA,MAAM,GAAG,GAAG,CAAC,GAAG,kBAAkB;YAClC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,kBAAkB,CAAC;AAK9C,YAAA,MAAM,CAAC,GAAG,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC,IAAIA,kBAAQ,GAAG,CAAC,CAAC;AAGrD,YAAA,MAAM,CAAC,GAAGC,wBAAc,GAAG,aAAa,GAAG,aAAa,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,UAAU,CAAC;AAEnF,YAAA,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE;gBAChB,CAAC;gBACD,CAAC;gBACD,UAAU;AACX,aAAA,CAAC;QACJ;AAGA,QAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;QAG9B,MAAM,IAAI,WAAW;QACrB,IAAI,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3C,MAAM,IAAI,qBAAqB;QACjC;IACF;IAEA,OAAO;QACL,SAAS;QACT,UAAU,EAAE,MAAM,GAAGA,wBAAc;AACnC,QAAA,WAAW,EAAE,aAAa;QAC1B,YAAY;QACZ,OAAO;KACR;AACH;;;;"}
1
+ {"version":3,"file":"layout.js","sources":["../../../../PivotViewer/engine/layout.ts"],"sourcesContent":[null],"names":["CARD_GAP","CANVAS_PADDING"],"mappings":"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"}
@@ -1,5 +1,10 @@
1
1
  'use strict';
2
2
 
3
+ // Copyright (c) Cratis. All rights reserved.
4
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
5
+ /**
6
+ * Convert array of items to columnar store
7
+ */
3
8
  function buildStore(items, fieldExtractors) {
4
9
  const count = items.length;
5
10
  const ids = new Uint32Array(count);
@@ -51,6 +56,9 @@ function stringifyValue(value) {
51
56
  return 'undefined';
52
57
  return String(value);
53
58
  }
59
+ /**
60
+ * Build categorical index for a string field
61
+ */
54
62
  function buildCategoricalIndex(field) {
55
63
  if (field.kind !== 'string') {
56
64
  throw new Error('Categorical index requires string field');
@@ -79,6 +87,9 @@ function buildCategoricalIndex(field) {
79
87
  values.sort();
80
88
  return { valueToIds, values };
81
89
  }
90
+ /**
91
+ * Build numeric index for a number field
92
+ */
82
93
  function buildNumericIndex(field) {
83
94
  if (field.kind !== 'number') {
84
95
  throw new Error('Numeric index requires number field');
@@ -106,6 +117,9 @@ function buildNumericIndex(field) {
106
117
  }
107
118
  return { values, ids, min, max };
108
119
  }
120
+ /**
121
+ * Build all indexes for specified fields
122
+ */
109
123
  function buildIndexes(store, fieldNames) {
110
124
  const categorical = new Map();
111
125
  const numeric = new Map();
@@ -122,6 +136,9 @@ function buildIndexes(store, fieldNames) {
122
136
  }
123
137
  return { categorical, numeric };
124
138
  }
139
+ /**
140
+ * Intersect two sorted arrays of IDs
141
+ */
125
142
  function intersectSorted(a, b) {
126
143
  const result = [];
127
144
  let i = 0;
@@ -141,6 +158,9 @@ function intersectSorted(a, b) {
141
158
  }
142
159
  return new Uint32Array(result);
143
160
  }
161
+ /**
162
+ * Union multiple sorted arrays
163
+ */
144
164
  function unionSorted(arrays) {
145
165
  if (arrays.length === 0)
146
166
  return new Uint32Array(0);
@@ -155,6 +175,9 @@ function unionSorted(arrays) {
155
175
  const result = Array.from(set).sort((a, b) => a - b);
156
176
  return new Uint32Array(result);
157
177
  }
178
+ /**
179
+ * Apply filters using indexes
180
+ */
158
181
  function applyFilters(store, indexes, filters) {
159
182
  if (filters.length === 0) {
160
183
  return {
@@ -212,6 +235,9 @@ function applyFilters(store, indexes, filters) {
212
235
  count: visibleIds.length,
213
236
  };
214
237
  }
238
+ /**
239
+ * Group items by field value
240
+ */
215
241
  function computeGrouping(store, indexes, visibleIds, groupBy) {
216
242
  const field = store.fields.get(groupBy.field);
217
243
  if (!field) {
@@ -306,6 +332,9 @@ function groupByNumeric(field, visibleIds, buckets = 10) {
306
332
  }
307
333
  return { groups };
308
334
  }
335
+ /**
336
+ * Sort IDs based on a field
337
+ */
309
338
  function sortIds(store, ids, sortBy) {
310
339
  const field = store.fields.get(sortBy);
311
340
  if (!field)
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sources":["../../../../PivotViewer/engine/store.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport type {\n PivotStore,\n Field,\n CategoricalIndex,\n NumericIndex,\n PivotIndexes,\n FilterSpec,\n FilterResult,\n GroupSpec,\n GroupResult,\n GroupingResult,\n FieldValue,\n} from './types';\n\n/**\n * Convert array of items to columnar store\n */\nexport function buildStore<TItem extends object>(\n items: TItem[],\n fieldExtractors: Map<string, (item: TItem) => FieldValue>\n): PivotStore {\n const count = items.length;\n const ids = new Uint32Array(count);\n const fields = new Map<string, Field>();\n\n for (let i = 0; i < count; i++) {\n ids[i] = i;\n }\n\n for (const [fieldName, extractor] of fieldExtractors) {\n const firstValue = count > 0 ? extractor(items[0]) : null;\n const kind = inferKind(firstValue);\n\n if (kind === 'number') {\n const values = new Float64Array(count);\n for (let i = 0; i < count; i++) {\n const val = extractor(items[i]);\n values[i] = typeof val === 'number' ? val : NaN;\n }\n fields.set(fieldName, { kind: 'number', values });\n } else if (kind === 'boolean') {\n const values = new Uint8Array(count);\n for (let i = 0; i < count; i++) {\n const val = extractor(items[i]);\n values[i] = val === true ? 1 : 0;\n }\n fields.set(fieldName, { kind: 'boolean', values });\n } else {\n const values: string[] = [];\n for (let i = 0; i < count; i++) {\n const val = extractor(items[i]);\n values.push(stringifyValue(val));\n }\n fields.set(fieldName, { kind: 'string', values });\n }\n }\n\n return { count, ids, fields, items };\n}\n\nfunction inferKind(value: FieldValue): 'string' | 'number' | 'boolean' {\n if (typeof value === 'number') return 'number';\n if (typeof value === 'boolean') return 'boolean';\n return 'string';\n}\n\nfunction stringifyValue(value: FieldValue): string {\n if (value === null) return 'null';\n if (value === undefined) return 'undefined';\n return String(value);\n}\n\n/**\n * Build categorical index for a string field\n */\nexport function buildCategoricalIndex(field: Field): CategoricalIndex {\n if (field.kind !== 'string') {\n throw new Error('Categorical index requires string field');\n }\n\n const valueToIdsList = new Map<string, number[]>();\n\n for (let i = 0; i < field.values.length; i++) {\n const value = field.values[i];\n let list = valueToIdsList.get(value);\n if (!list) {\n list = [];\n valueToIdsList.set(value, list);\n }\n list.push(i);\n }\n\n const valueToIds = new Map<string, Uint32Array>();\n const values: string[] = [];\n\n for (const [value, idsList] of valueToIdsList) {\n values.push(value);\n const ids = new Uint32Array(idsList.length);\n for (let i = 0; i < idsList.length; i++) {\n ids[i] = idsList[i];\n }\n ids.sort();\n valueToIds.set(value, ids);\n }\n\n values.sort();\n\n return { valueToIds, values };\n}\n\n/**\n * Build numeric index for a number field\n */\nexport function buildNumericIndex(field: Field): NumericIndex {\n if (field.kind !== 'number') {\n throw new Error('Numeric index requires number field');\n }\n\n const count = field.values.length;\n const pairs: Array<{ value: number; id: number }> = [];\n\n let min = Infinity;\n let max = -Infinity;\n\n for (let i = 0; i < count; i++) {\n const value = field.values[i];\n if (!isNaN(value)) {\n pairs.push({ value, id: i });\n if (value < min) min = value;\n if (value > max) max = value;\n }\n }\n\n pairs.sort((a, b) => a.value - b.value);\n\n const values = new Float64Array(pairs.length);\n const ids = new Uint32Array(pairs.length);\n\n for (let i = 0; i < pairs.length; i++) {\n values[i] = pairs[i].value;\n ids[i] = pairs[i].id;\n }\n\n return { values, ids, min, max };\n}\n\n/**\n * Build all indexes for specified fields\n */\nexport function buildIndexes(store: PivotStore, fieldNames: string[]): PivotIndexes {\n const categorical = new Map<string, CategoricalIndex>();\n const numeric = new Map<string, NumericIndex>();\n\n for (const fieldName of fieldNames) {\n const field = store.fields.get(fieldName);\n if (!field) continue;\n\n if (field.kind === 'string') {\n categorical.set(fieldName, buildCategoricalIndex(field));\n } else if (field.kind === 'number') {\n numeric.set(fieldName, buildNumericIndex(field));\n }\n }\n\n return { categorical, numeric };\n}\n\n/**\n * Intersect two sorted arrays of IDs\n */\nfunction intersectSorted(a: Uint32Array, b: Uint32Array): Uint32Array {\n const result: number[] = [];\n let i = 0;\n let j = 0;\n\n while (i < a.length && j < b.length) {\n if (a[i] === b[j]) {\n result.push(a[i]);\n i++;\n j++;\n } else if (a[i] < b[j]) {\n i++;\n } else {\n j++;\n }\n }\n\n return new Uint32Array(result);\n}\n\n/**\n * Union multiple sorted arrays\n */\nfunction unionSorted(arrays: Uint32Array[]): Uint32Array {\n if (arrays.length === 0) return new Uint32Array(0);\n if (arrays.length === 1) return arrays[0];\n\n const set = new Set<number>();\n for (const arr of arrays) {\n for (let i = 0; i < arr.length; i++) {\n set.add(arr[i]);\n }\n }\n\n const result = Array.from(set).sort((a, b) => a - b);\n return new Uint32Array(result);\n}\n\n/**\n * Apply filters using indexes\n */\nexport function applyFilters(\n store: PivotStore,\n indexes: PivotIndexes,\n filters: FilterSpec[]\n): FilterResult {\n if (filters.length === 0) {\n return {\n visibleIds: store.ids,\n count: store.count,\n };\n }\n\n const sets: Uint32Array[] = [];\n\n for (const filter of filters) {\n if (filter.type === 'categorical' && filter.values && filter.values.size > 0) {\n const index = indexes.categorical.get(filter.field);\n if (!index) continue;\n\n const arrays: Uint32Array[] = [];\n for (const value of filter.values) {\n const ids = index.valueToIds.get(value);\n if (ids) {\n arrays.push(ids);\n }\n }\n\n if (arrays.length > 0) {\n sets.push(unionSorted(arrays));\n }\n } else if (filter.type === 'numeric' && filter.range) {\n const index = indexes.numeric.get(filter.field);\n if (!index) continue;\n\n const { min, max } = filter.range;\n const result: number[] = [];\n\n for (let i = 0; i < index.values.length; i++) {\n const val = index.values[i];\n if (val >= min && val <= max) {\n result.push(index.ids[i]);\n }\n }\n\n if (result.length > 0) {\n result.sort((a, b) => a - b);\n sets.push(new Uint32Array(result));\n }\n }\n }\n\n if (sets.length === 0) {\n return {\n visibleIds: store.ids,\n count: store.count,\n };\n }\n\n let visibleIds = sets[0];\n for (let i = 1; i < sets.length; i++) {\n visibleIds = intersectSorted(visibleIds, sets[i]);\n }\n\n return {\n visibleIds,\n count: visibleIds.length,\n };\n}\n\n/**\n * Group items by field value\n */\nexport function computeGrouping(\n store: PivotStore,\n indexes: PivotIndexes,\n visibleIds: Uint32Array,\n groupBy: GroupSpec\n): GroupingResult {\n const field = store.fields.get(groupBy.field);\n if (!field) {\n return { groups: [] };\n }\n\n if (field.kind === 'string') {\n return groupByCategorical(field, visibleIds, indexes.categorical.get(groupBy.field));\n } else if (field.kind === 'number') {\n return groupByNumeric(field, visibleIds, groupBy.buckets);\n }\n\n return { groups: [] };\n}\n\nfunction groupByCategorical(\n field: Field,\n visibleIds: Uint32Array,\n index?: CategoricalIndex\n): GroupingResult {\n if (field.kind !== 'string') {\n return { groups: [] };\n }\n\n const valueToIds = new Map<string, number[]>();\n\n for (let i = 0; i < visibleIds.length; i++) {\n const id = visibleIds[i];\n const value = field.values[id];\n\n let list = valueToIds.get(value);\n if (!list) {\n list = [];\n valueToIds.set(value, list);\n }\n list.push(id);\n }\n\n const groups: GroupResult[] = [];\n const sortedValues = index ? index.values : Array.from(valueToIds.keys()).sort();\n\n for (const value of sortedValues) {\n const idsList = valueToIds.get(value);\n if (!idsList) continue;\n\n const ids = new Uint32Array(idsList);\n groups.push({\n key: value,\n label: value,\n value,\n ids,\n count: ids.length,\n });\n }\n\n return { groups };\n}\n\nfunction groupByNumeric(\n field: Field,\n visibleIds: Uint32Array,\n buckets: number = 10\n): GroupingResult {\n if (field.kind !== 'number') {\n return { groups: [] };\n }\n\n let min = Infinity;\n let max = -Infinity;\n\n for (let i = 0; i < visibleIds.length; i++) {\n const value = field.values[visibleIds[i]];\n if (!isNaN(value)) {\n if (value < min) min = value;\n if (value > max) max = value;\n }\n }\n\n if (!isFinite(min) || !isFinite(max)) {\n return { groups: [] };\n }\n\n const range = max - min;\n const bucketSize = range / buckets;\n\n const bucketLists: number[][] = Array.from({ length: buckets }, () => []);\n\n for (let i = 0; i < visibleIds.length; i++) {\n const id = visibleIds[i];\n const value = field.values[id];\n if (isNaN(value)) continue;\n\n let bucketIndex = Math.floor((value - min) / bucketSize);\n if (bucketIndex >= buckets) bucketIndex = buckets - 1;\n\n bucketLists[bucketIndex].push(id);\n }\n\n const groups: GroupResult[] = [];\n\n for (let i = 0; i < buckets; i++) {\n const list = bucketLists[i];\n if (list.length === 0) continue;\n\n const bucketMin = min + i * bucketSize;\n const bucketMax = min + (i + 1) * bucketSize;\n\n const ids = new Uint32Array(list);\n groups.push({\n key: `${i}`,\n label: `${bucketMin.toFixed(1)} - ${bucketMax.toFixed(1)}`,\n value: bucketMin,\n ids,\n count: ids.length,\n });\n }\n\n return { groups };\n}\n\n/**\n * Sort IDs based on a field\n */\nexport function sortIds(\n store: PivotStore,\n ids: Uint32Array,\n sortBy: string\n): Uint32Array {\n const field = store.fields.get(sortBy);\n if (!field) return ids;\n\n const sortedIds = new Uint32Array(ids);\n\n if (field.kind === 'number') {\n const values = field.values;\n sortedIds.sort((a, b) => values[a] - values[b]);\n } else if (field.kind === 'string') {\n const values = field.values;\n sortedIds.sort((a, b) => values[a].localeCompare(values[b]));\n } else if (field.kind === 'boolean') {\n const values = field.values;\n sortedIds.sort((a, b) => values[a] - values[b]);\n }\n\n return sortedIds;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sources":["../../../../PivotViewer/engine/store.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -2,6 +2,11 @@
2
2
 
3
3
  var React = require('react');
4
4
 
5
+ // Copyright (c) Cratis. All rights reserved.
6
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
7
+ /**
8
+ * Tracks changes to animation mode based on filter, search, dimension, or view mode changes
9
+ */
5
10
  function useAnimationModeTracking(filterState, rangeFilterState, search, activeDimensionKey, viewMode, setAnimationMode) {
6
11
  const isFirstRenderRef = React.useRef(true);
7
12
  const prevFilterStateRef = React.useRef(filterState);
@@ -10,6 +15,7 @@ function useAnimationModeTracking(filterState, rangeFilterState, search, activeD
10
15
  const prevDimensionRef = React.useRef(activeDimensionKey);
11
16
  const prevViewModeRef = React.useRef(viewMode);
12
17
  React.useEffect(() => {
18
+ // Skip the first render
13
19
  if (isFirstRenderRef.current) {
14
20
  isFirstRenderRef.current = false;
15
21
  return;
@@ -19,6 +25,8 @@ function useAnimationModeTracking(filterState, rangeFilterState, search, activeD
19
25
  const searchChanged = prevSearchRef.current !== search;
20
26
  const dimensionChanged = prevDimensionRef.current !== activeDimensionKey;
21
27
  const viewModeChanged = prevViewModeRef.current !== viewMode;
28
+ // If filters or search changed, use filter animation (fade/scale)
29
+ // If dimension or view mode changed, use layout animation (fly)
22
30
  if (filterChanged || rangeChanged || searchChanged) {
23
31
  setAnimationMode('filter');
24
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useAnimationModeTracking.js","sources":["../../../../PivotViewer/hooks/useAnimationModeTracking.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useEffect, useRef } from 'react';\n\n/**\n * Tracks changes to animation mode based on filter, search, dimension, or view mode changes\n */\nexport function useAnimationModeTracking(\n filterState: Record<string, Set<string>>,\n rangeFilterState: Record<string, [number | null, number | null] | null>,\n search: string,\n activeDimensionKey: string | null,\n viewMode: string,\n setAnimationMode: (mode: 'layout' | 'filter') => void,\n) {\n const isFirstRenderRef = useRef(true);\n const prevFilterStateRef = useRef(filterState);\n const prevRangeFilterStateRef = useRef(rangeFilterState);\n const prevSearchRef = useRef(search);\n const prevDimensionRef = useRef(activeDimensionKey);\n const prevViewModeRef = useRef(viewMode);\n\n useEffect(() => {\n // Skip the first render\n if (isFirstRenderRef.current) {\n isFirstRenderRef.current = false;\n return;\n }\n\n const filterChanged = prevFilterStateRef.current !== filterState;\n const rangeChanged = prevRangeFilterStateRef.current !== rangeFilterState;\n const searchChanged = prevSearchRef.current !== search;\n const dimensionChanged = prevDimensionRef.current !== activeDimensionKey;\n const viewModeChanged = prevViewModeRef.current !== viewMode;\n\n // If filters or search changed, use filter animation (fade/scale)\n // If dimension or view mode changed, use layout animation (fly)\n if (filterChanged || rangeChanged || searchChanged) {\n setAnimationMode('filter');\n } else if (dimensionChanged || viewModeChanged) {\n setAnimationMode('layout');\n }\n\n prevFilterStateRef.current = filterState;\n prevRangeFilterStateRef.current = rangeFilterState;\n prevSearchRef.current = search;\n prevDimensionRef.current = activeDimensionKey;\n prevViewModeRef.current = viewMode;\n }, [filterState, rangeFilterState, search, activeDimensionKey, viewMode, setAnimationMode]);\n}\n"],"names":["useRef","useEffect"],"mappings":";;;;AAQM,SAAU,wBAAwB,CACpC,WAAwC,EACxC,gBAAuE,EACvE,MAAc,EACd,kBAAiC,EACjC,QAAgB,EAChB,gBAAqD,EAAA;AAErD,IAAA,MAAM,gBAAgB,GAAGA,YAAM,CAAC,IAAI,CAAC;AACrC,IAAA,MAAM,kBAAkB,GAAGA,YAAM,CAAC,WAAW,CAAC;AAC9C,IAAA,MAAM,uBAAuB,GAAGA,YAAM,CAAC,gBAAgB,CAAC;AACxD,IAAA,MAAM,aAAa,GAAGA,YAAM,CAAC,MAAM,CAAC;AACpC,IAAA,MAAM,gBAAgB,GAAGA,YAAM,CAAC,kBAAkB,CAAC;AACnD,IAAA,MAAM,eAAe,GAAGA,YAAM,CAAC,QAAQ,CAAC;IAExCC,eAAS,CAAC,MAAK;AAEX,QAAA,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC1B,YAAA,gBAAgB,CAAC,OAAO,GAAG,KAAK;YAChC;QACJ;AAEA,QAAA,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,KAAK,WAAW;AAChE,QAAA,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,KAAK,gBAAgB;AACzE,QAAA,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,KAAK,MAAM;AACtD,QAAA,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,KAAK,kBAAkB;AACxE,QAAA,MAAM,eAAe,GAAG,eAAe,CAAC,OAAO,KAAK,QAAQ;AAI5D,QAAA,IAAI,aAAa,IAAI,YAAY,IAAI,aAAa,EAAE;YAChD,gBAAgB,CAAC,QAAQ,CAAC;QAC9B;AAAO,aAAA,IAAI,gBAAgB,IAAI,eAAe,EAAE;YAC5C,gBAAgB,CAAC,QAAQ,CAAC;QAC9B;AAEA,QAAA,kBAAkB,CAAC,OAAO,GAAG,WAAW;AACxC,QAAA,uBAAuB,CAAC,OAAO,GAAG,gBAAgB;AAClD,QAAA,aAAa,CAAC,OAAO,GAAG,MAAM;AAC9B,QAAA,gBAAgB,CAAC,OAAO,GAAG,kBAAkB;AAC7C,QAAA,eAAe,CAAC,OAAO,GAAG,QAAQ;AACtC,IAAA,CAAC,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAC/F;;;;"}
1
+ {"version":3,"file":"useAnimationModeTracking.js","sources":["../../../../PivotViewer/hooks/useAnimationModeTracking.ts"],"sourcesContent":[null],"names":["useRef","useEffect"],"mappings":";;;;AAAA;AACA;AAIA;;AAEG;AACG,SAAU,wBAAwB,CACpC,WAAwC,EACxC,gBAAuE,EACvE,MAAc,EACd,kBAAiC,EACjC,QAAgB,EAChB,gBAAqD,EAAA;AAErD,IAAA,MAAM,gBAAgB,GAAGA,YAAM,CAAC,IAAI,CAAC;AACrC,IAAA,MAAM,kBAAkB,GAAGA,YAAM,CAAC,WAAW,CAAC;AAC9C,IAAA,MAAM,uBAAuB,GAAGA,YAAM,CAAC,gBAAgB,CAAC;AACxD,IAAA,MAAM,aAAa,GAAGA,YAAM,CAAC,MAAM,CAAC;AACpC,IAAA,MAAM,gBAAgB,GAAGA,YAAM,CAAC,kBAAkB,CAAC;AACnD,IAAA,MAAM,eAAe,GAAGA,YAAM,CAAC,QAAQ,CAAC;IAExCC,eAAS,CAAC,MAAK;;AAEX,QAAA,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC1B,YAAA,gBAAgB,CAAC,OAAO,GAAG,KAAK;YAChC;QACJ;AAEA,QAAA,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,KAAK,WAAW;AAChE,QAAA,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,KAAK,gBAAgB;AACzE,QAAA,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,KAAK,MAAM;AACtD,QAAA,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,KAAK,kBAAkB;AACxE,QAAA,MAAM,eAAe,GAAG,eAAe,CAAC,OAAO,KAAK,QAAQ;;;AAI5D,QAAA,IAAI,aAAa,IAAI,YAAY,IAAI,aAAa,EAAE;YAChD,gBAAgB,CAAC,QAAQ,CAAC;QAC9B;AAAO,aAAA,IAAI,gBAAgB,IAAI,eAAe,EAAE;YAC5C,gBAAgB,CAAC,QAAQ,CAAC;QAC9B;AAEA,QAAA,kBAAkB,CAAC,OAAO,GAAG,WAAW;AACxC,QAAA,uBAAuB,CAAC,OAAO,GAAG,gBAAgB;AAClD,QAAA,aAAa,CAAC,OAAO,GAAG,MAAM;AAC9B,QAAA,gBAAgB,CAAC,OAAO,GAAG,kBAAkB;AAC7C,QAAA,eAAe,CAAC,OAAO,GAAG,QAAQ;AACtC,IAAA,CAAC,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAC/F;;;;"}
@@ -6,13 +6,17 @@ var idResolution = require('../utils/idResolution.js');
6
6
  var cardPosition = require('../utils/cardPosition.js');
7
7
  var constants = require('../utils/constants.js');
8
8
 
9
+ // Copyright (c) Cratis. All rights reserved.
10
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
9
11
  function useCardSelection({ data, isPanning, selectedItem, zoomLevel, viewMode, layout, containerRef, spacerRef, containerDimensions, scrollPosition, preSelectionState, grouping, getItemId, resolveId, setZoomLevel, setIsZooming, setSelectedItem, setPreSelectionState, }) {
10
12
  return React.useCallback((item, e, id) => {
11
13
  if (isPanning)
12
14
  return;
15
+ // Use the containerRef directly as the scrollable viewport
13
16
  const container = containerRef.current;
14
17
  if (!container)
15
18
  return;
19
+ // Resolve item ID
16
20
  let itemId = (id !== undefined && id !== null) ? id : resolveId(item, 0);
17
21
  itemId = idResolution.normalizeIdToLayoutKey(itemId, layout);
18
22
  const selectedId = selectedItem
@@ -22,15 +26,20 @@ function useCardSelection({ data, isPanning, selectedItem, zoomLevel, viewMode,
22
26
  return idResolution.normalizeIdToLayoutKey(rawSelectedId, layout);
23
27
  })()
24
28
  : null;
29
+ // Get card position from layout
25
30
  const cardPosition$1 = idResolution.getCardPositionFromLayout(itemId, layout, constants.BASE_CARD_WIDTH, constants.BASE_CARD_HEIGHT);
31
+ // Calculate target position for animation
26
32
  let targetCardPosition = null;
27
33
  let callbacks = { getCardPositionAtZoom: null, getLayoutSizeAtZoom: null };
28
34
  let targetTotalHeight = layout.totalHeight;
29
35
  if (viewMode === 'grouped' && cardPosition$1) {
36
+ // Calculate target zoom
30
37
  const targetZoom = Math.min(constants.ZOOM_MAX, Math.max(constants.MIN_ZOOM_ON_SELECT, zoomLevel * constants.ZOOM_MULTIPLIER));
31
38
  const targetContainerWidth = containerDimensions.width / targetZoom;
32
39
  const targetContainerHeight = containerDimensions.height;
33
- callbacks = cardPosition.createCardPositionCallbacks(itemId, grouping, viewMode, targetContainerWidth, targetContainerHeight);
40
+ callbacks = cardPosition.createCardPositionCallbacks(itemId,
41
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
+ grouping, viewMode, targetContainerWidth, targetContainerHeight);
34
43
  const targetPosition = callbacks.getCardPositionAtZoom(targetZoom);
35
44
  if (targetPosition) {
36
45
  targetCardPosition = targetPosition;
@@ -1 +1 @@
1
- {"version":3,"file":"useCardSelection.js","sources":["../../../../PivotViewer/hooks/useCardSelection.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useCallback } from 'react';\nimport type React from 'react';\nimport { handleCardSelection } from '../utils/selection';\nimport type { Layout } from '../utils/cardPosition';\nimport type { ViewMode } from '../components/Toolbar';\nimport {\n getCardPositionFromLayout,\n normalizeIdToLayoutKey,\n type CardPosition,\n} from '../utils/idResolution';\nimport { createCardPositionCallbacks } from '../utils/cardPosition';\nimport { ZOOM_MAX, MIN_ZOOM_ON_SELECT, ZOOM_MULTIPLIER, BASE_CARD_WIDTH, BASE_CARD_HEIGHT } from '../utils/constants';\n\ninterface UseCardSelectionParams<TItem extends object> {\n data: TItem[];\n isPanning: boolean;\n selectedItem: TItem | null;\n zoomLevel: number;\n viewMode: ViewMode;\n layout: Layout;\n containerRef: React.RefObject<HTMLDivElement | null>;\n spacerRef: React.RefObject<HTMLDivElement | null>;\n containerDimensions: { width: number; height: number };\n scrollPosition: { x: number; y: number };\n preSelectionState: { zoom: number; scrollLeft: number; scrollTop: number } | null;\n grouping: unknown;\n getItemId?: (item: TItem, index: number) => string | number;\n resolveId: (item: TItem, index: number) => string | number;\n setZoomLevel: (level: number) => void;\n setIsZooming: (zooming: boolean) => void;\n setSelectedItem: (item: TItem | null) => void;\n setPreSelectionState: (state: { zoom: number; scrollLeft: number; scrollTop: number } | null) => void;\n}\n\nexport function useCardSelection<TItem extends object>({\n data,\n isPanning,\n selectedItem,\n zoomLevel,\n viewMode,\n layout,\n containerRef,\n spacerRef,\n containerDimensions,\n scrollPosition,\n preSelectionState,\n grouping,\n getItemId,\n resolveId,\n setZoomLevel,\n setIsZooming,\n setSelectedItem,\n setPreSelectionState,\n}: UseCardSelectionParams<TItem>) {\n return useCallback((item: TItem, e: MouseEvent, id?: number | string) => {\n if (isPanning) return;\n\n // Use the containerRef directly as the scrollable viewport\n const container = containerRef.current;\n if (!container) return;\n\n // Resolve item ID\n let itemId = (id !== undefined && id !== null) ? id : resolveId(item, 0);\n itemId = normalizeIdToLayoutKey(itemId, layout);\n\n const selectedId = selectedItem\n ? (() => {\n const index = data.indexOf(selectedItem);\n const rawSelectedId = index !== -1 ? resolveId(selectedItem, index) : resolveId(selectedItem, 0);\n return normalizeIdToLayoutKey(rawSelectedId, layout);\n })()\n : null;\n\n // Get card position from layout\n const cardPosition = getCardPositionFromLayout(itemId, layout, BASE_CARD_WIDTH, BASE_CARD_HEIGHT);\n\n // Calculate target position for animation\n let targetCardPosition: CardPosition | null = null;\n let callbacks = { getCardPositionAtZoom: null as unknown as ((zoom: number) => CardPosition | null), getLayoutSizeAtZoom: null as unknown as ((zoom: number) => { width: number; height: number }) };\n let targetTotalHeight = layout.totalHeight;\n\n if (viewMode === 'grouped' && cardPosition) {\n // Calculate target zoom\n const targetZoom = Math.min(ZOOM_MAX, Math.max(MIN_ZOOM_ON_SELECT, zoomLevel * ZOOM_MULTIPLIER));\n\n const targetContainerWidth = containerDimensions.width / targetZoom;\n const targetContainerHeight = containerDimensions.height;\n\n callbacks = createCardPositionCallbacks(\n itemId,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n grouping as unknown as any,\n viewMode,\n targetContainerWidth,\n targetContainerHeight,\n );\n\n const targetPosition = callbacks.getCardPositionAtZoom(targetZoom);\n if (targetPosition) {\n targetCardPosition = targetPosition;\n }\n\n const targetLayout = callbacks.getLayoutSizeAtZoom(targetZoom);\n targetTotalHeight = targetLayout.height;\n }\n\n handleCardSelection({\n item,\n itemId,\n selectedItemId: selectedId,\n container,\n cardPosition,\n targetCardPosition,\n getCardPositionAtZoom: callbacks.getCardPositionAtZoom,\n getLayoutSizeAtZoom: callbacks.getLayoutSizeAtZoom,\n spacer: spacerRef.current,\n preSelectionState,\n startScrollPosition: { x: scrollPosition.x, y: scrollPosition.y },\n setZoomLevel,\n setIsZooming,\n setSelectedItem,\n setPreSelectionState,\n viewMode,\n zoomLevel,\n totalHeight: targetTotalHeight,\n });\n }, [isPanning, selectedItem, zoomLevel, preSelectionState, viewMode, resolveId, setZoomLevel, layout, grouping, containerRef, spacerRef, containerDimensions, scrollPosition, data, getItemId]);\n}\n"],"names":["useCallback","normalizeIdToLayoutKey","cardPosition","getCardPositionFromLayout","BASE_CARD_WIDTH","BASE_CARD_HEIGHT","ZOOM_MAX","MIN_ZOOM_ON_SELECT","ZOOM_MULTIPLIER","createCardPositionCallbacks","handleCardSelection"],"mappings":"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"}
1
+ {"version":3,"file":"useCardSelection.js","sources":["../../../../PivotViewer/hooks/useCardSelection.ts"],"sourcesContent":[null],"names":["useCallback","normalizeIdToLayoutKey","cardPosition","getCardPositionFromLayout","BASE_CARD_WIDTH","BASE_CARD_HEIGHT","ZOOM_MAX","MIN_ZOOM_ON_SELECT","ZOOM_MULTIPLIER","createCardPositionCallbacks","handleCardSelection"],"mappings":"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"}
@@ -2,6 +2,15 @@
2
2
 
3
3
  var React = require('react');
4
4
 
5
+ // Copyright (c) Cratis. All rights reserved.
6
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
7
+ /**
8
+ * Hook to track container dimensions using ResizeObserver.
9
+ *
10
+ * @param containerRef - Ref to the container element.
11
+ * @param dependency - Optional dependency to trigger updates.
12
+ * @returns Dimensions of the container.
13
+ */
5
14
  function useContainerDimensions(containerRef, dependency) {
6
15
  const [dimensions, setDimensions] = React.useState({ width: 1200, height: 600 });
7
16
  React.useEffect(() => {
@@ -14,7 +23,9 @@ function useContainerDimensions(containerRef, dependency) {
14
23
  height: container.clientHeight,
15
24
  });
16
25
  };
26
+ // Initial dimensions
17
27
  updateDimensions();
28
+ // Observe for resize changes
18
29
  const resizeObserver = new ResizeObserver(() => {
19
30
  updateDimensions();
20
31
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useContainerDimensions.js","sources":["../../../../PivotViewer/hooks/useContainerDimensions.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useEffect, useState } from 'react';\n\n/**\n * Hook to track container dimensions using ResizeObserver.\n *\n * @param containerRef - Ref to the container element.\n * @param dependency - Optional dependency to trigger updates.\n * @returns Dimensions of the container.\n */\nexport function useContainerDimensions(\n containerRef: React.RefObject<HTMLDivElement>,\n dependency?: unknown\n) {\n const [dimensions, setDimensions] = useState({ width: 1200, height: 600 });\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const updateDimensions = () => {\n setDimensions({\n width: container.clientWidth,\n height: container.clientHeight,\n });\n };\n\n // Initial dimensions\n updateDimensions();\n\n // Observe for resize changes\n const resizeObserver = new ResizeObserver(() => {\n updateDimensions();\n });\n resizeObserver.observe(container);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [containerRef, dependency]);\n\n return dimensions;\n}\n"],"names":["useState","useEffect"],"mappings":";;;;AAYM,SAAU,sBAAsB,CACpC,YAA6C,EAC7C,UAAoB,EAAA;AAEpB,IAAA,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGA,cAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAE1EC,eAAS,CAAC,MAAK;AACb,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,SAAS;YAAE;QAEhB,MAAM,gBAAgB,GAAG,MAAK;AAC5B,YAAA,aAAa,CAAC;gBACZ,KAAK,EAAE,SAAS,CAAC,WAAW;gBAC5B,MAAM,EAAE,SAAS,CAAC,YAAY;AAC/B,aAAA,CAAC;AACJ,QAAA,CAAC;AAGD,QAAA,gBAAgB,EAAE;AAGlB,QAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;AAC7C,YAAA,gBAAgB,EAAE;AACpB,QAAA,CAAC,CAAC;AACF,QAAA,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC;AAEjC,QAAA,OAAO,MAAK;YACV,cAAc,CAAC,UAAU,EAAE;AAC7B,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAE9B,IAAA,OAAO,UAAU;AACnB;;;;"}
1
+ {"version":3,"file":"useContainerDimensions.js","sources":["../../../../PivotViewer/hooks/useContainerDimensions.ts"],"sourcesContent":[null],"names":["useState","useEffect"],"mappings":";;;;AAAA;AACA;AAIA;;;;;;AAMG;AACG,SAAU,sBAAsB,CACpC,YAA6C,EAC7C,UAAoB,EAAA;AAEpB,IAAA,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGA,cAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAE1EC,eAAS,CAAC,MAAK;AACb,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,SAAS;YAAE;QAEhB,MAAM,gBAAgB,GAAG,MAAK;AAC5B,YAAA,aAAa,CAAC;gBACZ,KAAK,EAAE,SAAS,CAAC,WAAW;gBAC5B,MAAM,EAAE,SAAS,CAAC,YAAY;AAC/B,aAAA,CAAC;AACJ,QAAA,CAAC;;AAGD,QAAA,gBAAgB,EAAE;;AAGlB,QAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;AAC7C,YAAA,gBAAgB,EAAE;AACpB,QAAA,CAAC,CAAC;AACF,QAAA,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC;AAEjC,QAAA,OAAO,MAAK;YACV,cAAc,CAAC,UAAU,EAAE;AAC7B,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAE9B,IAAA,OAAO,UAAU;AACnB;;;;"}
@@ -2,11 +2,15 @@
2
2
 
3
3
  var React = require('react');
4
4
 
5
+ // Copyright (c) Cratis. All rights reserved.
6
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
5
7
  function useCurrentFilters(filters, filterState, rangeFilterState, search, searchFields, dimensionFilter, activeDimension) {
6
8
  return React.useMemo(() => {
7
9
  const specs = [];
10
+ // Search filter
8
11
  const searchTerm = search.trim().toLowerCase();
9
12
  if (searchTerm && searchFields && searchFields.length > 0) ;
13
+ // Categorical filters
10
14
  for (const [key, values] of Object.entries(filterState)) {
11
15
  const valueSet = values;
12
16
  if (valueSet.size > 0) {
@@ -17,6 +21,7 @@ function useCurrentFilters(filters, filterState, rangeFilterState, search, searc
17
21
  });
18
22
  }
19
23
  }
24
+ // Range filters
20
25
  for (const [key, range] of Object.entries(rangeFilterState)) {
21
26
  if (range && (range[0] !== null || range[1] !== null)) {
22
27
  const min = range[0] ?? -Infinity;
@@ -28,6 +33,7 @@ function useCurrentFilters(filters, filterState, rangeFilterState, search, searc
28
33
  });
29
34
  }
30
35
  }
36
+ // Dimension filter (grouped filter)
31
37
  if (dimensionFilter && activeDimension) {
32
38
  specs.push({
33
39
  field: activeDimension.key,
@@ -1 +1 @@
1
- {"version":3,"file":"useCurrentFilters.js","sources":["../../../../PivotViewer/hooks/useCurrentFilters.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useMemo } from 'react';\nimport type { FilterSpec, GroupSpec } from '../engine/types';\nimport type { PivotDimension, PivotFilter } from '../types';\n\nexport function useCurrentFilters<TItem extends object>(\n filters: PivotFilter<TItem>[] | undefined,\n filterState: Record<string, Set<string>>,\n rangeFilterState: Record<string, [number | null, number | null] | null>,\n search: string,\n searchFields: unknown[] | undefined,\n dimensionFilter: string | null,\n activeDimension: PivotDimension<TItem> | undefined,\n): FilterSpec[] {\n return useMemo((): FilterSpec[] => {\n const specs: FilterSpec[] = [];\n\n // Search filter\n const searchTerm = search.trim().toLowerCase();\n if (searchTerm && searchFields && searchFields.length > 0) {\n // TODO: Implement search in worker\n // For now, search will be handled client-side after worker filtering\n }\n\n // Categorical filters\n for (const [key, values] of Object.entries(filterState)) {\n const valueSet = values as Set<string>;\n if (valueSet.size > 0) {\n specs.push({\n field: key,\n type: 'categorical',\n values: valueSet,\n });\n }\n }\n\n // Range filters\n for (const [key, range] of Object.entries(rangeFilterState)) {\n if (range && (range[0] !== null || range[1] !== null)) {\n const min = range[0] ?? -Infinity;\n const max = range[1] ?? Infinity;\n specs.push({\n field: key,\n type: 'numeric',\n range: { min, max },\n });\n }\n }\n\n // Dimension filter (grouped filter)\n if (dimensionFilter && activeDimension) {\n specs.push({\n field: activeDimension.key,\n type: 'categorical',\n values: new Set([dimensionFilter]),\n });\n }\n\n return specs;\n }, [filterState, rangeFilterState, search, searchFields, dimensionFilter, activeDimension]);\n}\n\nexport function useCurrentGroupBy<TItem extends object>(\n activeDimensionKey: string | null,\n dimensions: PivotDimension<TItem>[],\n): GroupSpec {\n return useMemo((): GroupSpec => {\n return {\n field: activeDimensionKey || dimensions[0]?.key || '',\n buckets: 10,\n };\n }, [activeDimensionKey, dimensions]);\n}\n"],"names":["useMemo"],"mappings":";;;;AAOM,SAAU,iBAAiB,CAC7B,OAAyC,EACzC,WAAwC,EACxC,gBAAuE,EACvE,MAAc,EACd,YAAmC,EACnC,eAA8B,EAC9B,eAAkD,EAAA;IAElD,OAAOA,aAAO,CAAC,MAAmB;QAC9B,MAAM,KAAK,GAAiB,EAAE;QAG9B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;QAC9C,IAAI,UAAU,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAM3D,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YACrD,MAAM,QAAQ,GAAG,MAAqB;AACtC,YAAA,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;gBACnB,KAAK,CAAC,IAAI,CAAC;AACP,oBAAA,KAAK,EAAE,GAAG;AACV,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,MAAM,EAAE,QAAQ;AACnB,iBAAA,CAAC;YACN;QACJ;AAGA,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;AACzD,YAAA,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE;gBACnD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ;gBACjC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ;gBAChC,KAAK,CAAC,IAAI,CAAC;AACP,oBAAA,KAAK,EAAE,GAAG;AACV,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;AACtB,iBAAA,CAAC;YACN;QACJ;AAGA,QAAA,IAAI,eAAe,IAAI,eAAe,EAAE;YACpC,KAAK,CAAC,IAAI,CAAC;gBACP,KAAK,EAAE,eAAe,CAAC,GAAG;AAC1B,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;AACrC,aAAA,CAAC;QACN;AAEA,QAAA,OAAO,KAAK;AAChB,IAAA,CAAC,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;AAC/F;AAEM,SAAU,iBAAiB,CAC7B,kBAAiC,EACjC,UAAmC,EAAA;IAEnC,OAAOA,aAAO,CAAC,MAAgB;QAC3B,OAAO;YACH,KAAK,EAAE,kBAAkB,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE;AACrD,YAAA,OAAO,EAAE,EAAE;SACd;AACL,IAAA,CAAC,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;AACxC;;;;;"}
1
+ {"version":3,"file":"useCurrentFilters.js","sources":["../../../../PivotViewer/hooks/useCurrentFilters.ts"],"sourcesContent":[null],"names":["useMemo"],"mappings":";;;;AAAA;AACA;AAMM,SAAU,iBAAiB,CAC7B,OAAyC,EACzC,WAAwC,EACxC,gBAAuE,EACvE,MAAc,EACd,YAAmC,EACnC,eAA8B,EAC9B,eAAkD,EAAA;IAElD,OAAOA,aAAO,CAAC,MAAmB;QAC9B,MAAM,KAAK,GAAiB,EAAE;;QAG9B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;QAC9C,IAAI,UAAU,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;;AAM3D,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YACrD,MAAM,QAAQ,GAAG,MAAqB;AACtC,YAAA,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;gBACnB,KAAK,CAAC,IAAI,CAAC;AACP,oBAAA,KAAK,EAAE,GAAG;AACV,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,MAAM,EAAE,QAAQ;AACnB,iBAAA,CAAC;YACN;QACJ;;AAGA,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;AACzD,YAAA,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE;gBACnD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ;gBACjC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ;gBAChC,KAAK,CAAC,IAAI,CAAC;AACP,oBAAA,KAAK,EAAE,GAAG;AACV,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;AACtB,iBAAA,CAAC;YACN;QACJ;;AAGA,QAAA,IAAI,eAAe,IAAI,eAAe,EAAE;YACpC,KAAK,CAAC,IAAI,CAAC;gBACP,KAAK,EAAE,eAAe,CAAC,GAAG;AAC1B,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;AACrC,aAAA,CAAC;QACN;AAEA,QAAA,OAAO,KAAK;AAChB,IAAA,CAAC,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;AAC/F;AAEM,SAAU,iBAAiB,CAC7B,kBAAiC,EACjC,UAAmC,EAAA;IAEnC,OAAOA,aAAO,CAAC,MAAgB;QAC3B,OAAO;YACH,KAAK,EAAE,kBAAkB,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE;AACrD,YAAA,OAAO,EAAE,EAAE;SACd;AACL,IAAA,CAAC,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;AACxC;;;;;"}
@@ -6,27 +6,34 @@ var idResolution = require('../utils/idResolution.js');
6
6
  var cardPosition = require('../utils/cardPosition.js');
7
7
  var constants = require('../utils/constants.js');
8
8
 
9
+ // Copyright (c) Cratis. All rights reserved.
10
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
9
11
  function useDetailPanelClose({ selectedItem, preSelectionState, zoomLevel, viewMode, layout, containerRef, containerDimensions, grouping, data, resolveId, setZoomLevel, setIsZooming, setSelectedItem, setPreSelectionState, }) {
10
12
  return React.useCallback(() => {
13
+ // Use the containerRef directly as the scrollable viewport
11
14
  const container = containerRef.current;
12
15
  if (!container || !selectedItem) {
13
16
  setSelectedItem(null);
14
17
  return;
15
18
  }
19
+ // Resolve item ID
16
20
  const index = data.indexOf(selectedItem);
17
21
  let itemId = index !== -1 ? index : resolveId(selectedItem, 0);
18
22
  itemId = idResolution.normalizeIdToLayoutKey(itemId, layout);
23
+ // Get card position from layout
19
24
  const cardPosition$1 = idResolution.getCardPositionFromLayout(itemId, layout, constants.BASE_CARD_WIDTH, constants.BASE_CARD_HEIGHT);
20
25
  if (!preSelectionState) {
21
26
  setSelectedItem(null);
22
27
  return;
23
28
  }
29
+ // Collection mode: just scroll back
24
30
  if (viewMode === 'collection') {
25
31
  setSelectedItem(null);
26
32
  animations.smoothScrollTo(container, preSelectionState.scrollLeft, preSelectionState.scrollTop, true);
27
33
  setPreSelectionState(null);
28
34
  return;
29
35
  }
36
+ // Grouped mode: check if zoom changed
30
37
  const zoomChanged = Math.abs(preSelectionState.zoom - zoomLevel) > 0.001;
31
38
  if (!zoomChanged || !cardPosition$1) {
32
39
  setSelectedItem(null);
@@ -34,10 +41,13 @@ function useDetailPanelClose({ selectedItem, preSelectionState, zoomLevel, viewM
34
41
  setPreSelectionState(null);
35
42
  return;
36
43
  }
44
+ // Calculate target position for animation (zooming out)
37
45
  const targetZoom = preSelectionState.zoom;
38
46
  const targetContainerWidth = containerDimensions.width / targetZoom;
39
47
  const targetContainerHeight = containerDimensions.height;
40
- const callbacks = cardPosition.createCardPositionCallbacks(itemId, grouping, viewMode, targetContainerWidth, targetContainerHeight);
48
+ const callbacks = cardPosition.createCardPositionCallbacks(itemId,
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ grouping, viewMode, targetContainerWidth, targetContainerHeight);
41
51
  const targetCardPosition = callbacks.getCardPositionAtZoom(targetZoom);
42
52
  setIsZooming(true);
43
53
  animations.animateZoomAndScroll({
@@ -1 +1 @@
1
- {"version":3,"file":"useDetailPanelClose.js","sources":["../../../../PivotViewer/hooks/useDetailPanelClose.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useCallback } from 'react';\nimport type React from 'react';\nimport { animateZoomAndScroll, smoothScrollTo } from '../utils/animations';\nimport type { Layout } from '../utils/cardPosition';\nimport type { ViewMode } from '../components/Toolbar';\nimport {\n getCardPositionFromLayout,\n normalizeIdToLayoutKey,\n} from '../utils/idResolution';\nimport { createCardPositionCallbacks } from '../utils/cardPosition';\nimport { BASE_CARD_WIDTH, BASE_CARD_HEIGHT } from '../utils/constants';\n\ninterface UseDetailPanelCloseParams<TItem extends object> {\n selectedItem: TItem | null;\n preSelectionState: { zoom: number; scrollLeft: number; scrollTop: number } | null;\n zoomLevel: number;\n viewMode: ViewMode;\n layout: Layout;\n containerRef: React.RefObject<HTMLDivElement | null>;\n containerDimensions: { width: number; height: number };\n grouping: unknown;\n data: TItem[];\n resolveId: (item: TItem, index: number) => string | number;\n setZoomLevel: (level: number) => void;\n setIsZooming: (zooming: boolean) => void;\n setSelectedItem: (item: TItem | null) => void;\n setPreSelectionState: (state: null) => void;\n}\n\nexport function useDetailPanelClose<TItem extends object>({\n selectedItem,\n preSelectionState,\n zoomLevel,\n viewMode,\n layout,\n containerRef,\n containerDimensions,\n grouping,\n data,\n resolveId,\n setZoomLevel,\n setIsZooming,\n setSelectedItem,\n setPreSelectionState,\n}: UseDetailPanelCloseParams<TItem>) {\n return useCallback(() => {\n // Use the containerRef directly as the scrollable viewport\n const container = containerRef.current;\n if (!container || !selectedItem) {\n setSelectedItem(null);\n return;\n }\n\n // Resolve item ID\n const index = data.indexOf(selectedItem);\n let itemId: string | number = index !== -1 ? index : resolveId(selectedItem, 0);\n itemId = normalizeIdToLayoutKey(itemId, layout);\n\n // Get card position from layout\n const cardPosition = getCardPositionFromLayout(itemId, layout, BASE_CARD_WIDTH, BASE_CARD_HEIGHT);\n\n if (!preSelectionState) {\n setSelectedItem(null);\n return;\n }\n\n // Collection mode: just scroll back\n if (viewMode === 'collection') {\n setSelectedItem(null);\n smoothScrollTo(container, preSelectionState.scrollLeft, preSelectionState.scrollTop, true);\n setPreSelectionState(null);\n return;\n }\n\n // Grouped mode: check if zoom changed\n const zoomChanged = Math.abs(preSelectionState.zoom - zoomLevel) > 0.001;\n\n if (!zoomChanged || !cardPosition) {\n setSelectedItem(null);\n smoothScrollTo(container, preSelectionState.scrollLeft, preSelectionState.scrollTop, true);\n setPreSelectionState(null);\n return;\n }\n\n // Calculate target position for animation (zooming out)\n const targetZoom = preSelectionState.zoom;\n const targetContainerWidth = containerDimensions.width / targetZoom;\n const targetContainerHeight = containerDimensions.height;\n\n const callbacks = createCardPositionCallbacks(\n itemId,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n grouping as unknown as any,\n viewMode,\n targetContainerWidth,\n targetContainerHeight,\n );\n\n const targetCardPosition = callbacks.getCardPositionAtZoom(targetZoom);\n\n setIsZooming(true);\n\n animateZoomAndScroll({\n container,\n cardPosition,\n targetCardPosition,\n getCardPositionAtZoom: callbacks.getCardPositionAtZoom,\n startZoom: zoomLevel,\n targetZoom,\n targetScrollLeft: preSelectionState.scrollLeft,\n targetScrollTop: preSelectionState.scrollTop,\n onUpdate: setZoomLevel,\n onComplete: () => {\n setIsZooming(false);\n setSelectedItem(null);\n setPreSelectionState(null);\n },\n });\n }, [preSelectionState, selectedItem, zoomLevel, viewMode, resolveId, setZoomLevel, layout, grouping, containerRef, containerDimensions, data, setSelectedItem, setPreSelectionState, setIsZooming]);\n}\n"],"names":["useCallback","normalizeIdToLayoutKey","cardPosition","getCardPositionFromLayout","BASE_CARD_WIDTH","BASE_CARD_HEIGHT","smoothScrollTo","createCardPositionCallbacks","animateZoomAndScroll"],"mappings":"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"}
1
+ {"version":3,"file":"useDetailPanelClose.js","sources":["../../../../PivotViewer/hooks/useDetailPanelClose.ts"],"sourcesContent":[null],"names":["useCallback","normalizeIdToLayoutKey","cardPosition","getCardPositionFromLayout","BASE_CARD_WIDTH","BASE_CARD_HEIGHT","smoothScrollTo","createCardPositionCallbacks","animateZoomAndScroll"],"mappings":"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"}
@@ -2,6 +2,8 @@
2
2
 
3
3
  var React = require('react');
4
4
 
5
+ // Copyright (c) Cratis. All rights reserved.
6
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
5
7
  function useDimensionState(dimensions, defaultDimensionKey) {
6
8
  const dimensionMap = React.useMemo(() => {
7
9
  const map = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"useDimensionState.js","sources":["../../../../PivotViewer/hooks/useDimensionState.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useMemo, useState, useEffect, useCallback } from 'react';\nimport type { PivotDimension } from '../types';\n\nexport type PivotDimensionFilter = string | null;\n\nexport function useDimensionState<TItem extends object>(\n dimensions: PivotDimension<TItem>[],\n defaultDimensionKey?: string\n) {\n const dimensionMap = useMemo(() => {\n const map = new Map<string, PivotDimension<TItem>>();\n dimensions.forEach((dimension) => map.set(dimension.key, dimension));\n return map;\n }, [dimensions]);\n\n const initialDimension = useMemo(() => {\n if (defaultDimensionKey && dimensionMap.has(defaultDimensionKey)) {\n return defaultDimensionKey;\n }\n return dimensions[0]?.key ?? '';\n }, [defaultDimensionKey, dimensionMap, dimensions]);\n\n const [activeDimensionKey, setActiveDimensionKey] = useState(initialDimension);\n const [dimensionFilter, setDimensionFilter] = useState<string | null>(null);\n\n useEffect(() => {\n setActiveDimensionKey((previous) => {\n if (previous && dimensionMap.has(previous)) {\n return previous;\n }\n return initialDimension;\n });\n setDimensionFilter(null);\n }, [dimensionMap, initialDimension]);\n\n const activeDimension = dimensionMap.get(activeDimensionKey) ?? dimensions[0];\n\n const handleAxisLabelClick = useCallback((groupKey: string) => {\n setDimensionFilter((prev) => (prev === groupKey ? null : groupKey));\n }, []);\n\n return {\n dimensionMap,\n activeDimensionKey,\n setActiveDimensionKey,\n activeDimension,\n dimensionFilter,\n handleAxisLabelClick,\n };\n}\n"],"names":["useMemo","useState","useEffect","useCallback"],"mappings":";;;;AAQM,SAAU,iBAAiB,CAC7B,UAAmC,EACnC,mBAA4B,EAAA;AAE5B,IAAA,MAAM,YAAY,GAAGA,aAAO,CAAC,MAAK;AAC9B,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAiC;AACpD,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACpE,QAAA,OAAO,GAAG;AACd,IAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAEhB,IAAA,MAAM,gBAAgB,GAAGA,aAAO,CAAC,MAAK;QAClC,IAAI,mBAAmB,IAAI,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE;AAC9D,YAAA,OAAO,mBAAmB;QAC9B;QACA,OAAO,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE;IACnC,CAAC,EAAE,CAAC,mBAAmB,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;IAEnD,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAGC,cAAQ,CAAC,gBAAgB,CAAC;IAC9E,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAGA,cAAQ,CAAgB,IAAI,CAAC;IAE3EC,eAAS,CAAC,MAAK;AACX,QAAA,qBAAqB,CAAC,CAAC,QAAQ,KAAI;YAC/B,IAAI,QAAQ,IAAI,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACxC,gBAAA,OAAO,QAAQ;YACnB;AACA,YAAA,OAAO,gBAAgB;AAC3B,QAAA,CAAC,CAAC;QACF,kBAAkB,CAAC,IAAI,CAAC;AAC5B,IAAA,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;AAEpC,IAAA,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;AAE7E,IAAA,MAAM,oBAAoB,GAAGC,iBAAW,CAAC,CAAC,QAAgB,KAAI;QAC1D,kBAAkB,CAAC,CAAC,IAAI,MAAM,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC;IACvE,CAAC,EAAE,EAAE,CAAC;IAEN,OAAO;QACH,YAAY;QACZ,kBAAkB;QAClB,qBAAqB;QACrB,eAAe;QACf,eAAe;QACf,oBAAoB;KACvB;AACL;;;;"}
1
+ {"version":3,"file":"useDimensionState.js","sources":["../../../../PivotViewer/hooks/useDimensionState.ts"],"sourcesContent":[null],"names":["useMemo","useState","useEffect","useCallback"],"mappings":";;;;AAAA;AACA;AAOM,SAAU,iBAAiB,CAC7B,UAAmC,EACnC,mBAA4B,EAAA;AAE5B,IAAA,MAAM,YAAY,GAAGA,aAAO,CAAC,MAAK;AAC9B,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAiC;AACpD,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACpE,QAAA,OAAO,GAAG;AACd,IAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAEhB,IAAA,MAAM,gBAAgB,GAAGA,aAAO,CAAC,MAAK;QAClC,IAAI,mBAAmB,IAAI,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE;AAC9D,YAAA,OAAO,mBAAmB;QAC9B;QACA,OAAO,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE;IACnC,CAAC,EAAE,CAAC,mBAAmB,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;IAEnD,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAGC,cAAQ,CAAC,gBAAgB,CAAC;IAC9E,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAGA,cAAQ,CAAgB,IAAI,CAAC;IAE3EC,eAAS,CAAC,MAAK;AACX,QAAA,qBAAqB,CAAC,CAAC,QAAQ,KAAI;YAC/B,IAAI,QAAQ,IAAI,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACxC,gBAAA,OAAO,QAAQ;YACnB;AACA,YAAA,OAAO,gBAAgB;AAC3B,QAAA,CAAC,CAAC;QACF,kBAAkB,CAAC,IAAI,CAAC;AAC5B,IAAA,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;AAEpC,IAAA,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;AAE7E,IAAA,MAAM,oBAAoB,GAAGC,iBAAW,CAAC,CAAC,QAAgB,KAAI;QAC1D,kBAAkB,CAAC,CAAC,IAAI,MAAM,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC;IACvE,CAAC,EAAE,EAAE,CAAC;IAEN,OAAO;QACH,YAAY;QACZ,kBAAkB;QAClB,qBAAqB;QACrB,eAAe;QACf,eAAe;QACf,oBAAoB;KACvB;AACL;;;;"}
@@ -2,6 +2,8 @@
2
2
 
3
3
  var React = require('react');
4
4
 
5
+ // Copyright (c) Cratis. All rights reserved.
6
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
5
7
  function useFieldExtractors(dimensions, filters) {
6
8
  const fieldExtractors = React.useMemo(() => {
7
9
  const extractors = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"useFieldExtractors.js","sources":["../../../../PivotViewer/hooks/useFieldExtractors.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useMemo } from 'react';\nimport type { FieldValue } from '../engine/types';\nimport type { PivotDimension, PivotFilter } from '../types';\n\nexport function useFieldExtractors<TItem extends object>(\n dimensions: PivotDimension<TItem>[],\n filters?: PivotFilter<TItem>[],\n) {\n const fieldExtractors = useMemo(() => {\n const extractors = new Map<string, (item: TItem) => FieldValue>();\n\n for (const dim of dimensions) {\n extractors.set(dim.key, (item) => {\n const val = dim.getValue(item);\n if (val instanceof Date) return val.getTime();\n if (typeof val === 'string' || typeof val === 'number' || typeof val === 'boolean' || val === null) {\n return val;\n }\n return String(val);\n });\n }\n\n if (filters) {\n for (const filter of filters) {\n extractors.set(filter.key, (item) => {\n const val = filter.getValue(item);\n if (val instanceof Date) return val.getTime();\n if (typeof val === 'string' || typeof val === 'number' || typeof val === 'boolean' || val === null) {\n return val;\n }\n return String(val);\n });\n }\n }\n\n return extractors;\n }, [dimensions, filters]);\n\n const indexFields = useMemo(() => {\n const fields = new Set<string>();\n\n for (const dim of dimensions) {\n fields.add(dim.key);\n }\n\n if (filters) {\n for (const filter of filters) {\n fields.add(filter.key);\n }\n }\n\n return Array.from(fields);\n }, [dimensions, filters]);\n\n return { fieldExtractors, indexFields };\n}\n"],"names":["useMemo"],"mappings":";;;;AAOM,SAAU,kBAAkB,CAC9B,UAAmC,EACnC,OAA8B,EAAA;AAE9B,IAAA,MAAM,eAAe,GAAGA,aAAO,CAAC,MAAK;AACjC,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAuC;AAEjE,QAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;YAC1B,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,KAAI;gBAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC9B,IAAI,GAAG,YAAY,IAAI;AAAE,oBAAA,OAAO,GAAG,CAAC,OAAO,EAAE;AAC7C,gBAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;AAChG,oBAAA,OAAO,GAAG;gBACd;AACA,gBAAA,OAAO,MAAM,CAAC,GAAG,CAAC;AACtB,YAAA,CAAC,CAAC;QACN;QAEA,IAAI,OAAO,EAAE;AACT,YAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC1B,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,KAAI;oBAChC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACjC,IAAI,GAAG,YAAY,IAAI;AAAE,wBAAA,OAAO,GAAG,CAAC,OAAO,EAAE;AAC7C,oBAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;AAChG,wBAAA,OAAO,GAAG;oBACd;AACA,oBAAA,OAAO,MAAM,CAAC,GAAG,CAAC;AACtB,gBAAA,CAAC,CAAC;YACN;QACJ;AAEA,QAAA,OAAO,UAAU;AACrB,IAAA,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAEzB,IAAA,MAAM,WAAW,GAAGA,aAAO,CAAC,MAAK;AAC7B,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU;AAEhC,QAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;AAC1B,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QACvB;QAEA,IAAI,OAAO,EAAE;AACT,YAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC1B,gBAAA,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;YAC1B;QACJ;AAEA,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7B,IAAA,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAEzB,IAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE;AAC3C;;;;"}
1
+ {"version":3,"file":"useFieldExtractors.js","sources":["../../../../PivotViewer/hooks/useFieldExtractors.ts"],"sourcesContent":[null],"names":["useMemo"],"mappings":";;;;AAAA;AACA;AAMM,SAAU,kBAAkB,CAC9B,UAAmC,EACnC,OAA8B,EAAA;AAE9B,IAAA,MAAM,eAAe,GAAGA,aAAO,CAAC,MAAK;AACjC,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAuC;AAEjE,QAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;YAC1B,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,KAAI;gBAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC9B,IAAI,GAAG,YAAY,IAAI;AAAE,oBAAA,OAAO,GAAG,CAAC,OAAO,EAAE;AAC7C,gBAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;AAChG,oBAAA,OAAO,GAAG;gBACd;AACA,gBAAA,OAAO,MAAM,CAAC,GAAG,CAAC;AACtB,YAAA,CAAC,CAAC;QACN;QAEA,IAAI,OAAO,EAAE;AACT,YAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC1B,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,KAAI;oBAChC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACjC,IAAI,GAAG,YAAY,IAAI;AAAE,wBAAA,OAAO,GAAG,CAAC,OAAO,EAAE;AAC7C,oBAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;AAChG,wBAAA,OAAO,GAAG;oBACd;AACA,oBAAA,OAAO,MAAM,CAAC,GAAG,CAAC;AACtB,gBAAA,CAAC,CAAC;YACN;QACJ;AAEA,QAAA,OAAO,UAAU;AACrB,IAAA,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAEzB,IAAA,MAAM,WAAW,GAAGA,aAAO,CAAC,MAAK;AAC7B,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU;AAEhC,QAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;AAC1B,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QACvB;QAEA,IAAI,OAAO,EAAE;AACT,YAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC1B,gBAAA,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;YAC1B;QACJ;AAEA,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7B,IAAA,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAEzB,IAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE;AAC3C;;;;"}