@vuu-ui/vuu-layout 2.1.18 → 2.1.19-beta.2
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/package.json +15 -18
- package/src/Component.js +14 -0
- package/src/LayoutContainer.css.js +24 -0
- package/src/LayoutContainer.js +26 -0
- package/src/debug.js +16 -0
- package/src/dock-layout/DockLayout.css.js +36 -0
- package/src/dock-layout/DockLayout.js +43 -0
- package/src/dock-layout/Drawer.css.js +150 -0
- package/src/dock-layout/Drawer.js +82 -0
- package/src/dock-layout/index.js +2 -0
- package/src/drag-drop/BoxModel.js +337 -0
- package/src/drag-drop/DragState.js +119 -0
- package/src/drag-drop/Draggable.js +140 -0
- package/src/drag-drop/DropTarget.js +286 -0
- package/src/drag-drop/DropTargetRenderer.js +275 -0
- package/src/drag-drop/dragDropTypes.js +0 -0
- package/src/drag-drop/index.js +3 -0
- package/src/flexbox/Flexbox.css.js +45 -0
- package/src/flexbox/Flexbox.js +45 -0
- package/src/flexbox/FlexboxLayout.js +27 -0
- package/src/flexbox/Splitter.css.js +57 -0
- package/src/flexbox/Splitter.js +112 -0
- package/src/flexbox/flexbox-utils.js +92 -0
- package/src/flexbox/flexboxTypes.js +0 -0
- package/src/flexbox/index.js +2 -0
- package/src/flexbox/useSplitterResizing.js +181 -0
- package/src/index.js +20 -0
- package/src/layout-action.js +20 -0
- package/src/layout-header/ActionButton.js +15 -0
- package/src/layout-header/Header.css.js +32 -0
- package/src/layout-header/Header.js +99 -0
- package/src/layout-header/index.js +1 -0
- package/src/layout-header/useHeader.js +76 -0
- package/src/layout-provider/LayoutProvider.js +242 -0
- package/src/layout-provider/LayoutProviderContext.js +13 -0
- package/src/layout-provider/index.js +2 -0
- package/src/layout-provider/useLayoutDragDrop.js +147 -0
- package/src/layout-reducer/flexUtils.js +186 -0
- package/src/layout-reducer/index.js +4 -0
- package/src/layout-reducer/insert-layout-element.js +179 -0
- package/src/layout-reducer/layout-reducer.js +121 -0
- package/src/layout-reducer/layoutTypes.js +34 -0
- package/src/layout-reducer/layoutUtils.js +178 -0
- package/src/layout-reducer/move-layout-element.js +18 -0
- package/src/layout-reducer/remove-layout-element.js +161 -0
- package/src/layout-reducer/replace-layout-element.js +70 -0
- package/src/layout-reducer/resize-flex-children.js +48 -0
- package/src/layout-reducer/wrap-layout-element.js +134 -0
- package/src/layout-view/View.css.js +76 -0
- package/src/layout-view/View.js +116 -0
- package/src/layout-view/useView.js +69 -0
- package/src/layout-view/useViewBroadcastChannel.js +29 -0
- package/src/layout-view/useViewResize.js +27 -0
- package/src/layout-view/viewTypes.js +0 -0
- package/src/layout-view-actions/ViewContext.js +11 -0
- package/src/layout-view-actions/useViewActionDispatcher.js +116 -0
- package/src/layout-view-actions/useViewContributions.js +31 -0
- package/src/palette/Palette.css.js +31 -0
- package/src/palette/Palette.js +85 -0
- package/src/palette/index.js +1 -0
- package/src/placeholder/LayoutStartPanel.css.js +35 -0
- package/src/placeholder/LayoutStartPanel.js +57 -0
- package/src/placeholder/Placeholder.css.js +20 -0
- package/src/placeholder/Placeholder.js +33 -0
- package/src/placeholder/index.js +1 -0
- package/src/responsive/index.js +2 -0
- package/src/responsive/measureMinimumNodeSize.js +24 -0
- package/src/responsive/useResizeObserver.js +109 -0
- package/src/responsive/utils.js +27 -0
- package/src/stack/Stack.css.js +44 -0
- package/src/stack/Stack.js +98 -0
- package/src/stack/StackLayout.js +116 -0
- package/src/stack/index.js +3 -0
- package/src/stack/stackTypes.js +0 -0
- package/src/tabs/TabPanel.css.js +17 -0
- package/src/tabs/TabPanel.js +11 -0
- package/src/tabs/index.js +1 -0
- package/src/tools/config-wrapper/ConfigWrapper.js +55 -0
- package/src/tools/config-wrapper/index.js +1 -0
- package/src/tools/devtools-box/layout-configurator.css.js +113 -0
- package/src/tools/devtools-tree/layout-tree-viewer.css.js +17 -0
- package/src/tools/index.js +3 -0
- package/src/use-persistent-state.js +43 -0
- package/src/utils/index.js +5 -0
- package/src/utils/pathUtils.js +212 -0
- package/src/utils/propUtils.js +15 -0
- package/src/utils/refUtils.js +5 -0
- package/src/utils/styleUtils.js +9 -0
- package/src/utils/typeOf.js +15 -0
- package/types/dock-layout/DockLayout.d.ts +4 -4
- package/types/dock-layout/Drawer.d.ts +4 -4
- package/types/drag-drop/BoxModel.d.ts +7 -7
- package/types/flexbox/FlexboxLayout.d.ts +4 -4
- package/types/flexbox/Splitter.d.ts +1 -1
- package/types/layout-reducer/layoutUtils.d.ts +1 -1
- package/types/layout-reducer/remove-layout-element.d.ts +1 -1
- package/types/layout-reducer/replace-layout-element.d.ts +2 -2
- package/types/layout-reducer/resize-flex-children.d.ts +2 -2
- package/types/layout-view/useView.d.ts +1 -1
- package/types/placeholder/Placeholder.d.ts +4 -4
- package/types/responsive/overflowUtils.d.ts +2 -2
- package/types/stack/StackLayout.d.ts +4 -4
- package/types/tools/devtools-box/layout-configurator.d.ts +26 -26
- package/types/tools/devtools-tree/layout-tree-viewer.d.ts +2 -2
- package/types/utils/pathUtils.d.ts +1 -1
- package/cjs/Component.js +0 -14
- package/cjs/Component.js.map +0 -1
- package/cjs/LayoutContainer.css.js +0 -6
- package/cjs/LayoutContainer.css.js.map +0 -1
- package/cjs/LayoutContainer.js +0 -33
- package/cjs/LayoutContainer.js.map +0 -1
- package/cjs/dock-layout/DockLayout.css.js +0 -6
- package/cjs/dock-layout/DockLayout.css.js.map +0 -1
- package/cjs/dock-layout/DockLayout.js +0 -41
- package/cjs/dock-layout/DockLayout.js.map +0 -1
- package/cjs/dock-layout/Drawer.css.js +0 -6
- package/cjs/dock-layout/Drawer.css.js.map +0 -1
- package/cjs/dock-layout/Drawer.js +0 -95
- package/cjs/dock-layout/Drawer.js.map +0 -1
- package/cjs/drag-drop/BoxModel.js +0 -416
- package/cjs/drag-drop/BoxModel.js.map +0 -1
- package/cjs/drag-drop/DragState.js +0 -161
- package/cjs/drag-drop/DragState.js.map +0 -1
- package/cjs/drag-drop/Draggable.js +0 -192
- package/cjs/drag-drop/Draggable.js.map +0 -1
- package/cjs/drag-drop/DropTarget.js +0 -257
- package/cjs/drag-drop/DropTarget.js.map +0 -1
- package/cjs/drag-drop/DropTargetRenderer.js +0 -218
- package/cjs/drag-drop/DropTargetRenderer.js.map +0 -1
- package/cjs/flexbox/Flexbox.css.js +0 -6
- package/cjs/flexbox/Flexbox.css.js.map +0 -1
- package/cjs/flexbox/Flexbox.js +0 -69
- package/cjs/flexbox/Flexbox.js.map +0 -1
- package/cjs/flexbox/FlexboxLayout.js +0 -30
- package/cjs/flexbox/FlexboxLayout.js.map +0 -1
- package/cjs/flexbox/Splitter.css.js +0 -6
- package/cjs/flexbox/Splitter.css.js.map +0 -1
- package/cjs/flexbox/Splitter.js +0 -122
- package/cjs/flexbox/Splitter.js.map +0 -1
- package/cjs/flexbox/flexbox-utils.js +0 -95
- package/cjs/flexbox/flexbox-utils.js.map +0 -1
- package/cjs/flexbox/useSplitterResizing.js +0 -197
- package/cjs/flexbox/useSplitterResizing.js.map +0 -1
- package/cjs/index.js +0 -122
- package/cjs/index.js.map +0 -1
- package/cjs/layout-action.js +0 -24
- package/cjs/layout-action.js.map +0 -1
- package/cjs/layout-header/Header.css.js +0 -6
- package/cjs/layout-header/Header.css.js.map +0 -1
- package/cjs/layout-header/Header.js +0 -152
- package/cjs/layout-header/Header.js.map +0 -1
- package/cjs/layout-header/useHeader.js +0 -85
- package/cjs/layout-header/useHeader.js.map +0 -1
- package/cjs/layout-provider/LayoutProvider.js +0 -304
- package/cjs/layout-provider/LayoutProvider.js.map +0 -1
- package/cjs/layout-provider/LayoutProviderContext.js +0 -23
- package/cjs/layout-provider/LayoutProviderContext.js.map +0 -1
- package/cjs/layout-provider/useLayoutDragDrop.js +0 -177
- package/cjs/layout-provider/useLayoutDragDrop.js.map +0 -1
- package/cjs/layout-reducer/flexUtils.js +0 -227
- package/cjs/layout-reducer/flexUtils.js.map +0 -1
- package/cjs/layout-reducer/insert-layout-element.js +0 -286
- package/cjs/layout-reducer/insert-layout-element.js.map +0 -1
- package/cjs/layout-reducer/layout-reducer.js +0 -202
- package/cjs/layout-reducer/layout-reducer.js.map +0 -1
- package/cjs/layout-reducer/layoutTypes.js +0 -40
- package/cjs/layout-reducer/layoutTypes.js.map +0 -1
- package/cjs/layout-reducer/layoutUtils.js +0 -237
- package/cjs/layout-reducer/layoutUtils.js.map +0 -1
- package/cjs/layout-reducer/move-layout-element.js +0 -31
- package/cjs/layout-reducer/move-layout-element.js.map +0 -1
- package/cjs/layout-reducer/remove-layout-element.js +0 -237
- package/cjs/layout-reducer/remove-layout-element.js.map +0 -1
- package/cjs/layout-reducer/replace-layout-element.js +0 -96
- package/cjs/layout-reducer/replace-layout-element.js.map +0 -1
- package/cjs/layout-reducer/resize-flex-children.js +0 -62
- package/cjs/layout-reducer/resize-flex-children.js.map +0 -1
- package/cjs/layout-reducer/wrap-layout-element.js +0 -211
- package/cjs/layout-reducer/wrap-layout-element.js.map +0 -1
- package/cjs/layout-view/View.css.js +0 -6
- package/cjs/layout-view/View.css.js.map +0 -1
- package/cjs/layout-view/View.js +0 -160
- package/cjs/layout-view/View.js.map +0 -1
- package/cjs/layout-view/useView.js +0 -75
- package/cjs/layout-view/useView.js.map +0 -1
- package/cjs/layout-view/useViewBroadcastChannel.js +0 -35
- package/cjs/layout-view/useViewBroadcastChannel.js.map +0 -1
- package/cjs/layout-view/useViewResize.js +0 -42
- package/cjs/layout-view/useViewResize.js.map +0 -1
- package/cjs/layout-view-actions/ViewContext.js +0 -16
- package/cjs/layout-view-actions/ViewContext.js.map +0 -1
- package/cjs/layout-view-actions/useViewActionDispatcher.js +0 -112
- package/cjs/layout-view-actions/useViewActionDispatcher.js.map +0 -1
- package/cjs/layout-view-actions/useViewContributions.js +0 -33
- package/cjs/layout-view-actions/useViewContributions.js.map +0 -1
- package/cjs/palette/Palette.css.js +0 -6
- package/cjs/palette/Palette.css.js.map +0 -1
- package/cjs/palette/Palette.js +0 -115
- package/cjs/palette/Palette.js.map +0 -1
- package/cjs/placeholder/LayoutStartPanel.css.js +0 -6
- package/cjs/placeholder/LayoutStartPanel.css.js.map +0 -1
- package/cjs/placeholder/LayoutStartPanel.js +0 -56
- package/cjs/placeholder/LayoutStartPanel.js.map +0 -1
- package/cjs/placeholder/Placeholder.css.js +0 -6
- package/cjs/placeholder/Placeholder.css.js.map +0 -1
- package/cjs/placeholder/Placeholder.js +0 -34
- package/cjs/placeholder/Placeholder.js.map +0 -1
- package/cjs/responsive/useResizeObserver.js +0 -118
- package/cjs/responsive/useResizeObserver.js.map +0 -1
- package/cjs/responsive/utils.js +0 -34
- package/cjs/responsive/utils.js.map +0 -1
- package/cjs/stack/Stack.css.js +0 -6
- package/cjs/stack/Stack.css.js.map +0 -1
- package/cjs/stack/Stack.js +0 -150
- package/cjs/stack/Stack.js.map +0 -1
- package/cjs/stack/StackLayout.js +0 -116
- package/cjs/stack/StackLayout.js.map +0 -1
- package/cjs/use-persistent-state.js +0 -63
- package/cjs/use-persistent-state.js.map +0 -1
- package/cjs/utils/pathUtils.js +0 -293
- package/cjs/utils/pathUtils.js.map +0 -1
- package/cjs/utils/propUtils.js +0 -27
- package/cjs/utils/propUtils.js.map +0 -1
- package/cjs/utils/refUtils.js +0 -12
- package/cjs/utils/refUtils.js.map +0 -1
- package/cjs/utils/styleUtils.js +0 -15
- package/cjs/utils/styleUtils.js.map +0 -1
- package/cjs/utils/typeOf.js +0 -27
- package/cjs/utils/typeOf.js.map +0 -1
- package/esm/Component.js +0 -12
- package/esm/Component.js.map +0 -1
- package/esm/LayoutContainer.css.js +0 -4
- package/esm/LayoutContainer.css.js.map +0 -1
- package/esm/LayoutContainer.js +0 -31
- package/esm/LayoutContainer.js.map +0 -1
- package/esm/dock-layout/DockLayout.css.js +0 -4
- package/esm/dock-layout/DockLayout.css.js.map +0 -1
- package/esm/dock-layout/DockLayout.js +0 -39
- package/esm/dock-layout/DockLayout.js.map +0 -1
- package/esm/dock-layout/Drawer.css.js +0 -4
- package/esm/dock-layout/Drawer.css.js.map +0 -1
- package/esm/dock-layout/Drawer.js +0 -93
- package/esm/dock-layout/Drawer.js.map +0 -1
- package/esm/drag-drop/BoxModel.js +0 -409
- package/esm/drag-drop/BoxModel.js.map +0 -1
- package/esm/drag-drop/DragState.js +0 -159
- package/esm/drag-drop/DragState.js.map +0 -1
- package/esm/drag-drop/Draggable.js +0 -190
- package/esm/drag-drop/Draggable.js.map +0 -1
- package/esm/drag-drop/DropTarget.js +0 -253
- package/esm/drag-drop/DropTarget.js.map +0 -1
- package/esm/drag-drop/DropTargetRenderer.js +0 -216
- package/esm/drag-drop/DropTargetRenderer.js.map +0 -1
- package/esm/flexbox/Flexbox.css.js +0 -4
- package/esm/flexbox/Flexbox.css.js.map +0 -1
- package/esm/flexbox/Flexbox.js +0 -67
- package/esm/flexbox/Flexbox.js.map +0 -1
- package/esm/flexbox/FlexboxLayout.js +0 -28
- package/esm/flexbox/FlexboxLayout.js.map +0 -1
- package/esm/flexbox/Splitter.css.js +0 -4
- package/esm/flexbox/Splitter.css.js.map +0 -1
- package/esm/flexbox/Splitter.js +0 -120
- package/esm/flexbox/Splitter.js.map +0 -1
- package/esm/flexbox/flexbox-utils.js +0 -89
- package/esm/flexbox/flexbox-utils.js.map +0 -1
- package/esm/flexbox/useSplitterResizing.js +0 -195
- package/esm/flexbox/useSplitterResizing.js.map +0 -1
- package/esm/index.js +0 -33
- package/esm/index.js.map +0 -1
- package/esm/layout-action.js +0 -22
- package/esm/layout-action.js.map +0 -1
- package/esm/layout-header/Header.css.js +0 -4
- package/esm/layout-header/Header.css.js.map +0 -1
- package/esm/layout-header/Header.js +0 -150
- package/esm/layout-header/Header.js.map +0 -1
- package/esm/layout-header/useHeader.js +0 -83
- package/esm/layout-header/useHeader.js.map +0 -1
- package/esm/layout-provider/LayoutProvider.js +0 -297
- package/esm/layout-provider/LayoutProvider.js.map +0 -1
- package/esm/layout-provider/LayoutProviderContext.js +0 -20
- package/esm/layout-provider/LayoutProviderContext.js.map +0 -1
- package/esm/layout-provider/useLayoutDragDrop.js +0 -175
- package/esm/layout-provider/useLayoutDragDrop.js.map +0 -1
- package/esm/layout-reducer/flexUtils.js +0 -218
- package/esm/layout-reducer/flexUtils.js.map +0 -1
- package/esm/layout-reducer/insert-layout-element.js +0 -282
- package/esm/layout-reducer/insert-layout-element.js.map +0 -1
- package/esm/layout-reducer/layout-reducer.js +0 -200
- package/esm/layout-reducer/layout-reducer.js.map +0 -1
- package/esm/layout-reducer/layoutTypes.js +0 -36
- package/esm/layout-reducer/layoutTypes.js.map +0 -1
- package/esm/layout-reducer/layoutUtils.js +0 -226
- package/esm/layout-reducer/layoutUtils.js.map +0 -1
- package/esm/layout-reducer/move-layout-element.js +0 -29
- package/esm/layout-reducer/move-layout-element.js.map +0 -1
- package/esm/layout-reducer/remove-layout-element.js +0 -235
- package/esm/layout-reducer/remove-layout-element.js.map +0 -1
- package/esm/layout-reducer/replace-layout-element.js +0 -92
- package/esm/layout-reducer/replace-layout-element.js.map +0 -1
- package/esm/layout-reducer/resize-flex-children.js +0 -59
- package/esm/layout-reducer/resize-flex-children.js.map +0 -1
- package/esm/layout-reducer/wrap-layout-element.js +0 -209
- package/esm/layout-reducer/wrap-layout-element.js.map +0 -1
- package/esm/layout-view/View.css.js +0 -4
- package/esm/layout-view/View.css.js.map +0 -1
- package/esm/layout-view/View.js +0 -158
- package/esm/layout-view/View.js.map +0 -1
- package/esm/layout-view/useView.js +0 -73
- package/esm/layout-view/useView.js.map +0 -1
- package/esm/layout-view/useViewBroadcastChannel.js +0 -33
- package/esm/layout-view/useViewBroadcastChannel.js.map +0 -1
- package/esm/layout-view/useViewResize.js +0 -40
- package/esm/layout-view/useViewResize.js.map +0 -1
- package/esm/layout-view-actions/ViewContext.js +0 -12
- package/esm/layout-view-actions/ViewContext.js.map +0 -1
- package/esm/layout-view-actions/useViewActionDispatcher.js +0 -110
- package/esm/layout-view-actions/useViewActionDispatcher.js.map +0 -1
- package/esm/layout-view-actions/useViewContributions.js +0 -31
- package/esm/layout-view-actions/useViewContributions.js.map +0 -1
- package/esm/palette/Palette.css.js +0 -4
- package/esm/palette/Palette.css.js.map +0 -1
- package/esm/palette/Palette.js +0 -112
- package/esm/palette/Palette.js.map +0 -1
- package/esm/placeholder/LayoutStartPanel.css.js +0 -4
- package/esm/placeholder/LayoutStartPanel.css.js.map +0 -1
- package/esm/placeholder/LayoutStartPanel.js +0 -54
- package/esm/placeholder/LayoutStartPanel.js.map +0 -1
- package/esm/placeholder/Placeholder.css.js +0 -4
- package/esm/placeholder/Placeholder.css.js.map +0 -1
- package/esm/placeholder/Placeholder.js +0 -32
- package/esm/placeholder/Placeholder.js.map +0 -1
- package/esm/responsive/useResizeObserver.js +0 -112
- package/esm/responsive/useResizeObserver.js.map +0 -1
- package/esm/responsive/utils.js +0 -31
- package/esm/responsive/utils.js.map +0 -1
- package/esm/stack/Stack.css.js +0 -4
- package/esm/stack/Stack.css.js.map +0 -1
- package/esm/stack/Stack.js +0 -148
- package/esm/stack/Stack.js.map +0 -1
- package/esm/stack/StackLayout.js +0 -114
- package/esm/stack/StackLayout.js.map +0 -1
- package/esm/use-persistent-state.js +0 -58
- package/esm/use-persistent-state.js.map +0 -1
- package/esm/utils/pathUtils.js +0 -280
- package/esm/utils/pathUtils.js.map +0 -1
- package/esm/utils/propUtils.js +0 -23
- package/esm/utils/propUtils.js.map +0 -1
- package/esm/utils/refUtils.js +0 -10
- package/esm/utils/refUtils.js.map +0 -1
- package/esm/utils/styleUtils.js +0 -13
- package/esm/utils/styleUtils.js.map +0 -1
- package/esm/utils/typeOf.js +0 -23
- package/esm/utils/typeOf.js.map +0 -1
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var BoxModel = require('./BoxModel.js');
|
|
4
|
-
|
|
5
|
-
var __defProp = Object.defineProperty;
|
|
6
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
7
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
8
|
-
const SCALE_FACTOR = 0.4;
|
|
9
|
-
class DragState {
|
|
10
|
-
constructor(zone, mouseX, mouseY, measurements, intrinsicSize) {
|
|
11
|
-
__publicField(this, "constraint");
|
|
12
|
-
__publicField(this, "x");
|
|
13
|
-
__publicField(this, "y");
|
|
14
|
-
__publicField(this, "intrinsicSize");
|
|
15
|
-
this.init(zone, mouseX, mouseY, measurements, intrinsicSize);
|
|
16
|
-
}
|
|
17
|
-
init(zone, mouseX, mouseY, rect, intrinsicSize) {
|
|
18
|
-
const { left: x, top: y } = rect;
|
|
19
|
-
const { pctX, pctY } = BoxModel.pointPositionWithinRect(mouseX, mouseY, rect);
|
|
20
|
-
const scaleFactor = SCALE_FACTOR;
|
|
21
|
-
const leadX = pctX * rect.width;
|
|
22
|
-
const trailX = rect.width - leadX;
|
|
23
|
-
const leadY = pctY * rect.height;
|
|
24
|
-
const trailY = rect.height - leadY;
|
|
25
|
-
const scaledWidth = rect.width * scaleFactor, scaledHeight = rect.height * scaleFactor;
|
|
26
|
-
const scaleDiff = 1 - scaleFactor;
|
|
27
|
-
const leadXScaleDiff = leadX * scaleDiff;
|
|
28
|
-
const leadYScaleDiff = leadY * scaleDiff;
|
|
29
|
-
const trailXScaleDiff = trailX * scaleDiff;
|
|
30
|
-
const trailYScaleDiff = trailY * scaleDiff;
|
|
31
|
-
this.intrinsicSize = intrinsicSize;
|
|
32
|
-
this.constraint = {
|
|
33
|
-
zone: {
|
|
34
|
-
x: {
|
|
35
|
-
lo: zone.left,
|
|
36
|
-
hi: zone.right
|
|
37
|
-
},
|
|
38
|
-
y: {
|
|
39
|
-
lo: zone.top,
|
|
40
|
-
hi: zone.bottom
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
pos: {
|
|
44
|
-
x: {
|
|
45
|
-
lo: (
|
|
46
|
-
/* left */
|
|
47
|
-
zone.left - leadXScaleDiff
|
|
48
|
-
),
|
|
49
|
-
hi: (
|
|
50
|
-
/* right */
|
|
51
|
-
zone.right - rect.width + trailXScaleDiff
|
|
52
|
-
)
|
|
53
|
-
},
|
|
54
|
-
y: {
|
|
55
|
-
lo: (
|
|
56
|
-
/* top */
|
|
57
|
-
zone.top - leadYScaleDiff
|
|
58
|
-
),
|
|
59
|
-
hi: (
|
|
60
|
-
/* bottom */
|
|
61
|
-
zone.bottom - rect.height + trailYScaleDiff
|
|
62
|
-
)
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
mouse: {
|
|
66
|
-
x: {
|
|
67
|
-
lo: (
|
|
68
|
-
/* left */
|
|
69
|
-
zone.left + scaledWidth * pctX
|
|
70
|
-
),
|
|
71
|
-
hi: (
|
|
72
|
-
/* right */
|
|
73
|
-
zone.right - scaledWidth * (1 - pctX)
|
|
74
|
-
)
|
|
75
|
-
},
|
|
76
|
-
y: {
|
|
77
|
-
lo: (
|
|
78
|
-
/* top */
|
|
79
|
-
zone.top + scaledHeight * pctY
|
|
80
|
-
),
|
|
81
|
-
hi: (
|
|
82
|
-
/* bottom */
|
|
83
|
-
zone.bottom - scaledHeight * (1 - pctY)
|
|
84
|
-
)
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
this.x = {
|
|
89
|
-
pos: x,
|
|
90
|
-
lo: false,
|
|
91
|
-
hi: false,
|
|
92
|
-
mousePos: mouseX,
|
|
93
|
-
mousePct: pctX
|
|
94
|
-
};
|
|
95
|
-
this.y = {
|
|
96
|
-
pos: y,
|
|
97
|
-
lo: false,
|
|
98
|
-
hi: false,
|
|
99
|
-
mousePos: mouseY,
|
|
100
|
-
mousePct: pctY
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
outOfBounds() {
|
|
104
|
-
return this.x.lo || this.x.hi || this.y.lo || this.y.hi;
|
|
105
|
-
}
|
|
106
|
-
inBounds() {
|
|
107
|
-
return !this.outOfBounds();
|
|
108
|
-
}
|
|
109
|
-
dropX() {
|
|
110
|
-
return this.dropXY("x");
|
|
111
|
-
}
|
|
112
|
-
dropY() {
|
|
113
|
-
return this.dropXY("y");
|
|
114
|
-
}
|
|
115
|
-
hasIntrinsicSize() {
|
|
116
|
-
return this?.intrinsicSize?.height && this?.intrinsicSize?.width;
|
|
117
|
-
}
|
|
118
|
-
/*
|
|
119
|
-
* diff = mouse movement, signed int
|
|
120
|
-
* xy = 'x' or 'y'
|
|
121
|
-
*/
|
|
122
|
-
//todo, diff can be calculated in here
|
|
123
|
-
update(xy, mousePos) {
|
|
124
|
-
const state = this[xy], mouseConstraint = this.constraint.mouse[xy], posConstraint = this.constraint.pos[xy], previousPos = state.pos;
|
|
125
|
-
const diff = mousePos - state.mousePos;
|
|
126
|
-
if (diff < 0) {
|
|
127
|
-
if (state.lo) ; else if (mousePos < mouseConstraint.lo) {
|
|
128
|
-
state.lo = true;
|
|
129
|
-
state.pos = posConstraint.lo;
|
|
130
|
-
} else if (state.hi) {
|
|
131
|
-
if (mousePos < mouseConstraint.hi) {
|
|
132
|
-
state.hi = false;
|
|
133
|
-
state.pos += diff;
|
|
134
|
-
}
|
|
135
|
-
} else {
|
|
136
|
-
state.pos += diff;
|
|
137
|
-
}
|
|
138
|
-
} else if (diff > 0) {
|
|
139
|
-
if (state.hi) ; else if (mousePos > mouseConstraint.hi) {
|
|
140
|
-
state.hi = true;
|
|
141
|
-
state.pos = posConstraint.hi;
|
|
142
|
-
} else if (state.lo) {
|
|
143
|
-
if (mousePos > mouseConstraint.lo) {
|
|
144
|
-
state.lo = false;
|
|
145
|
-
state.pos += diff;
|
|
146
|
-
}
|
|
147
|
-
} else {
|
|
148
|
-
state.pos += diff;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
state.mousePos = mousePos;
|
|
152
|
-
return previousPos !== state.pos;
|
|
153
|
-
}
|
|
154
|
-
dropXY(dir) {
|
|
155
|
-
const pos = this[dir], rect = this.constraint.zone[dir];
|
|
156
|
-
return pos.lo ? Math.max(rect.lo, pos.mousePos) : pos.hi ? Math.min(pos.mousePos, Math.round(rect.hi) - 1) : pos.mousePos;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
exports.DragState = DragState;
|
|
161
|
-
//# sourceMappingURL=DragState.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DragState.js","sources":["../../../../packages/vuu-layout/src/drag-drop/DragState.ts"],"sourcesContent":["import { pointPositionWithinRect } from './BoxModel';\nimport { DragDropRect } from './dragDropTypes';\n\nconst SCALE_FACTOR = 0.4;\n\nexport type IntrinsicSizes = {\n height?: number;\n width?: number;\n};\n\ninterface ZoneRange {\n hi: number;\n lo: number;\n}\ntype DragConstraint = {\n zone: {\n x: ZoneRange;\n y: ZoneRange;\n };\n pos: {\n x: ZoneRange;\n y: ZoneRange;\n };\n mouse: {\n x: ZoneRange;\n y: ZoneRange;\n };\n};\n\ninterface ExtendedZoneRange {\n lo: boolean;\n hi: boolean;\n mousePct: number;\n mousePos: number;\n pos: number;\n}\n\nexport class DragState {\n public constraint!: DragConstraint;\n public x!: ExtendedZoneRange;\n public y!: ExtendedZoneRange;\n public intrinsicSize: IntrinsicSizes | undefined;\n\n constructor(\n zone: DragDropRect,\n mouseX: number,\n mouseY: number,\n measurements: DragDropRect,\n intrinsicSize?: IntrinsicSizes\n ) {\n this.init(zone, mouseX, mouseY, measurements, intrinsicSize);\n }\n\n init(\n zone: DragDropRect,\n mouseX: number,\n mouseY: number,\n rect: DragDropRect,\n intrinsicSize?: IntrinsicSizes\n ) {\n const { left: x, top: y } = rect;\n\n const { pctX, pctY } = pointPositionWithinRect(mouseX, mouseY, rect);\n\n // We are applying a scale factor of 0.4 to the draggee. This is purely a visual\n // effect - the actual box size remains the original size. The 'leading' values\n // represent the difference between the visual scaled down box and the actual box.\n\n const scaleFactor = SCALE_FACTOR;\n\n const leadX = pctX * rect.width;\n const trailX = rect.width - leadX;\n const leadY = pctY * rect.height;\n const trailY = rect.height - leadY;\n\n // When we assign position to rect using css. positioning units are applied to the\n // unscaled shape, so we have to adjust values to take scaling into account.\n const scaledWidth = rect.width * scaleFactor,\n scaledHeight = rect.height * scaleFactor;\n\n const scaleDiff = 1 - scaleFactor;\n const leadXScaleDiff = leadX * scaleDiff;\n const leadYScaleDiff = leadY * scaleDiff;\n const trailXScaleDiff = trailX * scaleDiff;\n const trailYScaleDiff = trailY * scaleDiff;\n\n this.intrinsicSize = intrinsicSize;\n\n this.constraint = {\n zone: {\n x: {\n lo: zone.left,\n hi: zone.right\n },\n y: {\n lo: zone.top,\n hi: zone.bottom\n }\n },\n\n pos: {\n x: {\n lo: /* left */ zone.left - leadXScaleDiff,\n hi: /* right */ zone.right - rect.width + trailXScaleDiff\n },\n y: {\n lo: /* top */ zone.top - leadYScaleDiff,\n hi: /* bottom */ zone.bottom - rect.height + trailYScaleDiff\n }\n },\n mouse: {\n x: {\n lo: /* left */ zone.left + scaledWidth * pctX,\n hi: /* right */ zone.right - scaledWidth * (1 - pctX)\n },\n y: {\n lo: /* top */ zone.top + scaledHeight * pctY,\n hi: /* bottom */ zone.bottom - scaledHeight * (1 - pctY)\n }\n }\n };\n\n this.x = {\n pos: x,\n lo: false,\n hi: false,\n mousePos: mouseX,\n mousePct: pctX\n };\n this.y = {\n pos: y,\n lo: false,\n hi: false,\n mousePos: mouseY,\n mousePct: pctY\n };\n }\n\n outOfBounds() {\n return this.x.lo || this.x.hi || this.y.lo || this.y.hi;\n }\n\n inBounds() {\n return !this.outOfBounds();\n }\n\n dropX() {\n return this.dropXY('x');\n }\n\n dropY() {\n return this.dropXY('y');\n }\n\n hasIntrinsicSize(): number | undefined {\n return this?.intrinsicSize?.height && this?.intrinsicSize?.width;\n }\n\n /*\n * diff = mouse movement, signed int\n * xy = 'x' or 'y'\n */\n //todo, diff can be calculated in here\n update(xy: 'x' | 'y', mousePos: number) {\n const state = this[xy],\n mouseConstraint = this.constraint.mouse[xy],\n posConstraint = this.constraint.pos[xy],\n previousPos = state.pos;\n\n const diff = mousePos - state.mousePos;\n\n //xy==='x' && console.log(`update: state.lo=${state.lo}, mPos=${mousePos}, mC.lo=${mouseConstraint.lo}, prevPos=${previousPos}, diff=${diff} ` );\n\n if (diff < 0) {\n if (state.lo) {\n /* do nothing */\n } else if (mousePos < mouseConstraint.lo) {\n state.lo = true;\n state.pos = posConstraint.lo;\n } else if (state.hi) {\n if (mousePos < mouseConstraint.hi) {\n state.hi = false;\n state.pos += diff;\n }\n } else {\n state.pos += diff;\n }\n } else if (diff > 0) {\n if (state.hi) {\n /* do nothing */\n } else if (mousePos > mouseConstraint.hi) {\n state.hi = true;\n state.pos = posConstraint.hi;\n } else if (state.lo) {\n if (mousePos > mouseConstraint.lo) {\n state.lo = false;\n state.pos += diff;\n }\n } else {\n state.pos += diff;\n }\n }\n\n state.mousePos = mousePos;\n\n return previousPos !== state.pos;\n }\n\n private dropXY(this: DragState, dir: 'x' | 'y') {\n const pos = this[dir],\n rect = this.constraint.zone[dir];\n // why not do the rounding +/- 1 on the rect initially - this is all it is usef for\n return pos.lo\n ? Math.max(rect.lo, pos.mousePos)\n : pos.hi\n ? Math.min(pos.mousePos, Math.round(rect.hi) - 1)\n : pos.mousePos;\n }\n}\n"],"names":["pointPositionWithinRect"],"mappings":"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"}
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var pathUtils = require('../utils/pathUtils.js');
|
|
4
|
-
var propUtils = require('../utils/propUtils.js');
|
|
5
|
-
var BoxModel = require('./BoxModel.js');
|
|
6
|
-
var DragState = require('./DragState.js');
|
|
7
|
-
var DropTarget = require('./DropTarget.js');
|
|
8
|
-
var DropTargetRenderer = require('./DropTargetRenderer.js');
|
|
9
|
-
|
|
10
|
-
let _dragStartCallback;
|
|
11
|
-
let _dragMoveCallback;
|
|
12
|
-
let _dragEndCallback;
|
|
13
|
-
let _dragStartX;
|
|
14
|
-
let _dragStartY;
|
|
15
|
-
let _dragContainer;
|
|
16
|
-
let _dragState;
|
|
17
|
-
let _dropTarget = null;
|
|
18
|
-
let _validDropTargetPaths;
|
|
19
|
-
let _dragInstructions;
|
|
20
|
-
let _measurements;
|
|
21
|
-
let _simpleDrag;
|
|
22
|
-
let _dragThreshold;
|
|
23
|
-
let _mouseDownTimer = null;
|
|
24
|
-
const DEFAULT_DRAG_THRESHOLD = 3;
|
|
25
|
-
const _dropTargetRenderer = new DropTargetRenderer();
|
|
26
|
-
const SCALE_FACTOR = 0.4;
|
|
27
|
-
function getDragContainer(rootContainer, dragContainerPath) {
|
|
28
|
-
if (dragContainerPath) {
|
|
29
|
-
return pathUtils.followPath(rootContainer, dragContainerPath);
|
|
30
|
-
} else {
|
|
31
|
-
return pathUtils.findTarget(
|
|
32
|
-
rootContainer,
|
|
33
|
-
// TODO dropTarget is not good
|
|
34
|
-
(props) => props.dropTarget
|
|
35
|
-
);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
const Draggable = {
|
|
39
|
-
handleMousedown(e, dragStartCallback, dragInstructions = {}) {
|
|
40
|
-
_dragStartCallback = dragStartCallback;
|
|
41
|
-
_dragInstructions = dragInstructions;
|
|
42
|
-
_dragStartX = e.clientX;
|
|
43
|
-
_dragStartY = e.clientY;
|
|
44
|
-
_dragThreshold = dragInstructions.dragThreshold === void 0 ? DEFAULT_DRAG_THRESHOLD : dragInstructions.dragThreshold;
|
|
45
|
-
if (_dragThreshold === 0) {
|
|
46
|
-
_dragStartCallback(e, 0, 0);
|
|
47
|
-
} else {
|
|
48
|
-
window.addEventListener("mousemove", preDragMousemoveHandler, false);
|
|
49
|
-
window.addEventListener("mouseup", preDragMouseupHandler, false);
|
|
50
|
-
_mouseDownTimer = window.setTimeout(() => {
|
|
51
|
-
window.removeEventListener("mousemove", preDragMousemoveHandler, false);
|
|
52
|
-
window.removeEventListener("mouseup", preDragMouseupHandler, false);
|
|
53
|
-
_dragStartCallback?.(e, 0, 0);
|
|
54
|
-
}, 500);
|
|
55
|
-
}
|
|
56
|
-
e.preventDefault();
|
|
57
|
-
},
|
|
58
|
-
// called from handleDragStart (_dragCallback)
|
|
59
|
-
initDrag(rootContainer, dragContainerPath, { top, left, right, bottom }, dragPos, dragHandler, intrinsicSize, dropTargets) {
|
|
60
|
-
({ drag: _dragMoveCallback, drop: _dragEndCallback } = dragHandler);
|
|
61
|
-
return initDrag(
|
|
62
|
-
rootContainer,
|
|
63
|
-
dragContainerPath,
|
|
64
|
-
{ top, left, right, bottom },
|
|
65
|
-
dragPos,
|
|
66
|
-
intrinsicSize,
|
|
67
|
-
dropTargets
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
function preDragMousemoveHandler(e) {
|
|
72
|
-
const x_diff = e.clientX - _dragStartX ;
|
|
73
|
-
const y_diff = e.clientY - _dragStartY ;
|
|
74
|
-
const mouseMoveDistance = Math.max(Math.abs(x_diff), Math.abs(y_diff));
|
|
75
|
-
if (mouseMoveDistance > _dragThreshold) {
|
|
76
|
-
window.removeEventListener("mousemove", preDragMousemoveHandler, false);
|
|
77
|
-
window.removeEventListener("mouseup", preDragMouseupHandler, false);
|
|
78
|
-
_dragStartCallback?.(e, x_diff, y_diff);
|
|
79
|
-
_dragStartCallback = null;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
function preDragMouseupHandler() {
|
|
83
|
-
if (_mouseDownTimer) {
|
|
84
|
-
window.clearTimeout(_mouseDownTimer);
|
|
85
|
-
_mouseDownTimer = null;
|
|
86
|
-
}
|
|
87
|
-
window.removeEventListener("mousemove", preDragMousemoveHandler, false);
|
|
88
|
-
window.removeEventListener("mouseup", preDragMouseupHandler, false);
|
|
89
|
-
}
|
|
90
|
-
function initDrag(rootContainer, dragContainerPath, dragRect, dragPos, intrinsicSize, dropTargets) {
|
|
91
|
-
_dragContainer = getDragContainer(rootContainer, dragContainerPath);
|
|
92
|
-
const { "data-path": dataPath, path = dataPath } = propUtils.getProps(_dragContainer);
|
|
93
|
-
if (dropTargets) {
|
|
94
|
-
const dropPaths = dropTargets.map((id) => pathUtils.findTarget(rootContainer, (props) => props.id === id)).map((target) => target.props.path);
|
|
95
|
-
_validDropTargetPaths = dropPaths;
|
|
96
|
-
}
|
|
97
|
-
_measurements = BoxModel.BoxModel.measure(_dragContainer, dropTargets);
|
|
98
|
-
const dragZone = _measurements[path];
|
|
99
|
-
_dragState = new DragState.DragState(
|
|
100
|
-
dragZone,
|
|
101
|
-
dragPos.x,
|
|
102
|
-
dragPos.y,
|
|
103
|
-
dragRect,
|
|
104
|
-
intrinsicSize
|
|
105
|
-
);
|
|
106
|
-
const pctX = Math.round(_dragState.x.mousePct * 100);
|
|
107
|
-
const pctY = Math.round(_dragState.y.mousePct * 100);
|
|
108
|
-
window.addEventListener("mousemove", dragMousemoveHandler, false);
|
|
109
|
-
window.addEventListener("mouseup", dragMouseupHandler, false);
|
|
110
|
-
window.addEventListener("keydown", dragKeydownHandler, false);
|
|
111
|
-
_simpleDrag = false;
|
|
112
|
-
_dropTargetRenderer.prepare(dragRect, "tab-only");
|
|
113
|
-
return _dragInstructions.DoNotTransform ? "transform:none" : (
|
|
114
|
-
// scale factor should be applied in caller, not here
|
|
115
|
-
`transform:scale(${SCALE_FACTOR},${SCALE_FACTOR});transform-origin:${pctX}% ${pctY}%;`
|
|
116
|
-
);
|
|
117
|
-
}
|
|
118
|
-
function dragMousemoveHandler(evt) {
|
|
119
|
-
const x = evt.clientX;
|
|
120
|
-
const y = evt.clientY;
|
|
121
|
-
const dragState = _dragState;
|
|
122
|
-
const currentDropTarget = _dropTarget;
|
|
123
|
-
let dropTarget;
|
|
124
|
-
let newX, newY;
|
|
125
|
-
if (dragState.update("x", x)) {
|
|
126
|
-
newX = dragState.x.pos;
|
|
127
|
-
}
|
|
128
|
-
if (dragState.update("y", y)) {
|
|
129
|
-
newY = dragState.y.pos;
|
|
130
|
-
}
|
|
131
|
-
if (newX === void 0 && newY === void 0) ; else {
|
|
132
|
-
_dragMoveCallback?.(newX, newY);
|
|
133
|
-
}
|
|
134
|
-
if (_simpleDrag || _dragContainer === void 0) {
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
if (dragState.inBounds()) {
|
|
138
|
-
dropTarget = DropTarget.identifyDropTarget(
|
|
139
|
-
x,
|
|
140
|
-
y,
|
|
141
|
-
_dragContainer,
|
|
142
|
-
_measurements,
|
|
143
|
-
dragState.hasIntrinsicSize(),
|
|
144
|
-
_validDropTargetPaths
|
|
145
|
-
);
|
|
146
|
-
} else {
|
|
147
|
-
dropTarget = DropTarget.identifyDropTarget(
|
|
148
|
-
dragState.dropX(),
|
|
149
|
-
dragState.dropY(),
|
|
150
|
-
_dragContainer,
|
|
151
|
-
_measurements
|
|
152
|
-
);
|
|
153
|
-
}
|
|
154
|
-
if (currentDropTarget) {
|
|
155
|
-
if (dropTarget == null || dropTarget.box !== currentDropTarget.box) {
|
|
156
|
-
_dropTarget = null;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
if (dropTarget) {
|
|
160
|
-
_dropTargetRenderer.draw(dropTarget, dragState);
|
|
161
|
-
_dropTarget = dropTarget;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
function dragKeydownHandler(evt) {
|
|
165
|
-
if (evt.key === "Escape") {
|
|
166
|
-
_dropTarget = null;
|
|
167
|
-
onDragEnd();
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
function dragMouseupHandler() {
|
|
171
|
-
onDragEnd();
|
|
172
|
-
}
|
|
173
|
-
function onDragEnd() {
|
|
174
|
-
if (_dropTarget) {
|
|
175
|
-
const dropTarget = _dropTargetRenderer.hoverDropTarget || DropTarget.DropTarget.getActiveDropTarget(_dropTarget);
|
|
176
|
-
_dragEndCallback?.(dropTarget);
|
|
177
|
-
_dropTarget = null;
|
|
178
|
-
} else {
|
|
179
|
-
_dragEndCallback?.();
|
|
180
|
-
}
|
|
181
|
-
_dragMoveCallback = null;
|
|
182
|
-
_dragEndCallback = null;
|
|
183
|
-
_dragContainer = void 0;
|
|
184
|
-
_dropTargetRenderer.clear();
|
|
185
|
-
_validDropTargetPaths = void 0;
|
|
186
|
-
window.removeEventListener("mousemove", dragMousemoveHandler, false);
|
|
187
|
-
window.removeEventListener("mouseup", dragMouseupHandler, false);
|
|
188
|
-
window.removeEventListener("keydown", dragKeydownHandler, false);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
exports.Draggable = Draggable;
|
|
192
|
-
//# sourceMappingURL=Draggable.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Draggable.js","sources":["../../../../packages/vuu-layout/src/drag-drop/Draggable.ts"],"sourcesContent":["import { rect } from \"@vuu-ui/vuu-utils\";\nimport { ReactElement } from \"react\";\nimport { findTarget, followPath, getProps } from \"../utils\";\nimport { BoxModel, Measurements } from \"./BoxModel\";\nimport { DragDropRect } from \"./dragDropTypes\";\nimport { DragState, IntrinsicSizes } from \"./DragState\";\nimport { DropTarget, identifyDropTarget } from \"./DropTarget\";\nimport DropTargetRenderer from \"./DropTargetRenderer\";\n\nexport type DragStartCallback = (e: MouseEvent, x: number, y: number) => void;\nexport type DragMoveCallback = (\n x: number | undefined,\n y: number | undefined,\n) => void;\nexport type DragEndCallback = (droppedTarget?: Partial<DropTarget>) => void;\nexport type DragInstructions = {\n DoNotRemove?: boolean;\n DoNotTransform?: boolean;\n dragThreshold?: number;\n DriftHomeIfNoDropTarget?: boolean;\n RemoveDraggableOnDragEnd?: boolean;\n};\n\nlet _dragStartCallback: DragStartCallback | null;\nlet _dragMoveCallback: DragMoveCallback | null;\nlet _dragEndCallback: DragEndCallback | null;\n\nlet _dragStartX: number;\nlet _dragStartY: number;\nlet _dragContainer: ReactElement | undefined;\nlet _dragState: DragState;\nlet _dropTarget: DropTarget | null = null;\nlet _validDropTargetPaths: string[] | undefined;\nlet _dragInstructions: DragInstructions;\nlet _measurements: Measurements;\nlet _simpleDrag: boolean;\nlet _dragThreshold: number;\nlet _mouseDownTimer: number | null = null;\n\nconst DEFAULT_DRAG_THRESHOLD = 3;\nconst _dropTargetRenderer = new DropTargetRenderer();\nconst SCALE_FACTOR = 0.4;\n\nfunction getDragContainer(\n rootContainer: ReactElement,\n dragContainerPath: string,\n) {\n if (dragContainerPath) {\n return followPath(rootContainer, dragContainerPath) as ReactElement;\n } else {\n return findTarget(\n rootContainer,\n // TODO dropTarget is not good\n (props) => props.dropTarget,\n ) as ReactElement;\n }\n}\n\nexport const Draggable = {\n handleMousedown(\n e: MouseEvent,\n dragStartCallback: DragStartCallback,\n dragInstructions: DragInstructions = {},\n ) {\n _dragStartCallback = dragStartCallback;\n _dragInstructions = dragInstructions;\n\n _dragStartX = e.clientX;\n _dragStartY = e.clientY;\n\n _dragThreshold =\n dragInstructions.dragThreshold === undefined\n ? DEFAULT_DRAG_THRESHOLD\n : dragInstructions.dragThreshold;\n\n if (_dragThreshold === 0) {\n // maybe this should be -1\n _dragStartCallback(e, 0, 0);\n } else {\n window.addEventListener(\"mousemove\", preDragMousemoveHandler, false);\n window.addEventListener(\"mouseup\", preDragMouseupHandler, false);\n\n _mouseDownTimer = window.setTimeout(() => {\n window.removeEventListener(\"mousemove\", preDragMousemoveHandler, false);\n window.removeEventListener(\"mouseup\", preDragMouseupHandler, false);\n _dragStartCallback?.(e, 0, 0);\n }, 500);\n }\n\n e.preventDefault();\n },\n\n // called from handleDragStart (_dragCallback)\n initDrag(\n rootContainer: ReactElement,\n dragContainerPath: string,\n { top, left, right, bottom }: rect,\n dragPos: { x: number; y: number },\n dragHandler: {\n drag: DragMoveCallback;\n drop: DragEndCallback;\n },\n intrinsicSize?: IntrinsicSizes,\n dropTargets?: string[],\n ) {\n ({ drag: _dragMoveCallback, drop: _dragEndCallback } = dragHandler);\n return initDrag(\n rootContainer,\n dragContainerPath,\n { top, left, right, bottom } as DragDropRect,\n dragPos,\n intrinsicSize,\n dropTargets,\n );\n },\n};\n\nfunction preDragMousemoveHandler(e: MouseEvent) {\n const x = true;\n const y = true;\n\n const x_diff = x ? e.clientX - _dragStartX : 0;\n const y_diff = y ? e.clientY - _dragStartY : 0;\n const mouseMoveDistance = Math.max(Math.abs(x_diff), Math.abs(y_diff));\n\n // when we do finally move the draggee, we are going to 'jump' by the amount of the drag threshold, should we\n // attempt to animate this ?\n if (mouseMoveDistance > _dragThreshold) {\n window.removeEventListener(\"mousemove\", preDragMousemoveHandler, false);\n window.removeEventListener(\"mouseup\", preDragMouseupHandler, false);\n _dragStartCallback?.(e, x_diff, y_diff);\n _dragStartCallback = null;\n }\n}\n\nfunction preDragMouseupHandler() {\n if (_mouseDownTimer) {\n window.clearTimeout(_mouseDownTimer);\n _mouseDownTimer = null;\n }\n window.removeEventListener(\"mousemove\", preDragMousemoveHandler, false);\n window.removeEventListener(\"mouseup\", preDragMouseupHandler, false);\n}\n\nfunction initDrag(\n rootContainer: ReactElement,\n dragContainerPath: string,\n dragRect: DragDropRect,\n dragPos: { x: number; y: number },\n intrinsicSize?: IntrinsicSizes,\n dropTargets?: string[],\n) {\n _dragContainer = getDragContainer(rootContainer, dragContainerPath);\n\n const { \"data-path\": dataPath, path = dataPath } = getProps(_dragContainer);\n\n if (dropTargets) {\n const dropPaths = dropTargets\n .map((id) => findTarget(rootContainer, (props) => props.id === id))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map((target) => (target as any).props.path);\n _validDropTargetPaths = dropPaths;\n }\n\n // const start = window.performance.now();\n // translate the layout $position to drag-oriented co-ordinates, ignoring splitters\n\n _measurements = BoxModel.measure(_dragContainer, dropTargets);\n // console.log({ _measurements });\n // onsole.log({ measurements: _measurements });\n // const end = window.performance.now();\n // console.log(`[Draggable] measurements took ${end - start}ms`, _measurements);\n\n const dragZone = _measurements[path];\n\n _dragState = new DragState(\n dragZone,\n dragPos.x,\n dragPos.y,\n dragRect,\n intrinsicSize,\n );\n\n const pctX = Math.round(_dragState.x.mousePct * 100);\n const pctY = Math.round(_dragState.y.mousePct * 100);\n\n window.addEventListener(\"mousemove\", dragMousemoveHandler, false);\n window.addEventListener(\"mouseup\", dragMouseupHandler, false);\n window.addEventListener(\"keydown\", dragKeydownHandler, false);\n\n _simpleDrag = false;\n\n _dropTargetRenderer.prepare(dragRect, \"tab-only\");\n\n return _dragInstructions.DoNotTransform\n ? \"transform:none\"\n : // scale factor should be applied in caller, not here\n `transform:scale(${SCALE_FACTOR},${SCALE_FACTOR});transform-origin:${pctX}% ${pctY}%;`;\n}\n\nfunction dragMousemoveHandler(evt: MouseEvent) {\n const x = evt.clientX;\n const y = evt.clientY;\n const dragState = _dragState;\n const currentDropTarget = _dropTarget;\n let dropTarget;\n let newX, newY;\n\n if (dragState.update(\"x\", x)) {\n newX = dragState.x.pos;\n }\n\n if (dragState.update(\"y\", y)) {\n newY = dragState.y.pos;\n }\n\n if (newX === undefined && newY === undefined) {\n //onsole.log('both x and y are unchanged');\n } else {\n _dragMoveCallback?.(newX, newY);\n }\n\n if (_simpleDrag || _dragContainer === undefined) {\n return;\n }\n\n if (dragState.inBounds()) {\n dropTarget = identifyDropTarget(\n x,\n y,\n _dragContainer,\n _measurements,\n dragState.hasIntrinsicSize(),\n _validDropTargetPaths,\n );\n } else {\n dropTarget = identifyDropTarget(\n dragState.dropX(),\n dragState.dropY(),\n _dragContainer,\n _measurements,\n );\n }\n\n // did we have an existing droptarget which is no longer such ...\n if (currentDropTarget) {\n if (dropTarget == null || dropTarget.box !== currentDropTarget.box) {\n _dropTarget = null;\n }\n }\n\n if (dropTarget) {\n _dropTargetRenderer.draw(dropTarget, dragState);\n _dropTarget = dropTarget;\n }\n}\n\nfunction dragKeydownHandler(evt: KeyboardEvent) {\n if (evt.key === \"Escape\") {\n _dropTarget = null;\n onDragEnd();\n }\n}\n\nfunction dragMouseupHandler() {\n onDragEnd();\n}\n\nfunction onDragEnd() {\n if (_dropTarget) {\n const dropTarget =\n _dropTargetRenderer.hoverDropTarget ||\n DropTarget.getActiveDropTarget(_dropTarget);\n\n _dragEndCallback?.(dropTarget as DropTarget);\n\n _dropTarget = null;\n } else {\n _dragEndCallback?.();\n }\n\n _dragMoveCallback = null;\n _dragEndCallback = null;\n\n _dragContainer = undefined;\n _dropTargetRenderer.clear();\n _validDropTargetPaths = undefined;\n window.removeEventListener(\"mousemove\", dragMousemoveHandler, false);\n window.removeEventListener(\"mouseup\", dragMouseupHandler, false);\n window.removeEventListener(\"keydown\", dragKeydownHandler, false);\n}\n"],"names":["followPath","findTarget","getProps","BoxModel","DragState","identifyDropTarget","DropTarget"],"mappings":"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"}
|
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
require('@vuu-ui/vuu-utils');
|
|
4
|
-
require('react');
|
|
5
|
-
var propUtils = require('../utils/propUtils.js');
|
|
6
|
-
var typeOf = require('../utils/typeOf.js');
|
|
7
|
-
var BoxModel = require('./BoxModel.js');
|
|
8
|
-
|
|
9
|
-
var __defProp = Object.defineProperty;
|
|
10
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
12
|
-
const isTabstrip = (dropTarget) => dropTarget.pos.tab && typeOf.typeOf(dropTarget.component) === "Stack" && dropTarget.pos.position.Header;
|
|
13
|
-
const { north, south, east, west } = BoxModel.positionValues;
|
|
14
|
-
const eastwest = east + west;
|
|
15
|
-
const northsouth = north + south;
|
|
16
|
-
class DropTarget {
|
|
17
|
-
constructor({
|
|
18
|
-
component,
|
|
19
|
-
pos,
|
|
20
|
-
clientRect,
|
|
21
|
-
nextDropTarget
|
|
22
|
-
}) {
|
|
23
|
-
__publicField(this, "active");
|
|
24
|
-
__publicField(this, "box");
|
|
25
|
-
__publicField(this, "clientRect");
|
|
26
|
-
__publicField(this, "component");
|
|
27
|
-
__publicField(this, "dropRect");
|
|
28
|
-
__publicField(this, "nextDropTarget");
|
|
29
|
-
__publicField(this, "pos");
|
|
30
|
-
this.component = component;
|
|
31
|
-
this.pos = pos;
|
|
32
|
-
this.clientRect = clientRect;
|
|
33
|
-
this.nextDropTarget = nextDropTarget;
|
|
34
|
-
this.active = false;
|
|
35
|
-
this.dropRect = void 0;
|
|
36
|
-
}
|
|
37
|
-
targetTabPos(tab) {
|
|
38
|
-
const { left: tabLeft, width: tabWidth, positionRelativeToTab } = tab;
|
|
39
|
-
return positionRelativeToTab === BoxModel.RelativeDropPosition.BEFORE ? tabLeft : tabLeft + tabWidth;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Determine what will be rendered by the dropTargetRenderer
|
|
43
|
-
*
|
|
44
|
-
* @param {*} lineWidth
|
|
45
|
-
* @param {*} dragState
|
|
46
|
-
* @returns {l, t, r, b, tabLeft, tabWidth, tabHeight}
|
|
47
|
-
*/
|
|
48
|
-
getTargetDropOutline(lineWidth, dragState) {
|
|
49
|
-
if (this.pos.tab) {
|
|
50
|
-
return this.getDropTabOutline(lineWidth, this.pos.tab);
|
|
51
|
-
} else if (dragState && dragState.hasIntrinsicSize()) {
|
|
52
|
-
return this.getIntrinsicDropRect(dragState);
|
|
53
|
-
} else {
|
|
54
|
-
const [l, t, r, b] = this.getDropRectOutline(
|
|
55
|
-
lineWidth,
|
|
56
|
-
dragState
|
|
57
|
-
);
|
|
58
|
-
return { l, t, r, b };
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
getDropTabOutline(lineWidth, tab) {
|
|
62
|
-
const {
|
|
63
|
-
clientRect: { top, left, right, bottom, header }
|
|
64
|
-
} = this;
|
|
65
|
-
const inset = 0;
|
|
66
|
-
const gap = Math.round(lineWidth / 2) + inset;
|
|
67
|
-
const t = Math.round(top);
|
|
68
|
-
const l = Math.round(left + gap);
|
|
69
|
-
const r = Math.round(right - gap);
|
|
70
|
-
const b = Math.round(bottom - gap);
|
|
71
|
-
const tabLeft = this.targetTabPos(tab);
|
|
72
|
-
const tabWidth = 60;
|
|
73
|
-
const tabHeight = (header?.bottom ?? 0) - (header?.top ?? 0);
|
|
74
|
-
return { l, t, r, b, tabLeft, tabWidth, tabHeight };
|
|
75
|
-
}
|
|
76
|
-
getIntrinsicDropRect(dragState) {
|
|
77
|
-
const { pos, clientRect: rect2 } = this;
|
|
78
|
-
const { x, y } = dragState;
|
|
79
|
-
let height = dragState.intrinsicSize?.height ?? 0;
|
|
80
|
-
let width = dragState.intrinsicSize?.height ?? 0;
|
|
81
|
-
if (height && height > rect2.height) {
|
|
82
|
-
console.log(`DropTarget: we're going to blow the gaff`);
|
|
83
|
-
height = rect2.height;
|
|
84
|
-
} else if (width && width > rect2.width) {
|
|
85
|
-
console.log(`DropTarget: we're going to blow the gaff`);
|
|
86
|
-
width = rect2.width;
|
|
87
|
-
}
|
|
88
|
-
const left = Math.min(
|
|
89
|
-
rect2.right - width,
|
|
90
|
-
Math.max(rect2.left, Math.round(pos.x - x.mousePct * width))
|
|
91
|
-
);
|
|
92
|
-
const top = Math.min(
|
|
93
|
-
rect2.bottom - height,
|
|
94
|
-
Math.max(rect2.top, Math.round(pos.y - y.mousePct * height))
|
|
95
|
-
);
|
|
96
|
-
const [l, t, r, b] = this.dropRect = [
|
|
97
|
-
left,
|
|
98
|
-
top,
|
|
99
|
-
left + width,
|
|
100
|
-
top + height
|
|
101
|
-
];
|
|
102
|
-
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];
|
|
103
|
-
return { l, r, t, b, guideLines };
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* @returns [left, top, right, bottom]
|
|
107
|
-
*/
|
|
108
|
-
getDropRectOutline(lineWidth, dragState) {
|
|
109
|
-
const { pos, clientRect: rect2 } = this;
|
|
110
|
-
const { width: suggestedWidth, height: suggestedHeight, position } = pos;
|
|
111
|
-
const { width: intrinsicWidth, height: intrinsicHeight } = dragState?.intrinsicSize ?? {};
|
|
112
|
-
const sizeHeight = intrinsicHeight ?? suggestedHeight ?? 0;
|
|
113
|
-
const sizeWidth = intrinsicWidth ?? suggestedWidth ?? 0;
|
|
114
|
-
this.dropRect = void 0;
|
|
115
|
-
const { top: t, left: l, right: r, bottom: b } = rect2;
|
|
116
|
-
const inset = 0;
|
|
117
|
-
const gap = Math.round(lineWidth / 2) + inset;
|
|
118
|
-
switch (position) {
|
|
119
|
-
case BoxModel.Position.North:
|
|
120
|
-
case BoxModel.Position.Header: {
|
|
121
|
-
const halfHeight = Math.round((b - t) / 2);
|
|
122
|
-
const height = sizeHeight ? Math.min(halfHeight, Math.round(sizeHeight)) : halfHeight;
|
|
123
|
-
return sizeWidth && l + sizeWidth < r ? [l + gap, t + gap, l + sizeWidth - gap, t + gap + height] : [l + gap, t + gap, r - gap, t + gap + height];
|
|
124
|
-
}
|
|
125
|
-
case BoxModel.Position.West: {
|
|
126
|
-
const halfWidth = Math.round((r - l) / 2);
|
|
127
|
-
const width = sizeWidth ? Math.min(halfWidth, Math.round(sizeWidth)) : halfWidth;
|
|
128
|
-
return sizeHeight && t + sizeHeight < b ? [l + gap, t + gap, l - gap + width, t + sizeHeight + gap] : [l + gap, t + gap, l - gap + width, b - gap];
|
|
129
|
-
}
|
|
130
|
-
case BoxModel.Position.East: {
|
|
131
|
-
const halfWidth = Math.round((r - l) / 2);
|
|
132
|
-
const width = sizeWidth ? Math.min(halfWidth, Math.round(sizeWidth)) : halfWidth;
|
|
133
|
-
return sizeHeight && t + sizeHeight < b ? [r - gap - width, t + gap, r - gap, t + sizeHeight + gap] : [r - gap - width, t + gap, r - gap, b - gap];
|
|
134
|
-
}
|
|
135
|
-
case BoxModel.Position.South: {
|
|
136
|
-
const halfHeight = Math.round((b - t) / 2);
|
|
137
|
-
const height = sizeHeight ? Math.min(halfHeight, Math.round(sizeHeight)) : halfHeight;
|
|
138
|
-
return sizeWidth && l + sizeWidth < r ? [l + gap, b - gap - height, l + sizeWidth - gap, b - gap] : [l + gap, b - gap - height, r - gap, b - gap];
|
|
139
|
-
}
|
|
140
|
-
case BoxModel.Position.Centre: {
|
|
141
|
-
return [l + gap, t + gap, r - gap, b - gap];
|
|
142
|
-
}
|
|
143
|
-
default:
|
|
144
|
-
console.warn(`DropTarget does not recognize position ${position}`);
|
|
145
|
-
return null;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
activate() {
|
|
149
|
-
this.active = true;
|
|
150
|
-
return this;
|
|
151
|
-
}
|
|
152
|
-
toArray() {
|
|
153
|
-
let dropTarget = this;
|
|
154
|
-
const dropTargets = [dropTarget];
|
|
155
|
-
while (dropTarget = dropTarget.nextDropTarget) {
|
|
156
|
-
dropTargets.push(dropTarget);
|
|
157
|
-
}
|
|
158
|
-
return dropTargets;
|
|
159
|
-
}
|
|
160
|
-
static getActiveDropTarget(dropTarget) {
|
|
161
|
-
return dropTarget === null ? null : dropTarget?.active ? dropTarget : DropTarget.getActiveDropTarget(dropTarget.nextDropTarget);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
function identifyDropTarget(x, y, rootLayout, measurements, intrinsicSize, validDropTargets) {
|
|
165
|
-
let dropTarget = null;
|
|
166
|
-
const allBoxesContainingPoint = BoxModel.BoxModel.allBoxesContainingPoint(
|
|
167
|
-
rootLayout,
|
|
168
|
-
measurements,
|
|
169
|
-
x,
|
|
170
|
-
y,
|
|
171
|
-
validDropTargets
|
|
172
|
-
);
|
|
173
|
-
if (allBoxesContainingPoint.length) {
|
|
174
|
-
const [component, ...containers] = allBoxesContainingPoint;
|
|
175
|
-
const {
|
|
176
|
-
"data-path": dataPath,
|
|
177
|
-
path = dataPath,
|
|
178
|
-
"data-row-placeholder": isRowPlaceholder
|
|
179
|
-
} = propUtils.getProps(component);
|
|
180
|
-
const clientRect = measurements[path];
|
|
181
|
-
const placeholderOrientation = intrinsicSize && isRowPlaceholder ? "row" : void 0;
|
|
182
|
-
const pos = BoxModel.getPosition(x, y, clientRect, placeholderOrientation);
|
|
183
|
-
const box = measurements[path];
|
|
184
|
-
const nextDropTarget = ([nextTarget, ...targets]) => {
|
|
185
|
-
if (pos.position?.Header || pos.closeToTheEdge) {
|
|
186
|
-
const targetPosition = getTargetPosition(
|
|
187
|
-
nextTarget,
|
|
188
|
-
pos,
|
|
189
|
-
box,
|
|
190
|
-
measurements,
|
|
191
|
-
x,
|
|
192
|
-
y
|
|
193
|
-
);
|
|
194
|
-
if (targetPosition) {
|
|
195
|
-
const [containerPos, clientRect2] = targetPosition;
|
|
196
|
-
return new DropTarget({
|
|
197
|
-
component: nextTarget,
|
|
198
|
-
pos: containerPos,
|
|
199
|
-
clientRect: clientRect2,
|
|
200
|
-
nextDropTarget: nextDropTarget(targets) ?? null
|
|
201
|
-
});
|
|
202
|
-
} else if (targets.length) {
|
|
203
|
-
return nextDropTarget(targets);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
};
|
|
207
|
-
dropTarget = new DropTarget({
|
|
208
|
-
component,
|
|
209
|
-
pos,
|
|
210
|
-
clientRect,
|
|
211
|
-
nextDropTarget: nextDropTarget(containers) ?? null
|
|
212
|
-
}).activate();
|
|
213
|
-
}
|
|
214
|
-
return dropTarget;
|
|
215
|
-
}
|
|
216
|
-
function getTargetPosition(container, { closeToTheEdge, position }, box, measurements, x, y) {
|
|
217
|
-
if (!container || container.type === "LayoutContainer") {
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
const containingBox = measurements[container.props.path];
|
|
221
|
-
const closeToTop = closeToTheEdge & BoxModel.positionValues.north;
|
|
222
|
-
const closeToRight = closeToTheEdge & BoxModel.positionValues.east;
|
|
223
|
-
const closeToBottom = closeToTheEdge & BoxModel.positionValues.south;
|
|
224
|
-
const closeToLeft = closeToTheEdge & BoxModel.positionValues.west;
|
|
225
|
-
const atTop = (closeToTop || position.Header) && Math.round(box.top) === Math.round(containingBox.top);
|
|
226
|
-
const atRight = closeToRight && Math.round(box.right) === Math.round(containingBox.right);
|
|
227
|
-
const atBottom = closeToBottom && Math.round(box.bottom) === Math.round(containingBox.bottom);
|
|
228
|
-
const atLeft = closeToLeft && Math.round(box.left) === Math.round(containingBox.left);
|
|
229
|
-
if (atTop || atRight || atBottom || atLeft) {
|
|
230
|
-
const { "data-path": dataPath, path = dataPath } = container.props;
|
|
231
|
-
const clientRect = measurements[path];
|
|
232
|
-
const containerPos = BoxModel.getPosition(x, y, clientRect);
|
|
233
|
-
if ((isVBox(container) || isTabbedContainer(container)) && closeToTheEdge & eastwest) {
|
|
234
|
-
containerPos.width = 120;
|
|
235
|
-
return [containerPos, clientRect];
|
|
236
|
-
} else if ((isHBox(container) || isTabbedContainer(container)) && (position.Header || closeToTheEdge & northsouth)) {
|
|
237
|
-
containerPos.height = 120;
|
|
238
|
-
return [containerPos, clientRect];
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
function isTabbedContainer(component) {
|
|
243
|
-
return typeOf.typeOf(component) === "Stack";
|
|
244
|
-
}
|
|
245
|
-
function isVBox(component) {
|
|
246
|
-
return typeOf.typeOf(component) === "Flexbox" && // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
247
|
-
component.props.style.flexDirection === "column";
|
|
248
|
-
}
|
|
249
|
-
function isHBox(component) {
|
|
250
|
-
return typeOf.typeOf(component) === "Flexbox" && // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
251
|
-
component.props.style.flexDirection === "row";
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
exports.DropTarget = DropTarget;
|
|
255
|
-
exports.identifyDropTarget = identifyDropTarget;
|
|
256
|
-
exports.isTabstrip = isTabstrip;
|
|
257
|
-
//# sourceMappingURL=DropTarget.js.map
|