@vuu-ui/vuu-layout 0.0.26
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/LICENSE +201 -0
- package/README.md +1 -0
- package/cjs/Component.js +14 -0
- package/cjs/Component.js.map +1 -0
- package/cjs/DraggableLayout.css.js +6 -0
- package/cjs/DraggableLayout.css.js.map +1 -0
- package/cjs/DraggableLayout.js +33 -0
- package/cjs/DraggableLayout.js.map +1 -0
- package/cjs/dock-layout/DockLayout.css.js +6 -0
- package/cjs/dock-layout/DockLayout.css.js.map +1 -0
- package/cjs/dock-layout/DockLayout.js +36 -0
- package/cjs/dock-layout/DockLayout.js.map +1 -0
- package/cjs/dock-layout/Drawer.css.js +6 -0
- package/cjs/dock-layout/Drawer.css.js.map +1 -0
- package/cjs/dock-layout/Drawer.js +96 -0
- package/cjs/dock-layout/Drawer.js.map +1 -0
- package/cjs/drag-drop/BoxModel.js +422 -0
- package/cjs/drag-drop/BoxModel.js.map +1 -0
- package/cjs/drag-drop/DragState.js +154 -0
- package/cjs/drag-drop/DragState.js.map +1 -0
- package/cjs/drag-drop/Draggable.js +192 -0
- package/cjs/drag-drop/Draggable.js.map +1 -0
- package/cjs/drag-drop/DropMenu.css.js +6 -0
- package/cjs/drag-drop/DropMenu.css.js.map +1 -0
- package/cjs/drag-drop/DropMenu.js +55 -0
- package/cjs/drag-drop/DropMenu.js.map +1 -0
- package/cjs/drag-drop/DropTarget.js +244 -0
- package/cjs/drag-drop/DropTarget.js.map +1 -0
- package/cjs/drag-drop/DropTargetRenderer.js +244 -0
- package/cjs/drag-drop/DropTargetRenderer.js.map +1 -0
- package/cjs/flexbox/Flexbox.css.js +6 -0
- package/cjs/flexbox/Flexbox.css.js.map +1 -0
- package/cjs/flexbox/Flexbox.js +70 -0
- package/cjs/flexbox/Flexbox.js.map +1 -0
- package/cjs/flexbox/FlexboxLayout.js +30 -0
- package/cjs/flexbox/FlexboxLayout.js.map +1 -0
- package/cjs/flexbox/FluidGrid.css.js +6 -0
- package/cjs/flexbox/FluidGrid.css.js.map +1 -0
- package/cjs/flexbox/FluidGrid.js +87 -0
- package/cjs/flexbox/FluidGrid.js.map +1 -0
- package/cjs/flexbox/FluidGridLayout.js +14 -0
- package/cjs/flexbox/FluidGridLayout.js.map +1 -0
- package/cjs/flexbox/Splitter.css.js +6 -0
- package/cjs/flexbox/Splitter.css.js.map +1 -0
- package/cjs/flexbox/Splitter.js +122 -0
- package/cjs/flexbox/Splitter.js.map +1 -0
- package/cjs/flexbox/flexbox-utils.js +109 -0
- package/cjs/flexbox/flexbox-utils.js.map +1 -0
- package/cjs/flexbox/useResponsiveSizing.js +62 -0
- package/cjs/flexbox/useResponsiveSizing.js.map +1 -0
- package/cjs/flexbox/useSplitterResizing.js +209 -0
- package/cjs/flexbox/useSplitterResizing.js.map +1 -0
- package/cjs/index.js +133 -0
- package/cjs/index.js.map +1 -0
- package/cjs/layout-action.js +27 -0
- package/cjs/layout-action.js.map +1 -0
- package/cjs/layout-header/Header.css.js +6 -0
- package/cjs/layout-header/Header.css.js.map +1 -0
- package/cjs/layout-header/Header.js +131 -0
- package/cjs/layout-header/Header.js.map +1 -0
- package/cjs/layout-provider/LayoutProvider.js +178 -0
- package/cjs/layout-provider/LayoutProvider.js.map +1 -0
- package/cjs/layout-provider/LayoutProviderContext.js +14 -0
- package/cjs/layout-provider/LayoutProviderContext.js.map +1 -0
- package/cjs/layout-provider/useLayoutDragDrop.js +172 -0
- package/cjs/layout-provider/useLayoutDragDrop.js.map +1 -0
- package/cjs/layout-reducer/flexUtils.js +219 -0
- package/cjs/layout-reducer/flexUtils.js.map +1 -0
- package/cjs/layout-reducer/insert-layout-element.js +273 -0
- package/cjs/layout-reducer/insert-layout-element.js.map +1 -0
- package/cjs/layout-reducer/layout-reducer.js +198 -0
- package/cjs/layout-reducer/layout-reducer.js.map +1 -0
- package/cjs/layout-reducer/layoutTypes.js +41 -0
- package/cjs/layout-reducer/layoutTypes.js.map +1 -0
- package/cjs/layout-reducer/layoutUtils.js +226 -0
- package/cjs/layout-reducer/layoutUtils.js.map +1 -0
- package/cjs/layout-reducer/move-layout-element.js +31 -0
- package/cjs/layout-reducer/move-layout-element.js.map +1 -0
- package/cjs/layout-reducer/remove-layout-element.js +223 -0
- package/cjs/layout-reducer/remove-layout-element.js.map +1 -0
- package/cjs/layout-reducer/replace-layout-element.js +91 -0
- package/cjs/layout-reducer/replace-layout-element.js.map +1 -0
- package/cjs/layout-reducer/resize-flex-children.js +61 -0
- package/cjs/layout-reducer/resize-flex-children.js.map +1 -0
- package/cjs/layout-reducer/wrap-layout-element.js +212 -0
- package/cjs/layout-reducer/wrap-layout-element.js.map +1 -0
- package/cjs/layout-view/View.css.js +6 -0
- package/cjs/layout-view/View.css.js.map +1 -0
- package/cjs/layout-view/View.js +164 -0
- package/cjs/layout-view/View.js.map +1 -0
- package/cjs/layout-view/useView.js +92 -0
- package/cjs/layout-view/useView.js.map +1 -0
- package/cjs/layout-view/useViewResize.js +42 -0
- package/cjs/layout-view/useViewResize.js.map +1 -0
- package/cjs/layout-view-actions/ViewContext.js +16 -0
- package/cjs/layout-view-actions/ViewContext.js.map +1 -0
- package/cjs/layout-view-actions/useViewActionDispatcher.js +103 -0
- package/cjs/layout-view-actions/useViewActionDispatcher.js.map +1 -0
- package/cjs/palette/Palette.css.js +6 -0
- package/cjs/palette/Palette.css.js.map +1 -0
- package/cjs/palette/Palette.js +127 -0
- package/cjs/palette/Palette.js.map +1 -0
- package/cjs/placeholder/LayoutStartPanel.css.js +6 -0
- package/cjs/placeholder/LayoutStartPanel.css.js.map +1 -0
- package/cjs/placeholder/LayoutStartPanel.js +60 -0
- package/cjs/placeholder/LayoutStartPanel.js.map +1 -0
- package/cjs/placeholder/Placeholder.css.js +6 -0
- package/cjs/placeholder/Placeholder.css.js.map +1 -0
- package/cjs/placeholder/Placeholder.js +34 -0
- package/cjs/placeholder/Placeholder.js.map +1 -0
- package/cjs/registry/ComponentRegistry.js +27 -0
- package/cjs/registry/ComponentRegistry.js.map +1 -0
- package/cjs/responsive/breakpoints.js +36 -0
- package/cjs/responsive/breakpoints.js.map +1 -0
- package/cjs/responsive/use-breakpoints.js +76 -0
- package/cjs/responsive/use-breakpoints.js.map +1 -0
- package/cjs/responsive/useResizeObserver.js +118 -0
- package/cjs/responsive/useResizeObserver.js.map +1 -0
- package/cjs/responsive/utils.js +34 -0
- package/cjs/responsive/utils.js.map +1 -0
- package/cjs/stack/Stack.css.js +6 -0
- package/cjs/stack/Stack.css.js.map +1 -0
- package/cjs/stack/Stack.js +148 -0
- package/cjs/stack/Stack.js.map +1 -0
- package/cjs/stack/StackLayout.js +122 -0
- package/cjs/stack/StackLayout.js.map +1 -0
- package/cjs/use-persistent-state.js +109 -0
- package/cjs/use-persistent-state.js.map +1 -0
- package/cjs/utils/pathUtils.js +293 -0
- package/cjs/utils/pathUtils.js.map +1 -0
- package/cjs/utils/propUtils.js +27 -0
- package/cjs/utils/propUtils.js.map +1 -0
- package/cjs/utils/refUtils.js +12 -0
- package/cjs/utils/refUtils.js.map +1 -0
- package/cjs/utils/styleUtils.js +15 -0
- package/cjs/utils/styleUtils.js.map +1 -0
- package/cjs/utils/typeOf.js +27 -0
- package/cjs/utils/typeOf.js.map +1 -0
- package/esm/Component.js +12 -0
- package/esm/Component.js.map +1 -0
- package/esm/DraggableLayout.css.js +4 -0
- package/esm/DraggableLayout.css.js.map +1 -0
- package/esm/DraggableLayout.js +31 -0
- package/esm/DraggableLayout.js.map +1 -0
- package/esm/dock-layout/DockLayout.css.js +4 -0
- package/esm/dock-layout/DockLayout.css.js.map +1 -0
- package/esm/dock-layout/DockLayout.js +34 -0
- package/esm/dock-layout/DockLayout.js.map +1 -0
- package/esm/dock-layout/Drawer.css.js +4 -0
- package/esm/dock-layout/Drawer.css.js.map +1 -0
- package/esm/dock-layout/Drawer.js +94 -0
- package/esm/dock-layout/Drawer.js.map +1 -0
- package/esm/drag-drop/BoxModel.js +415 -0
- package/esm/drag-drop/BoxModel.js.map +1 -0
- package/esm/drag-drop/DragState.js +152 -0
- package/esm/drag-drop/DragState.js.map +1 -0
- package/esm/drag-drop/Draggable.js +190 -0
- package/esm/drag-drop/Draggable.js.map +1 -0
- package/esm/drag-drop/DropMenu.css.js +4 -0
- package/esm/drag-drop/DropMenu.css.js.map +1 -0
- package/esm/drag-drop/DropMenu.js +52 -0
- package/esm/drag-drop/DropMenu.js.map +1 -0
- package/esm/drag-drop/DropTarget.js +240 -0
- package/esm/drag-drop/DropTarget.js.map +1 -0
- package/esm/drag-drop/DropTargetRenderer.js +242 -0
- package/esm/drag-drop/DropTargetRenderer.js.map +1 -0
- package/esm/flexbox/Flexbox.css.js +4 -0
- package/esm/flexbox/Flexbox.css.js.map +1 -0
- package/esm/flexbox/Flexbox.js +68 -0
- package/esm/flexbox/Flexbox.js.map +1 -0
- package/esm/flexbox/FlexboxLayout.js +28 -0
- package/esm/flexbox/FlexboxLayout.js.map +1 -0
- package/esm/flexbox/FluidGrid.css.js +4 -0
- package/esm/flexbox/FluidGrid.css.js.map +1 -0
- package/esm/flexbox/FluidGrid.js +85 -0
- package/esm/flexbox/FluidGrid.js.map +1 -0
- package/esm/flexbox/FluidGridLayout.js +12 -0
- package/esm/flexbox/FluidGridLayout.js.map +1 -0
- package/esm/flexbox/Splitter.css.js +4 -0
- package/esm/flexbox/Splitter.css.js.map +1 -0
- package/esm/flexbox/Splitter.js +120 -0
- package/esm/flexbox/Splitter.js.map +1 -0
- package/esm/flexbox/flexbox-utils.js +103 -0
- package/esm/flexbox/flexbox-utils.js.map +1 -0
- package/esm/flexbox/useResponsiveSizing.js +60 -0
- package/esm/flexbox/useResponsiveSizing.js.map +1 -0
- package/esm/flexbox/useSplitterResizing.js +207 -0
- package/esm/flexbox/useSplitterResizing.js.map +1 -0
- package/esm/index.js +37 -0
- package/esm/index.js.map +1 -0
- package/esm/layout-action.js +25 -0
- package/esm/layout-action.js.map +1 -0
- package/esm/layout-header/Header.css.js +4 -0
- package/esm/layout-header/Header.css.js.map +1 -0
- package/esm/layout-header/Header.js +129 -0
- package/esm/layout-header/Header.js.map +1 -0
- package/esm/layout-provider/LayoutProvider.js +172 -0
- package/esm/layout-provider/LayoutProvider.js.map +1 -0
- package/esm/layout-provider/LayoutProviderContext.js +12 -0
- package/esm/layout-provider/LayoutProviderContext.js.map +1 -0
- package/esm/layout-provider/useLayoutDragDrop.js +170 -0
- package/esm/layout-provider/useLayoutDragDrop.js.map +1 -0
- package/esm/layout-reducer/flexUtils.js +210 -0
- package/esm/layout-reducer/flexUtils.js.map +1 -0
- package/esm/layout-reducer/insert-layout-element.js +269 -0
- package/esm/layout-reducer/insert-layout-element.js.map +1 -0
- package/esm/layout-reducer/layout-reducer.js +196 -0
- package/esm/layout-reducer/layout-reducer.js.map +1 -0
- package/esm/layout-reducer/layoutTypes.js +37 -0
- package/esm/layout-reducer/layoutTypes.js.map +1 -0
- package/esm/layout-reducer/layoutUtils.js +215 -0
- package/esm/layout-reducer/layoutUtils.js.map +1 -0
- package/esm/layout-reducer/move-layout-element.js +29 -0
- package/esm/layout-reducer/move-layout-element.js.map +1 -0
- package/esm/layout-reducer/remove-layout-element.js +221 -0
- package/esm/layout-reducer/remove-layout-element.js.map +1 -0
- package/esm/layout-reducer/replace-layout-element.js +87 -0
- package/esm/layout-reducer/replace-layout-element.js.map +1 -0
- package/esm/layout-reducer/resize-flex-children.js +58 -0
- package/esm/layout-reducer/resize-flex-children.js.map +1 -0
- package/esm/layout-reducer/wrap-layout-element.js +210 -0
- package/esm/layout-reducer/wrap-layout-element.js.map +1 -0
- package/esm/layout-view/View.css.js +4 -0
- package/esm/layout-view/View.css.js.map +1 -0
- package/esm/layout-view/View.js +162 -0
- package/esm/layout-view/View.js.map +1 -0
- package/esm/layout-view/useView.js +90 -0
- package/esm/layout-view/useView.js.map +1 -0
- package/esm/layout-view/useViewResize.js +40 -0
- package/esm/layout-view/useViewResize.js.map +1 -0
- package/esm/layout-view-actions/ViewContext.js +12 -0
- package/esm/layout-view-actions/ViewContext.js.map +1 -0
- package/esm/layout-view-actions/useViewActionDispatcher.js +101 -0
- package/esm/layout-view-actions/useViewActionDispatcher.js.map +1 -0
- package/esm/palette/Palette.css.js +4 -0
- package/esm/palette/Palette.css.js.map +1 -0
- package/esm/palette/Palette.js +124 -0
- package/esm/palette/Palette.js.map +1 -0
- package/esm/placeholder/LayoutStartPanel.css.js +4 -0
- package/esm/placeholder/LayoutStartPanel.css.js.map +1 -0
- package/esm/placeholder/LayoutStartPanel.js +58 -0
- package/esm/placeholder/LayoutStartPanel.js.map +1 -0
- package/esm/placeholder/Placeholder.css.js +4 -0
- package/esm/placeholder/Placeholder.css.js.map +1 -0
- package/esm/placeholder/Placeholder.js +32 -0
- package/esm/placeholder/Placeholder.js.map +1 -0
- package/esm/registry/ComponentRegistry.js +21 -0
- package/esm/registry/ComponentRegistry.js.map +1 -0
- package/esm/responsive/breakpoints.js +33 -0
- package/esm/responsive/breakpoints.js.map +1 -0
- package/esm/responsive/use-breakpoints.js +74 -0
- package/esm/responsive/use-breakpoints.js.map +1 -0
- package/esm/responsive/useResizeObserver.js +112 -0
- package/esm/responsive/useResizeObserver.js.map +1 -0
- package/esm/responsive/utils.js +31 -0
- package/esm/responsive/utils.js.map +1 -0
- package/esm/stack/Stack.css.js +4 -0
- package/esm/stack/Stack.css.js.map +1 -0
- package/esm/stack/Stack.js +146 -0
- package/esm/stack/Stack.js.map +1 -0
- package/esm/stack/StackLayout.js +120 -0
- package/esm/stack/StackLayout.js.map +1 -0
- package/esm/use-persistent-state.js +104 -0
- package/esm/use-persistent-state.js.map +1 -0
- package/esm/utils/pathUtils.js +280 -0
- package/esm/utils/pathUtils.js.map +1 -0
- package/esm/utils/propUtils.js +23 -0
- package/esm/utils/propUtils.js.map +1 -0
- package/esm/utils/refUtils.js +10 -0
- package/esm/utils/refUtils.js.map +1 -0
- package/esm/utils/styleUtils.js +13 -0
- package/esm/utils/styleUtils.js.map +1 -0
- package/esm/utils/typeOf.js +23 -0
- package/esm/utils/typeOf.js.map +1 -0
- package/package.json +43 -0
- package/types/Component.d.ts +7 -0
- package/types/DraggableLayout.d.ts +6 -0
- package/types/debug.d.ts +2 -0
- package/types/dock-layout/DockLayout.d.ts +9 -0
- package/types/dock-layout/Drawer.d.ts +17 -0
- package/types/dock-layout/index.d.ts +2 -0
- package/types/drag-drop/BoxModel.d.ts +143 -0
- package/types/drag-drop/DragState.d.ts +46 -0
- package/types/drag-drop/Draggable.d.ts +24 -0
- package/types/drag-drop/DropMenu.d.ts +9 -0
- package/types/drag-drop/DropTarget.d.ts +61 -0
- package/types/drag-drop/DropTargetRenderer.d.ts +17 -0
- package/types/drag-drop/dragDropTypes.d.ts +51 -0
- package/types/drag-drop/index.d.ts +4 -0
- package/types/flexbox/Flexbox.d.ts +4 -0
- package/types/flexbox/FlexboxLayout.d.ts +6 -0
- package/types/flexbox/FluidGrid.d.ts +6 -0
- package/types/flexbox/FluidGridLayout.d.ts +6 -0
- package/types/flexbox/Splitter.d.ts +12 -0
- package/types/flexbox/flexbox-utils.d.ts +12 -0
- package/types/flexbox/flexboxTypes.d.ts +51 -0
- package/types/flexbox/index.d.ts +4 -0
- package/types/flexbox/useResponsiveSizing.d.ts +10 -0
- package/types/flexbox/useSplitterResizing.d.ts +2 -0
- package/types/index.d.ts +18 -0
- package/types/layout-action.d.ts +22 -0
- package/types/layout-header/ActionButton.d.ts +8 -0
- package/types/layout-header/Header.d.ts +12 -0
- package/types/layout-header/index.d.ts +1 -0
- package/types/layout-provider/LayoutProvider.d.ts +15 -0
- package/types/layout-provider/LayoutProviderContext.d.ts +9 -0
- package/types/layout-provider/index.d.ts +2 -0
- package/types/layout-provider/useLayoutDragDrop.d.ts +4 -0
- package/types/layout-reducer/flexUtils.d.ts +22 -0
- package/types/layout-reducer/index.d.ts +4 -0
- package/types/layout-reducer/insert-layout-element.d.ts +8 -0
- package/types/layout-reducer/layout-reducer.d.ts +3 -0
- package/types/layout-reducer/layoutTypes.d.ts +193 -0
- package/types/layout-reducer/layoutUtils.d.ts +38 -0
- package/types/layout-reducer/move-layout-element.d.ts +3 -0
- package/types/layout-reducer/remove-layout-element.d.ts +3 -0
- package/types/layout-reducer/replace-layout-element.d.ts +6 -0
- package/types/layout-reducer/resize-flex-children.d.ts +4 -0
- package/types/layout-reducer/wrap-layout-element.d.ts +9 -0
- package/types/layout-view/View.d.ts +10 -0
- package/types/layout-view/index.d.ts +2 -0
- package/types/layout-view/useView.d.ts +21 -0
- package/types/layout-view/useViewResize.d.ts +7 -0
- package/types/layout-view/viewTypes.d.ts +21 -0
- package/types/layout-view-actions/ViewContext.d.ts +33 -0
- package/types/layout-view-actions/index.d.ts +2 -0
- package/types/layout-view-actions/useViewActionDispatcher.d.ts +9 -0
- package/types/palette/Palette.d.ts +21 -0
- package/types/palette/index.d.ts +1 -0
- package/types/placeholder/LayoutStartPanel.d.ts +5 -0
- package/types/placeholder/Placeholder.d.ts +17 -0
- package/types/placeholder/index.d.ts +1 -0
- package/types/registry/ComponentRegistry.d.ts +13 -0
- package/types/registry/index.d.ts +1 -0
- package/types/responsive/breakpoints.d.ts +4 -0
- package/types/responsive/index.d.ts +3 -0
- package/types/responsive/measureMinimumNodeSize.d.ts +1 -0
- package/types/responsive/overflowUtils.d.ts +2 -0
- package/types/responsive/use-breakpoints.d.ts +7 -0
- package/types/responsive/useResizeObserver.d.ts +13 -0
- package/types/responsive/utils.d.ts +6 -0
- package/types/stack/Stack.d.ts +3 -0
- package/types/stack/StackLayout.d.ts +6 -0
- package/types/stack/index.d.ts +3 -0
- package/types/stack/stackTypes.d.ts +22 -0
- package/types/tabs/TabPanel.d.ts +7 -0
- package/types/tabs/index.d.ts +1 -0
- package/types/tools/config-wrapper/ConfigWrapper.d.ts +2 -0
- package/types/tools/config-wrapper/index.d.ts +1 -0
- package/types/tools/devtools-box/layout-configurator.d.ts +31 -0
- package/types/tools/devtools-tree/layout-tree-viewer.d.ts +5 -0
- package/types/tools/index.d.ts +3 -0
- package/types/use-persistent-state.d.ts +11 -0
- package/types/utils/index.d.ts +5 -0
- package/types/utils/pathUtils.d.ts +31 -0
- package/types/utils/propUtils.d.ts +5 -0
- package/types/utils/refUtils.d.ts +2 -0
- package/types/utils/styleUtils.d.ts +3 -0
- package/types/utils/typeOf.d.ts +5 -0
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import 'react';
|
|
2
|
+
import { getProps } from '../utils/propUtils.js';
|
|
3
|
+
import { typeOf } from '../utils/typeOf.js';
|
|
4
|
+
import { RelativeDropPosition, Position, BoxModel, getPosition, positionValues } from './BoxModel.js';
|
|
5
|
+
|
|
6
|
+
const isTabstrip = (dropTarget) => dropTarget.pos.tab && typeOf(dropTarget.component) === "Stack" && dropTarget.pos.position.Header;
|
|
7
|
+
const { north, south, east, west } = positionValues;
|
|
8
|
+
const eastwest = east + west;
|
|
9
|
+
const northsouth = north + south;
|
|
10
|
+
class DropTarget {
|
|
11
|
+
constructor({
|
|
12
|
+
component,
|
|
13
|
+
pos,
|
|
14
|
+
clientRect,
|
|
15
|
+
nextDropTarget
|
|
16
|
+
}) {
|
|
17
|
+
this.component = component;
|
|
18
|
+
this.pos = pos;
|
|
19
|
+
this.clientRect = clientRect;
|
|
20
|
+
this.nextDropTarget = nextDropTarget;
|
|
21
|
+
this.active = false;
|
|
22
|
+
this.dropRect = void 0;
|
|
23
|
+
}
|
|
24
|
+
targetTabPos(tab) {
|
|
25
|
+
const { left: tabLeft, width: tabWidth, positionRelativeToTab } = tab;
|
|
26
|
+
return positionRelativeToTab === RelativeDropPosition.BEFORE ? tabLeft : tabLeft + tabWidth;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Determine what will be rendered by the dropTargetRenderer
|
|
30
|
+
*
|
|
31
|
+
* @param {*} lineWidth
|
|
32
|
+
* @param {*} dragState
|
|
33
|
+
* @returns {l, t, r, b, tabLeft, tabWidth, tabHeight}
|
|
34
|
+
*/
|
|
35
|
+
getTargetDropOutline(lineWidth, dragState) {
|
|
36
|
+
if (this.pos.tab) {
|
|
37
|
+
return this.getDropTabOutline(lineWidth, this.pos.tab);
|
|
38
|
+
} else if (dragState && dragState.hasIntrinsicSize()) {
|
|
39
|
+
return this.getIntrinsicDropRect(dragState);
|
|
40
|
+
} else {
|
|
41
|
+
const [l, t, r, b] = this.getDropRectOutline(
|
|
42
|
+
lineWidth,
|
|
43
|
+
dragState
|
|
44
|
+
);
|
|
45
|
+
return { l, t, r, b };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
getDropTabOutline(lineWidth, tab) {
|
|
49
|
+
const {
|
|
50
|
+
clientRect: { top, left, right, bottom, header }
|
|
51
|
+
} = this;
|
|
52
|
+
const inset = 0;
|
|
53
|
+
const gap = Math.round(lineWidth / 2) + inset;
|
|
54
|
+
const t = Math.round(top);
|
|
55
|
+
const l = Math.round(left + gap);
|
|
56
|
+
const r = Math.round(right - gap);
|
|
57
|
+
const b = Math.round(bottom - gap);
|
|
58
|
+
const tabLeft = this.targetTabPos(tab);
|
|
59
|
+
const tabWidth = 60;
|
|
60
|
+
const tabHeight = (header?.bottom ?? 0) - (header?.top ?? 0);
|
|
61
|
+
return { l, t, r, b, tabLeft, tabWidth, tabHeight };
|
|
62
|
+
}
|
|
63
|
+
getIntrinsicDropRect(dragState) {
|
|
64
|
+
const { pos, clientRect: rect2 } = this;
|
|
65
|
+
const { x, y } = dragState;
|
|
66
|
+
let height = dragState.intrinsicSize?.height ?? 0;
|
|
67
|
+
let width = dragState.intrinsicSize?.height ?? 0;
|
|
68
|
+
if (height && height > rect2.height) {
|
|
69
|
+
console.log(`DropTarget: we're going to blow the gaff`);
|
|
70
|
+
height = rect2.height;
|
|
71
|
+
} else if (width && width > rect2.width) {
|
|
72
|
+
console.log(`DropTarget: we're going to blow the gaff`);
|
|
73
|
+
width = rect2.width;
|
|
74
|
+
}
|
|
75
|
+
const left = Math.min(
|
|
76
|
+
rect2.right - width,
|
|
77
|
+
Math.max(rect2.left, Math.round(pos.x - x.mousePct * width))
|
|
78
|
+
);
|
|
79
|
+
const top = Math.min(
|
|
80
|
+
rect2.bottom - height,
|
|
81
|
+
Math.max(rect2.top, Math.round(pos.y - y.mousePct * height))
|
|
82
|
+
);
|
|
83
|
+
const [l, t, r, b] = this.dropRect = [
|
|
84
|
+
left,
|
|
85
|
+
top,
|
|
86
|
+
left + width,
|
|
87
|
+
top + height
|
|
88
|
+
];
|
|
89
|
+
const guideLines = pos.position.EastOrWest ? [l, rect2.top, l, rect2.bottom, r, rect2.top, r, rect2.bottom] : [rect2.left, t, rect2.right, t, rect2.left, b, rect2.right, b];
|
|
90
|
+
return { l, r, t, b, guideLines };
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* @returns [left, top, right, bottom]
|
|
94
|
+
*/
|
|
95
|
+
getDropRectOutline(lineWidth, dragState) {
|
|
96
|
+
const { pos, clientRect: rect2 } = this;
|
|
97
|
+
const { width: suggestedWidth, height: suggestedHeight, position } = pos;
|
|
98
|
+
const { width: intrinsicWidth, height: intrinsicHeight } = dragState?.intrinsicSize ?? {};
|
|
99
|
+
const sizeHeight = intrinsicHeight ?? suggestedHeight ?? 0;
|
|
100
|
+
const sizeWidth = intrinsicWidth ?? suggestedWidth ?? 0;
|
|
101
|
+
this.dropRect = void 0;
|
|
102
|
+
const { top: t, left: l, right: r, bottom: b } = rect2;
|
|
103
|
+
const inset = 0;
|
|
104
|
+
const gap = Math.round(lineWidth / 2) + inset;
|
|
105
|
+
switch (position) {
|
|
106
|
+
case Position.North:
|
|
107
|
+
case Position.Header: {
|
|
108
|
+
const halfHeight = Math.round((b - t) / 2);
|
|
109
|
+
const height = sizeHeight ? Math.min(halfHeight, Math.round(sizeHeight)) : halfHeight;
|
|
110
|
+
return sizeWidth && l + sizeWidth < r ? [l + gap, t + gap, l + sizeWidth - gap, t + gap + height] : [l + gap, t + gap, r - gap, t + gap + height];
|
|
111
|
+
}
|
|
112
|
+
case Position.West: {
|
|
113
|
+
const halfWidth = Math.round((r - l) / 2);
|
|
114
|
+
const width = sizeWidth ? Math.min(halfWidth, Math.round(sizeWidth)) : halfWidth;
|
|
115
|
+
return sizeHeight && t + sizeHeight < b ? [l + gap, t + gap, l - gap + width, t + sizeHeight + gap] : [l + gap, t + gap, l - gap + width, b - gap];
|
|
116
|
+
}
|
|
117
|
+
case Position.East: {
|
|
118
|
+
const halfWidth = Math.round((r - l) / 2);
|
|
119
|
+
const width = sizeWidth ? Math.min(halfWidth, Math.round(sizeWidth)) : halfWidth;
|
|
120
|
+
return sizeHeight && t + sizeHeight < b ? [r - gap - width, t + gap, r - gap, t + sizeHeight + gap] : [r - gap - width, t + gap, r - gap, b - gap];
|
|
121
|
+
}
|
|
122
|
+
case Position.South: {
|
|
123
|
+
const halfHeight = Math.round((b - t) / 2);
|
|
124
|
+
const height = sizeHeight ? Math.min(halfHeight, Math.round(sizeHeight)) : halfHeight;
|
|
125
|
+
return sizeWidth && l + sizeWidth < r ? [l + gap, b - gap - height, l + sizeWidth - gap, b - gap] : [l + gap, b - gap - height, r - gap, b - gap];
|
|
126
|
+
}
|
|
127
|
+
case Position.Centre: {
|
|
128
|
+
return [l + gap, t + gap, r - gap, b - gap];
|
|
129
|
+
}
|
|
130
|
+
default:
|
|
131
|
+
console.warn(`DropTarget does not recognize position ${position}`);
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
activate() {
|
|
136
|
+
this.active = true;
|
|
137
|
+
return this;
|
|
138
|
+
}
|
|
139
|
+
toArray() {
|
|
140
|
+
let dropTarget = this;
|
|
141
|
+
const dropTargets = [dropTarget];
|
|
142
|
+
while (dropTarget = dropTarget.nextDropTarget) {
|
|
143
|
+
dropTargets.push(dropTarget);
|
|
144
|
+
}
|
|
145
|
+
return dropTargets;
|
|
146
|
+
}
|
|
147
|
+
static getActiveDropTarget(dropTarget) {
|
|
148
|
+
return dropTarget === null ? null : dropTarget?.active ? dropTarget : DropTarget.getActiveDropTarget(dropTarget.nextDropTarget);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
function identifyDropTarget(x, y, rootLayout, measurements, intrinsicSize, validDropTargets) {
|
|
152
|
+
let dropTarget = null;
|
|
153
|
+
const allBoxesContainingPoint = BoxModel.allBoxesContainingPoint(
|
|
154
|
+
rootLayout,
|
|
155
|
+
measurements,
|
|
156
|
+
x,
|
|
157
|
+
y,
|
|
158
|
+
validDropTargets
|
|
159
|
+
);
|
|
160
|
+
if (allBoxesContainingPoint.length) {
|
|
161
|
+
const [component, ...containers] = allBoxesContainingPoint;
|
|
162
|
+
const {
|
|
163
|
+
"data-path": dataPath,
|
|
164
|
+
path = dataPath,
|
|
165
|
+
"data-row-placeholder": isRowPlaceholder
|
|
166
|
+
} = getProps(component);
|
|
167
|
+
const clientRect = measurements[path];
|
|
168
|
+
const placeholderOrientation = intrinsicSize && isRowPlaceholder ? "row" : void 0;
|
|
169
|
+
const pos = getPosition(x, y, clientRect, placeholderOrientation);
|
|
170
|
+
const box = measurements[path];
|
|
171
|
+
const nextDropTarget = ([nextTarget, ...targets]) => {
|
|
172
|
+
if (pos.position?.Header || pos.closeToTheEdge) {
|
|
173
|
+
const targetPosition = getTargetPosition(
|
|
174
|
+
nextTarget,
|
|
175
|
+
pos,
|
|
176
|
+
box,
|
|
177
|
+
measurements,
|
|
178
|
+
x,
|
|
179
|
+
y
|
|
180
|
+
);
|
|
181
|
+
if (targetPosition) {
|
|
182
|
+
const [containerPos, clientRect2] = targetPosition;
|
|
183
|
+
return new DropTarget({
|
|
184
|
+
component: nextTarget,
|
|
185
|
+
pos: containerPos,
|
|
186
|
+
clientRect: clientRect2,
|
|
187
|
+
nextDropTarget: nextDropTarget(targets) ?? null
|
|
188
|
+
});
|
|
189
|
+
} else if (targets.length) {
|
|
190
|
+
return nextDropTarget(targets);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
dropTarget = new DropTarget({
|
|
195
|
+
component,
|
|
196
|
+
pos,
|
|
197
|
+
clientRect,
|
|
198
|
+
nextDropTarget: nextDropTarget(containers) ?? null
|
|
199
|
+
}).activate();
|
|
200
|
+
}
|
|
201
|
+
return dropTarget;
|
|
202
|
+
}
|
|
203
|
+
function getTargetPosition(container, { closeToTheEdge, position }, box, measurements, x, y) {
|
|
204
|
+
if (!container || container.type === "DraggableLayout") {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
const containingBox = measurements[container.props.path];
|
|
208
|
+
const closeToTop = closeToTheEdge & positionValues.north;
|
|
209
|
+
const closeToRight = closeToTheEdge & positionValues.east;
|
|
210
|
+
const closeToBottom = closeToTheEdge & positionValues.south;
|
|
211
|
+
const closeToLeft = closeToTheEdge & positionValues.west;
|
|
212
|
+
const atTop = (closeToTop || position.Header) && Math.round(box.top) === Math.round(containingBox.top);
|
|
213
|
+
const atRight = closeToRight && Math.round(box.right) === Math.round(containingBox.right);
|
|
214
|
+
const atBottom = closeToBottom && Math.round(box.bottom) === Math.round(containingBox.bottom);
|
|
215
|
+
const atLeft = closeToLeft && Math.round(box.left) === Math.round(containingBox.left);
|
|
216
|
+
if (atTop || atRight || atBottom || atLeft) {
|
|
217
|
+
const { "data-path": dataPath, path = dataPath } = container.props;
|
|
218
|
+
const clientRect = measurements[path];
|
|
219
|
+
const containerPos = getPosition(x, y, clientRect);
|
|
220
|
+
if ((isVBox(container) || isTabbedContainer(container)) && closeToTheEdge & eastwest) {
|
|
221
|
+
containerPos.width = 120;
|
|
222
|
+
return [containerPos, clientRect];
|
|
223
|
+
} else if ((isHBox(container) || isTabbedContainer(container)) && (position.Header || closeToTheEdge & northsouth)) {
|
|
224
|
+
containerPos.height = 120;
|
|
225
|
+
return [containerPos, clientRect];
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
function isTabbedContainer(component) {
|
|
230
|
+
return typeOf(component) === "Stack";
|
|
231
|
+
}
|
|
232
|
+
function isVBox(component) {
|
|
233
|
+
return typeOf(component) === "Flexbox" && component.props.style.flexDirection === "column";
|
|
234
|
+
}
|
|
235
|
+
function isHBox(component) {
|
|
236
|
+
return typeOf(component) === "Flexbox" && component.props.style.flexDirection === "row";
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
export { DropTarget, identifyDropTarget, isTabstrip };
|
|
240
|
+
//# sourceMappingURL=DropTarget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DropTarget.js","sources":["../../src/drag-drop/DropTarget.ts"],"sourcesContent":["import { rect, rectTuple } from \"@vuu-ui/vuu-utils\";\nimport { LayoutModel } from \"../layout-reducer\";\nimport { getProps, typeOf } from \"../utils\";\nimport {\n BoxModel,\n getPosition,\n Measurements,\n Position,\n positionValues,\n RelativeDropPosition,\n} from \"./BoxModel\";\nimport { DragDropRect, DropPos, DropPosTab } from \"./dragDropTypes\";\nimport { DragState } from \"./DragState\";\n\nexport const isTabstrip = (dropTarget: DropTarget) =>\n dropTarget.pos.tab &&\n typeOf(dropTarget.component) === \"Stack\" &&\n dropTarget.pos.position.Header;\n\nconst { north, south, east, west } = positionValues;\nconst eastwest = east + west;\nconst northsouth = north + south;\n\nexport interface DropTargetProps {\n component: LayoutModel;\n pos: DropPos;\n clientRect: DragDropRect;\n nextDropTarget: DropTarget | null;\n}\n\nexport type GuideLine = [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number\n];\nexport interface TargetDropOutline {\n l: number;\n r: number;\n t: number;\n b: number;\n tabLeft?: number;\n tabWidth?: number;\n tabHeight?: number;\n guideLines?: GuideLine;\n}\n\nexport class DropTarget {\n private active: boolean;\n\n public box: unknown;\n public clientRect: DragDropRect;\n public component: LayoutModel;\n public dropRect: rectTuple | undefined;\n public nextDropTarget: DropTarget | null;\n public pos: DropPos;\n\n constructor({\n component,\n pos,\n clientRect /*, closeToTheEdge*/,\n nextDropTarget,\n }: DropTargetProps) {\n this.component = component;\n this.pos = pos;\n this.clientRect = clientRect;\n this.nextDropTarget = nextDropTarget;\n this.active = false;\n this.dropRect = undefined;\n }\n\n targetTabPos(tab: DropPosTab) {\n const { left: tabLeft, width: tabWidth, positionRelativeToTab } = tab;\n return positionRelativeToTab === RelativeDropPosition.BEFORE\n ? tabLeft\n : tabLeft + tabWidth;\n }\n\n /**\n * Determine what will be rendered by the dropTargetRenderer\n *\n * @param {*} lineWidth\n * @param {*} dragState\n * @returns {l, t, r, b, tabLeft, tabWidth, tabHeight}\n */\n getTargetDropOutline(\n lineWidth: number,\n dragState?: DragState\n ): TargetDropOutline {\n if (this.pos.tab) {\n return this.getDropTabOutline(lineWidth, this.pos.tab);\n } else if (dragState && dragState.hasIntrinsicSize()) {\n return this.getIntrinsicDropRect(dragState);\n } else {\n const [l, t, r, b] = this.getDropRectOutline(\n lineWidth,\n dragState\n ) as rectTuple;\n return { l, t, r, b };\n }\n }\n\n getDropTabOutline(lineWidth: number, tab: DropPosTab): TargetDropOutline {\n const {\n clientRect: { top, left, right, bottom, header },\n } = this;\n\n const inset = 0;\n const gap = Math.round(lineWidth / 2) + inset;\n\n const t = Math.round(top);\n const l = Math.round(left + gap);\n const r = Math.round(right - gap);\n const b = Math.round(bottom - gap);\n const tabLeft = this.targetTabPos(tab);\n const tabWidth = 60; // should really measure text\n const tabHeight = (header?.bottom ?? 0) - (header?.top ?? 0);\n return { l, t, r, b, tabLeft, tabWidth, tabHeight };\n }\n\n getIntrinsicDropRect(dragState: DragState): TargetDropOutline {\n const { pos, clientRect: rect } = this;\n\n const { x, y } = dragState;\n\n let height = dragState.intrinsicSize?.height ?? 0;\n let width = dragState.intrinsicSize?.height ?? 0;\n\n if (height && height > rect.height) {\n console.log(`DropTarget: we're going to blow the gaff`);\n height = rect.height;\n } else if (width && width > rect.width) {\n console.log(`DropTarget: we're going to blow the gaff`);\n width = rect.width;\n }\n\n const left = Math.min(\n rect.right - width,\n Math.max(rect.left, Math.round(pos.x - x.mousePct * width))\n );\n const top = Math.min(\n rect.bottom - height,\n Math.max(rect.top, Math.round(pos.y - y.mousePct * height))\n );\n const [l, t, r, b] = (this.dropRect = [\n left,\n top,\n left + width,\n top + height,\n ]);\n\n const guideLines: GuideLine = pos.position.EastOrWest\n ? [l, rect.top, l, rect.bottom, r, rect.top, r, rect.bottom]\n : [rect.left, t, rect.right, t, rect.left, b, rect.right, b];\n\n return { l, r, t, b, guideLines };\n }\n\n /**\n * @returns [left, top, right, bottom]\n */\n getDropRectOutline(lineWidth: number, dragState?: DragState) {\n const { pos, clientRect: rect } = this;\n const { width: suggestedWidth, height: suggestedHeight, position } = pos;\n\n const { width: intrinsicWidth, height: intrinsicHeight } =\n dragState?.intrinsicSize ?? {};\n const sizeHeight = intrinsicHeight ?? suggestedHeight ?? 0;\n const sizeWidth = intrinsicWidth ?? suggestedWidth ?? 0;\n\n this.dropRect = undefined;\n\n const { top: t, left: l, right: r, bottom: b } = rect;\n\n const inset = 0;\n const gap = Math.round(lineWidth / 2) + inset;\n\n switch (position) {\n case Position.North:\n case Position.Header: {\n const halfHeight = Math.round((b - t) / 2);\n const height = sizeHeight\n ? Math.min(halfHeight, Math.round(sizeHeight))\n : halfHeight;\n return sizeWidth && l + sizeWidth < r\n ? [l + gap, t + gap, l + sizeWidth - gap, t + gap + height] // need flex direction indicator\n : [l + gap, t + gap, r - gap, t + gap + height];\n }\n case Position.West: {\n const halfWidth = Math.round((r - l) / 2);\n const width = sizeWidth\n ? Math.min(halfWidth, Math.round(sizeWidth))\n : halfWidth;\n return sizeHeight && t + sizeHeight < b\n ? [l + gap, t + gap, l - gap + width, t + sizeHeight + gap] // need flex direction indicator\n : [l + gap, t + gap, l - gap + width, b - gap];\n }\n case Position.East: {\n const halfWidth = Math.round((r - l) / 2);\n const width = sizeWidth\n ? Math.min(halfWidth, Math.round(sizeWidth))\n : halfWidth;\n return sizeHeight && t + sizeHeight < b\n ? [r - gap - width, t + gap, r - gap, t + sizeHeight + gap] // need flex direction indicator\n : [r - gap - width, t + gap, r - gap, b - gap];\n }\n case Position.South: {\n const halfHeight = Math.round((b - t) / 2);\n const height = sizeHeight\n ? Math.min(halfHeight, Math.round(sizeHeight))\n : halfHeight;\n\n return sizeWidth && l + sizeWidth < r\n ? [l + gap, b - gap - height, l + sizeWidth - gap, b - gap] // need flex direction indicator\n : [l + gap, b - gap - height, r - gap, b - gap];\n }\n case Position.Centre: {\n return [l + gap, t + gap, r - gap, b - gap];\n }\n default:\n console.warn(`DropTarget does not recognize position ${position}`);\n return null;\n }\n }\n\n activate() {\n this.active = true;\n return this;\n }\n\n toArray(this: DropTarget) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let dropTarget: DropTarget | null = this;\n const dropTargets = [dropTarget];\n // eslint-disable-next-line no-cond-assign\n while ((dropTarget = dropTarget.nextDropTarget)) {\n dropTargets.push(dropTarget);\n }\n return dropTargets;\n }\n\n static getActiveDropTarget(dropTarget: DropTarget | null): DropTarget | null {\n return dropTarget === null\n ? null\n : dropTarget?.active\n ? dropTarget\n : DropTarget.getActiveDropTarget(dropTarget.nextDropTarget);\n }\n}\n\n// Initial entry to this method is always via the app (may be it should be *on* the app)\nexport function identifyDropTarget(\n x: number,\n y: number,\n rootLayout: LayoutModel,\n measurements: Measurements,\n intrinsicSize?: number,\n validDropTargets?: string[]\n) {\n let dropTarget = null;\n\n const allBoxesContainingPoint = BoxModel.allBoxesContainingPoint(\n rootLayout,\n measurements,\n x,\n y,\n validDropTargets\n );\n\n if (allBoxesContainingPoint.length) {\n const [component, ...containers] = allBoxesContainingPoint;\n const {\n \"data-path\": dataPath,\n path = dataPath,\n \"data-row-placeholder\": isRowPlaceholder,\n } = getProps(component);\n const clientRect = measurements[path];\n const placeholderOrientation =\n intrinsicSize && isRowPlaceholder ? \"row\" : undefined;\n const pos = getPosition(x, y, clientRect, placeholderOrientation);\n const box = measurements[path];\n\n const nextDropTarget = ([nextTarget, ...targets]: LayoutModel[]):\n | DropTarget\n | undefined => {\n if (pos.position?.Header || pos.closeToTheEdge) {\n const targetPosition = getTargetPosition(\n nextTarget,\n pos,\n box,\n measurements,\n x,\n y\n );\n if (targetPosition) {\n const [containerPos, clientRect] = targetPosition;\n\n return new DropTarget({\n component: nextTarget,\n pos: containerPos,\n clientRect,\n nextDropTarget: nextDropTarget(targets) ?? null,\n });\n } else if (targets.length) {\n return nextDropTarget(targets);\n }\n }\n };\n dropTarget = new DropTarget({\n component,\n pos,\n clientRect,\n nextDropTarget: nextDropTarget(containers) ?? null,\n }).activate();\n }\n\n return dropTarget;\n}\n\nfunction getTargetPosition(\n container: LayoutModel,\n { closeToTheEdge, position }: DropPos,\n box: rect,\n measurements: Measurements,\n x: number,\n y: number\n): [DropPos, DragDropRect] | undefined {\n if (!container || container.type === \"DraggableLayout\") {\n return;\n }\n\n const containingBox = measurements[container.props.path];\n const closeToTop = closeToTheEdge & positionValues.north;\n const closeToRight = closeToTheEdge & positionValues.east;\n const closeToBottom = closeToTheEdge & positionValues.south;\n const closeToLeft = closeToTheEdge & positionValues.west;\n\n const atTop =\n (closeToTop || position.Header) &&\n Math.round(box.top) === Math.round(containingBox.top);\n const atRight =\n closeToRight && Math.round(box.right) === Math.round(containingBox.right);\n const atBottom =\n closeToBottom &&\n Math.round(box.bottom) === Math.round(containingBox.bottom);\n const atLeft =\n closeToLeft && Math.round(box.left) === Math.round(containingBox.left);\n\n if (atTop || atRight || atBottom || atLeft) {\n const { \"data-path\": dataPath, path = dataPath } = container.props;\n const clientRect = measurements[path];\n const containerPos = getPosition(x, y, clientRect);\n\n // if its a VBox and we're close to left or right ...\n if (\n (isVBox(container) || isTabbedContainer(container)) &&\n closeToTheEdge & eastwest\n ) {\n containerPos.width = 120;\n return [containerPos, clientRect];\n }\n // if it's a HBox and we're close to top or bottom ...\n else if (\n (isHBox(container) || isTabbedContainer(container)) &&\n (position.Header || closeToTheEdge & northsouth)\n ) {\n containerPos.height = 120;\n return [containerPos, clientRect];\n }\n }\n}\n\nfunction isTabbedContainer(component: LayoutModel) {\n return typeOf(component) === \"Stack\";\n}\n\nfunction isVBox(component: LayoutModel) {\n return (\n typeOf(component) === \"Flexbox\" &&\n component.props.style.flexDirection === \"column\"\n );\n}\n\nfunction isHBox(component: LayoutModel) {\n return (\n typeOf(component) === \"Flexbox\" &&\n component.props.style.flexDirection === \"row\"\n );\n}\n"],"names":["rect","clientRect"],"mappings":"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"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { PopupService } from '@vuu-ui/vuu-popups';
|
|
3
|
+
import { RelativeDropPosition } from './BoxModel.js';
|
|
4
|
+
import { computeMenuPosition, DropMenu } from './DropMenu.js';
|
|
5
|
+
|
|
6
|
+
let _multiDropOptions = false;
|
|
7
|
+
let _hoverDropTarget = null;
|
|
8
|
+
let _shiftedTab = null;
|
|
9
|
+
const onHoverDropTarget = (dropTarget) => _hoverDropTarget = dropTarget;
|
|
10
|
+
const start = ([x, y]) => `M${x},${y}`;
|
|
11
|
+
const point = ([x, y]) => `L${x},${y}`;
|
|
12
|
+
const pathFromPoints = ([p1, ...points]) => `${start(p1)} ${points.map(point)}Z`;
|
|
13
|
+
const pathFromGuideLines = (guideLines) => {
|
|
14
|
+
if (guideLines) {
|
|
15
|
+
const [x1, y1, x2, y2, x3, y3, x4, y4] = guideLines;
|
|
16
|
+
return `M${x1},${y1} L${x2},${y2} M${x3},${y3} L${x4},${y4}`;
|
|
17
|
+
} else {
|
|
18
|
+
return "";
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
function insertSVGRoot() {
|
|
22
|
+
if (document.getElementById("hw-drag-canvas") === null) {
|
|
23
|
+
const root = document.getElementById("root");
|
|
24
|
+
const container = document.createElement("div");
|
|
25
|
+
container.id = "hw-drag-canvas";
|
|
26
|
+
container.style.cssText = `visibility:hidden;z-index:10;position:absolute;top:0px;left:0;right:0;bottom:0;background-color:transparent`;
|
|
27
|
+
container.innerHTML = `
|
|
28
|
+
<svg width="100%" height="100%" style="position: absolute;">
|
|
29
|
+
<path id="hw-drop-guides" style="fill: none; stroke: rgba(0, 0, 0, 0.3);stroke-dasharray: 2 3"/>
|
|
30
|
+
<path
|
|
31
|
+
id="vuu-drop-outline"
|
|
32
|
+
style="fill:rgba(0,0,255,.3);stroke:none;stroke-dasharray:4 2"
|
|
33
|
+
d="M300,132 L380,132 L380,100 L460,100 L460,132, L550,132 L550,350 L300,350z">
|
|
34
|
+
<animate
|
|
35
|
+
attributeName="d"
|
|
36
|
+
id="hw-drop-outline-animate"
|
|
37
|
+
begin="indefinite"
|
|
38
|
+
dur="300ms"
|
|
39
|
+
fill="freeze"
|
|
40
|
+
to="M255,33 L255,33,L255,1,L315,1,L315,1,L794,1,L794,164,L255,164Z"
|
|
41
|
+
/>
|
|
42
|
+
</path>
|
|
43
|
+
</svg>
|
|
44
|
+
`;
|
|
45
|
+
document.body.insertBefore(container, root);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
class DropTargetCanvas {
|
|
49
|
+
constructor() {
|
|
50
|
+
this.currentPath = null;
|
|
51
|
+
this.tabMode = null;
|
|
52
|
+
insertSVGRoot();
|
|
53
|
+
}
|
|
54
|
+
prepare(dragRect, tabMode = "full-view") {
|
|
55
|
+
const dragCanvas = document.getElementById("hw-drag-canvas");
|
|
56
|
+
if (dragCanvas) {
|
|
57
|
+
dragCanvas.style.visibility = "visible";
|
|
58
|
+
} else {
|
|
59
|
+
throw Error("DropTargetRenderer.prepare no drag canvas detected");
|
|
60
|
+
}
|
|
61
|
+
document.body.classList.add("drawing");
|
|
62
|
+
this.currentPath = null;
|
|
63
|
+
this.tabMode = tabMode;
|
|
64
|
+
const points = this.getPoints(0, 0, 0, 0);
|
|
65
|
+
const d = pathFromPoints(points);
|
|
66
|
+
const dropOutlinePath = document.getElementById("vuu-drop-outline");
|
|
67
|
+
dropOutlinePath?.setAttribute("d", d);
|
|
68
|
+
this.currentPath = d;
|
|
69
|
+
}
|
|
70
|
+
clear() {
|
|
71
|
+
_hoverDropTarget = null;
|
|
72
|
+
clearShiftedTab();
|
|
73
|
+
const dragCanvas = document.getElementById("hw-drag-canvas");
|
|
74
|
+
if (dragCanvas) {
|
|
75
|
+
dragCanvas.style.visibility = "hidden";
|
|
76
|
+
}
|
|
77
|
+
PopupService.hidePopup();
|
|
78
|
+
}
|
|
79
|
+
get hoverDropTarget() {
|
|
80
|
+
return _hoverDropTarget;
|
|
81
|
+
}
|
|
82
|
+
getPoints(x, y, width, height, tabLeft = 0, tabWidth = 0, tabHeight = 0) {
|
|
83
|
+
const tabOnly = this.tabMode === "tab-only";
|
|
84
|
+
if (tabWidth === 0) {
|
|
85
|
+
return [
|
|
86
|
+
[x, y + tabHeight],
|
|
87
|
+
[x, y + tabHeight],
|
|
88
|
+
[x, y],
|
|
89
|
+
[x + tabWidth, y],
|
|
90
|
+
[x + tabWidth, y],
|
|
91
|
+
[x + width, y],
|
|
92
|
+
[x + width, y + height],
|
|
93
|
+
[x, y + height]
|
|
94
|
+
];
|
|
95
|
+
} else if (tabOnly) {
|
|
96
|
+
const left = tabLeft;
|
|
97
|
+
return [
|
|
98
|
+
[left, y],
|
|
99
|
+
[left, y],
|
|
100
|
+
[left + tabWidth, y],
|
|
101
|
+
[left + tabWidth, y],
|
|
102
|
+
[left + tabWidth, y + tabHeight],
|
|
103
|
+
[left + tabWidth, y + tabHeight],
|
|
104
|
+
[left, y + tabHeight],
|
|
105
|
+
[left, y + tabHeight]
|
|
106
|
+
];
|
|
107
|
+
} else if (tabLeft === 0) {
|
|
108
|
+
return [
|
|
109
|
+
[x, y + tabHeight],
|
|
110
|
+
[x, y + tabHeight],
|
|
111
|
+
[x, y],
|
|
112
|
+
[x + tabWidth, y],
|
|
113
|
+
[x + tabWidth, y + tabHeight],
|
|
114
|
+
[x + width, y + tabHeight],
|
|
115
|
+
[x + width, y + height],
|
|
116
|
+
[x, y + height]
|
|
117
|
+
];
|
|
118
|
+
} else {
|
|
119
|
+
return [
|
|
120
|
+
[x, y + tabHeight],
|
|
121
|
+
[x + tabLeft, y + tabHeight],
|
|
122
|
+
[x + tabLeft, y],
|
|
123
|
+
[x + tabLeft, y],
|
|
124
|
+
[x + tabLeft, y + tabHeight],
|
|
125
|
+
[x + width, y + tabHeight],
|
|
126
|
+
[x + width, y + height],
|
|
127
|
+
[x, y + height]
|
|
128
|
+
];
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
draw(dropTarget, dragState) {
|
|
132
|
+
const sameDropTarget = false;
|
|
133
|
+
const wasMultiDrop = _multiDropOptions;
|
|
134
|
+
if (_hoverDropTarget !== null) {
|
|
135
|
+
this.drawTarget(_hoverDropTarget);
|
|
136
|
+
} else {
|
|
137
|
+
{
|
|
138
|
+
_multiDropOptions = dropTarget.nextDropTarget != null;
|
|
139
|
+
if (dropTarget.pos.tab) {
|
|
140
|
+
moveExistingTabs(dropTarget);
|
|
141
|
+
} else if (_shiftedTab) {
|
|
142
|
+
clearShiftedTab();
|
|
143
|
+
}
|
|
144
|
+
this.drawTarget(dropTarget, dragState);
|
|
145
|
+
}
|
|
146
|
+
if (_multiDropOptions) {
|
|
147
|
+
const [left, top, orientation] = computeMenuPosition(dropTarget);
|
|
148
|
+
if (!wasMultiDrop || !sameDropTarget) {
|
|
149
|
+
const component = /* @__PURE__ */ jsx(
|
|
150
|
+
DropMenu,
|
|
151
|
+
{
|
|
152
|
+
dropTarget,
|
|
153
|
+
onHover: onHoverDropTarget,
|
|
154
|
+
orientation
|
|
155
|
+
}
|
|
156
|
+
);
|
|
157
|
+
PopupService.showPopup({
|
|
158
|
+
left,
|
|
159
|
+
top,
|
|
160
|
+
component
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
} else {
|
|
164
|
+
PopupService.hidePopup();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
drawTarget(dropTarget, dragState) {
|
|
169
|
+
const lineWidth = 6;
|
|
170
|
+
const targetDropOutline = dropTarget.getTargetDropOutline(
|
|
171
|
+
lineWidth,
|
|
172
|
+
dragState
|
|
173
|
+
);
|
|
174
|
+
if (targetDropOutline) {
|
|
175
|
+
const { l, t, r, b, tabLeft, tabWidth, tabHeight, guideLines } = targetDropOutline;
|
|
176
|
+
const w = r - l;
|
|
177
|
+
const h = b - t;
|
|
178
|
+
if (this.currentPath) {
|
|
179
|
+
const path2 = document.getElementById("vuu-drop-outline");
|
|
180
|
+
path2?.setAttribute("d", this.currentPath);
|
|
181
|
+
}
|
|
182
|
+
const points = this.getPoints(l, t, w, h, tabLeft, tabWidth, tabHeight);
|
|
183
|
+
const path = pathFromPoints(points);
|
|
184
|
+
const animation = document.getElementById(
|
|
185
|
+
"hw-drop-outline-animate"
|
|
186
|
+
);
|
|
187
|
+
animation?.setAttribute("to", path);
|
|
188
|
+
animation?.beginElement();
|
|
189
|
+
this.currentPath = path;
|
|
190
|
+
const dropGuidePath = document.getElementById("hw-drop-guides");
|
|
191
|
+
dropGuidePath?.setAttribute("d", pathFromGuideLines(guideLines));
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
const cssShiftRight = "transition:margin-left .4s ease-out;margin-left: 63px";
|
|
196
|
+
const cssShiftBack = "transition:margin-left .4s ease-out;margin-left: 0px";
|
|
197
|
+
function moveExistingTabs(dropTarget) {
|
|
198
|
+
const { AFTER, BEFORE } = RelativeDropPosition;
|
|
199
|
+
const {
|
|
200
|
+
clientRect: { Stack },
|
|
201
|
+
pos: {
|
|
202
|
+
// tab: { index: tabIndex, positionRelativeToTab }
|
|
203
|
+
tab
|
|
204
|
+
}
|
|
205
|
+
} = dropTarget;
|
|
206
|
+
const { id } = dropTarget.component.props;
|
|
207
|
+
let tabEl = null;
|
|
208
|
+
if (Stack && tab && tab.positionRelativeToTab !== AFTER) {
|
|
209
|
+
const tabOffset = tab.positionRelativeToTab === BEFORE ? 1 : 2;
|
|
210
|
+
const selector = `:scope .hwTabstrip > .hwTabstrip-inner > .hwTab:nth-child(${tab.index + tabOffset})`;
|
|
211
|
+
tabEl = document.getElementById(id)?.querySelector(selector);
|
|
212
|
+
if (tabEl) {
|
|
213
|
+
if (_shiftedTab === null || _shiftedTab !== tabEl) {
|
|
214
|
+
tabEl.style.cssText = cssShiftRight;
|
|
215
|
+
if (_shiftedTab) {
|
|
216
|
+
_shiftedTab.style.cssText = cssShiftBack;
|
|
217
|
+
}
|
|
218
|
+
_shiftedTab = tabEl;
|
|
219
|
+
}
|
|
220
|
+
} else {
|
|
221
|
+
clearShiftedTab();
|
|
222
|
+
}
|
|
223
|
+
} else if (tab?.positionRelativeToTab === BEFORE) {
|
|
224
|
+
if (_shiftedTab === null) {
|
|
225
|
+
const selector = ".vuuHeader-title";
|
|
226
|
+
tabEl = document.getElementById(id)?.querySelector(selector);
|
|
227
|
+
tabEl.style.cssText = cssShiftRight;
|
|
228
|
+
_shiftedTab = tabEl;
|
|
229
|
+
}
|
|
230
|
+
} else {
|
|
231
|
+
clearShiftedTab();
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
function clearShiftedTab() {
|
|
235
|
+
if (_shiftedTab) {
|
|
236
|
+
_shiftedTab.style.cssText = cssShiftBack;
|
|
237
|
+
_shiftedTab = null;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export { DropTargetCanvas as default };
|
|
242
|
+
//# sourceMappingURL=DropTargetRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DropTargetRenderer.js","sources":["../../src/drag-drop/DropTargetRenderer.tsx"],"sourcesContent":["import { PopupService } from \"@vuu-ui/vuu-popups\";\nimport { RelativeDropPosition } from \"./BoxModel\";\nimport { DragDropRect } from \"./dragDropTypes\";\nimport { DragState } from \"./DragState\";\nimport { computeMenuPosition, DropMenu } from \"./DropMenu\";\nimport { DropTarget, GuideLine } from \"./DropTarget\";\n\ntype Point = [number, number];\ntype TabMode = \"full-view\" | \"tab-only\";\n\nlet _multiDropOptions = false;\nlet _hoverDropTarget: DropTarget | null = null;\nlet _shiftedTab: HTMLElement | null = null;\n\nconst onHoverDropTarget = (dropTarget: DropTarget | null) =>\n (_hoverDropTarget = dropTarget);\n\nconst start = ([x, y]: Point) => `M${x},${y}`;\nconst point = ([x, y]: Point) => `L${x},${y}`;\nconst pathFromPoints = ([p1, ...points]: Point[]) =>\n `${start(p1)} ${points.map(point)}Z`;\n\nconst pathFromGuideLines = (guideLines?: GuideLine) => {\n if (guideLines) {\n const [x1, y1, x2, y2, x3, y3, x4, y4] = guideLines;\n return `M${x1},${y1} L${x2},${y2} M${x3},${y3} L${x4},${y4}`;\n } else {\n return \"\";\n }\n};\n\nfunction insertSVGRoot() {\n if (document.getElementById(\"hw-drag-canvas\") === null) {\n const root = document.getElementById(\"root\");\n const container = document.createElement(\"div\");\n container.id = \"hw-drag-canvas\";\n container.style.cssText = `visibility:hidden;z-index:10;position:absolute;top:0px;left:0;right:0;bottom:0;background-color:transparent`;\n container.innerHTML = `\n <svg width=\"100%\" height=\"100%\" style=\"position: absolute;\">\n <path id=\"hw-drop-guides\" style=\"fill: none; stroke: rgba(0, 0, 0, 0.3);stroke-dasharray: 2 3\"/>\n <path\n id=\"vuu-drop-outline\"\n style=\"fill:rgba(0,0,255,.3);stroke:none;stroke-dasharray:4 2\"\n d=\"M300,132 L380,132 L380,100 L460,100 L460,132, L550,132 L550,350 L300,350z\">\n <animate\n attributeName=\"d\"\n id=\"hw-drop-outline-animate\"\n begin=\"indefinite\"\n dur=\"300ms\"\n fill=\"freeze\"\n to=\"M255,33 L255,33,L255,1,L315,1,L315,1,L794,1,L794,164,L255,164Z\"\n />\n </path>\n </svg>\n `;\n document.body.insertBefore(container, root);\n }\n}\nexport default class DropTargetCanvas {\n private currentPath: string | null = null;\n private tabMode: TabMode | null = null;\n\n constructor() {\n insertSVGRoot();\n }\n\n prepare(dragRect: DragDropRect, tabMode: TabMode = \"full-view\") {\n // don't do this on body\n const dragCanvas = document.getElementById(\"hw-drag-canvas\");\n if (dragCanvas) {\n dragCanvas.style.visibility = \"visible\";\n } else {\n throw Error(\"DropTargetRenderer.prepare no drag canvas detected\");\n }\n document.body.classList.add(\"drawing\");\n this.currentPath = null;\n this.tabMode = tabMode;\n\n const points = this.getPoints(0, 0, 0, 0);\n // const points = this.getPoints(left, top, width, height);\n const d = pathFromPoints(points);\n\n const dropOutlinePath = document.getElementById(\"vuu-drop-outline\");\n dropOutlinePath?.setAttribute(\"d\", d);\n this.currentPath = d;\n }\n\n clear() {\n // don't do this on body\n _hoverDropTarget = null;\n clearShiftedTab();\n const dragCanvas = document.getElementById(\"hw-drag-canvas\");\n if (dragCanvas) {\n dragCanvas.style.visibility = \"hidden\";\n }\n PopupService.hidePopup();\n }\n\n get hoverDropTarget() {\n return _hoverDropTarget;\n }\n\n getPoints(\n x: number,\n y: number,\n width: number,\n height: number,\n tabLeft = 0,\n tabWidth = 0,\n tabHeight = 0\n ): Point[] {\n const tabOnly = this.tabMode === \"tab-only\";\n if (tabWidth === 0) {\n return [\n [x, y + tabHeight],\n [x, y + tabHeight],\n [x, y],\n [x + tabWidth, y],\n [x + tabWidth, y],\n [x + width, y],\n [x + width, y + height],\n [x, y + height],\n ];\n } else if (tabOnly) {\n const left = tabLeft;\n return [\n [left, y],\n [left, y],\n [left + tabWidth, y],\n [left + tabWidth, y],\n [left + tabWidth, y + tabHeight],\n [left + tabWidth, y + tabHeight],\n [left, y + tabHeight],\n [left, y + tabHeight],\n ];\n } else if (tabLeft === 0) {\n return [\n [x, y + tabHeight],\n [x, y + tabHeight],\n [x, y],\n [x + tabWidth, y],\n [x + tabWidth, y + tabHeight],\n [x + width, y + tabHeight],\n [x + width, y + height],\n [x, y + height],\n ];\n } else {\n return [\n [x, y + tabHeight],\n [x + tabLeft, y + tabHeight],\n [x + tabLeft, y],\n [x + tabLeft, y],\n [x + tabLeft, y + tabHeight],\n [x + width, y + tabHeight],\n [x + width, y + height],\n [x, y + height],\n ];\n }\n }\n\n draw(dropTarget: DropTarget, dragState: DragState) {\n const sameDropTarget = false;\n const wasMultiDrop = _multiDropOptions;\n\n if (_hoverDropTarget !== null) {\n this.drawTarget(_hoverDropTarget);\n } else {\n if (sameDropTarget === false) {\n _multiDropOptions = dropTarget.nextDropTarget != null;\n if (dropTarget.pos.tab) {\n moveExistingTabs(dropTarget);\n } else if (_shiftedTab) {\n clearShiftedTab();\n }\n this.drawTarget(dropTarget, dragState);\n }\n\n if (_multiDropOptions) {\n const [left, top, orientation] = computeMenuPosition(dropTarget);\n if (!wasMultiDrop || !sameDropTarget) {\n const component = (\n <DropMenu\n dropTarget={dropTarget}\n onHover={onHoverDropTarget}\n orientation={orientation}\n />\n );\n PopupService.showPopup({\n left,\n top,\n component,\n });\n }\n } else {\n PopupService.hidePopup();\n }\n }\n }\n\n drawTarget(dropTarget: DropTarget, dragState?: DragState) {\n const lineWidth = 6;\n\n const targetDropOutline = dropTarget.getTargetDropOutline(\n lineWidth,\n dragState\n );\n\n if (targetDropOutline) {\n const { l, t, r, b, tabLeft, tabWidth, tabHeight, guideLines } =\n targetDropOutline;\n const w = r - l;\n const h = b - t;\n\n if (this.currentPath) {\n const path = document.getElementById(\"vuu-drop-outline\");\n path?.setAttribute(\"d\", this.currentPath);\n }\n\n const points = this.getPoints(l, t, w, h, tabLeft, tabWidth, tabHeight);\n const path = pathFromPoints(points);\n const animation = document.getElementById(\n \"hw-drop-outline-animate\"\n ) as unknown as SVGAnimateElement;\n animation?.setAttribute(\"to\", path);\n animation?.beginElement();\n this.currentPath = path;\n\n const dropGuidePath = document.getElementById(\"hw-drop-guides\");\n dropGuidePath?.setAttribute(\"d\", pathFromGuideLines(guideLines));\n }\n }\n}\n\nconst cssShiftRight = \"transition:margin-left .4s ease-out;margin-left: 63px\";\nconst cssShiftBack = \"transition:margin-left .4s ease-out;margin-left: 0px\";\n\nfunction moveExistingTabs(dropTarget: DropTarget) {\n const { AFTER, BEFORE } = RelativeDropPosition;\n const {\n clientRect: { Stack },\n pos: {\n // tab: { index: tabIndex, positionRelativeToTab }\n tab,\n },\n } = dropTarget;\n\n const { id } = dropTarget.component.props;\n let tabEl = null;\n // console.log(`tabPos = ${tabPos} (width=${tabWidth}) x=${x}`)\n if (Stack && tab && tab.positionRelativeToTab !== AFTER) {\n const tabOffset = tab.positionRelativeToTab === BEFORE ? 1 : 2;\n const selector = `:scope .hwTabstrip > .hwTabstrip-inner > .hwTab:nth-child(${\n tab.index + tabOffset\n })`;\n tabEl = document.getElementById(id)?.querySelector(selector) as HTMLElement;\n if (tabEl) {\n if (_shiftedTab === null || _shiftedTab !== tabEl) {\n tabEl.style.cssText = cssShiftRight;\n if (_shiftedTab) {\n _shiftedTab.style.cssText = cssShiftBack;\n }\n _shiftedTab = tabEl;\n }\n } else {\n clearShiftedTab();\n }\n } else if (tab?.positionRelativeToTab === BEFORE) {\n if (_shiftedTab === null) {\n const selector = \".vuuHeader-title\";\n tabEl = document\n .getElementById(id)\n ?.querySelector(selector) as HTMLElement;\n tabEl.style.cssText = cssShiftRight;\n _shiftedTab = tabEl;\n }\n } else {\n clearShiftedTab();\n }\n}\n\nfunction clearShiftedTab() {\n if (_shiftedTab) {\n _shiftedTab.style.cssText = cssShiftBack;\n _shiftedTab = null;\n }\n}\n"],"names":["path"],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var flexboxCss = ":root {\n --hw-space-unit: 4px;\n --hw-flex-gap: 3;\n --hw-fluid-grid-col-bg: rgba(200, 200, 200, 0.3);\n}\n\n.hwFlexbox {\n background-color: var(--container1-background);\n box-sizing: border-box;\n display: flex;\n gap: calc(var(--spacing) * var(--space));\n min-height: 0;\n min-width: 0;\n overflow: hidden;\n}\n\n.hwFlexbox-column {\n flex-direction: column;\n}\n\n.hwFlexbox-row {\n flex-direction: row;\n}\n\n.hwFlexbox > .Splitter {\n flex-basis: auto;\n flex-grow: 0;\n flex-shrink: 0;\n}\n\n.hwFlexbox.full-page {\n height: 100vh;\n width: 100vw;\n}\n\n.flex-fill {\n border-color: red;\n flex: 0;\n flex-grow: 1;\n flex-shrink: 1;\n}\n\n.vuuView.flex-fill {\n border-color: red;\n}\n";
|
|
2
|
+
|
|
3
|
+
export { flexboxCss as default };
|
|
4
|
+
//# sourceMappingURL=Flexbox.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Flexbox.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useForkRef } from '@salt-ds/core';
|
|
3
|
+
import { useComponentCssInjection } from '@salt-ds/styles';
|
|
4
|
+
import { useWindow } from '@salt-ds/window';
|
|
5
|
+
import cx from 'clsx';
|
|
6
|
+
import { forwardRef } from 'react';
|
|
7
|
+
import { useSplitterResizing } from './useSplitterResizing.js';
|
|
8
|
+
import flexboxCss from './Flexbox.css.js';
|
|
9
|
+
|
|
10
|
+
const classBase = "hwFlexbox";
|
|
11
|
+
const Flexbox = forwardRef(function Flexbox2(props, ref) {
|
|
12
|
+
const {
|
|
13
|
+
breakPoints,
|
|
14
|
+
children,
|
|
15
|
+
// cols: colsProp,
|
|
16
|
+
column,
|
|
17
|
+
className: classNameProp,
|
|
18
|
+
flexFill,
|
|
19
|
+
gap,
|
|
20
|
+
fullPage,
|
|
21
|
+
id,
|
|
22
|
+
onSplitterMoved,
|
|
23
|
+
resizeable,
|
|
24
|
+
row,
|
|
25
|
+
spacing,
|
|
26
|
+
splitterSize,
|
|
27
|
+
style,
|
|
28
|
+
...rest
|
|
29
|
+
} = props;
|
|
30
|
+
const targetWindow = useWindow();
|
|
31
|
+
useComponentCssInjection({
|
|
32
|
+
testId: "vuu-flexbox",
|
|
33
|
+
css: flexboxCss,
|
|
34
|
+
window: targetWindow
|
|
35
|
+
});
|
|
36
|
+
const { content, rootRef } = useSplitterResizing({
|
|
37
|
+
children,
|
|
38
|
+
// cols: colsProp,
|
|
39
|
+
onSplitterMoved,
|
|
40
|
+
style
|
|
41
|
+
});
|
|
42
|
+
const className = cx(classBase, classNameProp, {
|
|
43
|
+
[`${classBase}-column`]: column,
|
|
44
|
+
[`${classBase}-row`]: row,
|
|
45
|
+
"flex-fill": flexFill,
|
|
46
|
+
"full-page": fullPage
|
|
47
|
+
});
|
|
48
|
+
return /* @__PURE__ */ jsx(
|
|
49
|
+
"div",
|
|
50
|
+
{
|
|
51
|
+
...rest,
|
|
52
|
+
className,
|
|
53
|
+
"data-resizeable": resizeable || void 0,
|
|
54
|
+
id,
|
|
55
|
+
ref: useForkRef(rootRef, ref),
|
|
56
|
+
style: {
|
|
57
|
+
...style,
|
|
58
|
+
gap,
|
|
59
|
+
"--spacing": spacing
|
|
60
|
+
},
|
|
61
|
+
children: content
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
});
|
|
65
|
+
Flexbox.displayName = "Flexbox";
|
|
66
|
+
|
|
67
|
+
export { Flexbox as default };
|
|
68
|
+
//# sourceMappingURL=Flexbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Flexbox.js","sources":["../../src/flexbox/Flexbox.tsx"],"sourcesContent":["import { useForkRef } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\nimport { CSSProperties, ForwardedRef, forwardRef } from \"react\";\nimport { FlexboxProps } from \"./flexboxTypes\";\nimport { useSplitterResizing } from \"./useSplitterResizing\";\n\nimport flexboxCss from \"./Flexbox.css\";\n\nconst classBase = \"hwFlexbox\";\n\nconst Flexbox = forwardRef(function Flexbox(\n props: FlexboxProps,\n ref: ForwardedRef<HTMLDivElement>\n) {\n const {\n breakPoints,\n children,\n // cols: colsProp,\n column,\n className: classNameProp,\n flexFill,\n gap,\n fullPage,\n id,\n onSplitterMoved,\n resizeable,\n row,\n spacing,\n splitterSize,\n style,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-flexbox\",\n css: flexboxCss,\n window: targetWindow,\n });\n\n const { content, rootRef } = useSplitterResizing({\n children,\n // cols: colsProp,\n onSplitterMoved,\n style,\n });\n\n const className = cx(classBase, classNameProp, {\n [`${classBase}-column`]: column,\n [`${classBase}-row`]: row,\n \"flex-fill\": flexFill,\n \"full-page\": fullPage,\n });\n\n return (\n <div\n {...rest}\n className={className}\n // data-cols={cols}\n data-resizeable={resizeable || undefined}\n id={id}\n ref={useForkRef(rootRef, ref)}\n style={\n {\n ...style,\n gap,\n \"--spacing\": spacing,\n } as CSSProperties\n }\n >\n {content}\n </div>\n );\n});\nFlexbox.displayName = \"Flexbox\";\n\nexport default Flexbox;\n"],"names":["Flexbox"],"mappings":";;;;;;;;;AAUA,MAAM,SAAY,GAAA,WAAA,CAAA;AAElB,MAAM,OAAU,GAAA,UAAA,CAAW,SAASA,QAAAA,CAClC,OACA,GACA,EAAA;AACA,EAAM,MAAA;AAAA,IACJ,WAAA;AAAA,IACA,QAAA;AAAA;AAAA,IAEA,MAAA;AAAA,IACA,SAAW,EAAA,aAAA;AAAA,IACX,QAAA;AAAA,IACA,GAAA;AAAA,IACA,QAAA;AAAA,IACA,EAAA;AAAA,IACA,eAAA;AAAA,IACA,UAAA;AAAA,IACA,GAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG,IAAA;AAAA,GACD,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,aAAA;AAAA,IACR,GAAK,EAAA,UAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,MAAM,EAAE,OAAA,EAAS,OAAQ,EAAA,GAAI,mBAAoB,CAAA;AAAA,IAC/C,QAAA;AAAA;AAAA,IAEA,eAAA;AAAA,IACA,KAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,SAAA,GAAY,EAAG,CAAA,SAAA,EAAW,aAAe,EAAA;AAAA,IAC7C,CAAC,CAAA,EAAG,SAAS,CAAA,OAAA,CAAS,GAAG,MAAA;AAAA,IACzB,CAAC,CAAA,EAAG,SAAS,CAAA,IAAA,CAAM,GAAG,GAAA;AAAA,IACtB,WAAa,EAAA,QAAA;AAAA,IACb,WAAa,EAAA,QAAA;AAAA,GACd,CAAA,CAAA;AAED,EACE,uBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,SAAA;AAAA,MAEA,mBAAiB,UAAc,IAAA,KAAA,CAAA;AAAA,MAC/B,EAAA;AAAA,MACA,GAAA,EAAK,UAAW,CAAA,OAAA,EAAS,GAAG,CAAA;AAAA,MAC5B,KACE,EAAA;AAAA,QACE,GAAG,KAAA;AAAA,QACH,GAAA;AAAA,QACA,WAAa,EAAA,OAAA;AAAA,OACf;AAAA,MAGD,QAAA,EAAA,OAAA;AAAA,KAAA;AAAA,GACH,CAAA;AAEJ,CAAC,EAAA;AACD,OAAA,CAAQ,WAAc,GAAA,SAAA;;;;"}
|