@cratis/components 1.5.0 → 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 (382) hide show
  1. package/dist/cjs/CommandDialog/CommandDialog.js +11 -4
  2. package/dist/cjs/CommandDialog/CommandDialog.js.map +1 -1
  3. package/dist/cjs/CommandDialog/StepperCommandDialog.js +23 -4
  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 +8 -2
  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 +11 -4
  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 +5 -4
  187. package/dist/esm/CommandDialog/StepperCommandDialog.d.ts.map +1 -1
  188. package/dist/esm/CommandDialog/StepperCommandDialog.js +23 -4
  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.d.ts +5 -3
  230. package/dist/esm/Dialogs/Dialog.d.ts.map +1 -1
  231. package/dist/esm/Dialogs/Dialog.js +8 -2
  232. package/dist/esm/Dialogs/Dialog.js.map +1 -1
  233. package/dist/esm/Dialogs/index.js +3 -0
  234. package/dist/esm/Dialogs/index.js.map +1 -1
  235. package/dist/esm/Dropdown/Dropdown.js +1 -0
  236. package/dist/esm/Dropdown/Dropdown.js.map +1 -1
  237. package/dist/esm/Dropdown/index.js +3 -0
  238. package/dist/esm/Dropdown/index.js.map +1 -1
  239. package/dist/esm/ObjectContentEditor/ObjectContentEditor.js.map +1 -1
  240. package/dist/esm/ObjectContentEditor/index.js +3 -0
  241. package/dist/esm/ObjectContentEditor/index.js.map +1 -1
  242. package/dist/esm/ObjectContentEditor/objectHelpers.js +6 -0
  243. package/dist/esm/ObjectContentEditor/objectHelpers.js.map +1 -1
  244. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.js.map +1 -1
  245. package/dist/esm/ObjectNavigationalBar/breadcrumbHelpers.js +6 -0
  246. package/dist/esm/ObjectNavigationalBar/breadcrumbHelpers.js.map +1 -1
  247. package/dist/esm/ObjectNavigationalBar/index.js +3 -0
  248. package/dist/esm/ObjectNavigationalBar/index.js.map +1 -1
  249. package/dist/esm/PivotViewer/PivotViewer.js +28 -0
  250. package/dist/esm/PivotViewer/PivotViewer.js.map +1 -1
  251. package/dist/esm/PivotViewer/components/AxisLabels.js +4 -0
  252. package/dist/esm/PivotViewer/components/AxisLabels.js.map +1 -1
  253. package/dist/esm/PivotViewer/components/DetailPanel.js.map +1 -1
  254. package/dist/esm/PivotViewer/components/FilterPanel.js +4 -0
  255. package/dist/esm/PivotViewer/components/FilterPanel.js.map +1 -1
  256. package/dist/esm/PivotViewer/components/FilterPanelContainer.js.map +1 -1
  257. package/dist/esm/PivotViewer/components/PivotCanvas.js +138 -2
  258. package/dist/esm/PivotViewer/components/PivotCanvas.js.map +1 -1
  259. package/dist/esm/PivotViewer/components/PivotViewerMain.js +4 -0
  260. package/dist/esm/PivotViewer/components/PivotViewerMain.js.map +1 -1
  261. package/dist/esm/PivotViewer/components/RangeHistogramFilter.js.map +1 -1
  262. package/dist/esm/PivotViewer/components/Spinner.js.map +1 -1
  263. package/dist/esm/PivotViewer/components/Toolbar.js.map +1 -1
  264. package/dist/esm/PivotViewer/components/ToolbarContainer.js.map +1 -1
  265. package/dist/esm/PivotViewer/components/pivot/animation.js +8 -1
  266. package/dist/esm/PivotViewer/components/pivot/animation.js.map +1 -1
  267. package/dist/esm/PivotViewer/components/pivot/colorResolver.js +3 -1
  268. package/dist/esm/PivotViewer/components/pivot/colorResolver.js.map +1 -1
  269. package/dist/esm/PivotViewer/components/pivot/constants.js +8 -5
  270. package/dist/esm/PivotViewer/components/pivot/constants.js.map +1 -1
  271. package/dist/esm/PivotViewer/components/pivot/groups.js +15 -0
  272. package/dist/esm/PivotViewer/components/pivot/groups.js.map +1 -1
  273. package/dist/esm/PivotViewer/components/pivot/sprites.js +19 -0
  274. package/dist/esm/PivotViewer/components/pivot/sprites.js.map +1 -1
  275. package/dist/esm/PivotViewer/components/pivot/visibility.js +102 -3
  276. package/dist/esm/PivotViewer/components/pivot/visibility.js.map +1 -1
  277. package/dist/esm/PivotViewer/constants.js +2 -0
  278. package/dist/esm/PivotViewer/constants.js.map +1 -1
  279. package/dist/esm/PivotViewer/engine/layout.js +23 -0
  280. package/dist/esm/PivotViewer/engine/layout.js.map +1 -1
  281. package/dist/esm/PivotViewer/engine/store.js +29 -0
  282. package/dist/esm/PivotViewer/engine/store.js.map +1 -1
  283. package/dist/esm/PivotViewer/hooks/useAnimationModeTracking.js +8 -0
  284. package/dist/esm/PivotViewer/hooks/useAnimationModeTracking.js.map +1 -1
  285. package/dist/esm/PivotViewer/hooks/useCardSelection.js +10 -1
  286. package/dist/esm/PivotViewer/hooks/useCardSelection.js.map +1 -1
  287. package/dist/esm/PivotViewer/hooks/useContainerDimensions.js +11 -0
  288. package/dist/esm/PivotViewer/hooks/useContainerDimensions.js.map +1 -1
  289. package/dist/esm/PivotViewer/hooks/useCurrentFilters.js +6 -0
  290. package/dist/esm/PivotViewer/hooks/useCurrentFilters.js.map +1 -1
  291. package/dist/esm/PivotViewer/hooks/useDetailPanelClose.js +11 -1
  292. package/dist/esm/PivotViewer/hooks/useDetailPanelClose.js.map +1 -1
  293. package/dist/esm/PivotViewer/hooks/useDimensionState.js +2 -0
  294. package/dist/esm/PivotViewer/hooks/useDimensionState.js.map +1 -1
  295. package/dist/esm/PivotViewer/hooks/useFieldExtractors.js +2 -0
  296. package/dist/esm/PivotViewer/hooks/useFieldExtractors.js.map +1 -1
  297. package/dist/esm/PivotViewer/hooks/useFilterOptions.js +2 -0
  298. package/dist/esm/PivotViewer/hooks/useFilterOptions.js.map +1 -1
  299. package/dist/esm/PivotViewer/hooks/useFilterState.js +5 -0
  300. package/dist/esm/PivotViewer/hooks/useFilterState.js.map +1 -1
  301. package/dist/esm/PivotViewer/hooks/usePanning.js +14 -0
  302. package/dist/esm/PivotViewer/hooks/usePanning.js.map +1 -1
  303. package/dist/esm/PivotViewer/hooks/usePivotEngine.js +7 -0
  304. package/dist/esm/PivotViewer/hooks/usePivotEngine.js.map +1 -1
  305. package/dist/esm/PivotViewer/hooks/useScrollSync.js +6 -0
  306. package/dist/esm/PivotViewer/hooks/useScrollSync.js.map +1 -1
  307. package/dist/esm/PivotViewer/hooks/useViewModeScrollHandling.js +9 -0
  308. package/dist/esm/PivotViewer/hooks/useViewModeScrollHandling.js.map +1 -1
  309. package/dist/esm/PivotViewer/hooks/useWheelZoom.js +8 -2
  310. package/dist/esm/PivotViewer/hooks/useWheelZoom.js.map +1 -1
  311. package/dist/esm/PivotViewer/hooks/useZoomState.js +2 -0
  312. package/dist/esm/PivotViewer/hooks/useZoomState.js.map +1 -1
  313. package/dist/esm/PivotViewer/index.js +3 -0
  314. package/dist/esm/PivotViewer/index.js.map +1 -1
  315. package/dist/esm/PivotViewer/types.js +11 -0
  316. package/dist/esm/PivotViewer/types.js.map +1 -1
  317. package/dist/esm/PivotViewer/utils/animations.js +35 -2
  318. package/dist/esm/PivotViewer/utils/animations.js.map +1 -1
  319. package/dist/esm/PivotViewer/utils/cardPosition.js +21 -3
  320. package/dist/esm/PivotViewer/utils/cardPosition.js.map +1 -1
  321. package/dist/esm/PivotViewer/utils/constants.js +3 -0
  322. package/dist/esm/PivotViewer/utils/constants.js.map +1 -1
  323. package/dist/esm/PivotViewer/utils/idResolution.js +16 -0
  324. package/dist/esm/PivotViewer/utils/idResolution.js.map +1 -1
  325. package/dist/esm/PivotViewer/utils/selection.js +25 -0
  326. package/dist/esm/PivotViewer/utils/selection.js.map +1 -1
  327. package/dist/esm/PivotViewer/utils/utils.js +5 -0
  328. package/dist/esm/PivotViewer/utils/utils.js.map +1 -1
  329. package/dist/esm/SchemaEditor/NameCell.js.map +1 -1
  330. package/dist/esm/SchemaEditor/SchemaEditor.js.map +1 -1
  331. package/dist/esm/SchemaEditor/TypeCell.js.map +1 -1
  332. package/dist/esm/SchemaEditor/index.js +3 -0
  333. package/dist/esm/SchemaEditor/index.js.map +1 -1
  334. package/dist/esm/SchemaEditor/schemaHelpers.js +8 -0
  335. package/dist/esm/SchemaEditor/schemaHelpers.js.map +1 -1
  336. package/dist/esm/TimeMachine/EventsView.js +2 -0
  337. package/dist/esm/TimeMachine/EventsView.js.map +1 -1
  338. package/dist/esm/TimeMachine/Properties.js.map +1 -1
  339. package/dist/esm/TimeMachine/ReadModelView.js +1 -0
  340. package/dist/esm/TimeMachine/ReadModelView.js.map +1 -1
  341. package/dist/esm/TimeMachine/TimeMachine.js +11 -1
  342. package/dist/esm/TimeMachine/TimeMachine.js.map +1 -1
  343. package/dist/esm/TimeMachine/index.js +3 -0
  344. package/dist/esm/TimeMachine/index.js.map +1 -1
  345. package/dist/esm/TimeMachine/propertiesHelpers.js +5 -0
  346. package/dist/esm/TimeMachine/propertiesHelpers.js.map +1 -1
  347. package/dist/esm/Toolbar/Toolbar.css +8 -0
  348. package/dist/esm/Toolbar/Toolbar.d.ts +3 -1
  349. package/dist/esm/Toolbar/Toolbar.d.ts.map +1 -1
  350. package/dist/esm/Toolbar/Toolbar.js +7 -1
  351. package/dist/esm/Toolbar/Toolbar.js.map +1 -1
  352. package/dist/esm/Toolbar/Toolbar.stories.d.ts +1 -0
  353. package/dist/esm/Toolbar/Toolbar.stories.d.ts.map +1 -1
  354. package/dist/esm/Toolbar/Toolbar.stories.js +23 -0
  355. package/dist/esm/Toolbar/Toolbar.stories.js.map +1 -1
  356. package/dist/esm/Toolbar/ToolbarButton.d.ts +4 -1
  357. package/dist/esm/Toolbar/ToolbarButton.d.ts.map +1 -1
  358. package/dist/esm/Toolbar/ToolbarButton.js +16 -2
  359. package/dist/esm/Toolbar/ToolbarButton.js.map +1 -1
  360. package/dist/esm/Toolbar/ToolbarContext.js +8 -0
  361. package/dist/esm/Toolbar/ToolbarContext.js.map +1 -1
  362. package/dist/esm/Toolbar/ToolbarDragContext.d.ts +7 -0
  363. package/dist/esm/Toolbar/ToolbarDragContext.d.ts.map +1 -0
  364. package/dist/esm/Toolbar/ToolbarDragContext.js +21 -0
  365. package/dist/esm/Toolbar/ToolbarDragContext.js.map +1 -0
  366. package/dist/esm/Toolbar/ToolbarFanOutItem.js +11 -0
  367. package/dist/esm/Toolbar/ToolbarFanOutItem.js.map +1 -1
  368. package/dist/esm/Toolbar/ToolbarSection.js +18 -1
  369. package/dist/esm/Toolbar/ToolbarSection.js.map +1 -1
  370. package/dist/esm/Toolbar/ToolbarSeparator.js +6 -0
  371. package/dist/esm/Toolbar/ToolbarSeparator.js.map +1 -1
  372. package/dist/esm/Toolbar/index.js +3 -0
  373. package/dist/esm/Toolbar/index.js.map +1 -1
  374. package/dist/esm/tailwind-utilities.css +16 -1
  375. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  376. package/dist/esm/types/TypeFormat.js +2 -0
  377. package/dist/esm/types/TypeFormat.js.map +1 -1
  378. package/dist/esm/types/index.js +3 -0
  379. package/dist/esm/types/index.js.map +1 -1
  380. package/dist/esm/useOverlayZIndex.js +10 -0
  381. package/dist/esm/useOverlayZIndex.js.map +1 -1
  382. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"groups.js","sources":["../../../../../PivotViewer/components/pivot/groups.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 * as PIXI from 'pixi.js';\nimport type { CardColors } from './constants';\nimport type { GroupingResult, LayoutResult } from '../../engine/types';\n\nexport function updateGroupBackgrounds(\n groupsContainer: PIXI.Container | null,\n container: HTMLDivElement | null,\n grouping: GroupingResult,\n layout: LayoutResult,\n zoomLevel: number,\n cardColors: CardColors,\n viewMode: string,\n) {\n if (!groupsContainer) return;\n\n // keep parameter referenced to avoid unused param lint when callers pass zoomLevel\n void zoomLevel;\n\n if (!container || grouping.groups.length === 0 || viewMode === 'collection') {\n // If we shouldn't show anything, hide all existing backgrounds\n // We keep the highlight if it exists\n for (const child of groupsContainer.children) {\n if ((child as unknown as { name?: string }).name !== 'highlight') {\n child.visible = false;\n }\n }\n return;\n }\n\n // Derive a world-space height that always covers the visible viewport even when zoomed out.\n const invScale = zoomLevel && zoomLevel !== 0 ? 1 / zoomLevel : 1;\n const containerWorldHeight = Math.max(\n (container.scrollHeight || container.clientHeight) * invScale,\n container.clientHeight * invScale,\n );\n const baseWorldHeight = Math.max(layout.totalHeight || 0, containerWorldHeight);\n // Use larger buffer and extend further above the viewport to ensure full coverage\n // when zoomed out and cards are positioned at the bottom\n const bufferWorld = Math.max(500, baseWorldHeight * 0.5, containerWorldHeight);\n const worldHeight = baseWorldHeight + bufferWorld * 3;\n const startY = -bufferWorld * 2;\n\n // Get existing background graphics (excluding highlight)\n const backgroundGraphics = groupsContainer.children.filter(c => (c as unknown as { name?: string }).name !== 'highlight') as PIXI.Graphics[];\n let bgIndex = 0;\n\n // Instead of re-deriving bucket geometry from constants, compute bucket bounds\n // directly from the positions stored in the layout so backgrounds align exactly.\n for (let index = 0; index < grouping.groups.length; index++) {\n const group = grouping.groups[index];\n let minX = Infinity;\n let maxX = -Infinity;\n\n for (let j = 0; j < group.ids.length; j++) {\n const id = group.ids[j];\n const pos = layout.positions.get(id);\n if (pos) {\n minX = Math.min(minX, pos.x);\n maxX = Math.max(maxX, pos.x);\n }\n }\n\n if (minX === Infinity && (!layout.groupXs || layout.groupXs[index] === undefined)) continue;\n\n // Prefer explicit bucket width and position from layout when available\n const bucketWidths = layout.bucketWidths || [];\n const groupXs = layout.groupXs || [];\n const widthFromLayout = bucketWidths[index];\n const xFromLayout = groupXs[index];\n\n const width = widthFromLayout && widthFromLayout > 0 ? widthFromLayout : ((maxX - minX) || 0);\n const x = xFromLayout !== undefined ? xFromLayout : minX;\n\n if (index % 2 === 0 && width > 0) {\n let bg: PIXI.Graphics;\n\n if (bgIndex < backgroundGraphics.length) {\n bg = backgroundGraphics[bgIndex];\n bg.clear();\n } else {\n bg = new PIXI.Graphics();\n // Insert before highlight if it exists, otherwise at end\n const highlightIndex = groupsContainer.children.findIndex(c => (c as unknown as { name?: string }).name === 'highlight');\n if (highlightIndex >= 0) {\n groupsContainer.addChildAt(bg, highlightIndex);\n } else {\n groupsContainer.addChild(bg);\n }\n }\n\n bg.rect(x, startY, width, worldHeight);\n bg.fill(cardColors.base);\n bg.alpha = 0.15;\n bg.visible = true;\n bgIndex++;\n }\n }\n\n // Hide unused background graphics\n for (let i = bgIndex; i < backgroundGraphics.length; i++) {\n backgroundGraphics[i].visible = false;\n }\n}\n\nexport function updateHighlight(\n groupsContainer: PIXI.Container | null,\n container: HTMLDivElement | null,\n grouping: GroupingResult,\n layout: LayoutResult,\n hoveredGroupIndex: number | null,\n cardWidth: number,\n zoomLevel: number,\n) {\n if (!groupsContainer || !container || grouping.groups.length === 0) return;\n\n const invScale = zoomLevel && zoomLevel !== 0 ? 1 / zoomLevel : 1;\n\n let highlight = groupsContainer.children.find(child => (child as unknown as { name?: string }).name === 'highlight') as PIXI.Graphics;\n\n if (!highlight) {\n highlight = new PIXI.Graphics();\n (highlight as unknown as { name: string }).name = 'highlight';\n groupsContainer.addChild(highlight);\n }\n\n highlight.clear();\n\n if (hoveredGroupIndex === null || hoveredGroupIndex < 0) {\n highlight.visible = false;\n return;\n }\n\n const group = grouping.groups[hoveredGroupIndex];\n if (!group || group.ids.length === 0) {\n highlight.visible = false;\n return;\n }\n\n // Use layout info if available\n const bucketWidths = layout.bucketWidths || [];\n const groupXs = layout.groupXs || [];\n const widthFromLayout = bucketWidths[hoveredGroupIndex];\n const xFromLayout = groupXs[hoveredGroupIndex];\n\n let rectX: number;\n let rectWidth: number;\n\n if (widthFromLayout !== undefined && xFromLayout !== undefined) {\n rectX = xFromLayout;\n rectWidth = widthFromLayout;\n } else {\n // Fallback: derive from items bounding box\n let minX = Infinity;\n let maxX = -Infinity;\n\n for (let j = 0; j < group.ids.length; j++) {\n const id = group.ids[j];\n const pos = layout.positions.get(id);\n if (pos) {\n minX = Math.min(minX, pos.x);\n maxX = Math.max(maxX, pos.x + cardWidth);\n }\n }\n\n if (minX === Infinity) {\n highlight.visible = false;\n return;\n }\n rectX = minX;\n rectWidth = maxX - minX;\n }\n\n const containerWorldHeight = Math.max(\n (container.scrollHeight || container.clientHeight) * invScale,\n container.clientHeight * invScale,\n );\n const baseWorldHeight = Math.max(layout.totalHeight || 0, containerWorldHeight);\n const bufferWorld = Math.max(200, baseWorldHeight * 0.25);\n const worldHeight = baseWorldHeight + bufferWorld * 2;\n const startY = -bufferWorld;\n\n highlight.rect(rectX, startY, rectWidth, worldHeight);\n highlight.fill(0xffffff);\n highlight.alpha = 0.05;\n highlight.visible = true;\n}\n"],"names":["PIXI"],"mappings":"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"}
1
+ {"version":3,"file":"groups.js","sources":["../../../../../PivotViewer/components/pivot/groups.ts"],"sourcesContent":[null],"names":["PIXI"],"mappings":"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"}
@@ -4,24 +4,26 @@ var PIXI = require('pixi.js');
4
4
  var constants = require('./constants.js');
5
5
 
6
6
  function _interopNamespaceDefault(e) {
7
- var n = Object.create(null);
8
- if (e) {
9
- Object.keys(e).forEach(function (k) {
10
- if (k !== 'default') {
11
- var d = Object.getOwnPropertyDescriptor(e, k);
12
- Object.defineProperty(n, k, d.get ? d : {
13
- enumerable: true,
14
- get: function () { return e[k]; }
7
+ var n = Object.create(null);
8
+ if (e) {
9
+ Object.keys(e).forEach(function (k) {
10
+ if (k !== 'default') {
11
+ var d = Object.getOwnPropertyDescriptor(e, k);
12
+ Object.defineProperty(n, k, d.get ? d : {
13
+ enumerable: true,
14
+ get: function () { return e[k]; }
15
+ });
16
+ }
15
17
  });
16
- }
17
- });
18
- }
19
- n.default = e;
20
- return Object.freeze(n);
18
+ }
19
+ n.default = e;
20
+ return Object.freeze(n);
21
21
  }
22
22
 
23
23
  var PIXI__namespace = /*#__PURE__*/_interopNamespaceDefault(PIXI);
24
24
 
25
+ // Copyright (c) Cratis. All rights reserved.
26
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
25
27
  const spritePool = [];
26
28
  function createCardSprite(id, x, y, items, onCardClick, onPanStart, cardWidth, cardHeight, cardColors, cardRenderer, resolveId) {
27
29
  if (spritePool.length > 0) {
@@ -36,21 +38,25 @@ function createCardSprite(id, x, y, items, onCardClick, onPanStart, cardWidth, c
36
38
  sprite.targetY = y;
37
39
  sprite.currentX = x;
38
40
  sprite.currentY = y;
41
+ // Reset animation state
39
42
  delete sprite.animationStartTime;
40
43
  delete sprite.animationDelay;
41
44
  delete sprite.startX;
42
45
  delete sprite.startY;
46
+ // Reset cache
43
47
  sprite.lastSelectedId = null;
44
48
  sprite.lastCardColors = undefined;
45
49
  sprite.lastTitle = undefined;
46
50
  sprite.lastLabels = undefined;
47
51
  sprite.lastValues = undefined;
52
+ // Recreate graphics if it was destroyed
48
53
  if (!sprite.graphics || sprite.graphics.destroyed) {
49
54
  sprite.graphics = new PIXI__namespace.Graphics();
50
55
  if (sprite.container) {
51
56
  sprite.container.addChildAt(sprite.graphics, 0);
52
57
  }
53
58
  }
59
+ // Recreate text objects if they were destroyed
54
60
  const offsetX = constants.CARD_GAP / 2;
55
61
  const offsetY = constants.CARD_GAP / 2;
56
62
  if (!sprite.titleText || sprite.titleText.destroyed) {
@@ -91,6 +97,7 @@ function createCardSprite(id, x, y, items, onCardClick, onPanStart, cardWidth, c
91
97
  sprite.container.addChild(sprite.valuesText);
92
98
  }
93
99
  }
100
+ // Update event context
94
101
  if (sprite.container) {
95
102
  sprite.container._eventContext = { items, onCardClick, id, cardRenderer, resolveId };
96
103
  }
@@ -100,7 +107,11 @@ function createCardSprite(id, x, y, items, onCardClick, onPanStart, cardWidth, c
100
107
  container.eventMode = 'static';
101
108
  container.cursor = 'pointer';
102
109
  container.position.set(x, y);
110
+ // Define hit area to match the visible card size (excluding gaps)
111
+ // This ensures the entire card is clickable and avoids issues with text blocking hits
103
112
  container.hitArea = new PIXI__namespace.Rectangle(constants.CARD_GAP / 2, constants.CARD_GAP / 2, cardWidth - constants.CARD_GAP, cardHeight - constants.CARD_GAP);
113
+ // Container configured for pointer interactions; hitArea matches visible card.
114
+ // Store context for event handlers
104
115
  container._eventContext = { items, onCardClick, id, cardRenderer, resolveId };
105
116
  const graphics = new PIXI__namespace.Graphics();
106
117
  const actualWidth = cardWidth - constants.CARD_GAP;
@@ -151,6 +162,7 @@ function createCardSprite(id, x, y, items, onCardClick, onPanStart, cardWidth, c
151
162
  });
152
163
  container.on('pointerdown', (e) => {
153
164
  e.stopPropagation();
165
+ // onPanStart(e.nativeEvent as MouseEvent);
154
166
  });
155
167
  return {
156
168
  container,
@@ -169,20 +181,24 @@ function destroySprite(sprite) {
169
181
  if (sprite.container && sprite.container.parent) {
170
182
  sprite.container.parent.removeChild(sprite.container);
171
183
  }
184
+ // Reset visibility to ensure it doesn't ghost if something goes wrong
172
185
  if (sprite.container) {
173
186
  sprite.container.visible = false;
174
187
  }
175
188
  spritePool.push(sprite);
176
189
  }
190
+ // Updated: Text objects now recreated when recycling pooled sprites
177
191
  function updateCardContent(sprite, item, selectedId, cardWidth, cardHeight, cardColors, cardRenderer) {
178
192
  if (!item)
179
193
  return;
194
+ // Selection rendering depends on sprite.itemId matching selectedId
180
195
  const colors = cardColors;
181
196
  const cardData = cardRenderer(item);
182
197
  const titleDisplay = cardData.title;
183
198
  const labelsText = (cardData.labels || []).join('\n');
184
199
  const valuesText = (cardData.values || []).join('\n');
185
200
  const colorsChanged = sprite.lastCardColors !== colors;
201
+ // Ensure text objects exist before using them
186
202
  if (!sprite.titleText || sprite.titleText.destroyed)
187
203
  return;
188
204
  if (!sprite.labelsText || sprite.labelsText.destroyed)
@@ -211,11 +227,13 @@ function updateCardContent(sprite, item, selectedId, cardWidth, cardHeight, card
211
227
  sprite.labelsText.visible = true;
212
228
  sprite.valuesText.visible = true;
213
229
  const isSelected = sprite.itemId === selectedId;
230
+ // Only redraw graphics if selection state or colors changed
214
231
  if (sprite.lastSelectedId === selectedId && !colorsChanged && sprite.graphics) {
215
232
  return;
216
233
  }
217
234
  sprite.lastSelectedId = selectedId;
218
235
  sprite.lastCardColors = cardColors;
236
+ // Ensure graphics exists before attempting to use it
219
237
  if (!sprite.graphics || sprite.graphics.destroyed) {
220
238
  sprite.graphics = new PIXI__namespace.Graphics();
221
239
  if (sprite.container) {
@@ -239,6 +257,7 @@ function updateCardContent(sprite, item, selectedId, cardWidth, cardHeight, card
239
257
  gradient.addColorStop(1, colors.base);
240
258
  }
241
259
  sprite.graphics.roundRect(offsetX, offsetY, actualWidth, actualHeight, constants.CARD_RADIUS);
260
+ // Ensure graphics is still valid before filling
242
261
  if (sprite.graphics && !sprite.graphics.destroyed) {
243
262
  sprite.graphics.fill(gradient);
244
263
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sprites.js","sources":["../../../../../PivotViewer/components/pivot/sprites.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 * as PIXI from 'pixi.js';\nimport { CARD_GAP, CARD_PADDING, CARD_RADIUS } from './constants';\nimport type { CardSprite, CardColors } from './constants';\n\nconst spritePool: CardSprite[] = [];\n\nexport function createCardSprite<TItem extends object>(\n id: number | string,\n x: number,\n y: number,\n items: TItem[],\n onCardClick: (item: TItem, e: MouseEvent, id: number | string) => void,\n onPanStart: (e: MouseEvent) => void,\n cardWidth: number,\n cardHeight: number,\n cardColors: CardColors,\n cardRenderer: (item: TItem) => { title: string; labels?: string[]; values?: string[] },\n resolveId: (item: TItem, index: number) => string | number,\n): CardSprite {\n if (spritePool.length > 0) {\n const sprite = spritePool.pop()!;\n if (sprite.container) {\n sprite.container.visible = true;\n sprite.container.alpha = 1;\n sprite.container.position.set(x, y);\n }\n sprite.itemId = id;\n sprite.targetX = x;\n sprite.targetY = y;\n sprite.currentX = x;\n sprite.currentY = y;\n\n // Reset animation state\n delete sprite.animationStartTime;\n delete sprite.animationDelay;\n delete sprite.startX;\n delete sprite.startY;\n\n // Reset cache\n sprite.lastSelectedId = null;\n sprite.lastCardColors = undefined;\n sprite.lastTitle = undefined;\n sprite.lastLabels = undefined;\n sprite.lastValues = undefined;\n\n // Recreate graphics if it was destroyed\n if (!sprite.graphics || sprite.graphics.destroyed) {\n sprite.graphics = new PIXI.Graphics();\n if (sprite.container) {\n sprite.container.addChildAt(sprite.graphics, 0);\n }\n }\n\n // Recreate text objects if they were destroyed\n const offsetX = CARD_GAP / 2;\n const offsetY = CARD_GAP / 2;\n \n if (!sprite.titleText || sprite.titleText.destroyed) {\n sprite.titleText = new PIXI.Text('', {\n fontSize: 13,\n fill: cardColors.text as string | number,\n fontWeight: '600',\n lineHeight: 18,\n wordWrap: false,\n } as PIXI.TextStyle);\n sprite.titleText.position.set(offsetX + CARD_PADDING, offsetY + CARD_PADDING);\n if (sprite.container) {\n sprite.container.addChild(sprite.titleText);\n }\n }\n\n if (!sprite.labelsText || sprite.labelsText.destroyed) {\n sprite.labelsText = new PIXI.Text('', {\n fontSize: 11,\n fill: cardColors.textSecondary as string | number,\n fontWeight: '400',\n lineHeight: 18,\n } as PIXI.TextStyle);\n sprite.labelsText.position.set(offsetX + CARD_PADDING, offsetY + CARD_PADDING + 40);\n if (sprite.container) {\n sprite.container.addChild(sprite.labelsText);\n }\n }\n\n if (!sprite.valuesText || sprite.valuesText.destroyed) {\n sprite.valuesText = new PIXI.Text('', {\n fontSize: 11,\n fill: cardColors.text as string | number,\n fontWeight: '500',\n lineHeight: 18,\n wordWrap: false,\n } as PIXI.TextStyle);\n sprite.valuesText.position.set(offsetX + CARD_PADDING + 65, offsetY + CARD_PADDING + 40);\n if (sprite.container) {\n sprite.container.addChild(sprite.valuesText);\n }\n }\n\n // Update event context\n if (sprite.container) {\n (sprite.container as unknown as { _eventContext: { items: TItem[]; onCardClick: (item: TItem, e: MouseEvent, id: number | string) => void; id: number | string; cardRenderer: (item: TItem) => { title: string; labels?: string[]; values?: string[] }; resolveId: (item: TItem, index: number) => string | number } })._eventContext = { items, onCardClick, id, cardRenderer, resolveId };\n }\n\n return sprite;\n }\n\n const container = new PIXI.Container();\n container.eventMode = 'static';\n container.cursor = 'pointer';\n container.position.set(x, y);\n\n // Define hit area to match the visible card size (excluding gaps)\n // This ensures the entire card is clickable and avoids issues with text blocking hits\n container.hitArea = new PIXI.Rectangle(\n CARD_GAP / 2,\n CARD_GAP / 2,\n cardWidth - CARD_GAP,\n cardHeight - CARD_GAP\n );\n\n // Container configured for pointer interactions; hitArea matches visible card.\n\n // Store context for event handlers\n (container as unknown as { _eventContext: { items: TItem[]; onCardClick: (item: TItem, e: MouseEvent, id: number | string) => void; id: number | string; cardRenderer: (item: TItem) => { title: string; labels?: string[]; values?: string[] }; resolveId: (item: TItem, index: number) => string | number } })._eventContext = { items, onCardClick, id, cardRenderer, resolveId };\n\n const graphics = new PIXI.Graphics();\n\n const actualWidth = cardWidth - CARD_GAP;\n const actualHeight = cardHeight - CARD_GAP;\n const offsetX = CARD_GAP / 2;\n const offsetY = CARD_GAP / 2;\n\n const gradient = new PIXI.FillGradient(0, offsetY, 0, offsetY + actualHeight);\n gradient.addColorStop(0, cardColors.mid);\n gradient.addColorStop(1, cardColors.base);\n\n graphics.roundRect(offsetX, offsetY, actualWidth, actualHeight, CARD_RADIUS);\n graphics.fill(gradient);\n\n container.addChild(graphics);\n\n const titleText = new PIXI.Text('', {\n fontSize: 13,\n fill: cardColors.text as string | number,\n fontWeight: '600',\n lineHeight: 18,\n wordWrap: false,\n } as PIXI.TextStyle);\n titleText.position.set(offsetX + CARD_PADDING, offsetY + CARD_PADDING);\n container.addChild(titleText);\n\n const labelsText = new PIXI.Text('', {\n fontSize: 11,\n fill: cardColors.textSecondary as string | number,\n fontWeight: '400',\n lineHeight: 18,\n } as PIXI.TextStyle);\n labelsText.position.set(offsetX + CARD_PADDING, offsetY + CARD_PADDING + 40);\n container.addChild(labelsText);\n\n const valuesText = new PIXI.Text('', {\n fontSize: 11,\n fill: cardColors.text as string | number,\n fontWeight: '500',\n lineHeight: 18,\n wordWrap: false,\n } as PIXI.TextStyle);\n valuesText.position.set(offsetX + CARD_PADDING + 65, offsetY + CARD_PADDING + 40);\n container.addChild(valuesText);\n\n container.on('click', (e: PIXI.FederatedPointerEvent) => {\n e.stopPropagation();\n const ctx = (container as unknown as { _eventContext: { items: TItem[]; onCardClick: (item: TItem, e: MouseEvent, id: number | string) => void; id: number | string } })._eventContext;\n const itemsArray = ctx.items;\n const numericId = typeof ctx.id === 'number' ? ctx.id : Number(ctx.id);\n const item = itemsArray[numericId];\n if (item) {\n ctx.onCardClick(item, e.nativeEvent as MouseEvent, ctx.id);\n }\n });\n\n container.on('pointerdown', (e: PIXI.FederatedPointerEvent) => {\n e.stopPropagation();\n // onPanStart(e.nativeEvent as MouseEvent);\n });\n\n return {\n container,\n graphics,\n titleText,\n labelsText,\n valuesText,\n itemId: id,\n targetX: x,\n targetY: y,\n currentX: x,\n currentY: y,\n };\n}\n\nexport function destroySprite(sprite: CardSprite) {\n if (sprite.container && sprite.container.parent) {\n sprite.container.parent.removeChild(sprite.container);\n }\n // Reset visibility to ensure it doesn't ghost if something goes wrong\n if (sprite.container) {\n sprite.container.visible = false;\n }\n spritePool.push(sprite);\n}\n\nexport function clearSpritePool() {\n for (const sprite of spritePool) {\n try {\n sprite.graphics?.destroy();\n sprite.titleText?.destroy();\n sprite.labelsText?.destroy();\n sprite.valuesText?.destroy();\n sprite.container?.destroy();\n } catch (e) {\n void e;\n }\n }\n spritePool.length = 0;\n}\n\n// Updated: Text objects now recreated when recycling pooled sprites\nexport function updateCardContent<TItem extends object>(\n sprite: CardSprite,\n item: TItem,\n selectedId: string | number | null,\n cardWidth: number,\n cardHeight: number,\n cardColors: CardColors,\n cardRenderer: (item: TItem) => { title: string; labels?: string[]; values?: string[] },\n) {\n if (!item) return;\n\n // Selection rendering depends on sprite.itemId matching selectedId\n\n const colors = cardColors;\n const cardData = cardRenderer(item);\n const titleDisplay = cardData.title;\n const labelsText = (cardData.labels || []).join('\\n');\n const valuesText = (cardData.values || []).join('\\n');\n const colorsChanged = sprite.lastCardColors !== colors;\n\n // Ensure text objects exist before using them\n if (!sprite.titleText || sprite.titleText.destroyed) return;\n if (!sprite.labelsText || sprite.labelsText.destroyed) return;\n if (!sprite.valuesText || sprite.valuesText.destroyed) return;\n\n if (sprite.lastTitle !== titleDisplay) {\n sprite.titleText.text = titleDisplay;\n sprite.lastTitle = titleDisplay;\n }\n\n if (sprite.lastLabels !== labelsText) {\n sprite.labelsText.text = labelsText;\n sprite.lastLabels = labelsText;\n }\n\n if (colorsChanged && sprite.labelsText.style) {\n (sprite.labelsText.style as unknown as { fill: string | number }).fill = colors.textSecondary;\n }\n\n if (sprite.lastValues !== valuesText) {\n sprite.valuesText.text = valuesText;\n sprite.lastValues = valuesText;\n }\n\n if (colorsChanged && sprite.valuesText.style) {\n (sprite.valuesText.style as unknown as { fill: string | number }).fill = colors.text;\n }\n\n sprite.titleText.visible = true;\n sprite.labelsText.visible = true;\n sprite.valuesText.visible = true;\n\n const isSelected = sprite.itemId === selectedId;\n\n // Only redraw graphics if selection state or colors changed\n if (sprite.lastSelectedId === selectedId && !colorsChanged && sprite.graphics) {\n return;\n }\n\n sprite.lastSelectedId = selectedId;\n sprite.lastCardColors = cardColors;\n\n // Ensure graphics exists before attempting to use it\n if (!sprite.graphics || sprite.graphics.destroyed) {\n sprite.graphics = new PIXI.Graphics();\n if (sprite.container) {\n sprite.container.addChildAt(sprite.graphics, 0);\n }\n } else {\n sprite.graphics.clear();\n }\n\n const actualWidth = cardWidth - CARD_GAP;\n const actualHeight = cardHeight - CARD_GAP;\n const offsetX = CARD_GAP / 2;\n const offsetY = CARD_GAP / 2;\n\n const gradient = new PIXI.FillGradient(0, offsetY, 0, offsetY + actualHeight);\n if (isSelected) {\n gradient.addColorStop(0, colors.gradient);\n gradient.addColorStop(1, colors.mid);\n } else {\n gradient.addColorStop(0, colors.mid);\n gradient.addColorStop(1, colors.base);\n }\n\n sprite.graphics.roundRect(offsetX, offsetY, actualWidth, actualHeight, CARD_RADIUS);\n \n // Ensure graphics is still valid before filling\n if (sprite.graphics && !sprite.graphics.destroyed) {\n sprite.graphics.fill(gradient);\n }\n\n if (isSelected) {\n if (sprite.graphics && !sprite.graphics.destroyed) {\n sprite.graphics.stroke({ width: 2, color: colors.border });\n }\n } else {\n if (sprite.graphics && !sprite.graphics.destroyed) {\n sprite.graphics.stroke({ width: 1, color: colors.border, alpha: 0.35 });\n }\n }\n}\n"],"names":["PIXI","CARD_GAP","CARD_PADDING","CARD_RADIUS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,UAAU,GAAiB,EAAE;AAE7B,SAAU,gBAAgB,CAC9B,EAAmB,EACnB,CAAS,EACT,CAAS,EACT,KAAc,EACd,WAAsE,EACtE,UAAmC,EACnC,SAAiB,EACjB,UAAkB,EAClB,UAAsB,EACtB,YAAsF,EACtF,SAA0D,EAAA;AAE1D,IAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAG;AAChC,QAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AACpB,YAAA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI;AAC/B,YAAA,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC;YAC1B,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACrC;AACA,QAAA,MAAM,CAAC,MAAM,GAAG,EAAE;AAClB,QAAA,MAAM,CAAC,OAAO,GAAG,CAAC;AAClB,QAAA,MAAM,CAAC,OAAO,GAAG,CAAC;AAClB,QAAA,MAAM,CAAC,QAAQ,GAAG,CAAC;AACnB,QAAA,MAAM,CAAC,QAAQ,GAAG,CAAC;QAGnB,OAAO,MAAM,CAAC,kBAAkB;QAChC,OAAO,MAAM,CAAC,cAAc;QAC5B,OAAO,MAAM,CAAC,MAAM;QACpB,OAAO,MAAM,CAAC,MAAM;AAGpB,QAAA,MAAM,CAAC,cAAc,GAAG,IAAI;AAC5B,QAAA,MAAM,CAAC,cAAc,GAAG,SAAS;AACjC,QAAA,MAAM,CAAC,SAAS,GAAG,SAAS;AAC5B,QAAA,MAAM,CAAC,UAAU,GAAG,SAAS;AAC7B,QAAA,MAAM,CAAC,UAAU,GAAG,SAAS;QAG7B,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE;YACjD,MAAM,CAAC,QAAQ,GAAG,IAAIA,eAAI,CAAC,QAAQ,EAAE;AACrC,YAAA,IAAI,MAAM,CAAC,SAAS,EAAE;gBACpB,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjD;QACF;AAGA,QAAA,MAAM,OAAO,GAAGC,kBAAQ,GAAG,CAAC;AAC5B,QAAA,MAAM,OAAO,GAAGA,kBAAQ,GAAG,CAAC;QAE5B,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;YACnD,MAAM,CAAC,SAAS,GAAG,IAAID,eAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACnC,gBAAA,QAAQ,EAAE,EAAE;gBACZ,IAAI,EAAE,UAAU,CAAC,IAAuB;AACxC,gBAAA,UAAU,EAAE,KAAK;AACjB,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,QAAQ,EAAE,KAAK;AACE,aAAA,CAAC;AACpB,YAAA,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,GAAGE,sBAAY,EAAE,OAAO,GAAGA,sBAAY,CAAC;AAC7E,YAAA,IAAI,MAAM,CAAC,SAAS,EAAE;gBACpB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;YAC7C;QACF;QAEA,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE;YACrD,MAAM,CAAC,UAAU,GAAG,IAAIF,eAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACpC,gBAAA,QAAQ,EAAE,EAAE;gBACZ,IAAI,EAAE,UAAU,CAAC,aAAgC;AACjD,gBAAA,UAAU,EAAE,KAAK;AACjB,gBAAA,UAAU,EAAE,EAAE;AACG,aAAA,CAAC;AACpB,YAAA,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,GAAGE,sBAAY,EAAE,OAAO,GAAGA,sBAAY,GAAG,EAAE,CAAC;AACnF,YAAA,IAAI,MAAM,CAAC,SAAS,EAAE;gBACpB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;YAC9C;QACF;QAEA,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE;YACrD,MAAM,CAAC,UAAU,GAAG,IAAIF,eAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACpC,gBAAA,QAAQ,EAAE,EAAE;gBACZ,IAAI,EAAE,UAAU,CAAC,IAAuB;AACxC,gBAAA,UAAU,EAAE,KAAK;AACjB,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,QAAQ,EAAE,KAAK;AACE,aAAA,CAAC;AACpB,YAAA,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,GAAGE,sBAAY,GAAG,EAAE,EAAE,OAAO,GAAGA,sBAAY,GAAG,EAAE,CAAC;AACxF,YAAA,IAAI,MAAM,CAAC,SAAS,EAAE;gBACpB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;YAC9C;QACF;AAGA,QAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AACnB,YAAA,MAAM,CAAC,SAA+S,CAAC,aAAa,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE;QAC7X;AAEA,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,MAAM,SAAS,GAAG,IAAIF,eAAI,CAAC,SAAS,EAAE;AACtC,IAAA,SAAS,CAAC,SAAS,GAAG,QAAQ;AAC9B,IAAA,SAAS,CAAC,MAAM,GAAG,SAAS;IAC5B,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAI5B,SAAS,CAAC,OAAO,GAAG,IAAIA,eAAI,CAAC,SAAS,CAClCC,kBAAQ,GAAG,CAAC,EACZA,kBAAQ,GAAG,CAAC,EACZ,SAAS,GAAGA,kBAAQ,EACpB,UAAU,GAAGA,kBAAQ,CACxB;AAKA,IAAA,SAA+S,CAAC,aAAa,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE;AAEpX,IAAA,MAAM,QAAQ,GAAG,IAAID,eAAI,CAAC,QAAQ,EAAE;AAEpC,IAAA,MAAM,WAAW,GAAG,SAAS,GAAGC,kBAAQ;AACxC,IAAA,MAAM,YAAY,GAAG,UAAU,GAAGA,kBAAQ;AAC1C,IAAA,MAAM,OAAO,GAAGA,kBAAQ,GAAG,CAAC;AAC5B,IAAA,MAAM,OAAO,GAAGA,kBAAQ,GAAG,CAAC;AAE5B,IAAA,MAAM,QAAQ,GAAG,IAAID,eAAI,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IAC7E,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC;IACxC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC;AAEzC,IAAA,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAEG,qBAAW,CAAC;AAC5E,IAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEvB,IAAA,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAE5B,MAAM,SAAS,GAAG,IAAIH,eAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AAClC,QAAA,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,UAAU,CAAC,IAAuB;AACxC,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,EAAE;AACd,QAAA,QAAQ,EAAE,KAAK;AACE,KAAA,CAAC;AACpB,IAAA,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,GAAGE,sBAAY,EAAE,OAAO,GAAGA,sBAAY,CAAC;AACtE,IAAA,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;IAE7B,MAAM,UAAU,GAAG,IAAIF,eAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACnC,QAAA,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,UAAU,CAAC,aAAgC;AACjD,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,EAAE;AACG,KAAA,CAAC;AACpB,IAAA,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,GAAGE,sBAAY,EAAE,OAAO,GAAGA,sBAAY,GAAG,EAAE,CAAC;AAC5E,IAAA,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;IAE9B,MAAM,UAAU,GAAG,IAAIF,eAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACnC,QAAA,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,UAAU,CAAC,IAAuB;AACxC,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,EAAE;AACd,QAAA,QAAQ,EAAE,KAAK;AACE,KAAA,CAAC;AACpB,IAAA,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,GAAGE,sBAAY,GAAG,EAAE,EAAE,OAAO,GAAGA,sBAAY,GAAG,EAAE,CAAC;AACjF,IAAA,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;IAE9B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAA6B,KAAI;QACtD,CAAC,CAAC,eAAe,EAAE;AACnB,QAAA,MAAM,GAAG,GAAI,SAA2J,CAAC,aAAa;AACtL,QAAA,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK;QAC5B,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,GAAG,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACtE,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC;QAClC,IAAI,IAAI,EAAE;AACR,YAAA,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,WAAyB,EAAE,GAAG,CAAC,EAAE,CAAC;QAC5D;AACF,IAAA,CAAC,CAAC;IAEF,SAAS,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,CAA6B,KAAI;QAC5D,CAAC,CAAC,eAAe,EAAE;AAErB,IAAA,CAAC,CAAC;IAEF,OAAO;QACL,SAAS;QACT,QAAQ;QACR,SAAS;QACT,UAAU;QACV,UAAU;AACV,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,QAAQ,EAAE,CAAC;AACX,QAAA,QAAQ,EAAE,CAAC;KACZ;AACH;AAEM,SAAU,aAAa,CAAC,MAAkB,EAAA;IAC9C,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE;QAC/C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC;IACvD;AAEA,IAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AACpB,QAAA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK;IAClC;AACA,IAAA,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AACzB;AAkBM,SAAU,iBAAiB,CAC/B,MAAkB,EAClB,IAAW,EACX,UAAkC,EAClC,SAAiB,EACjB,UAAkB,EAClB,UAAsB,EACtB,YAAsF,EAAA;AAEtF,IAAA,IAAI,CAAC,IAAI;QAAE;IAIX,MAAM,MAAM,GAAG,UAAU;AACzB,IAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC;AACnC,IAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK;AACnC,IAAA,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;AACrD,IAAA,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;AACrD,IAAA,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,KAAK,MAAM;IAGtD,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS;QAAE;IACrD,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS;QAAE;IACvD,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS;QAAE;AAEvD,IAAA,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;AACrC,QAAA,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACpC,QAAA,MAAM,CAAC,SAAS,GAAG,YAAY;IACjC;AAEE,IAAA,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;AACtC,QAAA,MAAM,CAAC,UAAU,CAAC,IAAI,GAAG,UAAU;AACnC,QAAA,MAAM,CAAC,UAAU,GAAG,UAAU;IAChC;IAEA,IAAI,aAAa,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE;QAC3C,MAAM,CAAC,UAAU,CAAC,KAA8C,CAAC,IAAI,GAAG,MAAM,CAAC,aAAa;IAC/F;AAEA,IAAA,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;AACpC,QAAA,MAAM,CAAC,UAAU,CAAC,IAAI,GAAG,UAAU;AACnC,QAAA,MAAM,CAAC,UAAU,GAAG,UAAU;IAChC;IAEA,IAAI,aAAa,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE;QAC3C,MAAM,CAAC,UAAU,CAAC,KAA8C,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;IACtF;AAEA,IAAA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI;AAC/B,IAAA,MAAM,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI;AAChC,IAAA,MAAM,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI;AAEhC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,KAAK,UAAU;AAG/C,IAAA,IAAI,MAAM,CAAC,cAAc,KAAK,UAAU,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,QAAQ,EAAE;QAC7E;IACF;AAEA,IAAA,MAAM,CAAC,cAAc,GAAG,UAAU;AAClC,IAAA,MAAM,CAAC,cAAc,GAAG,UAAU;IAGlC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE;QACjD,MAAM,CAAC,QAAQ,GAAG,IAAIF,eAAI,CAAC,QAAQ,EAAE;AACrC,QAAA,IAAI,MAAM,CAAC,SAAS,EAAE;YACpB,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjD;IACF;SAAO;AACL,QAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE;IACzB;AAEA,IAAA,MAAM,WAAW,GAAG,SAAS,GAAGC,kBAAQ;AACxC,IAAA,MAAM,YAAY,GAAG,UAAU,GAAGA,kBAAQ;AAC1C,IAAA,MAAM,OAAO,GAAGA,kBAAQ,GAAG,CAAC;AAC5B,IAAA,MAAM,OAAO,GAAGA,kBAAQ,GAAG,CAAC;AAE5B,IAAA,MAAM,QAAQ,GAAG,IAAID,eAAI,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IAC7E,IAAI,UAAU,EAAE;QACd,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;QACzC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC;IACtC;SAAO;QACL,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC;QACpC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC;IACvC;AAEA,IAAA,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAEG,qBAAW,CAAC;IAGnF,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE;AACjD,QAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;IAChC;IAEA,IAAI,UAAU,EAAE;QACd,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE;AACjD,YAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5D;IACF;SAAO;QACL,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE;YACjD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzE;IACF;AACF;;;;;;"}
1
+ {"version":3,"file":"sprites.js","sources":["../../../../../PivotViewer/components/pivot/sprites.ts"],"sourcesContent":[null],"names":["PIXI","CARD_GAP","CARD_PADDING","CARD_RADIUS"],"mappings":"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"}
@@ -3,44 +3,101 @@
3
3
  var constants = require('./constants.js');
4
4
  var sprites = require('./sprites.js');
5
5
 
6
+ // Copyright (c) Cratis. All rights reserved.
7
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
6
8
  function syncSpritesToViewport(params) {
7
9
  const { root, groupsContainer, container, sprites: sprites$1, layout, visibleIds: _visibleIds, items, cardWidth, cardHeight, panX, panY, panDeltaX, panDeltaY, viewportWidth, viewportHeight, createCardSprite, updateCardContent, zoomLevel, isViewTransition, viewMode, prevLayout, prevScrollTop, prevScrollLeft } = params;
8
10
  if (!root || !container)
9
11
  return;
12
+ // Use the container's measured client size for the viewport dimensions
13
+ // (in pixels). The passed `viewportWidth`/`viewportHeight` can be stale
14
+ // when the browser/device zoom changes; `clientWidth/clientHeight` are
15
+ // authoritative for the actual visible pixel area.
10
16
  const viewportPxWidth = container.clientWidth || viewportWidth;
11
17
  const viewportPxHeight = container.clientHeight || viewportHeight;
12
18
  const contentHeightPx = (layout.totalHeight || 0) * zoomLevel;
13
19
  let offsetY = 0;
20
+ // If content fits vertically within the viewport, align relative to bottom.
21
+ // The spacer ensures container isn't scrollable in this case (scrollTop=0).
22
+ // The items are at large Y coordinates relative to layout.totalHeight.
23
+ // We want the bottom of the layout (totalHeight) to align with viewport bottom.
14
24
  if (viewMode === 'grouped' && contentHeightPx < viewportPxHeight) {
25
+ // Calculate offset in pixels to shift the content down
15
26
  offsetY = viewportPxHeight - contentHeightPx;
16
27
  }
28
+ // Use the container's actual scroll position for positioning, not the passed panX/panY
29
+ // which may be stale (from React state) compared to live DOM scroll values.
17
30
  const actualScrollX = typeof container.scrollLeft === 'number' ? container.scrollLeft : (panX || 0);
18
31
  const actualScrollY = typeof container.scrollTop === 'number' ? container.scrollTop : (panY || 0);
32
+ // Apply scaling and position to root container
19
33
  if (root) {
20
34
  root.scale.set(zoomLevel);
35
+ // Standard position: -scrollX, -scrollY
36
+ // Plus vertical alignment offset if zoomed out
21
37
  root.position.set(-actualScrollX, offsetY - actualScrollY);
22
38
  }
39
+ // Apply synchronization to groups container if present
23
40
  if (groupsContainer) {
24
41
  groupsContainer.scale.set(zoomLevel);
25
42
  groupsContainer.position.set(-actualScrollX, offsetY - actualScrollY);
26
43
  }
44
+ // `visibleIds` comes from callers but this module iterates `layout.positions`
45
+ // Note: Pan delta compensation is NOT applied during view transitions because:
46
+ // 1. The time-based animation system handles position changes smoothly
47
+ // 2. Applying pan delta during animation interferes with the interpolation
48
+ // 3. The scroll position changes are a natural part of the view mode switch
49
+ // This compensation is only useful for rapid scrolling/panning where sprites
50
+ // need to maintain visual stability, which isn't the case during view transitions.
27
51
  const visibleSet = new Set();
52
+ // Increase buffer (in world units) to reduce edge cases where rapid
53
+ // scrolling skips sprite creation. Keep buffer in world units and convert
54
+ // DOM pixel measurements into world coordinates below to avoid mixing
55
+ // coordinate spaces which can cause precision drift at browser zooms.
28
56
  const baseBufferWorld = Math.max(cardWidth, cardHeight) * 4;
57
+ // Ensure buffer scales with viewport size (in world units) so that when
58
+ // zoomed out we still pre-create enough sprites ahead of the viewport.
29
59
  const invScale = zoomLevel && zoomLevel !== 0 ? 1 / zoomLevel : 1;
60
+ // The layout positions are in world units; when the root container is scaled
61
+ // (zoomed) the rendered pixel position = position * zoomLevel. The DOM
62
+ // scroll positions (`container.scrollLeft/Top`) are the authoritative pixel
63
+ // camera offsets; prefer them over the passed `panX/panY` to avoid stale
64
+ // values or race conditions between React state and direct DOM updates.
30
65
  const effectivePanX = typeof container.scrollLeft === 'number' ? container.scrollLeft : (panX || 0);
31
66
  const effectivePanY = typeof container.scrollTop === 'number' ? container.scrollTop : (panY || 0);
67
+ // Convert pixel-based DOM measurements into world units so we compare like
68
+ // with like. root.position is set using -pixels, so the mapping
69
+ // from DOM scroll (pixels) to world units is: world = pixels / zoomLevel.
70
+ // OffsetY is already in pixels and doesn't need scaling in panWorldY calc
71
+ // because panWorldY is used for viewport buffering/culling, which is relative
72
+ // to the "camera" position in world space.
73
+ // The camera world Y = (scrollTop - offsetY) / zoomLevel.
32
74
  const effectivePanYWithOffset = effectivePanY - offsetY;
33
75
  const panWorldX = effectivePanX * invScale;
34
76
  const panWorldY = effectivePanYWithOffset * invScale;
35
77
  const viewportWorldWidth = viewportPxWidth * invScale;
36
78
  const viewportWorldHeight = viewportPxHeight * invScale;
79
+ // Ensure bufferWorld is calculated from the actual measured viewport
80
+ // in world units (after converting client pixel dims using invScale).
81
+ // Make buffer adaptive to zoom: when zoomed out (invScale > 1) a small
82
+ // pixel scroll maps to a larger world delta, so increase the buffer.
83
+ // Use the larger of width/height to ensure we buffer enough in both directions.
37
84
  const bufferWorld = Math.max(baseBufferWorld * invScale, Math.max(viewportWorldWidth, viewportWorldHeight) * 2.0, baseBufferWorld);
85
+ // Do not clamp viewport edges to 0 — allow negative top/left values so the
86
+ // visible window correctly follows the scroll even when the buffer is
87
+ // larger than the current scroll offset.
38
88
  const viewportLeftWorld = panWorldX - bufferWorld;
39
89
  const viewportRightWorld = panWorldX + viewportWorldWidth + bufferWorld;
40
90
  const viewportTopWorld = panWorldY - bufferWorld;
41
91
  const viewportBottomWorld = panWorldY + viewportWorldHeight + bufferWorld;
42
92
  const inViewportIds = [];
93
+ // Small tolerance in world units to avoid floating-point edge cases when
94
+ // browser/device zoom or high scroll values produce tiny rounding errors.
95
+ // Scale epsilon with invScale so tolerance grows when zoomed out.
43
96
  const worldEpsilon = Math.max(0.5, 0.5 * invScale);
97
+ // Iterate layout positions directly to avoid depending on `visibleIds`
98
+ // which may be calculated in a different coordinate space or with
99
+ // different assumptions about zoom. Looping the positions map is
100
+ // deterministic and uses world coordinates directly.
44
101
  for (const [id, position] of layout.positions) {
45
102
  if (!position)
46
103
  continue;
@@ -56,21 +113,30 @@ function syncSpritesToViewport(params) {
56
113
  visibleSet.add(id);
57
114
  }
58
115
  }
116
+ // During view transitions, if no cards are visible and we're not animating yet,
117
+ // force-add the first few cards from the layout to ensure content appears.
118
+ // This prevents a blank screen when switching modes, especially in packaged builds
119
+ // where scroll stabilization might be delayed.
59
120
  if (isViewTransition && inViewportIds.length === 0 && layout.positions.size > 0) {
60
121
  let count = 0;
61
122
  for (const [id, position] of layout.positions) {
62
- if (count < 5 && position) {
123
+ if (count < 5 && position) { // Add up to 5 cards
63
124
  inViewportIds.push(id);
64
125
  visibleSet.add(id);
65
126
  count++;
66
127
  }
67
128
  }
68
129
  }
130
+ // Ensure last rows are present when the user scrolls near the bottom.
131
+ // Compute slot/row information and force-insert IDs from the last few
132
+ // rows to avoid missing tiles due to rounding/precision at zoom levels.
69
133
  try {
70
134
  const slotHeight = cardHeight + (constants.CARD_GAP || 8);
71
135
  const totalRows = Math.ceil((layout.totalHeight || 0) / slotHeight) || 0;
136
+ // Determine how many rows are visible in the viewport (world units),
137
+ // then prefetch a fraction of that adjusted by zoom (invScale).
72
138
  const rowsVisible = Math.max(1, Math.ceil(viewportWorldHeight / slotHeight));
73
- const prefetchMultiplier = 0.75;
139
+ const prefetchMultiplier = 0.75; // fraction of viewport to prefetch
74
140
  const prefetchRows = Math.max(2, Math.ceil(rowsVisible * prefetchMultiplier * Math.max(1, invScale)));
75
141
  const lastRowThresholdY = Math.max(0, (totalRows - prefetchRows) * slotHeight);
76
142
  for (const [id, position] of layout.positions) {
@@ -84,6 +150,10 @@ function syncSpritesToViewport(params) {
84
150
  }
85
151
  catch (e) {
86
152
  }
153
+ // Fallback: if no sprites are calculated as visible (e.g., due to rounding
154
+ // or scroll/zoom race conditions), force a handful of cards into view so
155
+ // the canvas never renders empty at certain zoom levels.
156
+ // When transitioning views, be more aggressive to ensure content appears during the transition
87
157
  let injectedFallback = false;
88
158
  const fallbackCount = isViewTransition ? 30 : 12;
89
159
  if (inViewportIds.length === 0 && layout.positions.size > 0) {
@@ -97,6 +167,14 @@ function syncSpritesToViewport(params) {
97
167
  break;
98
168
  }
99
169
  }
170
+ // If we detect a very large discrepancy between created sprites and the
171
+ // computed in-viewport count, that's a signal our culling math may be
172
+ // unstable (especially at non-100% zoom). In that case, skip hiding this
173
+ // frame as a conservative safeguard to avoid mass disappearing tiles.
174
+ // However, disable this safeguard during view transitions to ensure old sprites are cleaned up.
175
+ // EXCEPT: During view transitions, if scroll position hasn't stabilized yet (e.g., switching to grouped
176
+ // mode triggers a scroll-to-bottom), keep all sprites visible to prevent flickering.
177
+ // Check scroll stabilization by comparing current scroll to previous scroll position.
100
178
  const currentScrollTop = container.scrollTop || 0;
101
179
  const currentScrollLeft = container.scrollLeft || 0;
102
180
  const scrollTopDelta = Math.abs(currentScrollTop - (prevScrollTop || currentScrollTop));
@@ -106,11 +184,14 @@ function syncSpritesToViewport(params) {
106
184
  (isViewTransition && !scrollStabilized));
107
185
  for (const [id, sprite] of sprites$1) {
108
186
  if (!visibleSet.has(id)) {
187
+ // If view transition is active, check if this sprite has a valid target in the new layout
188
+ // If so, keep it visible and animate it to the new position (even if off-screen)
109
189
  if (isViewTransition && layout.positions.has(id)) {
110
190
  const newPos = layout.positions.get(id);
111
191
  if (newPos) {
112
192
  sprite.targetX = newPos.x;
113
193
  sprite.targetY = newPos.y;
194
+ // Trigger animation if not already animating
114
195
  if (sprite.animationStartTime === undefined) {
115
196
  sprite.startX = sprite.currentX;
116
197
  sprite.startY = sprite.currentY;
@@ -123,12 +204,14 @@ function syncSpritesToViewport(params) {
123
204
  }
124
205
  catch (e) {
125
206
  }
207
+ // Don't mark as hidden, so it won't be swept
126
208
  if (sprite.__lastHiddenAt)
127
209
  delete sprite.__lastHiddenAt;
128
210
  continue;
129
211
  }
130
212
  }
131
213
  if (aggressiveCull) {
214
+ // Keep sprite visible this frame to avoid visual holes
132
215
  try {
133
216
  if (sprite.container)
134
217
  sprite.container.visible = true;
@@ -158,13 +241,15 @@ function syncSpritesToViewport(params) {
158
241
  }
159
242
  }
160
243
  }
244
+ // Sweep: actually destroy sprites that have been hidden longer than threshold
161
245
  try {
162
- const SWEEP_MS = 100;
246
+ const SWEEP_MS = 100; // keep hidden sprites for 100ms before destruction (reduced from 500ms for faster mode transitions)
163
247
  const now = Date.now();
164
248
  for (const [id, sprite] of sprites$1) {
165
249
  const lastHidden = sprite.__lastHiddenAt;
166
250
  if (lastHidden && now - lastHidden > SWEEP_MS) {
167
251
  try {
252
+ // remove from parent if present
168
253
  if (sprite.container && sprite.container.parent)
169
254
  sprite.container.parent.removeChild(sprite.container);
170
255
  }
@@ -183,6 +268,8 @@ function syncSpritesToViewport(params) {
183
268
  }
184
269
  catch (e) {
185
270
  }
271
+ // Limit the number of sprites created per frame to avoid choking the GPU/CPU
272
+ // when scrolling rapidly or zooming out significantly.
186
273
  const MAX_SPRITES_PER_FRAME = 50;
187
274
  let createdCount = 0;
188
275
  for (const id of inViewportIds) {
@@ -199,11 +286,15 @@ function syncSpritesToViewport(params) {
199
286
  let startX = position.x;
200
287
  let startY = position.y;
201
288
  let shouldAnimate = false;
289
+ // If view transition, try to find old position to fly in from
202
290
  if (isViewTransition && prevLayout && prevLayout.positions.has(id)) {
203
291
  const oldPos = prevLayout.positions.get(id);
204
292
  if (oldPos) {
205
293
  startX = oldPos.x;
206
294
  startY = oldPos.y;
295
+ // If we have a pan delta (camera jump), we need to adjust the start position
296
+ // so that the sprite appears at the same visual location relative to the NEW camera.
297
+ // StartWorld = OldWorld + PanDelta
207
298
  if (panDeltaX || panDeltaY) {
208
299
  const dx = (panDeltaX || 0) / (zoomLevel || 1);
209
300
  const dy = (panDeltaY || 0) / (zoomLevel || 1);
@@ -219,6 +310,8 @@ function syncSpritesToViewport(params) {
219
310
  root.addChild(sprite.container);
220
311
  sprite.currentX = startX;
221
312
  sprite.currentY = startY;
313
+ // Keep sprite.container positioned in world units; animation/update
314
+ // loop will apply root.scale/position to convert to pixels.
222
315
  sprite.container.position.set(startX, startY);
223
316
  }
224
317
  if (shouldAnimate) {
@@ -230,15 +323,21 @@ function syncSpritesToViewport(params) {
230
323
  sprite.animationDelay = Math.random() * 300;
231
324
  }
232
325
  }
326
+ // Check if target changed to trigger animation
233
327
  const targetChanged = sprite.targetX !== position.x || sprite.targetY !== position.y;
234
328
  if (targetChanged) {
235
329
  if (isViewTransition) {
330
+ // Only set up animation if not already animating - don't reset animation
331
+ // when targets change during layout recalculations
236
332
  if (sprite.animationStartTime === undefined) {
237
333
  sprite.startX = sprite.currentX;
238
334
  sprite.startY = sprite.currentY;
239
335
  sprite.animationStartTime = Date.now();
336
+ // Add random delay for "organic" fly effect
240
337
  sprite.animationDelay = Math.random() * 300;
241
338
  }
339
+ // Always update target to the new position (animation will smoothly
340
+ // adjust to the new target)
242
341
  sprite.targetX = position.x;
243
342
  sprite.targetY = position.y;
244
343
  }
@@ -1 +1 @@
1
- {"version":3,"file":"visibility.js","sources":["../../../../../PivotViewer/components/pivot/visibility.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 * as PIXI from 'pixi.js';\nimport type { CardSprite } from './constants';\nimport { CARD_GAP } from './constants';\nimport type { LayoutResult } from '../../engine/types';\nimport { destroySprite } from './sprites';\n\nexport interface SyncParams<TItem> {\n root: PIXI.Container | null;\n groupsContainer?: PIXI.Container | null;\n container: HTMLDivElement | null;\n sprites: Map<string | number, CardSprite>;\n layout: LayoutResult;\n visibleIds: Uint32Array;\n items: TItem[];\n cardWidth: number;\n cardHeight: number;\n panX: number;\n panY: number;\n panDeltaX?: number;\n panDeltaY?: number;\n viewportWidth: number;\n viewportHeight: number;\n zoomLevel: number;\n createCardSprite: (id: string | number, x: number, y: number) => CardSprite;\n updateCardContent: (sprite: CardSprite, item: TItem) => void;\n isViewTransition?: boolean;\n viewMode: string;\n prevLayout?: LayoutResult | null;\n prevScrollTop?: number;\n prevScrollLeft?: number;\n}\n\nexport function syncSpritesToViewport<TItem>(params: SyncParams<TItem>) {\n const { root, groupsContainer, container, sprites, layout, visibleIds: _visibleIds, items, cardWidth, cardHeight, panX, panY, panDeltaX, panDeltaY, viewportWidth, viewportHeight, createCardSprite, updateCardContent, zoomLevel, isViewTransition, viewMode, prevLayout, prevScrollTop, prevScrollLeft } = params;\n if (!root || !container) return;\n\n void _visibleIds;\n\n // Use the container's measured client size for the viewport dimensions\n // (in pixels). The passed `viewportWidth`/`viewportHeight` can be stale\n // when the browser/device zoom changes; `clientWidth/clientHeight` are\n // authoritative for the actual visible pixel area.\n const viewportPxWidth = container.clientWidth || viewportWidth;\n const viewportPxHeight = container.clientHeight || viewportHeight;\n\n const contentHeightPx = (layout.totalHeight || 0) * zoomLevel;\n let offsetY = 0;\n\n // If content fits vertically within the viewport, align relative to bottom.\n // The spacer ensures container isn't scrollable in this case (scrollTop=0).\n // The items are at large Y coordinates relative to layout.totalHeight.\n // We want the bottom of the layout (totalHeight) to align with viewport bottom.\n if (viewMode === 'grouped' && contentHeightPx < viewportPxHeight) {\n // Calculate offset in pixels to shift the content down\n offsetY = viewportPxHeight - contentHeightPx;\n }\n\n // Use the container's actual scroll position for positioning, not the passed panX/panY\n // which may be stale (from React state) compared to live DOM scroll values.\n const actualScrollX = typeof container.scrollLeft === 'number' ? container.scrollLeft : (panX || 0);\n const actualScrollY = typeof container.scrollTop === 'number' ? container.scrollTop : (panY || 0);\n\n // Apply scaling and position to root container\n if (root) {\n root.scale.set(zoomLevel);\n // Standard position: -scrollX, -scrollY\n // Plus vertical alignment offset if zoomed out\n root.position.set(-actualScrollX, offsetY - actualScrollY);\n }\n \n // Apply synchronization to groups container if present\n if (groupsContainer) {\n groupsContainer.scale.set(zoomLevel);\n groupsContainer.position.set(-actualScrollX, offsetY - actualScrollY);\n }\n\n // `visibleIds` comes from callers but this module iterates `layout.positions`\n\n // Note: Pan delta compensation is NOT applied during view transitions because:\n // 1. The time-based animation system handles position changes smoothly\n // 2. Applying pan delta during animation interferes with the interpolation\n // 3. The scroll position changes are a natural part of the view mode switch\n // This compensation is only useful for rapid scrolling/panning where sprites\n // need to maintain visual stability, which isn't the case during view transitions.\n\n const visibleSet = new Set<string | number>();\n\n // Increase buffer (in world units) to reduce edge cases where rapid\n // scrolling skips sprite creation. Keep buffer in world units and convert\n // DOM pixel measurements into world coordinates below to avoid mixing\n // coordinate spaces which can cause precision drift at browser zooms.\n const baseBufferWorld = Math.max(cardWidth, cardHeight) * 4;\n // Ensure buffer scales with viewport size (in world units) so that when\n // zoomed out we still pre-create enough sprites ahead of the viewport.\n const invScale = zoomLevel && zoomLevel !== 0 ? 1 / zoomLevel : 1;\n // The layout positions are in world units; when the root container is scaled\n // (zoomed) the rendered pixel position = position * zoomLevel. The DOM\n // scroll positions (`container.scrollLeft/Top`) are the authoritative pixel\n // camera offsets; prefer them over the passed `panX/panY` to avoid stale\n // values or race conditions between React state and direct DOM updates.\n const effectivePanX = typeof container.scrollLeft === 'number' ? container.scrollLeft : (panX || 0);\n const effectivePanY = typeof container.scrollTop === 'number' ? container.scrollTop : (panY || 0);\n\n // Convert pixel-based DOM measurements into world units so we compare like\n // with like. root.position is set using -pixels, so the mapping\n // from DOM scroll (pixels) to world units is: world = pixels / zoomLevel.\n // OffsetY is already in pixels and doesn't need scaling in panWorldY calc\n // because panWorldY is used for viewport buffering/culling, which is relative\n // to the \"camera\" position in world space.\n // The camera world Y = (scrollTop - offsetY) / zoomLevel.\n const effectivePanYWithOffset = effectivePanY - offsetY;\n const panWorldX = effectivePanX * invScale;\n const panWorldY = effectivePanYWithOffset * invScale;\n\n const viewportWorldWidth = viewportPxWidth * invScale;\n const viewportWorldHeight = viewportPxHeight * invScale;\n\n // Ensure bufferWorld is calculated from the actual measured viewport\n // in world units (after converting client pixel dims using invScale).\n // Make buffer adaptive to zoom: when zoomed out (invScale > 1) a small\n // pixel scroll maps to a larger world delta, so increase the buffer.\n // Use the larger of width/height to ensure we buffer enough in both directions.\n const bufferWorld = Math.max(baseBufferWorld * invScale, Math.max(viewportWorldWidth, viewportWorldHeight) * 2.0, baseBufferWorld);\n\n // Do not clamp viewport edges to 0 — allow negative top/left values so the\n // visible window correctly follows the scroll even when the buffer is\n // larger than the current scroll offset.\n const viewportLeftWorld = panWorldX - bufferWorld;\n const viewportRightWorld = panWorldX + viewportWorldWidth + bufferWorld;\n const viewportTopWorld = panWorldY - bufferWorld;\n const viewportBottomWorld = panWorldY + viewportWorldHeight + bufferWorld;\n\n const inViewportIds: (string | number)[] = [];\n // Small tolerance in world units to avoid floating-point edge cases when\n // browser/device zoom or high scroll values produce tiny rounding errors.\n // Scale epsilon with invScale so tolerance grows when zoomed out.\n const worldEpsilon = Math.max(0.5, 0.5 * invScale);\n\n // Iterate layout positions directly to avoid depending on `visibleIds`\n // which may be calculated in a different coordinate space or with\n // different assumptions about zoom. Looping the positions map is\n // deterministic and uses world coordinates directly.\n for (const [id, position] of layout.positions) {\n if (!position) continue;\n const worldX = position.x;\n const worldY = position.y;\n const worldCardW = cardWidth;\n const worldCardH = cardHeight;\n\n if (\n worldX + worldCardW >= viewportLeftWorld - worldEpsilon &&\n worldX <= viewportRightWorld + worldEpsilon &&\n worldY + worldCardH >= viewportTopWorld - worldEpsilon &&\n worldY <= viewportBottomWorld + worldEpsilon\n ) {\n inViewportIds.push(id);\n visibleSet.add(id);\n }\n }\n\n // During view transitions, if no cards are visible and we're not animating yet,\n // force-add the first few cards from the layout to ensure content appears.\n // This prevents a blank screen when switching modes, especially in packaged builds\n // where scroll stabilization might be delayed.\n if (isViewTransition && inViewportIds.length === 0 && layout.positions.size > 0) {\n let count = 0;\n for (const [id, position] of layout.positions) {\n if (count < 5 && position) { // Add up to 5 cards\n inViewportIds.push(id);\n visibleSet.add(id);\n count++;\n }\n }\n }\n\n // Ensure last rows are present when the user scrolls near the bottom.\n // Compute slot/row information and force-insert IDs from the last few\n // rows to avoid missing tiles due to rounding/precision at zoom levels.\n try {\n const slotHeight = cardHeight + (CARD_GAP || 8);\n const totalRows = Math.ceil((layout.totalHeight || 0) / slotHeight) || 0;\n // Determine how many rows are visible in the viewport (world units),\n // then prefetch a fraction of that adjusted by zoom (invScale).\n const rowsVisible = Math.max(1, Math.ceil(viewportWorldHeight / slotHeight));\n const prefetchMultiplier = 0.75; // fraction of viewport to prefetch\n const prefetchRows = Math.max(2, Math.ceil(rowsVisible * prefetchMultiplier * Math.max(1, invScale)));\n const lastRowThresholdY = Math.max(0, (totalRows - prefetchRows) * slotHeight);\n for (const [id, position] of layout.positions) {\n if (position.y >= lastRowThresholdY) {\n if (!visibleSet.has(id)) {\n inViewportIds.push(id);\n visibleSet.add(id);\n }\n }\n }\n } catch (e) {\n void e;\n }\n\n // Fallback: if no sprites are calculated as visible (e.g., due to rounding\n // or scroll/zoom race conditions), force a handful of cards into view so\n // the canvas never renders empty at certain zoom levels.\n // When transitioning views, be more aggressive to ensure content appears during the transition\n let injectedFallback = false;\n const fallbackCount = isViewTransition ? 30 : 12;\n if (inViewportIds.length === 0 && layout.positions.size > 0) {\n injectedFallback = true;\n let count = 0;\n for (const [id] of layout.positions) {\n inViewportIds.push(id);\n visibleSet.add(id);\n count++;\n if (count >= fallbackCount) break;\n }\n }\n\n // If we detect a very large discrepancy between created sprites and the\n // computed in-viewport count, that's a signal our culling math may be\n // unstable (especially at non-100% zoom). In that case, skip hiding this\n // frame as a conservative safeguard to avoid mass disappearing tiles.\n // However, disable this safeguard during view transitions to ensure old sprites are cleaned up.\n // EXCEPT: During view transitions, if scroll position hasn't stabilized yet (e.g., switching to grouped\n // mode triggers a scroll-to-bottom), keep all sprites visible to prevent flickering.\n // Check scroll stabilization by comparing current scroll to previous scroll position.\n const currentScrollTop = container.scrollTop || 0;\n const currentScrollLeft = container.scrollLeft || 0;\n const scrollTopDelta = Math.abs(currentScrollTop - (prevScrollTop || currentScrollTop));\n const scrollLeftDelta = Math.abs(currentScrollLeft - (prevScrollLeft || currentScrollLeft));\n const scrollStabilized = scrollTopDelta < 10 && scrollLeftDelta < 10;\n const aggressiveCull = !injectedFallback && (\n (!isViewTransition && sprites.size > Math.max(120, Math.ceil(inViewportIds.length * 1.5))) ||\n (isViewTransition && !scrollStabilized)\n );\n\n for (const [id, sprite] of sprites) {\n if (!visibleSet.has(id)) {\n // If view transition is active, check if this sprite has a valid target in the new layout\n // If so, keep it visible and animate it to the new position (even if off-screen)\n if (isViewTransition && layout.positions.has(id)) {\n const newPos = layout.positions.get(id);\n if (newPos) {\n sprite.targetX = newPos.x;\n sprite.targetY = newPos.y;\n\n // Trigger animation if not already animating\n if (sprite.animationStartTime === undefined) {\n sprite.startX = sprite.currentX;\n sprite.startY = sprite.currentY;\n sprite.animationStartTime = Date.now();\n sprite.animationDelay = Math.random() * 300;\n }\n\n try { if (sprite.container) sprite.container.visible = true; } catch (e) { void e; }\n // Don't mark as hidden, so it won't be swept\n if ((sprite as unknown as { __lastHiddenAt?: number }).__lastHiddenAt) delete (sprite as unknown as { __lastHiddenAt?: number }).__lastHiddenAt;\n continue;\n }\n }\n\n if (aggressiveCull) {\n // Keep sprite visible this frame to avoid visual holes\n try { if (sprite.container) sprite.container.visible = true; } catch (e) { void e; }\n continue;\n }\n\n try {\n if (sprite.container) {\n sprite.container.visible = false;\n }\n (sprite as unknown as { __lastHiddenAt: number }).__lastHiddenAt = Date.now();\n } catch (e) {\n void e;\n }\n } else {\n try {\n if (sprite.container) {\n sprite.container.visible = true;\n }\n if ((sprite as unknown as { __lastHiddenAt?: number }).__lastHiddenAt) delete (sprite as unknown as { __lastHiddenAt?: number }).__lastHiddenAt;\n } catch (e) { void e; }\n }\n }\n\n // Sweep: actually destroy sprites that have been hidden longer than threshold\n try {\n const SWEEP_MS = 100; // keep hidden sprites for 100ms before destruction (reduced from 500ms for faster mode transitions)\n const now = Date.now();\n for (const [id, sprite] of sprites) {\n const lastHidden = (sprite as unknown as { __lastHiddenAt?: number }).__lastHiddenAt;\n if (lastHidden && now - lastHidden > SWEEP_MS) {\n try {\n // remove from parent if present\n if (sprite.container && sprite.container.parent) sprite.container.parent.removeChild(sprite.container);\n } catch (e) {\n void e;\n }\n try {\n destroySprite(sprite);\n } catch (e) {\n void e;\n }\n sprites.delete(id);\n }\n }\n } catch (e) {\n void e;\n }\n\n // Limit the number of sprites created per frame to avoid choking the GPU/CPU\n // when scrolling rapidly or zooming out significantly.\n const MAX_SPRITES_PER_FRAME = 50;\n let createdCount = 0;\n\n\n for (const id of inViewportIds) {\n const position = layout.positions.get(id);\n if (!position) {\n continue;\n }\n\n let sprite = sprites.get(id);\n if (!sprite) {\n if (createdCount >= MAX_SPRITES_PER_FRAME) {\n continue;\n }\n createdCount++;\n\n let startX = position.x;\n let startY = position.y;\n let shouldAnimate = false;\n\n // If view transition, try to find old position to fly in from\n if (isViewTransition && prevLayout && prevLayout.positions.has(id)) {\n const oldPos = prevLayout.positions.get(id);\n if (oldPos) {\n startX = oldPos.x;\n startY = oldPos.y;\n\n // If we have a pan delta (camera jump), we need to adjust the start position\n // so that the sprite appears at the same visual location relative to the NEW camera.\n // StartWorld = OldWorld + PanDelta\n if (panDeltaX || panDeltaY) {\n const dx = (panDeltaX || 0) / (zoomLevel || 1);\n const dy = (panDeltaY || 0) / (zoomLevel || 1);\n startX += dx;\n startY += dy;\n }\n\n shouldAnimate = true;\n }\n }\n\n sprite = createCardSprite(id, startX, startY);\n sprites.set(id, sprite);\n if (sprite.container) {\n root.addChild(sprite.container);\n sprite.currentX = startX;\n sprite.currentY = startY;\n // Keep sprite.container positioned in world units; animation/update\n // loop will apply root.scale/position to convert to pixels.\n sprite.container.position.set(startX, startY);\n }\n\n if (shouldAnimate) {\n sprite.targetX = position.x;\n sprite.targetY = position.y;\n sprite.startX = startX;\n sprite.startY = startY;\n sprite.animationStartTime = Date.now();\n sprite.animationDelay = Math.random() * 300;\n }\n }\n\n // Check if target changed to trigger animation\n const targetChanged = sprite.targetX !== position.x || sprite.targetY !== position.y;\n if (targetChanged) {\n if (isViewTransition) {\n // Only set up animation if not already animating - don't reset animation\n // when targets change during layout recalculations\n if (sprite.animationStartTime === undefined) {\n sprite.startX = sprite.currentX;\n sprite.startY = sprite.currentY;\n sprite.animationStartTime = Date.now();\n // Add random delay for \"organic\" fly effect\n sprite.animationDelay = Math.random() * 300;\n }\n // Always update target to the new position (animation will smoothly\n // adjust to the new target)\n sprite.targetX = position.x;\n sprite.targetY = position.y;\n } else {\n sprite.targetX = position.x;\n sprite.targetY = position.y;\n delete sprite.animationStartTime;\n delete sprite.animationDelay;\n }\n }\n\n const item = items[Number(id)];\n if (item) {\n updateCardContent(sprite, item);\n }\n }\n}\n"],"names":["sprites","CARD_GAP","destroySprite"],"mappings":";;;;;AAmCM,SAAU,qBAAqB,CAAQ,MAAyB,EAAA;IAClE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,WAAEA,SAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,MAAM;AACnT,IAAA,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS;QAAE;AAQzB,IAAA,MAAM,eAAe,GAAG,SAAS,CAAC,WAAW,IAAI,aAAa;AAC9D,IAAA,MAAM,gBAAgB,GAAG,SAAS,CAAC,YAAY,IAAI,cAAc;IAEjE,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,IAAI,SAAS;IAC7D,IAAI,OAAO,GAAG,CAAC;IAMf,IAAI,QAAQ,KAAK,SAAS,IAAI,eAAe,GAAG,gBAAgB,EAAE;AAE9D,QAAA,OAAO,GAAG,gBAAgB,GAAG,eAAe;IAChD;IAIA,MAAM,aAAa,GAAG,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ,GAAG,SAAS,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,CAAC;IACnG,MAAM,aAAa,GAAG,OAAO,SAAS,CAAC,SAAS,KAAK,QAAQ,GAAG,SAAS,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC;IAGjG,IAAI,IAAI,EAAE;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AAGzB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,OAAO,GAAG,aAAa,CAAC;IAC9D;IAGA,IAAI,eAAe,EAAE;AACjB,QAAA,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACpC,QAAA,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,OAAO,GAAG,aAAa,CAAC;IACzE;AAWA,IAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAmB;AAM7C,IAAA,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC;AAG3D,IAAA,MAAM,QAAQ,GAAG,SAAS,IAAI,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC;IAMjE,MAAM,aAAa,GAAG,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ,GAAG,SAAS,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,CAAC;IACnG,MAAM,aAAa,GAAG,OAAO,SAAS,CAAC,SAAS,KAAK,QAAQ,GAAG,SAAS,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC;AASjG,IAAA,MAAM,uBAAuB,GAAG,aAAa,GAAG,OAAO;AACvD,IAAA,MAAM,SAAS,GAAG,aAAa,GAAG,QAAQ;AAC1C,IAAA,MAAM,SAAS,GAAG,uBAAuB,GAAG,QAAQ;AAEpD,IAAA,MAAM,kBAAkB,GAAG,eAAe,GAAG,QAAQ;AACrD,IAAA,MAAM,mBAAmB,GAAG,gBAAgB,GAAG,QAAQ;IAOvD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,GAAG,GAAG,EAAE,eAAe,CAAC;AAKlI,IAAA,MAAM,iBAAiB,GAAG,SAAS,GAAG,WAAW;AACjD,IAAA,MAAM,kBAAkB,GAAG,SAAS,GAAG,kBAAkB,GAAG,WAAW;AACvE,IAAA,MAAM,gBAAgB,GAAG,SAAS,GAAG,WAAW;AAChD,IAAA,MAAM,mBAAmB,GAAG,SAAS,GAAG,mBAAmB,GAAG,WAAW;IAEzE,MAAM,aAAa,GAAwB,EAAE;AAI7C,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,CAAC;IAMlD,KAAK,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE;AAC3C,QAAA,IAAI,CAAC,QAAQ;YAAE;AACf,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC;AACzB,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC;QACzB,MAAM,UAAU,GAAG,SAAS;QAC5B,MAAM,UAAU,GAAG,UAAU;AAE7B,QAAA,IACI,MAAM,GAAG,UAAU,IAAI,iBAAiB,GAAG,YAAY;YACvD,MAAM,IAAI,kBAAkB,GAAG,YAAY;AAC3C,YAAA,MAAM,GAAG,UAAU,IAAI,gBAAgB,GAAG,YAAY;AACtD,YAAA,MAAM,IAAI,mBAAmB,GAAG,YAAY,EAC9C;AACE,YAAA,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;AACtB,YAAA,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB;IACJ;AAMA,IAAA,IAAI,gBAAgB,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE;QAC7E,IAAI,KAAK,GAAG,CAAC;QACb,KAAK,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE;AAC3C,YAAA,IAAI,KAAK,GAAG,CAAC,IAAI,QAAQ,EAAE;AACvB,gBAAA,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;AACtB,gBAAA,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,gBAAA,KAAK,EAAE;YACX;QACJ;IACJ;AAKA,IAAA,IAAI;QACA,MAAM,UAAU,GAAG,UAAU,IAAIC,kBAAQ,IAAI,CAAC,CAAC;AAC/C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC;AAGxE,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,CAAC;QAC5E,MAAM,kBAAkB,GAAG,IAAI;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AACrG,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,SAAS,GAAG,YAAY,IAAI,UAAU,CAAC;QAC9E,KAAK,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE;AAC3C,YAAA,IAAI,QAAQ,CAAC,CAAC,IAAI,iBAAiB,EAAE;gBACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACrB,oBAAA,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;AACtB,oBAAA,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB;YACJ;QACJ;IACJ;IAAE,OAAO,CAAC,EAAE;IAEZ;IAMA,IAAI,gBAAgB,GAAG,KAAK;IAC5B,MAAM,aAAa,GAAG,gBAAgB,GAAG,EAAE,GAAG,EAAE;AAChD,IAAA,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE;QACzD,gBAAgB,GAAG,IAAI;QACvB,IAAI,KAAK,GAAG,CAAC;QACb,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE;AACjC,YAAA,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;AACtB,YAAA,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,YAAA,KAAK,EAAE;YACP,IAAI,KAAK,IAAI,aAAa;gBAAE;QAChC;IACJ;AAUA,IAAA,MAAM,gBAAgB,GAAG,SAAS,CAAC,SAAS,IAAI,CAAC;AACjD,IAAA,MAAM,iBAAiB,GAAG,SAAS,CAAC,UAAU,IAAI,CAAC;AACnD,IAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAI,aAAa,IAAI,gBAAgB,CAAC,CAAC;AACvF,IAAA,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,IAAI,cAAc,IAAI,iBAAiB,CAAC,CAAC;IAC3F,MAAM,gBAAgB,GAAG,cAAc,GAAG,EAAE,IAAI,eAAe,GAAG,EAAE;AACpE,IAAA,MAAM,cAAc,GAAG,CAAC,gBAAgB,KACpC,CAAC,CAAC,gBAAgB,IAAID,SAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;AACzF,SAAC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,CAC1C;IAED,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAIA,SAAO,EAAE;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAGrB,IAAI,gBAAgB,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvC,IAAI,MAAM,EAAE;AACR,oBAAA,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;AACzB,oBAAA,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;AAGzB,oBAAA,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS,EAAE;AACzC,wBAAA,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ;AAC/B,wBAAA,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ;AAC/B,wBAAA,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE;wBACtC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG;oBAC/C;AAEA,oBAAA,IAAI;wBAAE,IAAI,MAAM,CAAC,SAAS;AAAE,4BAAA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI;oBAAE;oBAAE,OAAO,CAAC,EAAE;oBAAU;oBAEnF,IAAK,MAAiD,CAAC,cAAc;wBAAE,OAAQ,MAAiD,CAAC,cAAc;oBAC/I;gBACJ;YACJ;YAEA,IAAI,cAAc,EAAE;AAEhB,gBAAA,IAAI;oBAAE,IAAI,MAAM,CAAC,SAAS;AAAE,wBAAA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI;gBAAE;gBAAE,OAAO,CAAC,EAAE;gBAAU;gBACnF;YACJ;AAEA,YAAA,IAAI;AACA,gBAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AAClB,oBAAA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK;gBACpC;AACC,gBAAA,MAAgD,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE;YACjF;YAAE,OAAO,CAAC,EAAE;YAEZ;QACJ;aAAO;AACH,YAAA,IAAI;AACA,gBAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AAClB,oBAAA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI;gBACnC;gBACA,IAAK,MAAiD,CAAC,cAAc;oBAAE,OAAQ,MAAiD,CAAC,cAAc;YACnJ;YAAE,OAAO,CAAC,EAAE;YAAU;QAC1B;IACJ;AAGA,IAAA,IAAI;QACA,MAAM,QAAQ,GAAG,GAAG;AACpB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QACtB,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAIA,SAAO,EAAE;AAChC,YAAA,MAAM,UAAU,GAAI,MAAiD,CAAC,cAAc;YACpF,IAAI,UAAU,IAAI,GAAG,GAAG,UAAU,GAAG,QAAQ,EAAE;AAC3C,gBAAA,IAAI;oBAEA,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM;wBAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC;gBAC1G;gBAAE,OAAO,CAAC,EAAE;AACR,oBAAA,KAAK,CAAC;gBACV;AACA,gBAAA,IAAI;oBACAE,qBAAa,CAAC,MAAM,CAAC;gBACzB;gBAAE,OAAO,CAAC,EAAE;AACR,oBAAA,KAAK,CAAC;gBACV;AACA,gBAAAF,SAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB;QACJ;IACJ;IAAE,OAAO,CAAC,EAAE;IAEZ;IAIA,MAAM,qBAAqB,GAAG,EAAE;IAChC,IAAI,YAAY,GAAG,CAAC;AAGpB,IAAA,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE;QAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,EAAE;YACX;QACJ;QAEA,IAAI,MAAM,GAAGA,SAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,IAAI,YAAY,IAAI,qBAAqB,EAAE;gBACvC;YACJ;AACA,YAAA,YAAY,EAAE;AAEd,YAAA,IAAI,MAAM,GAAG,QAAQ,CAAC,CAAC;AACvB,YAAA,IAAI,MAAM,GAAG,QAAQ,CAAC,CAAC;YACvB,IAAI,aAAa,GAAG,KAAK;AAGzB,YAAA,IAAI,gBAAgB,IAAI,UAAU,IAAI,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBAChE,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3C,IAAI,MAAM,EAAE;AACR,oBAAA,MAAM,GAAG,MAAM,CAAC,CAAC;AACjB,oBAAA,MAAM,GAAG,MAAM,CAAC,CAAC;AAKjB,oBAAA,IAAI,SAAS,IAAI,SAAS,EAAE;AACxB,wBAAA,MAAM,EAAE,GAAG,CAAC,SAAS,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC;AAC9C,wBAAA,MAAM,EAAE,GAAG,CAAC,SAAS,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC;wBAC9C,MAAM,IAAI,EAAE;wBACZ,MAAM,IAAI,EAAE;oBAChB;oBAEA,aAAa,GAAG,IAAI;gBACxB;YACJ;YAEA,MAAM,GAAG,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC;AAC7C,YAAAA,SAAO,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC;AACvB,YAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;AAC/B,gBAAA,MAAM,CAAC,QAAQ,GAAG,MAAM;AACxB,gBAAA,MAAM,CAAC,QAAQ,GAAG,MAAM;gBAGxB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;YACjD;YAEA,IAAI,aAAa,EAAE;AACf,gBAAA,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC;AAC3B,gBAAA,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC;AAC3B,gBAAA,MAAM,CAAC,MAAM,GAAG,MAAM;AACtB,gBAAA,MAAM,CAAC,MAAM,GAAG,MAAM;AACtB,gBAAA,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE;gBACtC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG;YAC/C;QACJ;AAGA,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;QACpF,IAAI,aAAa,EAAE;YACf,IAAI,gBAAgB,EAAE;AAGlB,gBAAA,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS,EAAE;AACzC,oBAAA,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ;AAC/B,oBAAA,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ;AAC/B,oBAAA,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE;oBAEtC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG;gBAC/C;AAGA,gBAAA,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC;AAC3B,gBAAA,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC;YAC/B;iBAAO;AACH,gBAAA,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC;AAC3B,gBAAA,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC;gBAC3B,OAAO,MAAM,CAAC,kBAAkB;gBAChC,OAAO,MAAM,CAAC,cAAc;YAChC;QACJ;QAEA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,IAAI,EAAE;AACN,YAAA,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;QACnC;IACJ;AACJ;;;;"}
1
+ {"version":3,"file":"visibility.js","sources":["../../../../../PivotViewer/components/pivot/visibility.ts"],"sourcesContent":[null],"names":["sprites","CARD_GAP","destroySprite"],"mappings":"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"}
@@ -1,5 +1,7 @@
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.
3
5
  const BASE_CARD_WIDTH = 200;
4
6
  const BASE_CARD_HEIGHT = 176;
5
7
  const CARDS_PER_COLUMN = 5;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../PivotViewer/constants.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\nexport const BASE_CARD_WIDTH = 200;\nexport const BASE_CARD_HEIGHT = 176;\nexport const CARDS_PER_COLUMN = 5;\nexport const GROUP_SPACING = 20;\nexport const CARD_GAP = 10;\nexport const CANVAS_PADDING = 20;\n"],"names":[],"mappings":";;AAGO,MAAM,eAAe,GAAG;AACxB,MAAM,gBAAgB,GAAG;AACzB,MAAM,gBAAgB,GAAG;AAEzB,MAAM,QAAQ,GAAG;AACjB,MAAM,cAAc,GAAG;;;;;;;;"}
1
+ {"version":3,"file":"constants.js","sources":["../../../PivotViewer/constants.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;AACA;AAEO,MAAM,eAAe,GAAG;AACxB,MAAM,gBAAgB,GAAG;AACzB,MAAM,gBAAgB,GAAG;AAEzB,MAAM,QAAQ,GAAG;AACjB,MAAM,cAAc,GAAG;;;;;;;;"}