@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.
- package/dist/cjs/CommandDialog/CommandDialog.js +11 -4
- package/dist/cjs/CommandDialog/CommandDialog.js.map +1 -1
- package/dist/cjs/CommandDialog/StepperCommandDialog.js +23 -4
- package/dist/cjs/CommandDialog/StepperCommandDialog.js.map +1 -1
- package/dist/cjs/CommandDialog/index.js +2 -1
- package/dist/cjs/CommandDialog/index.js.map +1 -1
- package/dist/cjs/CommandForm/fields/CalendarField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/CheckboxField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/ChipsField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/ColorPickerField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/DropdownField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/InputTextField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/MultiSelectField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/NumberField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/SliderField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/TextAreaField.js.map +1 -1
- package/dist/cjs/CommandForm/index.js +2 -34
- package/dist/cjs/CommandForm/index.js.map +1 -1
- package/dist/cjs/Common/ErrorBoundary.js.map +1 -1
- package/dist/cjs/Common/FormElement.js.map +1 -1
- package/dist/cjs/Common/Page.js.map +1 -1
- package/dist/cjs/Common/Tooltip.js +4 -0
- package/dist/cjs/Common/Tooltip.js.map +1 -1
- package/dist/cjs/Common/index.js +2 -1
- package/dist/cjs/Common/index.js.map +1 -1
- package/dist/cjs/DataPage/DataPage.js +6 -0
- package/dist/cjs/DataPage/DataPage.js.map +1 -1
- package/dist/cjs/DataPage/index.js +2 -1
- package/dist/cjs/DataPage/index.js.map +1 -1
- package/dist/cjs/DataTables/DataTableForObservableQuery.js +5 -0
- package/dist/cjs/DataTables/DataTableForObservableQuery.js.map +1 -1
- package/dist/cjs/DataTables/DataTableForQuery.js +5 -0
- package/dist/cjs/DataTables/DataTableForQuery.js.map +1 -1
- package/dist/cjs/DataTables/index.js +2 -1
- package/dist/cjs/DataTables/index.js.map +1 -1
- package/dist/cjs/Dialogs/BusyIndicatorDialog.js.map +1 -1
- package/dist/cjs/Dialogs/ConfirmationDialog.js.map +1 -1
- package/dist/cjs/Dialogs/Dialog.js +8 -2
- package/dist/cjs/Dialogs/Dialog.js.map +1 -1
- package/dist/cjs/Dialogs/index.js +2 -1
- package/dist/cjs/Dialogs/index.js.map +1 -1
- package/dist/cjs/Dropdown/Dropdown.js +1 -0
- package/dist/cjs/Dropdown/Dropdown.js.map +1 -1
- package/dist/cjs/Dropdown/index.js +2 -1
- package/dist/cjs/Dropdown/index.js.map +1 -1
- package/dist/cjs/ObjectContentEditor/ObjectContentEditor.js.map +1 -1
- package/dist/cjs/ObjectContentEditor/index.js +2 -1
- package/dist/cjs/ObjectContentEditor/index.js.map +1 -1
- package/dist/cjs/ObjectContentEditor/objectHelpers.js +6 -0
- package/dist/cjs/ObjectContentEditor/objectHelpers.js.map +1 -1
- package/dist/cjs/ObjectNavigationalBar/ObjectNavigationalBar.js.map +1 -1
- package/dist/cjs/ObjectNavigationalBar/breadcrumbHelpers.js +6 -0
- package/dist/cjs/ObjectNavigationalBar/breadcrumbHelpers.js.map +1 -1
- package/dist/cjs/ObjectNavigationalBar/index.js +2 -1
- package/dist/cjs/ObjectNavigationalBar/index.js.map +1 -1
- package/dist/cjs/PivotViewer/PivotViewer.js +28 -0
- package/dist/cjs/PivotViewer/PivotViewer.js.map +1 -1
- package/dist/cjs/PivotViewer/components/AxisLabels.js +4 -0
- package/dist/cjs/PivotViewer/components/AxisLabels.js.map +1 -1
- package/dist/cjs/PivotViewer/components/DetailPanel.js.map +1 -1
- package/dist/cjs/PivotViewer/components/FilterPanel.js +4 -0
- package/dist/cjs/PivotViewer/components/FilterPanel.js.map +1 -1
- package/dist/cjs/PivotViewer/components/FilterPanelContainer.js.map +1 -1
- package/dist/cjs/PivotViewer/components/PivotCanvas.js +138 -2
- package/dist/cjs/PivotViewer/components/PivotCanvas.js.map +1 -1
- package/dist/cjs/PivotViewer/components/PivotViewerMain.js +4 -0
- package/dist/cjs/PivotViewer/components/PivotViewerMain.js.map +1 -1
- package/dist/cjs/PivotViewer/components/RangeHistogramFilter.js.map +1 -1
- package/dist/cjs/PivotViewer/components/Spinner.js.map +1 -1
- package/dist/cjs/PivotViewer/components/Toolbar.js.map +1 -1
- package/dist/cjs/PivotViewer/components/ToolbarContainer.js.map +1 -1
- package/dist/cjs/PivotViewer/components/pivot/animation.js +8 -1
- package/dist/cjs/PivotViewer/components/pivot/animation.js.map +1 -1
- package/dist/cjs/PivotViewer/components/pivot/colorResolver.js +3 -1
- package/dist/cjs/PivotViewer/components/pivot/colorResolver.js.map +1 -1
- package/dist/cjs/PivotViewer/components/pivot/constants.js +8 -5
- package/dist/cjs/PivotViewer/components/pivot/constants.js.map +1 -1
- package/dist/cjs/PivotViewer/components/pivot/groups.js +15 -0
- package/dist/cjs/PivotViewer/components/pivot/groups.js.map +1 -1
- package/dist/cjs/PivotViewer/components/pivot/sprites.js +32 -13
- package/dist/cjs/PivotViewer/components/pivot/sprites.js.map +1 -1
- package/dist/cjs/PivotViewer/components/pivot/visibility.js +102 -3
- package/dist/cjs/PivotViewer/components/pivot/visibility.js.map +1 -1
- package/dist/cjs/PivotViewer/constants.js +2 -0
- package/dist/cjs/PivotViewer/constants.js.map +1 -1
- package/dist/cjs/PivotViewer/engine/layout.js +23 -0
- package/dist/cjs/PivotViewer/engine/layout.js.map +1 -1
- package/dist/cjs/PivotViewer/engine/store.js +29 -0
- package/dist/cjs/PivotViewer/engine/store.js.map +1 -1
- package/dist/cjs/PivotViewer/hooks/useAnimationModeTracking.js +8 -0
- package/dist/cjs/PivotViewer/hooks/useAnimationModeTracking.js.map +1 -1
- package/dist/cjs/PivotViewer/hooks/useCardSelection.js +10 -1
- package/dist/cjs/PivotViewer/hooks/useCardSelection.js.map +1 -1
- package/dist/cjs/PivotViewer/hooks/useContainerDimensions.js +11 -0
- package/dist/cjs/PivotViewer/hooks/useContainerDimensions.js.map +1 -1
- package/dist/cjs/PivotViewer/hooks/useCurrentFilters.js +6 -0
- package/dist/cjs/PivotViewer/hooks/useCurrentFilters.js.map +1 -1
- package/dist/cjs/PivotViewer/hooks/useDetailPanelClose.js +11 -1
- package/dist/cjs/PivotViewer/hooks/useDetailPanelClose.js.map +1 -1
- package/dist/cjs/PivotViewer/hooks/useDimensionState.js +2 -0
- package/dist/cjs/PivotViewer/hooks/useDimensionState.js.map +1 -1
- package/dist/cjs/PivotViewer/hooks/useFieldExtractors.js +2 -0
- package/dist/cjs/PivotViewer/hooks/useFieldExtractors.js.map +1 -1
- package/dist/cjs/PivotViewer/hooks/useFilterOptions.js +2 -0
- package/dist/cjs/PivotViewer/hooks/useFilterOptions.js.map +1 -1
- package/dist/cjs/PivotViewer/hooks/useFilterState.js +5 -0
- package/dist/cjs/PivotViewer/hooks/useFilterState.js.map +1 -1
- package/dist/cjs/PivotViewer/hooks/usePanning.js +14 -0
- package/dist/cjs/PivotViewer/hooks/usePanning.js.map +1 -1
- package/dist/cjs/PivotViewer/hooks/usePivotEngine.js +7 -0
- package/dist/cjs/PivotViewer/hooks/usePivotEngine.js.map +1 -1
- package/dist/cjs/PivotViewer/hooks/useScrollSync.js +6 -0
- package/dist/cjs/PivotViewer/hooks/useScrollSync.js.map +1 -1
- package/dist/cjs/PivotViewer/hooks/useViewModeScrollHandling.js +9 -0
- package/dist/cjs/PivotViewer/hooks/useViewModeScrollHandling.js.map +1 -1
- package/dist/cjs/PivotViewer/hooks/useWheelZoom.js +8 -2
- package/dist/cjs/PivotViewer/hooks/useWheelZoom.js.map +1 -1
- package/dist/cjs/PivotViewer/hooks/useZoomState.js +2 -0
- package/dist/cjs/PivotViewer/hooks/useZoomState.js.map +1 -1
- package/dist/cjs/PivotViewer/index.js +2 -1
- package/dist/cjs/PivotViewer/index.js.map +1 -1
- package/dist/cjs/PivotViewer/types.js +11 -0
- package/dist/cjs/PivotViewer/types.js.map +1 -1
- package/dist/cjs/PivotViewer/utils/animations.js +35 -2
- package/dist/cjs/PivotViewer/utils/animations.js.map +1 -1
- package/dist/cjs/PivotViewer/utils/cardPosition.js +21 -3
- package/dist/cjs/PivotViewer/utils/cardPosition.js.map +1 -1
- package/dist/cjs/PivotViewer/utils/constants.js +3 -0
- package/dist/cjs/PivotViewer/utils/constants.js.map +1 -1
- package/dist/cjs/PivotViewer/utils/idResolution.js +16 -0
- package/dist/cjs/PivotViewer/utils/idResolution.js.map +1 -1
- package/dist/cjs/PivotViewer/utils/selection.js +25 -0
- package/dist/cjs/PivotViewer/utils/selection.js.map +1 -1
- package/dist/cjs/PivotViewer/utils/utils.js +5 -0
- package/dist/cjs/PivotViewer/utils/utils.js.map +1 -1
- package/dist/cjs/SchemaEditor/NameCell.js.map +1 -1
- package/dist/cjs/SchemaEditor/SchemaEditor.js.map +1 -1
- package/dist/cjs/SchemaEditor/TypeCell.js.map +1 -1
- package/dist/cjs/SchemaEditor/index.js +2 -1
- package/dist/cjs/SchemaEditor/index.js.map +1 -1
- package/dist/cjs/SchemaEditor/schemaHelpers.js +8 -0
- package/dist/cjs/SchemaEditor/schemaHelpers.js.map +1 -1
- package/dist/cjs/TimeMachine/EventsView.js +2 -0
- package/dist/cjs/TimeMachine/EventsView.js.map +1 -1
- package/dist/cjs/TimeMachine/Properties.js.map +1 -1
- package/dist/cjs/TimeMachine/ReadModelView.js +1 -0
- package/dist/cjs/TimeMachine/ReadModelView.js.map +1 -1
- package/dist/cjs/TimeMachine/TimeMachine.js +11 -1
- package/dist/cjs/TimeMachine/TimeMachine.js.map +1 -1
- package/dist/cjs/TimeMachine/index.js +2 -1
- package/dist/cjs/TimeMachine/index.js.map +1 -1
- package/dist/cjs/TimeMachine/propertiesHelpers.js +5 -0
- package/dist/cjs/TimeMachine/propertiesHelpers.js.map +1 -1
- package/dist/cjs/Toolbar/Toolbar.css +8 -0
- package/dist/cjs/Toolbar/Toolbar.js +7 -1
- package/dist/cjs/Toolbar/Toolbar.js.map +1 -1
- package/dist/cjs/Toolbar/ToolbarButton.js +16 -2
- package/dist/cjs/Toolbar/ToolbarButton.js.map +1 -1
- package/dist/cjs/Toolbar/ToolbarContext.js +8 -0
- package/dist/cjs/Toolbar/ToolbarContext.js.map +1 -1
- package/dist/cjs/Toolbar/ToolbarDragContext.js +24 -0
- package/dist/cjs/Toolbar/ToolbarDragContext.js.map +1 -0
- package/dist/cjs/Toolbar/ToolbarFanOutItem.js +11 -0
- package/dist/cjs/Toolbar/ToolbarFanOutItem.js.map +1 -1
- package/dist/cjs/Toolbar/ToolbarSection.js +18 -1
- package/dist/cjs/Toolbar/ToolbarSection.js.map +1 -1
- package/dist/cjs/Toolbar/ToolbarSeparator.js +6 -0
- package/dist/cjs/Toolbar/ToolbarSeparator.js.map +1 -1
- package/dist/cjs/Toolbar/index.js +2 -1
- package/dist/cjs/Toolbar/index.js.map +1 -1
- package/dist/cjs/tailwind-utilities.css +16 -1
- package/dist/cjs/types/TypeFormat.js +2 -0
- package/dist/cjs/types/TypeFormat.js.map +1 -1
- package/dist/cjs/types/index.js +2 -1
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/useOverlayZIndex.js +10 -0
- package/dist/cjs/useOverlayZIndex.js.map +1 -1
- package/dist/esm/CommandDialog/CommandDialog.d.ts +2 -2
- package/dist/esm/CommandDialog/CommandDialog.d.ts.map +1 -1
- package/dist/esm/CommandDialog/CommandDialog.js +11 -4
- package/dist/esm/CommandDialog/CommandDialog.js.map +1 -1
- package/dist/esm/CommandDialog/CommandDialog.stories.d.ts +1 -0
- package/dist/esm/CommandDialog/CommandDialog.stories.d.ts.map +1 -1
- package/dist/esm/CommandDialog/CommandDialog.stories.js +52 -0
- package/dist/esm/CommandDialog/CommandDialog.stories.js.map +1 -1
- package/dist/esm/CommandDialog/StepperCommandDialog.d.ts +5 -4
- package/dist/esm/CommandDialog/StepperCommandDialog.d.ts.map +1 -1
- package/dist/esm/CommandDialog/StepperCommandDialog.js +23 -4
- package/dist/esm/CommandDialog/StepperCommandDialog.js.map +1 -1
- package/dist/esm/CommandDialog/StepperCommandDialog.stories.d.ts +1 -0
- package/dist/esm/CommandDialog/StepperCommandDialog.stories.d.ts.map +1 -1
- package/dist/esm/CommandDialog/StepperCommandDialog.stories.js +54 -0
- package/dist/esm/CommandDialog/StepperCommandDialog.stories.js.map +1 -1
- package/dist/esm/CommandDialog/index.js +3 -0
- package/dist/esm/CommandDialog/index.js.map +1 -1
- package/dist/esm/CommandForm/fields/CalendarField.js.map +1 -1
- package/dist/esm/CommandForm/fields/CheckboxField.js.map +1 -1
- package/dist/esm/CommandForm/fields/ChipsField.js.map +1 -1
- package/dist/esm/CommandForm/fields/ColorPickerField.js.map +1 -1
- package/dist/esm/CommandForm/fields/DropdownField.js.map +1 -1
- package/dist/esm/CommandForm/fields/InputTextField.js.map +1 -1
- package/dist/esm/CommandForm/fields/MultiSelectField.js.map +1 -1
- package/dist/esm/CommandForm/fields/NumberField.js.map +1 -1
- package/dist/esm/CommandForm/fields/SliderField.js.map +1 -1
- package/dist/esm/CommandForm/fields/TextAreaField.js.map +1 -1
- package/dist/esm/CommandForm/index.d.ts +0 -1
- package/dist/esm/CommandForm/index.d.ts.map +1 -1
- package/dist/esm/CommandForm/index.js +3 -1
- package/dist/esm/CommandForm/index.js.map +1 -1
- package/dist/esm/Common/ErrorBoundary.js.map +1 -1
- package/dist/esm/Common/FormElement.js.map +1 -1
- package/dist/esm/Common/Page.js.map +1 -1
- package/dist/esm/Common/Tooltip.js +4 -0
- package/dist/esm/Common/Tooltip.js.map +1 -1
- package/dist/esm/Common/index.js +3 -0
- package/dist/esm/Common/index.js.map +1 -1
- package/dist/esm/DataPage/DataPage.js +6 -0
- package/dist/esm/DataPage/DataPage.js.map +1 -1
- package/dist/esm/DataPage/index.js +3 -0
- package/dist/esm/DataPage/index.js.map +1 -1
- package/dist/esm/DataTables/DataTableForObservableQuery.js +5 -0
- package/dist/esm/DataTables/DataTableForObservableQuery.js.map +1 -1
- package/dist/esm/DataTables/DataTableForQuery.js +5 -0
- package/dist/esm/DataTables/DataTableForQuery.js.map +1 -1
- package/dist/esm/DataTables/index.js +3 -0
- package/dist/esm/DataTables/index.js.map +1 -1
- package/dist/esm/Dialogs/BusyIndicatorDialog.js.map +1 -1
- package/dist/esm/Dialogs/ConfirmationDialog.js.map +1 -1
- package/dist/esm/Dialogs/Dialog.d.ts +5 -3
- package/dist/esm/Dialogs/Dialog.d.ts.map +1 -1
- package/dist/esm/Dialogs/Dialog.js +8 -2
- package/dist/esm/Dialogs/Dialog.js.map +1 -1
- package/dist/esm/Dialogs/index.js +3 -0
- package/dist/esm/Dialogs/index.js.map +1 -1
- package/dist/esm/Dropdown/Dropdown.js +1 -0
- package/dist/esm/Dropdown/Dropdown.js.map +1 -1
- package/dist/esm/Dropdown/index.js +3 -0
- package/dist/esm/Dropdown/index.js.map +1 -1
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.js.map +1 -1
- package/dist/esm/ObjectContentEditor/index.js +3 -0
- package/dist/esm/ObjectContentEditor/index.js.map +1 -1
- package/dist/esm/ObjectContentEditor/objectHelpers.js +6 -0
- package/dist/esm/ObjectContentEditor/objectHelpers.js.map +1 -1
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.js.map +1 -1
- package/dist/esm/ObjectNavigationalBar/breadcrumbHelpers.js +6 -0
- package/dist/esm/ObjectNavigationalBar/breadcrumbHelpers.js.map +1 -1
- package/dist/esm/ObjectNavigationalBar/index.js +3 -0
- package/dist/esm/ObjectNavigationalBar/index.js.map +1 -1
- package/dist/esm/PivotViewer/PivotViewer.js +28 -0
- package/dist/esm/PivotViewer/PivotViewer.js.map +1 -1
- package/dist/esm/PivotViewer/components/AxisLabels.js +4 -0
- package/dist/esm/PivotViewer/components/AxisLabels.js.map +1 -1
- package/dist/esm/PivotViewer/components/DetailPanel.js.map +1 -1
- package/dist/esm/PivotViewer/components/FilterPanel.js +4 -0
- package/dist/esm/PivotViewer/components/FilterPanel.js.map +1 -1
- package/dist/esm/PivotViewer/components/FilterPanelContainer.js.map +1 -1
- package/dist/esm/PivotViewer/components/PivotCanvas.js +138 -2
- package/dist/esm/PivotViewer/components/PivotCanvas.js.map +1 -1
- package/dist/esm/PivotViewer/components/PivotViewerMain.js +4 -0
- package/dist/esm/PivotViewer/components/PivotViewerMain.js.map +1 -1
- package/dist/esm/PivotViewer/components/RangeHistogramFilter.js.map +1 -1
- package/dist/esm/PivotViewer/components/Spinner.js.map +1 -1
- package/dist/esm/PivotViewer/components/Toolbar.js.map +1 -1
- package/dist/esm/PivotViewer/components/ToolbarContainer.js.map +1 -1
- package/dist/esm/PivotViewer/components/pivot/animation.js +8 -1
- package/dist/esm/PivotViewer/components/pivot/animation.js.map +1 -1
- package/dist/esm/PivotViewer/components/pivot/colorResolver.js +3 -1
- package/dist/esm/PivotViewer/components/pivot/colorResolver.js.map +1 -1
- package/dist/esm/PivotViewer/components/pivot/constants.js +8 -5
- package/dist/esm/PivotViewer/components/pivot/constants.js.map +1 -1
- package/dist/esm/PivotViewer/components/pivot/groups.js +15 -0
- package/dist/esm/PivotViewer/components/pivot/groups.js.map +1 -1
- package/dist/esm/PivotViewer/components/pivot/sprites.js +19 -0
- package/dist/esm/PivotViewer/components/pivot/sprites.js.map +1 -1
- package/dist/esm/PivotViewer/components/pivot/visibility.js +102 -3
- package/dist/esm/PivotViewer/components/pivot/visibility.js.map +1 -1
- package/dist/esm/PivotViewer/constants.js +2 -0
- package/dist/esm/PivotViewer/constants.js.map +1 -1
- package/dist/esm/PivotViewer/engine/layout.js +23 -0
- package/dist/esm/PivotViewer/engine/layout.js.map +1 -1
- package/dist/esm/PivotViewer/engine/store.js +29 -0
- package/dist/esm/PivotViewer/engine/store.js.map +1 -1
- package/dist/esm/PivotViewer/hooks/useAnimationModeTracking.js +8 -0
- package/dist/esm/PivotViewer/hooks/useAnimationModeTracking.js.map +1 -1
- package/dist/esm/PivotViewer/hooks/useCardSelection.js +10 -1
- package/dist/esm/PivotViewer/hooks/useCardSelection.js.map +1 -1
- package/dist/esm/PivotViewer/hooks/useContainerDimensions.js +11 -0
- package/dist/esm/PivotViewer/hooks/useContainerDimensions.js.map +1 -1
- package/dist/esm/PivotViewer/hooks/useCurrentFilters.js +6 -0
- package/dist/esm/PivotViewer/hooks/useCurrentFilters.js.map +1 -1
- package/dist/esm/PivotViewer/hooks/useDetailPanelClose.js +11 -1
- package/dist/esm/PivotViewer/hooks/useDetailPanelClose.js.map +1 -1
- package/dist/esm/PivotViewer/hooks/useDimensionState.js +2 -0
- package/dist/esm/PivotViewer/hooks/useDimensionState.js.map +1 -1
- package/dist/esm/PivotViewer/hooks/useFieldExtractors.js +2 -0
- package/dist/esm/PivotViewer/hooks/useFieldExtractors.js.map +1 -1
- package/dist/esm/PivotViewer/hooks/useFilterOptions.js +2 -0
- package/dist/esm/PivotViewer/hooks/useFilterOptions.js.map +1 -1
- package/dist/esm/PivotViewer/hooks/useFilterState.js +5 -0
- package/dist/esm/PivotViewer/hooks/useFilterState.js.map +1 -1
- package/dist/esm/PivotViewer/hooks/usePanning.js +14 -0
- package/dist/esm/PivotViewer/hooks/usePanning.js.map +1 -1
- package/dist/esm/PivotViewer/hooks/usePivotEngine.js +7 -0
- package/dist/esm/PivotViewer/hooks/usePivotEngine.js.map +1 -1
- package/dist/esm/PivotViewer/hooks/useScrollSync.js +6 -0
- package/dist/esm/PivotViewer/hooks/useScrollSync.js.map +1 -1
- package/dist/esm/PivotViewer/hooks/useViewModeScrollHandling.js +9 -0
- package/dist/esm/PivotViewer/hooks/useViewModeScrollHandling.js.map +1 -1
- package/dist/esm/PivotViewer/hooks/useWheelZoom.js +8 -2
- package/dist/esm/PivotViewer/hooks/useWheelZoom.js.map +1 -1
- package/dist/esm/PivotViewer/hooks/useZoomState.js +2 -0
- package/dist/esm/PivotViewer/hooks/useZoomState.js.map +1 -1
- package/dist/esm/PivotViewer/index.js +3 -0
- package/dist/esm/PivotViewer/index.js.map +1 -1
- package/dist/esm/PivotViewer/types.js +11 -0
- package/dist/esm/PivotViewer/types.js.map +1 -1
- package/dist/esm/PivotViewer/utils/animations.js +35 -2
- package/dist/esm/PivotViewer/utils/animations.js.map +1 -1
- package/dist/esm/PivotViewer/utils/cardPosition.js +21 -3
- package/dist/esm/PivotViewer/utils/cardPosition.js.map +1 -1
- package/dist/esm/PivotViewer/utils/constants.js +3 -0
- package/dist/esm/PivotViewer/utils/constants.js.map +1 -1
- package/dist/esm/PivotViewer/utils/idResolution.js +16 -0
- package/dist/esm/PivotViewer/utils/idResolution.js.map +1 -1
- package/dist/esm/PivotViewer/utils/selection.js +25 -0
- package/dist/esm/PivotViewer/utils/selection.js.map +1 -1
- package/dist/esm/PivotViewer/utils/utils.js +5 -0
- package/dist/esm/PivotViewer/utils/utils.js.map +1 -1
- package/dist/esm/SchemaEditor/NameCell.js.map +1 -1
- package/dist/esm/SchemaEditor/SchemaEditor.js.map +1 -1
- package/dist/esm/SchemaEditor/TypeCell.js.map +1 -1
- package/dist/esm/SchemaEditor/index.js +3 -0
- package/dist/esm/SchemaEditor/index.js.map +1 -1
- package/dist/esm/SchemaEditor/schemaHelpers.js +8 -0
- package/dist/esm/SchemaEditor/schemaHelpers.js.map +1 -1
- package/dist/esm/TimeMachine/EventsView.js +2 -0
- package/dist/esm/TimeMachine/EventsView.js.map +1 -1
- package/dist/esm/TimeMachine/Properties.js.map +1 -1
- package/dist/esm/TimeMachine/ReadModelView.js +1 -0
- package/dist/esm/TimeMachine/ReadModelView.js.map +1 -1
- package/dist/esm/TimeMachine/TimeMachine.js +11 -1
- package/dist/esm/TimeMachine/TimeMachine.js.map +1 -1
- package/dist/esm/TimeMachine/index.js +3 -0
- package/dist/esm/TimeMachine/index.js.map +1 -1
- package/dist/esm/TimeMachine/propertiesHelpers.js +5 -0
- package/dist/esm/TimeMachine/propertiesHelpers.js.map +1 -1
- package/dist/esm/Toolbar/Toolbar.css +8 -0
- package/dist/esm/Toolbar/Toolbar.d.ts +3 -1
- package/dist/esm/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/esm/Toolbar/Toolbar.js +7 -1
- package/dist/esm/Toolbar/Toolbar.js.map +1 -1
- package/dist/esm/Toolbar/Toolbar.stories.d.ts +1 -0
- package/dist/esm/Toolbar/Toolbar.stories.d.ts.map +1 -1
- package/dist/esm/Toolbar/Toolbar.stories.js +23 -0
- package/dist/esm/Toolbar/Toolbar.stories.js.map +1 -1
- package/dist/esm/Toolbar/ToolbarButton.d.ts +4 -1
- package/dist/esm/Toolbar/ToolbarButton.d.ts.map +1 -1
- package/dist/esm/Toolbar/ToolbarButton.js +16 -2
- package/dist/esm/Toolbar/ToolbarButton.js.map +1 -1
- package/dist/esm/Toolbar/ToolbarContext.js +8 -0
- package/dist/esm/Toolbar/ToolbarContext.js.map +1 -1
- package/dist/esm/Toolbar/ToolbarDragContext.d.ts +7 -0
- package/dist/esm/Toolbar/ToolbarDragContext.d.ts.map +1 -0
- package/dist/esm/Toolbar/ToolbarDragContext.js +21 -0
- package/dist/esm/Toolbar/ToolbarDragContext.js.map +1 -0
- package/dist/esm/Toolbar/ToolbarFanOutItem.js +11 -0
- package/dist/esm/Toolbar/ToolbarFanOutItem.js.map +1 -1
- package/dist/esm/Toolbar/ToolbarSection.js +18 -1
- package/dist/esm/Toolbar/ToolbarSection.js.map +1 -1
- package/dist/esm/Toolbar/ToolbarSeparator.js +6 -0
- package/dist/esm/Toolbar/ToolbarSeparator.js.map +1 -1
- package/dist/esm/Toolbar/index.js +3 -0
- package/dist/esm/Toolbar/index.js.map +1 -1
- package/dist/esm/tailwind-utilities.css +16 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/types/TypeFormat.js +2 -0
- package/dist/esm/types/TypeFormat.js.map +1 -1
- package/dist/esm/types/index.js +3 -0
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/useOverlayZIndex.js +10 -0
- package/dist/esm/useOverlayZIndex.js.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventsView.js","sources":["../../../TimeMachine/EventsView.tsx"],"sourcesContent":[
|
|
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":[
|
|
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":"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"}
|
|
@@ -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":";;;;;;AASA,IAAK,SAGJ;AAHD,CAAA,UAAK,SAAS,EAAA;AACZ,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAHI,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA;AAaP,MAAM,WAAW,GAA+B,CAAC,EACtD,QAAQ,EACR,mBAAmB,GAAG,CAAC,EACvB,eAAe,EACf,iBAAiB,GAAG,EAAE,GACvB,KAAI;IACH,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC;IACvE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC;IACrE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC3D,IAAA,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAY,SAAS,CAAC,SAAS,CAAC;AACxE,IAAA,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC;AACjD,IAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,CAAC,CAAC;AAEtC,IAAA,MAAM,mBAAmB,GAAG,WAAW,CAAC,CAAC,KAAa,KAAI;QACxD,gBAAgB,CAAC,KAAK,CAAC;AACvB,QAAA,eAAe,GAAG,KAAK,CAAC;AAC1B,IAAA,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;AAErB,IAAA,MAAM,mBAAmB,GAAG,WAAW,CAAC,CAAC,KAAoB,KAAI;QAC/D,eAAe,CAAC,KAAK,CAAC;IACxB,CAAC,EAAE,EAAE,CAAC;IAGN,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,QAAQ,KAAK,SAAS,CAAC,SAAS,EAAE;YACpC;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,SAAS;YAAE;AAEhB,QAAA,MAAM,WAAW,GAAG,CAAC,CAAa,KAAI;YAEpC,IAAI,cAAc,EAAE;gBAClB;YACF;YAGA,CAAC,CAAC,cAAc,EAAE;AAIlB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM;AAG3E,YAAA,oBAAoB,CAAC,OAAO,IAAI,KAAK;YAGrC,IAAI,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,iBAAiB,EAAE;AAC/D,gBAAA,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;gBAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC,CAAC;AAEtF,gBAAA,IAAI,QAAQ,KAAK,aAAa,EAAE;oBAC9B,gBAAgB,CAAC,QAAQ,CAAC;AAC1B,oBAAA,eAAe,GAAG,QAAQ,CAAC;gBAC7B;AAGA,gBAAA,oBAAoB,CAAC,OAAO,GAAG,CAAC;YAClC;AACF,QAAA,CAAC;AAED,QAAA,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAEpE,QAAA,OAAO,MAAK;AACV,YAAA,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC;AACrD,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;AAQlG,IAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;AAEnE,IAAA,QACEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,cAAc,EAAC,GAAG,EAAE,YAAY,EAAA,QAAA,EAAA,CAE7CA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,CAC5BC,GAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAE,CAAA,YAAA,EAAe,QAAQ,KAAK,SAAS,CAAC,SAAS,GAAG,QAAQ,GAAG,EAAE,CAAA,CAAE,EAC5E,OAAO,EAAE,MAAM,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,EAAA,YAAA,EACpC,iBAAiB,EAC5B,KAAK,EAAC,iBAAiB,EAAA,QAAA,EAEvBA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,WAAW,EAAA,CAAG,EAAA,CACpB,EACTA,GAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAE,CAAA,YAAA,EAAe,QAAQ,KAAK,SAAS,CAAC,MAAM,GAAG,QAAQ,GAAG,EAAE,CAAA,CAAE,EACzE,OAAO,EAAE,MAAM,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAA,YAAA,EACjC,aAAa,EACxB,KAAK,EAAC,aAAa,EAAA,QAAA,EAEnBA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,YAAY,EAAA,CAAG,EAAA,CACrB,CAAA,EAAA,CACL,EAGL,QAAQ,KAAK,SAAS,CAAC,SAAS,IAC/BA,GAAA,CAAC,aAAa,EAAA,EACZ,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,mBAAmB,EACpC,oBAAoB,EAAE,iBAAiB,EAAA,CACvC,KAEFA,GAAA,CAAC,UAAU,EAAA,EAAC,MAAM,EAAE,SAAS,EAAA,CAAI,CAClC,EAGA,QAAQ,KAAK,SAAS,CAAC,SAAS,KAC/BA,GAAA,CAAC,QAAQ,EAAA,EACP,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,EAAE,mBAAmB,EAAA,CAC5B,CACH,EAGA,QAAQ,KAAK,SAAS,CAAC,SAAS,KAC/BD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAA,QAAA,EAAA,CAClCC,GAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAC,iBAAiB,EAC3B,QAAQ,EAAE,aAAa,KAAK,CAAC,EAC7B,OAAO,EAAE,MAAM,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC,EAAA,YAAA,EACvD,kBAAkB,EAAA,QAAA,EAAA,QAAA,EAAA,CAGtB,EACTA,GAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAC,iBAAiB,EAC3B,QAAQ,EAAE,aAAa,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,EAC/C,OAAO,EAAE,MAAM,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC,EAAA,YAAA,EACzE,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,CAGlB,CAAA,EAAA,CACL,CACP,CAAA,EAAA,CACG;AAEV;AAUA,MAAM,QAAQ,GAA4B,CAAC,EACzC,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,OAAO,GACR,KAAI;AACH,IAAA,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAE,QAAuB,KAAY;QAC1E,IAAI,QAAQ,KAAK,IAAI;AAAE,YAAA,OAAO,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC;QAE3C,IAAI,QAAQ,KAAK,CAAC;AAAE,YAAA,OAAO,GAAG;QAC9B,IAAI,QAAQ,KAAK,CAAC;AAAE,YAAA,OAAO,GAAG;QAC9B,IAAI,QAAQ,KAAK,CAAC;AAAE,YAAA,OAAO,GAAG;QAC9B,IAAI,QAAQ,KAAK,CAAC;AAAE,YAAA,OAAO,GAAG;AAC9B,QAAA,OAAO,CAAC;AACV,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,IAAU,KAAY;AACxC,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;AACtC,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,IAAI,EAAE,SAAS;AAChB,SAAA,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,IAAU,KAAY;AACxC,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;AACtC,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,MAAM,EAAE,IAAI;AACb,SAAA,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,UAAU,EACpB,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAA,QAAA,EAEjCA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAC5B,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;gBAC/B,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC;AAC3D,gBAAA,MAAM,UAAU,GAAG,KAAK,KAAK,aAAa;AAC1C,gBAAA,MAAM,SAAS,GAAG,KAAK,KAAK,YAAY;gBAExC,QACED,IAAA,CAAA,KAAA,EAAA,EAEE,SAAS,EAAE,CAAA,eAAA,EAAkB,UAAU,GAAG,UAAU,GAAG,EAAE,CAAA,CAAA,EAAI,SAAS,GAAG,SAAS,GAAG,EAAE,CAAA,CAAE,EACzF,KAAK,EAAE;AACL,wBAAA,iBAAiB,EAAE,aAAa;AACV,qBAAA,EACxB,YAAY,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAClC,OAAO,EAAE,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAA,QAAA,EAAA,CAE9BC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,EAAA,CAAO,EACrCD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BC,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,eAAe,EAAA,QAAA,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAA,CAAQ,EACtEA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,eAAe,EAAA,QAAA,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAA,CAAQ,CAAA,EAAA,CAClE,CAAA,EAAA,EAZD,OAAO,CAAC,EAAE,CAaX;AAEV,YAAA,CAAC,CAAC,EAAA,CACE,EAAA,CACF;AAEV,CAAC;;;;"}
|
|
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":[
|
|
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;;;;"}
|
|
@@ -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;
|
|
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
|
-
|
|
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":[
|
|
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;;;;"}
|
|
@@ -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":";AAIA,OAAO,EAAE,QAAQ,
|
|
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;
|
|
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
|
-
|
|
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":[
|
|
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":[
|
|
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":[
|
|
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]);
|