@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":"EventsView.js","sources":["../../../TimeMachine/EventsView.tsx"],"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 React, { useEffect, useRef, useState } from 'react';\nimport { Timeline } from 'primereact/timeline';\nimport type { Event } from './types';\nimport { Properties } from './Properties';\nimport './EventsView.css';\n\ninterface EventsViewProps {\n events: Event[];\n}\n\nexport const EventsView: React.FC<EventsViewProps> = ({ events }) => {\n // Use test data if no events provided\n const displayEvents = events.length > 0 ? events : [];\n const containerRef = useRef<HTMLDivElement>(null);\n const [canScrollUp, setCanScrollUp] = useState(false);\n const [canScrollDown, setCanScrollDown] = useState(false);\n\n const updateScrollState = () => {\n const container = containerRef.current;\n if (!container) {\n setCanScrollUp(false);\n setCanScrollDown(false);\n return;\n }\n\n const { scrollTop, scrollHeight, clientHeight } = container;\n const epsilon = 1;\n setCanScrollUp(scrollTop > epsilon);\n setCanScrollDown(scrollTop + clientHeight < scrollHeight - epsilon);\n };\n\n useEffect(() => {\n updateScrollState();\n const container = containerRef.current;\n if (!container) return;\n\n const handleScroll = () => updateScrollState();\n container.addEventListener('scroll', handleScroll);\n return () => container.removeEventListener('scroll', handleScroll);\n }, [displayEvents.length]);\n\n const renderEventCard = (event: Event, position: 'left' | 'right') => {\n const isLeft = position === 'left';\n\n return (\n <div className={`events-view-event-card events-view-event-card--${position}`}>\n <div className={`events-view-event-header ${isLeft ? 'events-view-event-header--right' : ''}`}>\n <h3 className={`events-view-event-name ${isLeft ? 'events-view-event-name--right' : ''}`}>{event.type}</h3>\n <div className={`events-view-event-timestamp ${isLeft ? 'events-view-event-timestamp--right' : ''}`}>\n {event.occurred.toLocaleString()}\n </div>\n </div>\n <div className=\"events-view-event-properties\">\n <Properties data={event.content || {}} align=\"left\" />\n </div>\n </div>\n );\n };\n\n const customContent = (event: Event, index: number) => {\n // PrimeReact places even indices (0,2,4,...) on the right, odd on the left\n const position = index % 2 === 0 ? 'right' : 'left';\n return renderEventCard(event, position);\n };\n\n const customMarker = () => {\n return (\n <div className=\"events-view-marker\">\n <div className=\"events-view-marker-dot\"></div>\n </div>\n );\n };\n\n const scrollToTop = () => containerRef.current?.scrollTo({ top: 0, behavior: 'smooth' });\n const scrollToBottom = () => {\n const container = containerRef.current;\n if (!container) return;\n container.scrollTo({ top: container.scrollHeight, behavior: 'smooth' });\n };\n\n return (\n <div className=\"events-view-container\" ref={containerRef}>\n {canScrollUp && (\n <div className=\"events-view-scroll-button-wrapper events-view-scroll-button-wrapper--top\">\n <button\n type=\"button\"\n className=\"events-view-scroll-button events-view-scroll-button--top\"\n onClick={scrollToTop}\n aria-label=\"Scroll to top\"\n >\n <i className=\"pi pi-arrow-up\" />\n </button>\n </div>\n )}\n <Timeline\n value={displayEvents}\n align=\"alternate\"\n content={customContent}\n marker={customMarker}\n className=\"events-view-timeline\"\n />\n {canScrollDown && (\n <div className=\"events-view-scroll-button-wrapper events-view-scroll-button-wrapper--bottom\">\n <button\n type=\"button\"\n className=\"events-view-scroll-button events-view-scroll-button--bottom\"\n onClick={scrollToBottom}\n aria-label=\"Scroll to bottom\"\n >\n <i className=\"pi pi-arrow-down\" />\n </button>\n </div>\n )}\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"EventsView.js","sources":["../../../TimeMachine/EventsView.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Properties.js","sources":["../../../TimeMachine/Properties.tsx"],"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 React from 'react';\nimport { formatPropertyName } from './propertiesHelpers';\n\ninterface PropertiesProps {\n data: Record<string, unknown>;\n /** CSS class name for the container */\n className?: string;\n /** Text alignment for the table */\n align?: 'left' | 'right';\n}\n\nexport const Properties: React.FC<PropertiesProps> = ({ data, className, align = 'left' }) => {\n const tableStyle: React.CSSProperties = {\n width: '100%',\n borderCollapse: 'collapse',\n fontFamily: '-apple-system, BlinkMacSystemFont, \"SF Mono\", monospace',\n fontSize: '13px',\n };\n\n const rowStyle: React.CSSProperties = {\n borderBottom: '1px solid rgba(255,255,255,0.1)',\n };\n\n const labelStyle: React.CSSProperties = {\n padding: '8px 12px',\n color: 'rgba(255,255,255,0.6)',\n textAlign: align,\n fontWeight: 500,\n width: '40%',\n };\n\n const valueStyle: React.CSSProperties = {\n padding: '8px 12px',\n color: '#fff',\n textAlign: align,\n };\n\n const renderValue = (value: unknown): React.ReactNode => {\n if (value === null || value === undefined) {\n return <span style={{ color: 'rgba(255,255,255,0.4)' }}>null</span>;\n }\n\n if (typeof value === 'boolean') {\n return <span style={{ color: value ? '#4ade80' : '#f87171' }}>{value.toString()}</span>;\n }\n\n if (typeof value === 'number') {\n return <span style={{ color: '#fbbf24' }}>{value}</span>;\n }\n\n if (value instanceof Date) {\n return <span style={{ color: '#60a5fa' }}>{value.toLocaleString()}</span>;\n }\n\n if (Array.isArray(value)) {\n return (\n <span style={{ color: 'rgba(255,255,255,0.7)' }}>\n Array[{value.length}]\n </span>\n );\n }\n\n if (typeof value === 'object') {\n return (\n <span style={{ color: 'rgba(255,255,255,0.7)' }}>\n {'{'}...{'}'}\n </span>\n );\n }\n\n return <span>{String(value)}</span>;\n };\n\n return (\n <div className={className}>\n <table style={tableStyle}>\n <tbody>\n {data && Object.entries(data).map(([key, value], index) => (\n <tr key={`${key}-${index}`} style={rowStyle}>\n <td style={labelStyle}>{formatPropertyName(key)}</td>\n <td style={valueStyle}>{renderValue(value)}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"Properties.js","sources":["../../../TimeMachine/Properties.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -19,6 +19,7 @@ const ReadModelView = ({ versions, selectedIndex, hoveredIndex, onVersionSelect,
19
19
  const isFlipped = flippedMap[version.id] ?? false;
20
20
  if (!isVisible)
21
21
  return null;
22
+ // Only prepare events for the active version to avoid showing all events at once
22
23
  const events = isActive && version.events?.length
23
24
  ? version.events.map(event => ({
24
25
  ...event,
@@ -1 +1 @@
1
- {"version":3,"file":"ReadModelView.js","sources":["../../../TimeMachine/ReadModelView.tsx"],"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 React, { useState } from 'react';\nimport type { Version } from './types';\nimport { Properties } from './Properties';\n\ninterface ReadModelViewProps {\n versions: Version[];\n selectedIndex: number;\n hoveredIndex: number | null;\n onVersionSelect: (index: number) => void;\n onHoveringCardChange: (isHovering: boolean) => void;\n}\n\nexport const ReadModelView: React.FC<ReadModelViewProps> = ({\n versions,\n selectedIndex,\n hoveredIndex,\n onVersionSelect,\n onHoveringCardChange,\n}) => {\n const displayIndex = hoveredIndex ?? selectedIndex;\n const [flippedMap, setFlippedMap] = useState<Record<string, boolean>>({});\n\n const toggleFlip = (id: string) => (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n setFlippedMap(previous => ({\n ...previous,\n [id]: !previous[id]\n }));\n };\n\n return (\n <>\n {/* Starfield background */}\n <div className=\"time-machine-background\">\n <div className=\"stars\"></div>\n <div className=\"stars stars-2\"></div>\n <div className=\"stars stars-3\"></div>\n </div>\n\n {/* 3D Stacked Windows */}\n <div className=\"time-machine-viewport\">\n <div className=\"windows-container\">\n {versions.map((version, index) => {\n const depth = index - displayIndex;\n const isActive = index === displayIndex;\n const isVisible = depth >= 0 && depth < 10;\n const isFlipped = flippedMap[version.id] ?? false;\n\n if (!isVisible) return null;\n\n // Only prepare events for the active version to avoid showing all events at once\n const events = isActive && version.events?.length\n ? version.events.map(event => ({\n ...event,\n occurred: new Date(event.occurred)\n }))\n : [];\n\n return (\n <div\n key={version.id}\n className={`version-window ${isActive ? 'active' : ''} ${isFlipped ? 'flipped' : ''}`}\n style={{\n '--depth': depth,\n '--z-offset': -depth * 150,\n '--scale': 1 - depth * 0.05,\n '--opacity': 1 - depth * 0.12,\n } as React.CSSProperties}\n onClick={() => onVersionSelect(index)}\n onMouseEnter={() => onHoveringCardChange(true)}\n onMouseLeave={() => onHoveringCardChange(false)}\n >\n <div className=\"version-window-inner\">\n <div className=\"version-window-face version-window-face--front\">\n <div className=\"window-chrome\">\n <div className=\"window-controls\">\n <span className=\"control close\"></span>\n <span className=\"control minimize\"></span>\n <span className=\"control maximize\"></span>\n </div>\n <div className=\"window-title\">{version.label}</div>\n <div className=\"window-actions\">\n <button\n type=\"button\"\n className=\"window-flip-button\"\n onClick={toggleFlip(version.id)}\n aria-label=\"Show related events\"\n aria-pressed={isFlipped}\n >\n <i className={`pi ${isFlipped ? 'pi-undo' : 'pi-refresh'}`} />\n </button>\n </div>\n </div>\n <div className=\"window-content\">\n {version.content}\n </div>\n </div>\n <div className=\"version-window-face version-window-face--back\">\n <div className=\"window-chrome window-chrome--back\">\n <div className=\"window-controls\">\n <span className=\"control close\"></span>\n <span className=\"control minimize\"></span>\n <span className=\"control maximize\"></span>\n </div>\n <div className=\"window-title\">Related Events</div>\n <div className=\"window-actions\">\n <button\n type=\"button\"\n className=\"window-flip-button\"\n onClick={toggleFlip(version.id)}\n aria-label=\"Show read model snapshot\"\n aria-pressed={isFlipped}\n >\n <i className={`pi ${isFlipped ? 'pi-undo' : 'pi-refresh'}`} />\n </button>\n </div>\n </div>\n <div className=\"window-content window-content--events\">\n <div className=\"snapshot-event-list\">\n {events.map((event, eventIndex) => (\n <div key={`${version.id}-${event.sequenceNumber ?? eventIndex}`} className=\"snapshot-event\">\n <div className=\"snapshot-event-header\">\n <span className=\"snapshot-event-name\">{event.type}</span>\n <span className=\"snapshot-event-timestamp\">{event.occurred.toLocaleString()}</span>\n </div>\n <Properties data={event.content} align=\"left\" />\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"ReadModelView.js","sources":["../../../TimeMachine/ReadModelView.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;;AAeO,MAAM,aAAa,GAAiC,CAAC,EACxD,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,eAAe,EACf,oBAAoB,GACvB,KAAI;AACD,IAAA,MAAM,YAAY,GAAG,YAAY,IAAI,aAAa;IAClD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAA0B,EAAE,CAAC;IAEzE,MAAM,UAAU,GAAG,CAAC,EAAU,KAAK,CAAC,KAA0C,KAAI;QAC9E,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,aAAa,CAAC,QAAQ,KAAK;AACvB,YAAA,GAAG,QAAQ;AACX,YAAA,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE;AACrB,SAAA,CAAC,CAAC;AACP,IAAA,CAAC;IAED,QACIA,4BAEIA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACpCC,aAAK,SAAS,EAAC,OAAO,EAAA,CAAO,EAC7BA,aAAK,SAAS,EAAC,eAAe,EAAA,CAAO,EACrCA,aAAK,SAAS,EAAC,eAAe,EAAA,CAAO,CAAA,EAAA,CACnC,EAGNA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAClCA,aAAK,SAAS,EAAC,mBAAmB,EAAA,QAAA,EAC7B,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;AAC7B,wBAAA,MAAM,KAAK,GAAG,KAAK,GAAG,YAAY;AAClC,wBAAA,MAAM,QAAQ,GAAG,KAAK,KAAK,YAAY;wBACvC,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE;wBAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,KAAK;AAEjD,wBAAA,IAAI,CAAC,SAAS;AAAE,4BAAA,OAAO,IAAI;;wBAG3B,MAAM,MAAM,GAAG,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;8BACrC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK;AAC3B,gCAAA,GAAG,KAAK;AACR,gCAAA,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;AACpC,6BAAA,CAAC;8BACA,EAAE;wBAER,QACIA,GAAA,CAAA,KAAA,EAAA,EAEI,SAAS,EAAE,CAAA,eAAA,EAAkB,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAA,CAAA,EAAI,SAAS,GAAG,SAAS,GAAG,EAAE,CAAA,CAAE,EACrF,KAAK,EAAE;AACH,gCAAA,SAAS,EAAE,KAAK;AAChB,gCAAA,YAAY,EAAE,CAAC,KAAK,GAAG,GAAG;AAC1B,gCAAA,SAAS,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI;AAC3B,gCAAA,WAAW,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI;AACT,6BAAA,EACxB,OAAO,EAAE,MAAM,eAAe,CAAC,KAAK,CAAC,EACrC,YAAY,EAAE,MAAM,oBAAoB,CAAC,IAAI,CAAC,EAC9C,YAAY,EAAE,MAAM,oBAAoB,CAAC,KAAK,CAAC,EAAA,QAAA,EAE/CD,cAAK,SAAS,EAAC,sBAAsB,EAAA,QAAA,EAAA,CACjCA,cAAK,SAAS,EAAC,gDAAgD,EAAA,QAAA,EAAA,CAC3DA,cAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,CAC1BA,cAAK,SAAS,EAAC,iBAAiB,EAAA,QAAA,EAAA,CAC5BC,cAAM,SAAS,EAAC,eAAe,EAAA,CAAQ,EACvCA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,kBAAkB,GAAQ,EAC1CA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,kBAAkB,EAAA,CAAQ,CAAA,EAAA,CACxC,EACNA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,cAAc,EAAA,QAAA,EAAE,OAAO,CAAC,KAAK,EAAA,CAAO,EACnDA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAC3BA,GAAA,CAAA,QAAA,EAAA,EACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,oBAAoB,EAC9B,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAA,YAAA,EACpB,qBAAqB,EAAA,cAAA,EAClB,SAAS,YAEvBA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,CAAA,GAAA,EAAM,SAAS,GAAG,SAAS,GAAG,YAAY,CAAA,CAAE,GAAI,EAAA,CACzD,EAAA,CACP,CAAA,EAAA,CACJ,EACNA,aAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAC1B,OAAO,CAAC,OAAO,EAAA,CACd,CAAA,EAAA,CACJ,EACND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+CAA+C,aAC1DA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mCAAmC,aAC9CA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,iBAAiB,aAC5BC,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,eAAe,GAAQ,EACvCA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,kBAAkB,EAAA,CAAQ,EAC1CA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,kBAAkB,EAAA,CAAQ,CAAA,EAAA,CACxC,EACNA,aAAK,SAAS,EAAC,cAAc,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAqB,EAClDA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,YAC3BA,GAAA,CAAA,QAAA,EAAA,EACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,oBAAoB,EAC9B,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAA,YAAA,EACpB,0BAA0B,kBACvB,SAAS,EAAA,QAAA,EAEvBA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,CAAA,GAAA,EAAM,SAAS,GAAG,SAAS,GAAG,YAAY,CAAA,CAAE,EAAA,CAAI,EAAA,CACzD,EAAA,CACP,IACJ,EACNA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uCAAuC,EAAA,QAAA,EAClDA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAA,QAAA,EAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,MAC1BD,IAAA,CAAA,KAAA,EAAA,EAAiE,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CACvFA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAAA,CAClCC,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,qBAAqB,EAAA,QAAA,EAAE,KAAK,CAAC,IAAI,EAAA,CAAQ,EACzDA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,0BAA0B,EAAA,QAAA,EAAE,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAQ,CAAA,EAAA,CACjF,EACNA,GAAA,CAAC,UAAU,IAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAC,MAAM,GAAG,CAAA,EAAA,EAL1C,CAAA,EAAG,OAAO,CAAC,EAAE,CAAA,CAAA,EAAI,KAAK,CAAC,cAAc,IAAI,UAAU,CAAA,CAAE,CAMzD,CACT,CAAC,EAAA,CACA,EAAA,CACJ,CAAA,EAAA,CACJ,CAAA,EAAA,CACJ,IAvED,OAAO,CAAC,EAAE,CAwEb;AAEd,oBAAA,CAAC,CAAC,EAAA,CACA,EAAA,CACJ,CAAA,EAAA,CACP;AAEX;;;;"}
@@ -23,6 +23,7 @@ const TimeMachine = ({ versions, currentVersionIndex = 0, onVersionChange, scrol
23
23
  const handleTimelineHover = useCallback((index) => {
24
24
  setHoveredIndex(index);
25
25
  }, []);
26
+ // Handle trackpad two-finger scroll gesture
26
27
  useEffect(() => {
27
28
  if (viewMode !== ViewModes.ReadModel) {
28
29
  return;
@@ -31,12 +32,18 @@ const TimeMachine = ({ versions, currentVersionIndex = 0, onVersionChange, scrol
31
32
  if (!container)
32
33
  return;
33
34
  const handleWheel = (e) => {
35
+ // Only handle navigation when not hovering over a card
34
36
  if (isHoveringCard) {
35
- return;
37
+ return; // Allow normal scrolling within cards
36
38
  }
39
+ // Prevent default scrolling behavior
37
40
  e.preventDefault();
41
+ // Use deltaX for horizontal scroll, fallback to deltaY for vertical
42
+ // Most trackpads send horizontal delta for two-finger swipe
38
43
  const delta = Math.abs(e.deltaX) > Math.abs(e.deltaY) ? e.deltaX : e.deltaY;
44
+ // Accumulate scroll delta
39
45
  scrollAccumulatorRef.current += delta;
46
+ // Check if we've accumulated enough scroll to change version
40
47
  if (Math.abs(scrollAccumulatorRef.current) >= scrollSensitivity) {
41
48
  const direction = scrollAccumulatorRef.current > 0 ? 1 : -1;
42
49
  const newIndex = Math.max(0, Math.min(versions.length - 1, selectedIndex + direction));
@@ -44,6 +51,7 @@ const TimeMachine = ({ versions, currentVersionIndex = 0, onVersionChange, scrol
44
51
  setSelectedIndex(newIndex);
45
52
  onVersionChange?.(newIndex);
46
53
  }
54
+ // Reset accumulator after version change
47
55
  scrollAccumulatorRef.current = 0;
48
56
  }
49
57
  };
@@ -52,6 +60,7 @@ const TimeMachine = ({ versions, currentVersionIndex = 0, onVersionChange, scrol
52
60
  container.removeEventListener('wheel', handleWheel);
53
61
  };
54
62
  }, [versions.length, selectedIndex, onVersionChange, scrollSensitivity, isHoveringCard, viewMode]);
63
+ // Get all events from all versions
55
64
  const allEvents = versions.flatMap(version => version.events || []);
56
65
  return (jsxs("div", { className: "time-machine", ref: containerRef, children: [jsxs("div", { className: "view-switcher", children: [jsx("button", { className: `view-button ${viewMode === ViewModes.ReadModel ? 'active' : ''}`, onClick: () => setViewMode(ViewModes.ReadModel), "aria-label": "Read Model View", title: "Read Model View", children: jsx("i", { className: "pi pi-box" }) }), jsx("button", { className: `view-button ${viewMode === ViewModes.Events ? 'active' : ''}`, onClick: () => setViewMode(ViewModes.Events), "aria-label": "Events View", title: "Events View", children: jsx("i", { className: "pi pi-list" }) })] }), viewMode === ViewModes.ReadModel ? (jsx(ReadModelView, { versions: versions, selectedIndex: selectedIndex, hoveredIndex: hoveredIndex, onVersionSelect: handleVersionSelect, onHoveringCardChange: setIsHoveringCard })) : (jsx(EventsView, { events: allEvents })), viewMode === ViewModes.ReadModel && (jsx(Timeline, { versions: versions, selectedIndex: selectedIndex, hoveredIndex: hoveredIndex, onSelect: handleVersionSelect, onHover: handleTimelineHover })), viewMode === ViewModes.ReadModel && (jsxs("div", { className: "navigation-controls", children: [jsx("button", { className: "nav-button prev", disabled: selectedIndex === 0, onClick: () => handleVersionSelect(Math.max(0, selectedIndex - 1)), "aria-label": "Previous version", children: "\u2039" }), jsx("button", { className: "nav-button next", disabled: selectedIndex === versions.length - 1, onClick: () => handleVersionSelect(Math.min(versions.length - 1, selectedIndex + 1)), "aria-label": "Next version", children: "\u203A" })] }))] }));
57
66
  };
@@ -60,6 +69,7 @@ const Timeline = ({ versions, selectedIndex, hoveredIndex, onSelect, onHover, })
60
69
  if (hoverIdx === null)
61
70
  return 1;
62
71
  const distance = Math.abs(index - hoverIdx);
72
+ // Fish-eye effect: items close to hover get magnified
63
73
  if (distance === 0)
64
74
  return 2.0;
65
75
  if (distance === 1)
@@ -1 +1 @@
1
- {"version":3,"file":"TimeMachine.js","sources":["../../../TimeMachine/TimeMachine.tsx"],"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 React, { useState, useCallback, useRef, useEffect } from 'react';\nimport type { Version } from './types';\nimport { ReadModelView } from './ReadModelView';\nimport { EventsView } from './EventsView';\nimport './TimeMachine.css';\n\nenum ViewModes {\n ReadModel = 'ReadModel',\n Events = 'Events',\n}\n\ninterface TimeMachineProps {\n versions: Version[];\n currentVersionIndex?: number;\n onVersionChange?: (index: number) => void;\n /** Scroll sensitivity - higher values require more scrolling to change versions */\n scrollSensitivity?: number;\n}\n\nexport const TimeMachine: React.FC<TimeMachineProps> = ({\n versions,\n currentVersionIndex = 0,\n onVersionChange,\n scrollSensitivity = 50,\n}) => {\n const [selectedIndex, setSelectedIndex] = useState(currentVersionIndex);\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null);\n const [isHoveringCard, setIsHoveringCard] = useState(false);\n const [viewMode, setViewMode] = useState<ViewModes>(ViewModes.ReadModel);\n const containerRef = useRef<HTMLDivElement>(null);\n const scrollAccumulatorRef = useRef(0);\n\n const handleVersionSelect = useCallback((index: number) => {\n setSelectedIndex(index);\n onVersionChange?.(index);\n }, [onVersionChange]);\n\n const handleTimelineHover = useCallback((index: number | null) => {\n setHoveredIndex(index);\n }, []);\n\n // Handle trackpad two-finger scroll gesture\n useEffect(() => {\n if (viewMode !== ViewModes.ReadModel) {\n return;\n }\n\n const container = containerRef.current;\n if (!container) return;\n\n const handleWheel = (e: WheelEvent) => {\n // Only handle navigation when not hovering over a card\n if (isHoveringCard) {\n return; // Allow normal scrolling within cards\n }\n\n // Prevent default scrolling behavior\n e.preventDefault();\n\n // Use deltaX for horizontal scroll, fallback to deltaY for vertical\n // Most trackpads send horizontal delta for two-finger swipe\n const delta = Math.abs(e.deltaX) > Math.abs(e.deltaY) ? e.deltaX : e.deltaY;\n\n // Accumulate scroll delta\n scrollAccumulatorRef.current += delta;\n\n // Check if we've accumulated enough scroll to change version\n if (Math.abs(scrollAccumulatorRef.current) >= scrollSensitivity) {\n const direction = scrollAccumulatorRef.current > 0 ? 1 : -1;\n const newIndex = Math.max(0, Math.min(versions.length - 1, selectedIndex + direction));\n\n if (newIndex !== selectedIndex) {\n setSelectedIndex(newIndex);\n onVersionChange?.(newIndex);\n }\n\n // Reset accumulator after version change\n scrollAccumulatorRef.current = 0;\n }\n };\n\n container.addEventListener('wheel', handleWheel, { passive: false });\n\n return () => {\n container.removeEventListener('wheel', handleWheel);\n };\n }, [versions.length, selectedIndex, onVersionChange, scrollSensitivity, isHoveringCard, viewMode]);\n\n // Calculate the display index - either hovered or selected\n // (not used in this component; ReadModelView computes its own display index)\n void hoveredIndex;\n void selectedIndex;\n\n // Get all events from all versions\n const allEvents = versions.flatMap(version => version.events || []);\n\n return (\n <div className=\"time-machine\" ref={containerRef}>\n {/* View Switcher */}\n <div className=\"view-switcher\">\n <button\n className={`view-button ${viewMode === ViewModes.ReadModel ? 'active' : ''}`}\n onClick={() => setViewMode(ViewModes.ReadModel)}\n aria-label=\"Read Model View\"\n title=\"Read Model View\"\n >\n <i className=\"pi pi-box\" />\n </button>\n <button\n className={`view-button ${viewMode === ViewModes.Events ? 'active' : ''}`}\n onClick={() => setViewMode(ViewModes.Events)}\n aria-label=\"Events View\"\n title=\"Events View\"\n >\n <i className=\"pi pi-list\" />\n </button>\n </div>\n\n {/* Render the appropriate view */}\n {viewMode === ViewModes.ReadModel ? (\n <ReadModelView\n versions={versions}\n selectedIndex={selectedIndex}\n hoveredIndex={hoveredIndex}\n onVersionSelect={handleVersionSelect}\n onHoveringCardChange={setIsHoveringCard}\n />\n ) : (\n <EventsView events={allEvents} />\n )}\n\n {/* Timeline - only show in ReadModel view */}\n {viewMode === ViewModes.ReadModel && (\n <Timeline\n versions={versions}\n selectedIndex={selectedIndex}\n hoveredIndex={hoveredIndex}\n onSelect={handleVersionSelect}\n onHover={handleTimelineHover}\n />\n )}\n\n {/* Navigation arrows - only show in ReadModel view */}\n {viewMode === ViewModes.ReadModel && (\n <div className=\"navigation-controls\">\n <button\n className=\"nav-button prev\"\n disabled={selectedIndex === 0}\n onClick={() => handleVersionSelect(Math.max(0, selectedIndex - 1))}\n aria-label=\"Previous version\"\n >\n ‹\n </button>\n <button\n className=\"nav-button next\"\n disabled={selectedIndex === versions.length - 1}\n onClick={() => handleVersionSelect(Math.min(versions.length - 1, selectedIndex + 1))}\n aria-label=\"Next version\"\n >\n ›\n </button>\n </div>\n )}\n </div>\n );\n};\n\ninterface TimelineProps {\n versions: Version[];\n selectedIndex: number;\n hoveredIndex: number | null;\n onSelect: (index: number) => void;\n onHover: (index: number | null) => void;\n}\n\nconst Timeline: React.FC<TimelineProps> = ({\n versions,\n selectedIndex,\n hoveredIndex,\n onSelect,\n onHover,\n}) => {\n const getMagnification = (index: number, hoverIdx: number | null): number => {\n if (hoverIdx === null) return 1;\n const distance = Math.abs(index - hoverIdx);\n // Fish-eye effect: items close to hover get magnified\n if (distance === 0) return 2.0;\n if (distance === 1) return 1.6;\n if (distance === 2) return 1.3;\n if (distance === 3) return 1.1;\n return 1;\n };\n\n const formatDate = (date: Date): string => {\n return date.toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n });\n };\n\n const formatTime = (date: Date): string => {\n return date.toLocaleTimeString('en-US', {\n hour: 'numeric',\n minute: '2-digit',\n hour12: true,\n });\n };\n\n return (\n <div\n className=\"timeline\"\n onMouseLeave={() => onHover(null)}\n >\n <div className=\"timeline-track\">\n {versions.map((version, index) => {\n const magnification = getMagnification(index, hoveredIndex);\n const isSelected = index === selectedIndex;\n const isHovered = index === hoveredIndex;\n\n return (\n <div\n key={version.id}\n className={`timeline-entry ${isSelected ? 'selected' : ''} ${isHovered ? 'hovered' : ''}`}\n style={{\n '--magnification': magnification,\n } as React.CSSProperties}\n onMouseEnter={() => onHover(index)}\n onClick={() => onSelect(index)}\n >\n <div className=\"timeline-tick\"></div>\n <div className=\"timeline-label\">\n <span className=\"timeline-date\">{formatDate(version.timestamp)}</span>\n <span className=\"timeline-time\">{formatTime(version.timestamp)}</span>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default TimeMachine;\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"TimeMachine.js","sources":["../../../TimeMachine/TimeMachine.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -2,4 +2,7 @@ export { TimeMachine } from './TimeMachine.js';
2
2
  export { ReadModelView } from './ReadModelView.js';
3
3
  export { EventsView } from './EventsView.js';
4
4
  export { Properties } from './Properties.js';
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.
5
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../TimeMachine/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAAA;AACA"}
@@ -1,3 +1,8 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ /**
4
+ * Converts a camelCase property key to a human-readable Title Case label with spaces.
5
+ */
1
6
  function formatPropertyName(key) {
2
7
  return key
3
8
  .replace(/([A-Z])/g, ' $1')
@@ -1 +1 @@
1
- {"version":3,"file":"propertiesHelpers.js","sources":["../../../TimeMachine/propertiesHelpers.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\n/**\n * Converts a camelCase property key to a human-readable Title Case label with spaces.\n */\nexport function formatPropertyName(key: string): string {\n return key\n .replace(/([A-Z])/g, ' $1')\n .replace(/^./, str => str.toUpperCase())\n .trim();\n}\n"],"names":[],"mappings":"AAMM,SAAU,kBAAkB,CAAC,GAAW,EAAA;AAC1C,IAAA,OAAO;AACF,SAAA,OAAO,CAAC,UAAU,EAAE,KAAK;SACzB,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE;AACtC,SAAA,IAAI,EAAE;AACf;;;;"}
1
+ {"version":3,"file":"propertiesHelpers.js","sources":["../../../TimeMachine/propertiesHelpers.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AAEA;;AAEG;AACG,SAAU,kBAAkB,CAAC,GAAW,EAAA;AAC1C,IAAA,OAAO;AACF,SAAA,OAAO,CAAC,UAAU,EAAE,KAAK;SACzB,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE;AACtC,SAAA,IAAI,EAAE;AACf;;;;"}
@@ -31,6 +31,14 @@
31
31
  color: var(--primary-color-text);
32
32
  }
33
33
 
34
+ .toolbar-button--draggable {
35
+ cursor: grab;
36
+ }
37
+
38
+ .toolbar-button--draggable:active {
39
+ cursor: grabbing;
40
+ }
41
+
34
42
  .toolbar-button__text {
35
43
  font-size: 0.875rem;
36
44
  font-weight: 600;
@@ -3,6 +3,8 @@ import './Toolbar.css';
3
3
  export interface ToolbarProps {
4
4
  children: ReactNode;
5
5
  orientation?: 'vertical' | 'horizontal';
6
+ draggable?: boolean;
7
+ onItemDragStart?: (data: unknown, event: React.DragEvent) => void;
6
8
  }
7
- export declare const Toolbar: ({ children, orientation }: ToolbarProps) => import("react/jsx-runtime").JSX.Element;
9
+ export declare const Toolbar: ({ children, orientation, draggable, onItemDragStart }: ToolbarProps) => import("react/jsx-runtime").JSX.Element;
8
10
  //# sourceMappingURL=Toolbar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../../Toolbar/Toolbar.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,eAAe,CAAC;AAGvB,MAAM,WAAW,YAAY;IAEzB,QAAQ,EAAE,SAAS,CAAC;IAEpB,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;CAC3C;AAOD,eAAO,MAAM,OAAO,GAAI,2BAAwC,YAAY,4CAQ3E,CAAC"}
1
+ {"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../../Toolbar/Toolbar.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,eAAe,CAAC;AAGvB,MAAM,WAAW,YAAY;IAEzB,QAAQ,EAAE,SAAS,CAAC;IAEpB,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IAKxC,SAAS,CAAC,EAAE,OAAO,CAAC;IAMpB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;CACrE;AAOD,eAAO,MAAM,OAAO,GAAI,uDAA4E,YAAY,4CAU/G,CAAC"}
@@ -1,7 +1,13 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
+ import { ToolbarDragContext } from './ToolbarDragContext.js';
2
3
  import './Toolbar.css';
3
4
 
4
- const Toolbar = ({ children, orientation = 'vertical' }) => (jsx("div", { className: `toolbar inline-flex ${orientation === 'horizontal' ? 'flex-row' : 'flex-col'} items-center gap-1 p-2 rounded-2xl`, children: children }));
5
+ /**
6
+ * A toolbar container that groups icon buttons with a rounded border,
7
+ * mimicking the style of tools panels found in canvas-based applications.
8
+ * Supports both vertical (default) and horizontal orientations.
9
+ */
10
+ const Toolbar = ({ children, orientation = 'vertical', draggable = false, onItemDragStart }) => (jsx(ToolbarDragContext.Provider, { value: { draggable, onItemDragStart }, children: jsx("div", { className: `toolbar inline-flex ${orientation === 'horizontal' ? 'flex-row' : 'flex-col'} items-center gap-1 p-2 rounded-2xl`, children: children }) }));
5
11
 
6
12
  export { Toolbar };
7
13
  //# sourceMappingURL=Toolbar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.js","sources":["../../../Toolbar/Toolbar.tsx"],"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 { ReactNode } from 'react';\nimport './Toolbar.css';\n\n/** Props for the {@link Toolbar} component. */\nexport interface ToolbarProps {\n /** The {@link ToolbarButton} elements to render inside this toolbar group. */\n children: ReactNode;\n /** Layout direction of the toolbar (default: 'vertical'). */\n orientation?: 'vertical' | 'horizontal';\n}\n\n/**\n * A toolbar container that groups icon buttons with a rounded border,\n * mimicking the style of tools panels found in canvas-based applications.\n * Supports both vertical (default) and horizontal orientations.\n */\nexport const Toolbar = ({ children, orientation = 'vertical' }: ToolbarProps) => (\n <div\n className={`toolbar inline-flex ${\n orientation === 'horizontal' ? 'flex-row' : 'flex-col'\n } items-center gap-1 p-2 rounded-2xl`}\n >\n {children}\n </div>\n);\n"],"names":["_jsx"],"mappings":";;;AAmBO,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAE,WAAW,GAAG,UAAU,EAAgB,MACxEA,GAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAE,CAAA,oBAAA,EACP,WAAW,KAAK,YAAY,GAAG,UAAU,GAAG,UAChD,CAAA,mCAAA,CAAqC,EAAA,QAAA,EAEpC,QAAQ,EAAA,CACP;;;;"}
1
+ {"version":3,"file":"Toolbar.js","sources":["../../../Toolbar/Toolbar.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;AA0BA;;;;AAIG;AACI,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAE,WAAW,GAAG,UAAU,EAAE,SAAS,GAAG,KAAK,EAAE,eAAe,EAAgB,MAC5GA,GAAA,CAAC,kBAAkB,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,EAAA,QAAA,EAC9DA,GAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAE,CAAA,oBAAA,EACP,WAAW,KAAK,YAAY,GAAG,UAAU,GAAG,UAChD,CAAA,mCAAA,CAAqC,EAAA,QAAA,EAEpC,QAAQ,EAAA,CACP,EAAA,CACoB;;;;"}
@@ -10,4 +10,5 @@ export declare const WithContexts: Story;
10
10
  export declare const WithSeparators: Story;
11
11
  export declare const ZoomBar: Story;
12
12
  export declare const WithFanOut: Story;
13
+ export declare const DragAndDrop: Story;
13
14
  //# sourceMappingURL=Toolbar.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.stories.d.ts","sourceRoot":"","sources":["../../../Toolbar/Toolbar.stories.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,OAAO,CAM9B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC;AAGtC,eAAO,MAAM,OAAO,EAAE,KAUrB,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,KAgB5B,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,KAqC9B,CAAC;AASF,eAAO,MAAM,YAAY,EAAE,KAoD1B,CAAC;AASF,eAAO,MAAM,cAAc,EAAE,KAW5B,CAAC;AAMF,eAAO,MAAM,OAAO,EAAE,KAwBrB,CAAC;AAQF,eAAO,MAAM,UAAU,EAAE,KA+CxB,CAAC"}
1
+ {"version":3,"file":"Toolbar.stories.d.ts","sourceRoot":"","sources":["../../../Toolbar/Toolbar.stories.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,OAAO,CAM9B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC;AAGtC,eAAO,MAAM,OAAO,EAAE,KAUrB,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,KAgB5B,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,KAqC9B,CAAC;AASF,eAAO,MAAM,YAAY,EAAE,KAoD1B,CAAC;AASF,eAAO,MAAM,cAAc,EAAE,KAW5B,CAAC;AAMF,eAAO,MAAM,OAAO,EAAE,KAwBrB,CAAC;AAQF,eAAO,MAAM,UAAU,EAAE,KA+CxB,CAAC;AAWF,eAAO,MAAM,WAAW,EAAE,KAgDzB,CAAC"}
@@ -66,4 +66,27 @@ export const WithFanOut = {
66
66
  return _jsx(WithFanOutDemo, {});
67
67
  },
68
68
  };
69
+ export const DragAndDrop = {
70
+ render: () => {
71
+ const DragAndDropDemo = () => {
72
+ const [dropped, setDropped] = useState(null);
73
+ const [isDragOver, setIsDragOver] = useState(false);
74
+ return (_jsxs("div", { className: 'flex gap-6 items-start', children: [_jsxs(Toolbar, { draggable: true, onItemDragStart: (data) => setDropped(`Dragging: ${data.tool}`), children: [_jsx(ToolbarButton, { icon: 'pi pi-pencil', tooltip: 'Pencil', data: { tool: 'pencil' } }), _jsx(ToolbarButton, { icon: 'pi pi-stop', tooltip: 'Rectangle', data: { tool: 'rectangle' } }), _jsx(ToolbarButton, { icon: 'pi pi-circle', tooltip: 'Circle', data: { tool: 'circle' } }), _jsx(ToolbarButton, { icon: 'pi pi-minus', tooltip: 'Line', data: { tool: 'line' } })] }), _jsx("div", { onDragOver: (event) => { event.preventDefault?.(); setIsDragOver(true); }, onDragLeave: () => setIsDragOver(false), onDrop: (event) => {
75
+ event.preventDefault?.();
76
+ setIsDragOver(false);
77
+ const raw = event.dataTransfer.getData('application/json');
78
+ const data = JSON.parse(raw);
79
+ setDropped(data ? `Dropped: ${data.tool}` : 'Dropped: (no data)');
80
+ }, className: 'flex items-center justify-center rounded-xl border-2 border-dashed transition-colors', style: {
81
+ width: 240,
82
+ height: 180,
83
+ borderColor: isDragOver ? 'var(--primary-color)' : 'var(--surface-border)',
84
+ background: isDragOver ? 'var(--highlight-bg)' : 'var(--surface-card)',
85
+ color: 'var(--text-color-secondary)',
86
+ fontSize: '0.875rem',
87
+ }, children: dropped ?? 'Drop a tool here' })] }));
88
+ };
89
+ return _jsx(DragAndDropDemo, {});
90
+ },
91
+ };
69
92
  //# sourceMappingURL=Toolbar.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.stories.js","sourceRoot":"","sources":["../../../Toolbar/Toolbar.stories.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Toolbar.stories.js","sourceRoot":"","sources":["../../../Toolbar/Toolbar.stories.tsx"],"names":[],"mappings":"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"}
@@ -6,6 +6,9 @@ export interface ToolbarButtonProps {
6
6
  active?: boolean;
7
7
  onClick?: () => void;
8
8
  tooltipPosition?: TooltipPosition;
9
+ draggable?: boolean;
10
+ data?: unknown;
11
+ onDragStart?: (data: unknown, event: React.DragEvent<HTMLButtonElement>) => void;
9
12
  }
10
- export declare const ToolbarButton: ({ icon, text, tooltip, active, onClick, tooltipPosition }: ToolbarButtonProps) => import("react/jsx-runtime").JSX.Element;
13
+ export declare const ToolbarButton: ({ icon, text, tooltip, active, onClick, tooltipPosition, draggable, data, onDragStart }: ToolbarButtonProps) => import("react/jsx-runtime").JSX.Element;
11
14
  //# sourceMappingURL=ToolbarButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarButton.d.ts","sourceRoot":"","sources":["../../../Toolbar/ToolbarButton.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,MAAM,WAAW,kBAAkB;IAE/B,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,OAAO,EAAE,MAAM,CAAC;IAGhB,MAAM,CAAC,EAAE,OAAO,CAAC;IAGjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAGrB,eAAe,CAAC,EAAE,eAAe,CAAC;CACrC;AAMD,eAAO,MAAM,aAAa,GAAI,2DAA6E,kBAAkB,4CAuB5H,CAAC"}
1
+ {"version":3,"file":"ToolbarButton.d.ts","sourceRoot":"","sources":["../../../Toolbar/ToolbarButton.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzD,MAAM,WAAW,kBAAkB;IAE/B,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,OAAO,EAAE,MAAM,CAAC;IAGhB,MAAM,CAAC,EAAE,OAAO,CAAC;IAGjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAGrB,eAAe,CAAC,EAAE,eAAe,CAAC;IAMlC,SAAS,CAAC,EAAE,OAAO,CAAC;IAOpB,IAAI,CAAC,EAAE,OAAO,CAAC;IAMf,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;CACpF;AAMD,eAAO,MAAM,aAAa,GAAI,yFAA2G,kBAAkB,4CAoC1J,CAAC"}
@@ -1,8 +1,22 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { Tooltip } from '../Common/Tooltip.js';
3
+ import { useToolbarDragContext } from './ToolbarDragContext.js';
3
4
 
4
- const ToolbarButton = ({ icon, text, tooltip, active = false, onClick, tooltipPosition = 'right' }) => {
5
+ /**
6
+ * An icon button with a tooltip, intended to be placed inside a {@link Toolbar}.
7
+ * Uses the shared {@link Tooltip} component for consistent hover labels.
8
+ */
9
+ const ToolbarButton = ({ icon, text, tooltip, active = false, onClick, tooltipPosition = 'right', draggable, data, onDragStart }) => {
10
+ const dragContext = useToolbarDragContext();
11
+ const isDraggable = draggable ?? dragContext.draggable;
12
+ const handleDragStart = (event) => {
13
+ event.dataTransfer.setData('application/json', JSON.stringify(data ?? null));
14
+ event.dataTransfer.effectAllowed = 'copy';
15
+ onDragStart?.(data, event);
16
+ dragContext.onItemDragStart?.(data, event);
17
+ };
5
18
  const activeClass = active ? 'toolbar-button--active' : '';
19
+ const draggableClass = isDraggable ? 'toolbar-button--draggable' : '';
6
20
  const hasText = typeof text === 'string' && text.length > 0;
7
21
  const hasIcon = typeof icon === 'string' && icon.length > 0;
8
22
  const buttonContent = hasText
@@ -11,7 +25,7 @@ const ToolbarButton = ({ icon, text, tooltip, active = false, onClick, tooltipPo
11
25
  ? jsx("i", { className: `${icon} text-lg` })
12
26
  : null;
13
27
  const buttonSizeClass = hasText ? 'h-10 px-3 min-w-[4rem]' : 'w-10 h-10';
14
- return (jsx(Tooltip, { content: tooltip, position: tooltipPosition, children: jsx("button", { type: 'button', "aria-label": tooltip, onClick: onClick, className: `toolbar-button ${buttonSizeClass} flex items-center justify-center rounded-lg cursor-pointer ${activeClass}`, children: buttonContent }) }));
28
+ return (jsx(Tooltip, { content: tooltip, position: tooltipPosition, children: jsx("button", { type: 'button', "aria-label": tooltip, onClick: onClick, draggable: isDraggable, onDragStart: isDraggable ? handleDragStart : undefined, className: `toolbar-button ${buttonSizeClass} flex items-center justify-center rounded-lg cursor-pointer ${activeClass} ${draggableClass}`, children: buttonContent }) }));
15
29
  };
16
30
 
17
31
  export { ToolbarButton };
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarButton.js","sources":["../../../Toolbar/ToolbarButton.tsx"],"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 { Tooltip } from '../Common/Tooltip';\nimport type { TooltipPosition } from '../Common/Tooltip';\n\n/** Props for the {@link ToolbarButton} component. */\nexport interface ToolbarButtonProps {\n /** The PrimeIcons CSS class to use as the icon (e.g. 'pi pi-home'). */\n icon?: string;\n\n /** Optional text to render inside the button (e.g. '120%'). */\n text?: string;\n\n /** Tooltip text shown when the user hovers over the button. */\n tooltip: string;\n\n /** Whether the button is currently in the active/selected state. */\n active?: boolean;\n\n /** Callback invoked when the button is clicked. */\n onClick?: () => void;\n\n /** Position of the tooltip relative to the button (default: 'right'). */\n tooltipPosition?: TooltipPosition;\n}\n\n/**\n * An icon button with a tooltip, intended to be placed inside a {@link Toolbar}.\n * Uses the shared {@link Tooltip} component for consistent hover labels.\n */\nexport const ToolbarButton = ({ icon, text, tooltip, active = false, onClick, tooltipPosition = 'right' }: ToolbarButtonProps) => {\n const activeClass = active ? 'toolbar-button--active' : '';\n const hasText = typeof text === 'string' && text.length > 0;\n const hasIcon = typeof icon === 'string' && icon.length > 0;\n const buttonContent = hasText\n ? <span className='toolbar-button__text'>{text}</span>\n : hasIcon\n ? <i className={`${icon} text-lg`} />\n : null;\n const buttonSizeClass = hasText ? 'h-10 px-3 min-w-[4rem]' : 'w-10 h-10';\n\n return (\n <Tooltip content={tooltip} position={tooltipPosition}>\n <button\n type='button'\n aria-label={tooltip}\n onClick={onClick}\n className={`toolbar-button ${buttonSizeClass} flex items-center justify-center rounded-lg cursor-pointer ${activeClass}`}\n >\n {buttonContent}\n </button>\n </Tooltip>\n );\n};\n"],"names":["_jsx"],"mappings":";;;MA+Ba,aAAa,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,EAAsB,KAAI;IAC7H,MAAM,WAAW,GAAG,MAAM,GAAG,wBAAwB,GAAG,EAAE;AAC1D,IAAA,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;AAC3D,IAAA,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;IAC3D,MAAM,aAAa,GAAG;AAClB,UAAEA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,sBAAsB,EAAA,QAAA,EAAE,IAAI,EAAA;AAC9C,UAAE;AACE,cAAEA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,CAAA,EAAG,IAAI,UAAU,EAAA;cAC/B,IAAI;IACd,MAAM,eAAe,GAAG,OAAO,GAAG,wBAAwB,GAAG,WAAW;AAExE,IAAA,QACIA,GAAA,CAAC,OAAO,EAAA,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAA,QAAA,EAChDA,GAAA,CAAA,QAAA,EAAA,EACI,IAAI,EAAC,QAAQ,EAAA,YAAA,EACD,OAAO,EACnB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,CAAA,eAAA,EAAkB,eAAe,CAAA,4DAAA,EAA+D,WAAW,EAAE,EAAA,QAAA,EAEvH,aAAa,EAAA,CACT,EAAA,CACH;AAElB;;;;"}
1
+ {"version":3,"file":"ToolbarButton.js","sources":["../../../Toolbar/ToolbarButton.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;AA+CA;;;AAGG;AACI,MAAM,aAAa,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAsB,KAAI;AAC3J,IAAA,MAAM,WAAW,GAAG,qBAAqB,EAAE;AAC3C,IAAA,MAAM,WAAW,GAAG,SAAS,IAAI,WAAW,CAAC,SAAS;AAEtD,IAAA,MAAM,eAAe,GAAG,CAAC,KAAyC,KAAI;AAClE,QAAA,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAC5E,QAAA,KAAK,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM;AACzC,QAAA,WAAW,GAAG,IAAI,EAAE,KAAK,CAAC;QAC1B,WAAW,CAAC,eAAe,GAAG,IAAI,EAAE,KAAK,CAAC;AAC9C,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,GAAG,wBAAwB,GAAG,EAAE;IAC1D,MAAM,cAAc,GAAG,WAAW,GAAG,2BAA2B,GAAG,EAAE;AACrE,IAAA,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;AAC3D,IAAA,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;IAC3D,MAAM,aAAa,GAAG;AAClB,UAAEA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,sBAAsB,EAAA,QAAA,EAAE,IAAI,EAAA;AAC9C,UAAE;AACE,cAAEA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,CAAA,EAAG,IAAI,UAAU,EAAA;cAC/B,IAAI;IACd,MAAM,eAAe,GAAG,OAAO,GAAG,wBAAwB,GAAG,WAAW;IAExE,QACIA,GAAA,CAAC,OAAO,EAAA,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAA,QAAA,EAChDA,gBACI,IAAI,EAAC,QAAQ,EAAA,YAAA,EACD,OAAO,EACnB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,WAAW,EACtB,WAAW,EAAE,WAAW,GAAG,eAAe,GAAG,SAAS,EACtD,SAAS,EAAE,CAAA,eAAA,EAAkB,eAAe,CAAA,4DAAA,EAA+D,WAAW,CAAA,CAAA,EAAI,cAAc,CAAA,CAAE,EAAA,QAAA,EAEzI,aAAa,EAAA,CACT,EAAA,CACH;AAElB;;;;"}
@@ -1,3 +1,11 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ /**
4
+ * Defines a named context (a set of toolbar items) within a {@link ToolbarSection}.
5
+ * The section renders only the active context at a time and animates between them.
6
+ *
7
+ * This is a data-only component; its rendering is fully managed by {@link ToolbarSection}.
8
+ */
1
9
  const ToolbarContext = () => null;
2
10
 
3
11
  export { ToolbarContext };
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarContext.js","sources":["../../../Toolbar/ToolbarContext.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport type { FC, ReactNode } from 'react';\n\n/** Props for the {@link ToolbarContext} component. */\nexport interface ToolbarContextProps {\n /** Unique name identifying this context within a {@link ToolbarSection}. */\n name: string;\n /** The toolbar items to render when this context is active. */\n children: ReactNode;\n}\n\n/**\n * Defines a named context (a set of toolbar items) within a {@link ToolbarSection}.\n * The section renders only the active context at a time and animates between them.\n *\n * This is a data-only component; its rendering is fully managed by {@link ToolbarSection}.\n */\nexport const ToolbarContext: FC<ToolbarContextProps> = () => null;\n"],"names":[],"mappings":"MAmBa,cAAc,GAA4B,MAAM;;;;"}
1
+ {"version":3,"file":"ToolbarContext.js","sources":["../../../Toolbar/ToolbarContext.tsx"],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AAYA;;;;;AAKG;MACU,cAAc,GAA4B,MAAM;;;;"}
@@ -0,0 +1,7 @@
1
+ export interface ToolbarDragContextValue {
2
+ draggable: boolean;
3
+ onItemDragStart?: (data: unknown, event: React.DragEvent) => void;
4
+ }
5
+ export declare const ToolbarDragContext: import("react").Context<ToolbarDragContextValue>;
6
+ export declare const useToolbarDragContext: () => ToolbarDragContextValue;
7
+ //# sourceMappingURL=ToolbarDragContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolbarDragContext.d.ts","sourceRoot":"","sources":["../../../Toolbar/ToolbarDragContext.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,uBAAuB;IAEpC,SAAS,EAAE,OAAO,CAAC;IAKnB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;CACrE;AAOD,eAAO,MAAM,kBAAkB,kDAE7B,CAAC;AAOH,eAAO,MAAM,qBAAqB,QAAO,uBAAyD,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { createContext, useContext } from 'react';
2
+
3
+ // Copyright (c) Cratis. All rights reserved.
4
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
5
+ /**
6
+ * React context that propagates drag-and-drop settings from a {@link Toolbar}
7
+ * down to its child {@link ToolbarButton} components without requiring explicit prop
8
+ * threading through intermediate wrappers such as {@link ToolbarSection}.
9
+ */
10
+ const ToolbarDragContext = createContext({
11
+ draggable: false,
12
+ });
13
+ /**
14
+ * Returns the nearest {@link ToolbarDragContext} value.
15
+ * When no provider is present (i.e. the button is used outside a Toolbar),
16
+ * the default value with {@link ToolbarDragContextValue.draggable} set to `false` is returned.
17
+ */
18
+ const useToolbarDragContext = () => useContext(ToolbarDragContext);
19
+
20
+ export { ToolbarDragContext, useToolbarDragContext };
21
+ //# sourceMappingURL=ToolbarDragContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolbarDragContext.js","sources":["../../../Toolbar/ToolbarDragContext.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;AACA;AAeA;;;;AAIG;AACI,MAAM,kBAAkB,GAAG,aAAa,CAA0B;AACrE,IAAA,SAAS,EAAE,KAAK;AACnB,CAAA;AAED;;;;AAIG;AACI,MAAM,qBAAqB,GAAG,MAA+B,UAAU,CAAC,kBAAkB;;;;"}
@@ -2,12 +2,23 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useState, useRef, useEffect } from 'react';
3
3
  import { Tooltip } from '../Common/Tooltip.js';
4
4
 
5
+ /**
6
+ * A toolbar button that fans out a horizontal panel of sub-tool buttons when clicked.
7
+ *
8
+ * Place this inside a vertical {@link Toolbar}. When the button is clicked, a pill-shaped
9
+ * panel slides out to the side (right by default) containing the provided children.
10
+ * The panel animates in/out using a clip-path reveal transition.
11
+ *
12
+ * - Clicking the button again closes the panel
13
+ * - Clicking anywhere outside the panel also closes it
14
+ */
5
15
  const ToolbarFanOutItem = ({ icon, tooltip, tooltipPosition = 'right', fanOutDirection = 'right', children, }) => {
6
16
  const [isExpanded, setIsExpanded] = useState(false);
7
17
  const containerRef = useRef(null);
8
18
  const handleToggle = () => {
9
19
  setIsExpanded(!isExpanded);
10
20
  };
21
+ // Close the fan-out when clicking outside
11
22
  useEffect(() => {
12
23
  if (!isExpanded)
13
24
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarFanOutItem.js","sources":["../../../Toolbar/ToolbarFanOutItem.tsx"],"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 { ReactNode, useEffect, useRef, useState } from 'react';\nimport { Tooltip } from '../Common/Tooltip';\nimport type { TooltipPosition } from '../Common/Tooltip';\n\n/** Props for the {@link ToolbarFanOutItem} component. */\nexport interface ToolbarFanOutItemProps {\n /** The PrimeIcons CSS class to use as the trigger icon (e.g. 'pi pi-home'). */\n icon: string;\n\n /** Tooltip text shown when hovering over the trigger button. */\n tooltip: string;\n\n /** Position of the tooltip relative to the trigger button (default: 'right'). */\n tooltipPosition?: TooltipPosition;\n\n /** Direction the panel fans out from the trigger button (default: 'right'). */\n fanOutDirection?: 'right' | 'left';\n\n /** The toolbar items to render inside the fan-out panel. */\n children: ReactNode;\n}\n\n/**\n * A toolbar button that fans out a horizontal panel of sub-tool buttons when clicked.\n *\n * Place this inside a vertical {@link Toolbar}. When the button is clicked, a pill-shaped\n * panel slides out to the side (right by default) containing the provided children.\n * The panel animates in/out using a clip-path reveal transition.\n *\n * - Clicking the button again closes the panel\n * - Clicking anywhere outside the panel also closes it\n */\nexport const ToolbarFanOutItem = ({\n icon,\n tooltip,\n tooltipPosition = 'right',\n fanOutDirection = 'right',\n children,\n}: ToolbarFanOutItemProps) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const handleToggle = () => {\n setIsExpanded(!isExpanded);\n };\n\n // Close the fan-out when clicking outside\n useEffect(() => {\n if (!isExpanded) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsExpanded(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isExpanded]);\n\n const activeClass = isExpanded ? 'toolbar-button--active' : '';\n const panelVisibleClass = isExpanded ? 'toolbar-fanout-panel--visible' : '';\n const directionClass = `toolbar-fanout-panel--${fanOutDirection}`;\n\n return (\n <div className='toolbar-fanout-item' ref={containerRef}>\n <Tooltip content={tooltip} position={tooltipPosition}>\n <button\n type='button'\n aria-label={tooltip}\n aria-expanded={isExpanded}\n onClick={handleToggle}\n className={`toolbar-button w-10 h-10 flex items-center justify-center rounded-lg cursor-pointer ${activeClass}`}\n >\n <i className={`${icon} text-lg`} />\n </button>\n </Tooltip>\n <div className={`toolbar-fanout-panel ${directionClass} ${panelVisibleClass}`}>\n {children}\n </div>\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":";;;;MAmCa,iBAAiB,GAAG,CAAC,EAC9B,IAAI,EACJ,OAAO,EACP,eAAe,GAAG,OAAO,EACzB,eAAe,GAAG,OAAO,EACzB,QAAQ,GACa,KAAI;IACzB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AACnD,IAAA,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC;IAEjD,MAAM,YAAY,GAAG,MAAK;AACtB,QAAA,aAAa,CAAC,CAAC,UAAU,CAAC;AAC9B,IAAA,CAAC;IAGD,SAAS,CAAC,MAAK;AACX,QAAA,IAAI,CAAC,UAAU;YAAE;AAEjB,QAAA,MAAM,kBAAkB,GAAG,CAAC,KAAiB,KAAI;AAC7C,YAAA,IAAI,YAAY,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;gBAC9E,aAAa,CAAC,KAAK,CAAC;YACxB;AACJ,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC1D,QAAA,OAAO,MAAK;AACR,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AACjE,QAAA,CAAC;AACL,IAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAEhB,MAAM,WAAW,GAAG,UAAU,GAAG,wBAAwB,GAAG,EAAE;IAC9D,MAAM,iBAAiB,GAAG,UAAU,GAAG,+BAA+B,GAAG,EAAE;AAC3E,IAAA,MAAM,cAAc,GAAG,CAAA,sBAAA,EAAyB,eAAe,EAAE;AAEjE,IAAA,QACIA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAC,GAAG,EAAE,YAAY,EAAA,QAAA,EAAA,CAClDC,GAAA,CAAC,OAAO,EAAA,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAA,QAAA,EAChDA,GAAA,CAAA,QAAA,EAAA,EACI,IAAI,EAAC,QAAQ,EAAA,YAAA,EACD,OAAO,EAAA,eAAA,EACJ,UAAU,EACzB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,CAAA,oFAAA,EAAuF,WAAW,CAAA,CAAE,EAAA,QAAA,EAE/GA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,CAAA,EAAG,IAAI,UAAU,EAAA,CAAI,EAAA,CAC9B,EAAA,CACH,EACVA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAA,qBAAA,EAAwB,cAAc,CAAA,CAAA,EAAI,iBAAiB,CAAA,CAAE,EAAA,QAAA,EACxE,QAAQ,EAAA,CACP,CAAA,EAAA,CACJ;AAEd;;;;"}
1
+ {"version":3,"file":"ToolbarFanOutItem.js","sources":["../../../Toolbar/ToolbarFanOutItem.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;;AAyBA;;;;;;;;;AASG;MACU,iBAAiB,GAAG,CAAC,EAC9B,IAAI,EACJ,OAAO,EACP,eAAe,GAAG,OAAO,EACzB,eAAe,GAAG,OAAO,EACzB,QAAQ,GACa,KAAI;IACzB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AACnD,IAAA,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC;IAEjD,MAAM,YAAY,GAAG,MAAK;AACtB,QAAA,aAAa,CAAC,CAAC,UAAU,CAAC;AAC9B,IAAA,CAAC;;IAGD,SAAS,CAAC,MAAK;AACX,QAAA,IAAI,CAAC,UAAU;YAAE;AAEjB,QAAA,MAAM,kBAAkB,GAAG,CAAC,KAAiB,KAAI;AAC7C,YAAA,IAAI,YAAY,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;gBAC9E,aAAa,CAAC,KAAK,CAAC;YACxB;AACJ,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC1D,QAAA,OAAO,MAAK;AACR,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AACjE,QAAA,CAAC;AACL,IAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAEhB,MAAM,WAAW,GAAG,UAAU,GAAG,wBAAwB,GAAG,EAAE;IAC9D,MAAM,iBAAiB,GAAG,UAAU,GAAG,+BAA+B,GAAG,EAAE;AAC3E,IAAA,MAAM,cAAc,GAAG,CAAA,sBAAA,EAAyB,eAAe,EAAE;AAEjE,IAAA,QACIA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAC,GAAG,EAAE,YAAY,EAAA,QAAA,EAAA,CAClDC,GAAA,CAAC,OAAO,EAAA,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAA,QAAA,EAChDA,GAAA,CAAA,QAAA,EAAA,EACI,IAAI,EAAC,QAAQ,EAAA,YAAA,EACD,OAAO,EAAA,eAAA,EACJ,UAAU,EACzB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,CAAA,oFAAA,EAAuF,WAAW,CAAA,CAAE,EAAA,QAAA,EAE/GA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,CAAA,EAAG,IAAI,UAAU,EAAA,CAAI,EAAA,CAC9B,EAAA,CACH,EACVA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAA,qBAAA,EAAwB,cAAc,CAAA,CAAA,EAAI,iBAAiB,CAAA,CAAE,EAAA,QAAA,EACxE,QAAQ,EAAA,CACP,CAAA,EAAA,CACJ;AAEd;;;;"}
@@ -1,21 +1,38 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { useRef, useState, Children, isValidElement, useCallback, useLayoutEffect, useEffect } from 'react';
3
3
 
4
+ /**
5
+ * A section within a {@link Toolbar} that supports multiple named contexts.
6
+ *
7
+ * When {@link activeContext} changes:
8
+ * - The current items fade out.
9
+ * - The section smoothly morphs to the dimensions required by the new context.
10
+ * - The new items fade in.
11
+ *
12
+ * Contexts are defined by placing {@link ToolbarContext} children inside this section.
13
+ * Switching contexts only affects this section; other sections are unaffected.
14
+ */
4
15
  const ToolbarSection = ({ activeContext, children, orientation = 'vertical' }) => {
5
16
  const contextRefs = useRef({});
6
17
  const [size, setSize] = useState(null);
7
18
  const contexts = Children.toArray(children).filter((child) => isValidElement(child) && typeof child.props.name === 'string');
19
+ // Default to the first context if activeContext is not provided
8
20
  const effectiveContext = activeContext ?? contexts[0]?.props?.name ?? '';
9
21
  const flexClass = orientation === 'horizontal' ? 'flex-row' : 'flex-col';
22
+ /** Measure the given context's natural dimensions and update the section size. */
10
23
  const measureAndSetSize = useCallback((contextName) => {
11
24
  const ref = contextRefs.current[contextName];
12
25
  if (ref) {
13
26
  setSize({ width: ref.offsetWidth, height: ref.offsetHeight });
14
27
  }
15
28
  }, []);
29
+ // Set the initial size synchronously before the first browser paint so there is no layout flash.
30
+ // Empty dependency array is intentional: ongoing context changes are handled by the useEffect below.
16
31
  useLayoutEffect(() => {
17
32
  measureAndSetSize(effectiveContext);
18
- }, []);
33
+ }, []); // run only on mount
34
+ // After a context switch, let the browser paint the opacity transition first,
35
+ // then update the explicit size so the CSS width/height transition kicks in.
19
36
  useEffect(() => {
20
37
  measureAndSetSize(effectiveContext);
21
38
  }, [effectiveContext, measureAndSetSize]);