tree-element 0.1.1 → 0.3.0
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/README.md +43 -31
- package/lib/animation.d.ts +2 -2
- package/lib/animation.d.ts.map +1 -1
- package/lib/animation.js +16 -12
- package/lib/animation.js.map +1 -1
- package/lib/classNames.d.ts.map +1 -1
- package/lib/classNames.js +2 -2
- package/lib/classNames.js.map +1 -1
- package/lib/dataLoader.d.ts +1 -0
- package/lib/dataLoader.d.ts.map +1 -1
- package/lib/dataLoader.js +22 -20
- package/lib/dataLoader.js.map +1 -1
- package/lib/dragAndDropHandler/binarySearch.js +3 -3
- package/lib/dragAndDropHandler/binarySearch.js.map +1 -1
- package/lib/dragAndDropHandler/dragElement.d.ts.map +1 -1
- package/lib/dragAndDropHandler/dragElement.js +11 -13
- package/lib/dragAndDropHandler/dragElement.js.map +1 -1
- package/lib/dragAndDropHandler/generateHitAreas.d.ts.map +1 -1
- package/lib/dragAndDropHandler/generateHitAreas.js +25 -25
- package/lib/dragAndDropHandler/generateHitAreas.js.map +1 -1
- package/lib/dragAndDropHandler/index.d.ts.map +1 -1
- package/lib/dragAndDropHandler/index.js +125 -158
- package/lib/dragAndDropHandler/index.js.map +1 -1
- package/lib/dragAndDropHandler/iterateVisibleNodes.d.ts.map +1 -1
- package/lib/dragAndDropHandler/iterateVisibleNodes.js +23 -22
- package/lib/dragAndDropHandler/iterateVisibleNodes.js.map +1 -1
- package/lib/dragAndDropHandler/types.d.ts.map +1 -1
- package/lib/elementsRenderer.d.ts +20 -7
- package/lib/elementsRenderer.d.ts.map +1 -1
- package/lib/elementsRenderer.js +195 -136
- package/lib/elementsRenderer.js.map +1 -1
- package/lib/events.d.ts +44 -11
- package/lib/events.d.ts.map +1 -1
- package/lib/index.d.ts +36 -13
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +386 -349
- package/lib/index.js.map +1 -1
- package/lib/keyHandler.d.ts +13 -8
- package/lib/keyHandler.d.ts.map +1 -1
- package/lib/keyHandler.js +106 -51
- package/lib/keyHandler.js.map +1 -1
- package/lib/methodTypes.d.ts +3 -3
- package/lib/methodTypes.d.ts.map +1 -1
- package/lib/mouseHandler.d.ts +1 -1
- package/lib/mouseHandler.d.ts.map +1 -1
- package/lib/mouseHandler.js +36 -49
- package/lib/mouseHandler.js.map +1 -1
- package/lib/mouseUtils.d.ts.map +1 -1
- package/lib/mouseUtils.js +2 -2
- package/lib/mouseUtils.js.map +1 -1
- package/lib/node.d.ts +47 -16
- package/lib/node.d.ts.map +1 -1
- package/lib/node.js +169 -171
- package/lib/node.js.map +1 -1
- package/lib/nodeElement/borderDropHint.d.ts.map +1 -1
- package/lib/nodeElement/borderDropHint.js +4 -5
- package/lib/nodeElement/borderDropHint.js.map +1 -1
- package/lib/nodeElement/folderElement.d.ts +8 -5
- package/lib/nodeElement/folderElement.d.ts.map +1 -1
- package/lib/nodeElement/folderElement.js +75 -67
- package/lib/nodeElement/folderElement.js.map +1 -1
- package/lib/nodeElement/ghostDropHint.d.ts.map +1 -1
- package/lib/nodeElement/ghostDropHint.js +13 -13
- package/lib/nodeElement/ghostDropHint.js.map +1 -1
- package/lib/nodeElement/index.d.ts +2 -1
- package/lib/nodeElement/index.d.ts.map +1 -1
- package/lib/nodeElement/index.js +38 -30
- package/lib/nodeElement/index.js.map +1 -1
- package/lib/nodeUtils.d.ts.map +1 -1
- package/lib/nodeUtils.js +1 -1
- package/lib/nodeUtils.js.map +1 -1
- package/lib/options.d.ts +19 -3
- package/lib/options.d.ts.map +1 -1
- package/lib/positionUtils.js +3 -3
- package/lib/positionUtils.js.map +1 -1
- package/lib/requestUrl.d.ts +1 -1
- package/lib/requestUrl.d.ts.map +1 -1
- package/lib/requestUrl.js +6 -17
- package/lib/requestUrl.js.map +1 -1
- package/lib/saveStateHandler.d.ts.map +1 -1
- package/lib/saveStateHandler.js +59 -89
- package/lib/saveStateHandler.js.map +1 -1
- package/lib/scrollHandler/containerScrollParent.d.ts.map +1 -1
- package/lib/scrollHandler/containerScrollParent.js +11 -18
- package/lib/scrollHandler/containerScrollParent.js.map +1 -1
- package/lib/scrollHandler/createScrollParent.d.ts.map +1 -1
- package/lib/scrollHandler/createScrollParent.js +12 -13
- package/lib/scrollHandler/createScrollParent.js.map +1 -1
- package/lib/scrollHandler/documentScrollParent.d.ts.map +1 -1
- package/lib/scrollHandler/documentScrollParent.js +18 -27
- package/lib/scrollHandler/documentScrollParent.js.map +1 -1
- package/lib/scrollHandler/scrollParent.d.ts.map +1 -1
- package/lib/scrollHandler/scrollParent.js +30 -34
- package/lib/scrollHandler/scrollParent.js.map +1 -1
- package/lib/scrollHandler.d.ts.map +1 -1
- package/lib/scrollHandler.js +11 -14
- package/lib/scrollHandler.js.map +1 -1
- package/lib/selectNodeHandler.d.ts +4 -2
- package/lib/selectNodeHandler.d.ts.map +1 -1
- package/lib/selectNodeHandler.js +64 -83
- package/lib/selectNodeHandler.js.map +1 -1
- package/lib/setDefaultOptions.d.ts.map +1 -1
- package/lib/setDefaultOptions.js +34 -38
- package/lib/setDefaultOptions.js.map +1 -1
- package/lib/triggerCustomEvent.d.ts.map +1 -1
- package/lib/triggerCustomEvent.js +2 -2
- package/lib/triggerCustomEvent.js.map +1 -1
- package/lib/util.d.ts.map +1 -1
- package/lib/util.js +2 -2
- package/lib/util.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +43 -32
- package/src/animation.ts +14 -12
- package/src/classNames.ts +52 -52
- package/src/dataLoader.ts +79 -71
- package/src/dragAndDropHandler/binarySearch.ts +17 -17
- package/src/dragAndDropHandler/dragElement.ts +51 -50
- package/src/dragAndDropHandler/generateHitAreas.ts +156 -161
- package/src/dragAndDropHandler/index.ts +334 -348
- package/src/dragAndDropHandler/iterateVisibleNodes.ts +61 -63
- package/src/dragAndDropHandler/types.ts +5 -5
- package/src/elementsRenderer.ts +377 -294
- package/src/events.ts +241 -208
- package/src/header.txt +1 -1
- package/src/index.ts +259 -229
- package/src/keyHandler.ts +179 -115
- package/src/methodTypes.ts +7 -10
- package/src/mouseHandler.ts +316 -316
- package/src/mouseUtils.ts +14 -14
- package/src/node.ts +773 -771
- package/src/nodeElement/borderDropHint.ts +25 -25
- package/src/nodeElement/folderElement.ts +116 -102
- package/src/nodeElement/ghostDropHint.ts +64 -62
- package/src/nodeElement/index.ts +81 -73
- package/src/nodeUtils.ts +5 -5
- package/src/options.ts +25 -5
- package/src/requestUrl.ts +7 -14
- package/src/saveStateHandler.ts +191 -207
- package/src/scrollHandler/containerScrollParent.ts +40 -49
- package/src/scrollHandler/createScrollParent.ts +26 -27
- package/src/scrollHandler/documentScrollParent.ts +66 -72
- package/src/scrollHandler/scrollParent.ts +90 -86
- package/src/scrollHandler.ts +45 -45
- package/src/selectNodeHandler.ts +171 -165
- package/src/setDefaultOptions.ts +44 -32
- package/src/triggerCustomEvent.ts +7 -3
- package/src/util.ts +2 -3
- package/src/version.ts +1 -1
- package/tree_element.css +87 -69
- package/tree_element.debug.js +3866 -3831
- package/tree_element.debug.js.map +1 -1
- package/tree_element.js +2 -2
- package/tree_element.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateHitAreas.js","sources":["../../src/dragAndDropHandler/generateHitAreas.ts"],"sourcesContent":["import type { Node, Position } from \"../node\";\nimport type { HitArea } from \"./types\";\n\nimport { getOffsetTop } from \"../positionUtils\";\nimport iterateVisibleNodes from \"./iterateVisibleNodes\";\n\ninterface HitPosition {\n
|
|
1
|
+
{"version":3,"file":"generateHitAreas.js","sources":["../../src/dragAndDropHandler/generateHitAreas.ts"],"sourcesContent":["import type { Node, Position } from \"../node\";\nimport type { HitArea } from \"./types\";\n\nimport { getOffsetTop } from \"../positionUtils\";\nimport iterateVisibleNodes from \"./iterateVisibleNodes\";\n\ninterface HitPosition {\n node: Node;\n position: null | Position;\n top: number;\n}\n\nexport const generateHitPositions = (\n tree: Node,\n currentNode: Node,\n): HitPosition[] => {\n const hitPositions: HitPosition[] = [];\n let lastTop = 0;\n\n const addHitPosition = (\n node: Node,\n position: null | Position,\n top: number,\n ) => {\n hitPositions.push({\n node,\n position,\n top,\n });\n lastTop = top;\n };\n\n const handleAfterOpenFolder = (node: Node, nextNode: Node | null) => {\n if (node === currentNode || nextNode === currentNode) {\n // Cannot move before or after current item\n addHitPosition(node, null, lastTop);\n } else {\n addHitPosition(node, \"after\", lastTop);\n }\n };\n\n const handleClosedFolder = (\n node: Node,\n nextNode: Node | null,\n element: HTMLElement,\n ) => {\n const top = getOffsetTop(element);\n\n if (node === currentNode) {\n // Cannot move after current item\n addHitPosition(node, null, top);\n } else {\n addHitPosition(node, \"inside\", top);\n\n // Cannot move before current item\n if (nextNode !== currentNode) {\n addHitPosition(node, \"after\", top);\n }\n }\n };\n\n const handleFirstNode = (node: Node) => {\n if (node !== currentNode && node.element) {\n addHitPosition(node, \"before\", getOffsetTop(node.element));\n }\n };\n\n const handleNode = (\n node: Node,\n nextNode: Node | null,\n element: HTMLElement,\n ) => {\n const top = getOffsetTop(element);\n\n if (node === currentNode) {\n // Cannot move inside current item\n addHitPosition(node, null, top);\n } else {\n addHitPosition(node, \"inside\", top);\n }\n\n if (nextNode === currentNode || node === currentNode) {\n // Cannot move before or after current item\n addHitPosition(node, null, top);\n } else {\n addHitPosition(node, \"after\", top);\n }\n };\n\n const handleOpenFolder = (node: Node, element: HTMLElement) => {\n if (node === currentNode) {\n // Cannot move inside current item\n\n // Dnd over the current element is not possible: add a position with type None for the top and the bottom.\n const top = getOffsetTop(element);\n const height = element.clientHeight;\n addHitPosition(node, null, top);\n\n if (height > 5) {\n // Subtract 5 pixels to allow more space for the next element.\n addHitPosition(node, null, top + height - 5);\n }\n\n // Stop iterating\n return false;\n }\n\n // Cannot move before current item\n if (node.children[0] !== currentNode) {\n addHitPosition(node, \"inside\", getOffsetTop(element));\n }\n\n // Continue iterating\n return true;\n };\n\n iterateVisibleNodes(tree, {\n handleAfterOpenFolder,\n handleClosedFolder,\n handleFirstNode,\n handleNode,\n handleOpenFolder,\n });\n\n return hitPositions;\n};\n\nexport const generateHitAreasForGroup = (\n hitAreas: HitArea[],\n positionsInGroup: HitPosition[],\n top: number,\n bottom: number,\n) => {\n // limit positions in group\n const positionCount = Math.min(positionsInGroup.length, 4);\n\n const areaHeight = Math.round((bottom - top) / positionCount);\n let areaTop = top;\n\n for (let i = 0; i < positionCount; i++) {\n const position = positionsInGroup[i] as HitPosition;\n\n if (position.position) {\n hitAreas.push({\n bottom: areaTop + areaHeight,\n node: position.node,\n position: position.position,\n top: areaTop,\n });\n }\n\n areaTop += areaHeight;\n }\n};\n\nexport const generateHitAreasFromPositions = (\n hitPositions: HitPosition[],\n treeBottom: number,\n): HitArea[] => {\n if (!hitPositions.length) {\n return [];\n }\n\n let previousTop = (hitPositions[0] as HitPosition).top;\n let group: HitPosition[] = [];\n const hitAreas: HitArea[] = [];\n\n for (const position of hitPositions) {\n if (position.top !== previousTop && group.length) {\n generateHitAreasForGroup(hitAreas, group, previousTop, position.top);\n\n previousTop = position.top;\n group = [];\n }\n\n group.push(position);\n }\n\n generateHitAreasForGroup(hitAreas, group, previousTop, treeBottom);\n\n return hitAreas;\n};\n\nconst generateHitAreas = (tree: Node, currentNode: Node, treeBottom: number) =>\n generateHitAreasFromPositions(\n generateHitPositions(tree, currentNode),\n treeBottom,\n );\n\nexport default generateHitAreas;\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dragAndDropHandler/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dragAndDropHandler/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,48 +4,24 @@ import DragElement from './dragElement.js';
|
|
|
4
4
|
import generateHitAreas from './generateHitAreas.js';
|
|
5
5
|
|
|
6
6
|
class DragAndDropHandler {
|
|
7
|
-
currentItem;
|
|
8
|
-
hitAreas;
|
|
9
|
-
hoveredArea;
|
|
10
|
-
isDragging;
|
|
11
|
-
_autoEscape;
|
|
12
|
-
_classNames;
|
|
13
|
-
_dragElement;
|
|
14
|
-
_getNodeElement;
|
|
15
|
-
_getNodeElementForNode;
|
|
16
|
-
_getScrollLeft;
|
|
17
|
-
_getTree;
|
|
18
|
-
_onCanMove;
|
|
19
|
-
_onCanMoveTo;
|
|
20
|
-
_onDragMove;
|
|
21
|
-
_onDragStop;
|
|
22
|
-
_onIsMoveHandle;
|
|
23
|
-
_openFolderDelay;
|
|
24
|
-
_openFolderTimer;
|
|
25
|
-
_openNode;
|
|
26
|
-
_previousGhost;
|
|
27
|
-
_refreshElements;
|
|
28
|
-
_slide;
|
|
29
|
-
_treeElement;
|
|
30
|
-
_triggerEvent;
|
|
31
7
|
constructor({
|
|
32
|
-
autoEscape,
|
|
33
|
-
classNames,
|
|
34
|
-
getNodeElement,
|
|
35
|
-
getNodeElementForNode,
|
|
36
|
-
getScrollLeft,
|
|
37
|
-
getTree,
|
|
38
|
-
onCanMove,
|
|
39
|
-
onCanMoveTo,
|
|
40
|
-
onDragMove,
|
|
41
|
-
onDragStop,
|
|
42
|
-
onIsMoveHandle,
|
|
43
|
-
openFolderDelay,
|
|
44
|
-
openNode,
|
|
45
|
-
refreshElements,
|
|
46
|
-
slide,
|
|
47
|
-
treeElement,
|
|
48
|
-
triggerEvent
|
|
8
|
+
_autoEscape: autoEscape,
|
|
9
|
+
_classNames: classNames,
|
|
10
|
+
_getNodeElement: getNodeElement,
|
|
11
|
+
_getNodeElementForNode: getNodeElementForNode,
|
|
12
|
+
_getScrollLeft: getScrollLeft,
|
|
13
|
+
_getTree: getTree,
|
|
14
|
+
_onCanMove: onCanMove,
|
|
15
|
+
_onCanMoveTo: onCanMoveTo,
|
|
16
|
+
_onDragMove: onDragMove,
|
|
17
|
+
_onDragStop: onDragStop,
|
|
18
|
+
_onIsMoveHandle: onIsMoveHandle,
|
|
19
|
+
_openFolderDelay: openFolderDelay,
|
|
20
|
+
_openNode: openNode,
|
|
21
|
+
_refreshElements: refreshElements,
|
|
22
|
+
_slide: slide,
|
|
23
|
+
_treeElement: treeElement,
|
|
24
|
+
_triggerEvent: triggerEvent
|
|
49
25
|
}) {
|
|
50
26
|
this._autoEscape = autoEscape;
|
|
51
27
|
this._classNames = classNames;
|
|
@@ -64,16 +40,16 @@ class DragAndDropHandler {
|
|
|
64
40
|
this._slide = slide;
|
|
65
41
|
this._treeElement = treeElement;
|
|
66
42
|
this._triggerEvent = triggerEvent;
|
|
67
|
-
this.
|
|
68
|
-
this.
|
|
69
|
-
this.
|
|
70
|
-
this.
|
|
43
|
+
this._hoveredArea = null;
|
|
44
|
+
this._hitAreas = [];
|
|
45
|
+
this._isDragging = false;
|
|
46
|
+
this._currentItem = null;
|
|
71
47
|
this._dragElement = null;
|
|
72
48
|
this._openFolderTimer = null;
|
|
73
49
|
this._previousGhost = null;
|
|
74
50
|
}
|
|
75
|
-
|
|
76
|
-
|
|
51
|
+
_mouseCapture(positionInfo) {
|
|
52
|
+
let element = positionInfo.target;
|
|
77
53
|
if (!this._mustCaptureElement(element)) {
|
|
78
54
|
return null;
|
|
79
55
|
}
|
|
@@ -81,26 +57,24 @@ class DragAndDropHandler {
|
|
|
81
57
|
return null;
|
|
82
58
|
}
|
|
83
59
|
let nodeElement = this._getNodeElement(element);
|
|
84
|
-
if (nodeElement && this._onCanMove) {
|
|
85
|
-
|
|
86
|
-
nodeElement = null;
|
|
87
|
-
}
|
|
60
|
+
if (nodeElement && this._onCanMove && !this._onCanMove(nodeElement._node)) {
|
|
61
|
+
nodeElement = null;
|
|
88
62
|
}
|
|
89
|
-
this.
|
|
90
|
-
return this.
|
|
63
|
+
this._currentItem = nodeElement;
|
|
64
|
+
return this._currentItem != null;
|
|
91
65
|
}
|
|
92
|
-
|
|
93
|
-
if (!this.
|
|
66
|
+
_mouseDrag(positionInfo) {
|
|
67
|
+
if (!this._currentItem || !this._dragElement) {
|
|
94
68
|
return false;
|
|
95
69
|
}
|
|
96
|
-
this._dragElement.
|
|
97
|
-
|
|
98
|
-
if (area && this._canMoveToArea(area, this.
|
|
70
|
+
this._dragElement._move(positionInfo.pageX, positionInfo.pageY);
|
|
71
|
+
let area = this._findHoveredArea(positionInfo.pageX, positionInfo.pageY);
|
|
72
|
+
if (area && this._canMoveToArea(area, this._currentItem)) {
|
|
99
73
|
if (!area.node.isFolder()) {
|
|
100
74
|
this._stopOpenFolderTimer();
|
|
101
75
|
}
|
|
102
|
-
if (this.
|
|
103
|
-
this.
|
|
76
|
+
if (this._hoveredArea !== area) {
|
|
77
|
+
this._hoveredArea = area;
|
|
104
78
|
|
|
105
79
|
// If this is a closed folder, start timer to open it
|
|
106
80
|
if (this._mustOpenFolderTimer(area)) {
|
|
@@ -113,108 +87,96 @@ class DragAndDropHandler {
|
|
|
113
87
|
} else {
|
|
114
88
|
this._removeDropHint();
|
|
115
89
|
this._stopOpenFolderTimer();
|
|
116
|
-
this.
|
|
90
|
+
this._hoveredArea = area;
|
|
117
91
|
}
|
|
118
|
-
if (!area) {
|
|
119
|
-
|
|
120
|
-
this._onDragMove(this.currentItem.node, positionInfo.originalEvent);
|
|
121
|
-
}
|
|
92
|
+
if (!area && this._onDragMove) {
|
|
93
|
+
this._onDragMove(this._currentItem._node, positionInfo.originalEvent);
|
|
122
94
|
}
|
|
123
95
|
return true;
|
|
124
96
|
}
|
|
125
|
-
|
|
126
|
-
if (!this.
|
|
97
|
+
_mouseStart(positionInfo) {
|
|
98
|
+
if (!this._currentItem) {
|
|
127
99
|
return false;
|
|
128
100
|
}
|
|
129
|
-
this.
|
|
130
|
-
|
|
101
|
+
this._refresh();
|
|
102
|
+
let {
|
|
131
103
|
left,
|
|
132
104
|
top
|
|
133
105
|
} = getElementPosition(positionInfo.target);
|
|
134
|
-
|
|
106
|
+
let node = this._currentItem._node;
|
|
135
107
|
this._dragElement = new DragElement({
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
108
|
+
_autoEscape: this._autoEscape ?? true,
|
|
109
|
+
_classNames: this._classNames,
|
|
110
|
+
_nodeName: node.name,
|
|
111
|
+
_offsetX: positionInfo.pageX - left,
|
|
112
|
+
_offsetY: positionInfo.pageY - top,
|
|
113
|
+
_treeElement: this._treeElement
|
|
142
114
|
});
|
|
143
|
-
this.
|
|
144
|
-
this.
|
|
115
|
+
this._isDragging = true;
|
|
116
|
+
this._currentItem._element.classList.add(this._classNames.moving);
|
|
145
117
|
return true;
|
|
146
118
|
}
|
|
147
|
-
|
|
119
|
+
_mouseStop(positionInfo) {
|
|
148
120
|
this._moveItem(positionInfo);
|
|
149
121
|
this._clear();
|
|
150
122
|
this._removeHover();
|
|
151
123
|
this._removeDropHint();
|
|
152
124
|
this._removeHitAreas();
|
|
153
|
-
|
|
154
|
-
if (this.
|
|
155
|
-
this.
|
|
156
|
-
this.
|
|
125
|
+
let currentItem = this._currentItem;
|
|
126
|
+
if (this._currentItem) {
|
|
127
|
+
this._currentItem._element.classList.remove(this._classNames.moving);
|
|
128
|
+
this._currentItem = null;
|
|
157
129
|
}
|
|
158
|
-
this.
|
|
159
|
-
if (!this.
|
|
160
|
-
|
|
161
|
-
this._onDragStop(currentItem.node, positionInfo.originalEvent);
|
|
162
|
-
}
|
|
130
|
+
this._isDragging = false;
|
|
131
|
+
if (!this._hoveredArea && currentItem && this._onDragStop) {
|
|
132
|
+
this._onDragStop(currentItem._node, positionInfo.originalEvent);
|
|
163
133
|
}
|
|
164
134
|
return false;
|
|
165
135
|
}
|
|
166
|
-
|
|
136
|
+
_refresh() {
|
|
167
137
|
this._removeHitAreas();
|
|
168
|
-
if (this.
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
138
|
+
if (!this._currentItem) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
let currentNode = this._currentItem._node;
|
|
142
|
+
this._generateHitAreas(currentNode);
|
|
143
|
+
this._currentItem = this._getNodeElementForNode(currentNode);
|
|
144
|
+
if (this._isDragging) {
|
|
145
|
+
this._currentItem._element.classList.add(this._classNames.moving);
|
|
175
146
|
}
|
|
176
147
|
}
|
|
177
148
|
_canMoveToArea(area, currentItem) {
|
|
178
|
-
|
|
179
|
-
return true;
|
|
180
|
-
}
|
|
181
|
-
return this._onCanMoveTo(currentItem.node, area.node, area.position);
|
|
149
|
+
return this._onCanMoveTo ? this._onCanMoveTo(currentItem._node, area.node, area.position) : true;
|
|
182
150
|
}
|
|
183
151
|
_clear() {
|
|
184
|
-
if (this._dragElement) {
|
|
185
|
-
|
|
186
|
-
this._dragElement = null;
|
|
152
|
+
if (!this._dragElement) {
|
|
153
|
+
return;
|
|
187
154
|
}
|
|
155
|
+
this._dragElement._remove();
|
|
156
|
+
this._dragElement = null;
|
|
188
157
|
}
|
|
189
158
|
_findHoveredArea(x, y) {
|
|
190
|
-
|
|
159
|
+
let dimensions = this._getTreeDimensions();
|
|
191
160
|
if (x < dimensions.left || y < dimensions.top || x > dimensions.right || y > dimensions.bottom) {
|
|
192
161
|
return null;
|
|
193
162
|
}
|
|
194
|
-
return binarySearch(this.
|
|
163
|
+
return binarySearch(this._hitAreas, area => {
|
|
195
164
|
if (y < area.top) {
|
|
196
165
|
return 1;
|
|
197
|
-
} else if (y > area.bottom) {
|
|
198
|
-
return -1;
|
|
199
|
-
} else {
|
|
200
|
-
return 0;
|
|
201
166
|
}
|
|
167
|
+
return y > area.bottom ? -1 : 0;
|
|
202
168
|
});
|
|
203
169
|
}
|
|
204
170
|
_generateHitAreas(currentNode) {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
this.hitAreas = [];
|
|
208
|
-
} else {
|
|
209
|
-
this.hitAreas = generateHitAreas(tree, currentNode, this._getTreeDimensions().bottom);
|
|
210
|
-
}
|
|
171
|
+
let tree = this._getTree();
|
|
172
|
+
this._hitAreas = tree ? generateHitAreas(tree, currentNode, this._getTreeDimensions().bottom) : [];
|
|
211
173
|
}
|
|
212
174
|
_getTreeDimensions() {
|
|
213
175
|
// Return the dimensions of the tree. Add a margin to the bottom to allow
|
|
214
176
|
// to drag-and-drop after the last element.
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
177
|
+
let treePosition = getElementPosition(this._treeElement);
|
|
178
|
+
let left = treePosition.left + this._getScrollLeft();
|
|
179
|
+
let top = treePosition.top;
|
|
218
180
|
return {
|
|
219
181
|
bottom: top + this._treeElement.clientHeight + 16,
|
|
220
182
|
left,
|
|
@@ -223,44 +185,48 @@ class DragAndDropHandler {
|
|
|
223
185
|
};
|
|
224
186
|
}
|
|
225
187
|
|
|
226
|
-
/*
|
|
188
|
+
/*
|
|
189
|
+
Move the dragged node to the selected position in the tree.
|
|
190
|
+
*/
|
|
227
191
|
_moveItem(positionInfo) {
|
|
228
|
-
if (this.
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
192
|
+
if (!(this._currentItem && this._hoveredArea?.position && this._canMoveToArea(this._hoveredArea, this._currentItem))) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
let movedNode = this._currentItem._node;
|
|
196
|
+
let targetNode = this._hoveredArea.node;
|
|
197
|
+
let position = this._hoveredArea.position;
|
|
198
|
+
let previousParent = movedNode.parent;
|
|
199
|
+
if (position === "inside") {
|
|
200
|
+
this._hoveredArea.node.is_open = true;
|
|
201
|
+
}
|
|
202
|
+
let doMove = () => {
|
|
203
|
+
let tree = this._getTree();
|
|
204
|
+
if (!tree) {
|
|
205
|
+
return;
|
|
235
206
|
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
originalEvent: positionInfo.originalEvent,
|
|
249
|
-
position,
|
|
250
|
-
previousParent,
|
|
251
|
-
targetNode
|
|
252
|
-
}
|
|
253
|
-
})) {
|
|
254
|
-
doMove();
|
|
207
|
+
tree.moveNode(movedNode, targetNode, position);
|
|
208
|
+
this._treeElement.textContent = "";
|
|
209
|
+
this._refreshElements(null);
|
|
210
|
+
};
|
|
211
|
+
if (this._triggerEvent("tree.move", {
|
|
212
|
+
moveInfo: {
|
|
213
|
+
doMove,
|
|
214
|
+
movedNode,
|
|
215
|
+
originalEvent: positionInfo.originalEvent,
|
|
216
|
+
position,
|
|
217
|
+
previousParent,
|
|
218
|
+
targetNode
|
|
255
219
|
}
|
|
220
|
+
})) {
|
|
221
|
+
doMove();
|
|
256
222
|
}
|
|
257
223
|
}
|
|
258
224
|
_mustCaptureElement(element) {
|
|
259
|
-
|
|
225
|
+
let nodeName = element.nodeName;
|
|
260
226
|
return nodeName !== "INPUT" && nodeName !== "SELECT" && nodeName !== "TEXTAREA";
|
|
261
227
|
}
|
|
262
228
|
_mustOpenFolderTimer(area) {
|
|
263
|
-
|
|
229
|
+
let node = area.node;
|
|
264
230
|
return node.isFolder() && !node.is_open && area.position === "inside";
|
|
265
231
|
}
|
|
266
232
|
_removeDropHint() {
|
|
@@ -269,32 +235,33 @@ class DragAndDropHandler {
|
|
|
269
235
|
}
|
|
270
236
|
}
|
|
271
237
|
_removeHitAreas() {
|
|
272
|
-
this.
|
|
238
|
+
this._hitAreas = [];
|
|
273
239
|
}
|
|
274
240
|
_removeHover() {
|
|
275
|
-
this.
|
|
241
|
+
this._hoveredArea = null;
|
|
276
242
|
}
|
|
277
243
|
_startOpenFolderTimer(folder) {
|
|
278
|
-
|
|
244
|
+
let openFolder = () => {
|
|
279
245
|
void this._openNode(folder, this._slide).then(() => {
|
|
280
|
-
this.
|
|
246
|
+
this._refresh();
|
|
281
247
|
this._updateDropHint();
|
|
282
248
|
});
|
|
283
249
|
};
|
|
284
250
|
this._stopOpenFolderTimer();
|
|
285
|
-
|
|
251
|
+
let openFolderDelay = this._openFolderDelay;
|
|
286
252
|
if (openFolderDelay !== false) {
|
|
287
253
|
this._openFolderTimer = window.setTimeout(openFolder, openFolderDelay);
|
|
288
254
|
}
|
|
289
255
|
}
|
|
290
256
|
_stopOpenFolderTimer() {
|
|
291
|
-
if (this._openFolderTimer) {
|
|
292
|
-
|
|
293
|
-
this._openFolderTimer = null;
|
|
257
|
+
if (!this._openFolderTimer) {
|
|
258
|
+
return;
|
|
294
259
|
}
|
|
260
|
+
clearTimeout(this._openFolderTimer);
|
|
261
|
+
this._openFolderTimer = null;
|
|
295
262
|
}
|
|
296
263
|
_updateDropHint() {
|
|
297
|
-
if (!this.
|
|
264
|
+
if (!this._hoveredArea) {
|
|
298
265
|
return;
|
|
299
266
|
}
|
|
300
267
|
|
|
@@ -302,8 +269,8 @@ class DragAndDropHandler {
|
|
|
302
269
|
this._removeDropHint();
|
|
303
270
|
|
|
304
271
|
// add new drop hint
|
|
305
|
-
|
|
306
|
-
this._previousGhost = nodeElement.
|
|
272
|
+
let nodeElement = this._getNodeElementForNode(this._hoveredArea.node);
|
|
273
|
+
this._previousGhost = nodeElement._addDropHint(this._hoveredArea.position);
|
|
307
274
|
}
|
|
308
275
|
}
|
|
309
276
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/dragAndDropHandler/index.ts"],"sourcesContent":["import type { ClassNames } from \"../classNames\";\nimport type {\n GetScrollLeft,\n GetTree,\n OpenNode,\n RefreshElements,\n TriggerEvent,\n} from \"../methodTypes\";\nimport type { PositionInfo } from \"../mouseUtils\";\nimport type { Node } from \"../node\";\nimport type NodeElement from \"../nodeElement\";\nimport type {\n DragMethod,\n OnCanMove,\n OnCanMoveTo,\n OnIsMoveHandle,\n} from \"../options\";\nimport type { DropHint, HitArea } from \"./types\";\n\nimport { getElementPosition } from \"../positionUtils\";\nimport binarySearch from \"./binarySearch\";\nimport DragElement from \"./dragElement\";\nimport generateHitAreas from \"./generateHitAreas\";\n\ninterface Dimensions {\n bottom: number;\n left: number;\n right: number;\n top: number;\n}\n\ninterface DragAndDropHandlerParams {\n autoEscape?: boolean;\n classNames: ClassNames;\n getNodeElement: GetNodeElement;\n getNodeElementForNode: GetNodeElementForNode;\n getScrollLeft: GetScrollLeft;\n getTree: GetTree;\n onCanMove?: OnCanMove;\n onCanMoveTo?: OnCanMoveTo;\n onDragMove?: DragMethod;\n onDragStop?: DragMethod;\n onIsMoveHandle?: OnIsMoveHandle;\n openFolderDelay: false | number;\n openNode: OpenNode;\n refreshElements: RefreshElements;\n slide: boolean;\n treeElement: HTMLElement;\n triggerEvent: TriggerEvent;\n}\ntype GetNodeElement = (element: HTMLElement) => NodeElement | null;\n\ntype GetNodeElementForNode = (node: Node) => NodeElement;\n\nexport class DragAndDropHandler {\n public currentItem: NodeElement | null;\n public hitAreas: HitArea[];\n public hoveredArea: HitArea | null;\n public isDragging: boolean;\n\n private autoEscape?: boolean;\n private classNames: ClassNames;\n private dragElement: DragElement | null;\n private getNodeElement: GetNodeElement;\n private getNodeElementForNode: GetNodeElementForNode;\n private getScrollLeft: GetScrollLeft;\n private getTree: GetTree;\n private onCanMove?: OnCanMove;\n private onCanMoveTo?: OnCanMoveTo;\n private onDragMove?: DragMethod;\n private onDragStop?: DragMethod;\n private onIsMoveHandle?: OnIsMoveHandle;\n private openFolderDelay: false | number;\n private openFolderTimer: null | number;\n private openNode: OpenNode;\n private previousGhost: DropHint | null;\n private refreshElements: RefreshElements;\n private slide: boolean;\n private treeElement: HTMLElement;\n private triggerEvent: TriggerEvent;\n\n constructor({\n autoEscape,\n classNames,\n getNodeElement,\n getNodeElementForNode,\n getScrollLeft,\n getTree,\n onCanMove,\n onCanMoveTo,\n onDragMove,\n onDragStop,\n onIsMoveHandle,\n openFolderDelay,\n openNode,\n refreshElements,\n slide,\n treeElement,\n triggerEvent,\n }: DragAndDropHandlerParams) {\n this.autoEscape = autoEscape;\n this.classNames = classNames;\n this.getNodeElement = getNodeElement;\n this.getNodeElementForNode = getNodeElementForNode;\n this.getScrollLeft = getScrollLeft;\n this.getTree = getTree;\n this.onCanMove = onCanMove;\n this.onCanMoveTo = onCanMoveTo;\n this.onDragMove = onDragMove;\n this.onDragStop = onDragStop;\n this.onIsMoveHandle = onIsMoveHandle;\n this.openFolderDelay = openFolderDelay;\n this.openNode = openNode;\n this.refreshElements = refreshElements;\n this.slide = slide;\n this.treeElement = treeElement;\n this.triggerEvent = triggerEvent;\n\n this.hoveredArea = null;\n this.hitAreas = [];\n this.isDragging = false;\n this.currentItem = null;\n\n this.dragElement = null;\n this.openFolderTimer = null;\n this.previousGhost = null;\n }\n\n public mouseCapture(positionInfo: PositionInfo): boolean | null {\n const element = positionInfo.target;\n\n if (!this.mustCaptureElement(element)) {\n return null;\n }\n\n if (this.onIsMoveHandle && !this.onIsMoveHandle(element)) {\n return null;\n }\n\n let nodeElement = this.getNodeElement(element);\n\n if (nodeElement && this.onCanMove) {\n if (!this.onCanMove(nodeElement.node)) {\n nodeElement = null;\n }\n }\n\n this.currentItem = nodeElement;\n return this.currentItem != null;\n }\n\n public mouseDrag(positionInfo: PositionInfo): boolean {\n if (!this.currentItem || !this.dragElement) {\n return false;\n }\n\n this.dragElement.move(positionInfo.pageX, positionInfo.pageY);\n\n const area = this.findHoveredArea(\n positionInfo.pageX,\n positionInfo.pageY,\n );\n\n if (area && this.canMoveToArea(area, this.currentItem)) {\n if (!area.node.isFolder()) {\n this.stopOpenFolderTimer();\n }\n\n if (this.hoveredArea !== area) {\n this.hoveredArea = area;\n\n // If this is a closed folder, start timer to open it\n if (this.mustOpenFolderTimer(area)) {\n this.startOpenFolderTimer(area.node);\n } else {\n this.stopOpenFolderTimer();\n }\n\n this.updateDropHint();\n }\n } else {\n this.removeDropHint();\n this.stopOpenFolderTimer();\n this.hoveredArea = area;\n }\n\n if (!area) {\n if (this.onDragMove) {\n this.onDragMove(\n this.currentItem.node,\n positionInfo.originalEvent,\n );\n }\n }\n\n return true;\n }\n\n public mouseStart(positionInfo: PositionInfo): boolean {\n if (!this.currentItem) {\n return false;\n }\n\n this.refresh();\n\n const { left, top } = getElementPosition(positionInfo.target);\n\n const node = this.currentItem.node;\n\n this.dragElement = new DragElement({\n autoEscape: this.autoEscape ?? true,\n classNames: this.classNames,\n nodeName: node.name,\n offsetX: positionInfo.pageX - left,\n offsetY: positionInfo.pageY - top,\n treeElement: this.treeElement,\n });\n\n this.isDragging = true;\n this.currentItem.element.classList.add(this.classNames.moving);\n\n return true;\n }\n\n public mouseStop(positionInfo: PositionInfo): boolean {\n this.moveItem(positionInfo);\n this.clear();\n this.removeHover();\n this.removeDropHint();\n this.removeHitAreas();\n\n const currentItem = this.currentItem;\n\n if (this.currentItem) {\n this.currentItem.element.classList.remove(this.classNames.moving);\n this.currentItem = null;\n }\n\n this.isDragging = false;\n\n if (!this.hoveredArea && currentItem) {\n if (this.onDragStop) {\n this.onDragStop(currentItem.node, positionInfo.originalEvent);\n }\n }\n\n return false;\n }\n\n public refresh(): void {\n this.removeHitAreas();\n\n if (this.currentItem) {\n const currentNode = this.currentItem.node;\n this.generateHitAreas(currentNode);\n this.currentItem = this.getNodeElementForNode(currentNode);\n\n if (this.isDragging) {\n this.currentItem.element.classList.add(this.classNames.moving);\n }\n }\n }\n\n private canMoveToArea(area: HitArea, currentItem: NodeElement): boolean {\n if (!this.onCanMoveTo) {\n return true;\n }\n\n return this.onCanMoveTo(currentItem.node, area.node, area.position);\n }\n\n private clear(): void {\n if (this.dragElement) {\n this.dragElement.remove();\n this.dragElement = null;\n }\n }\n\n private findHoveredArea(x: number, y: number): HitArea | null {\n const dimensions = this.getTreeDimensions();\n\n if (\n x < dimensions.left ||\n y < dimensions.top ||\n x > dimensions.right ||\n y > dimensions.bottom\n ) {\n return null;\n }\n\n return binarySearch<HitArea>(this.hitAreas, (area) => {\n if (y < area.top) {\n return 1;\n } else if (y > area.bottom) {\n return -1;\n } else {\n return 0;\n }\n });\n }\n\n private generateHitAreas(currentNode: Node): void {\n const tree = this.getTree();\n\n if (!tree) {\n this.hitAreas = [];\n } else {\n this.hitAreas = generateHitAreas(\n tree,\n currentNode,\n this.getTreeDimensions().bottom,\n );\n }\n }\n\n private getTreeDimensions(): Dimensions {\n // Return the dimensions of the tree. Add a margin to the bottom to allow\n // to drag-and-drop after the last element.\n const treePosition = getElementPosition(this.treeElement);\n const left = treePosition.left + this.getScrollLeft();\n const top = treePosition.top;\n\n return {\n bottom: top + this.treeElement.clientHeight + 16,\n left,\n right: left + this.treeElement.clientWidth,\n top,\n };\n }\n\n /* Move the dragged node to the selected position in the tree. */\n private moveItem(positionInfo: PositionInfo): void {\n if (\n this.currentItem &&\n this.hoveredArea?.position &&\n this.canMoveToArea(this.hoveredArea, this.currentItem)\n ) {\n const movedNode = this.currentItem.node;\n const targetNode = this.hoveredArea.node;\n const position = this.hoveredArea.position;\n const previousParent = movedNode.parent;\n\n if (position === \"inside\") {\n this.hoveredArea.node.is_open = true;\n }\n\n const doMove = (): void => {\n const tree = this.getTree();\n\n if (tree) {\n tree.moveNode(movedNode, targetNode, position);\n\n this.treeElement.textContent = \"\";\n this.refreshElements(null);\n }\n };\n\n if (this.triggerEvent(\"tree.move\", {\n moveInfo: {\n doMove,\n movedNode,\n originalEvent: positionInfo.originalEvent,\n position,\n previousParent,\n targetNode,\n },\n })) {\n doMove();\n }\n }\n }\n\n private mustCaptureElement(element: HTMLElement): boolean {\n const nodeName = element.nodeName;\n\n return (\n nodeName !== \"INPUT\" &&\n nodeName !== \"SELECT\" &&\n nodeName !== \"TEXTAREA\"\n );\n }\n\n private mustOpenFolderTimer(area: HitArea): boolean {\n const node = area.node;\n\n return node.isFolder() && !node.is_open && area.position === \"inside\";\n }\n\n private removeDropHint(): void {\n if (this.previousGhost) {\n this.previousGhost.remove();\n }\n }\n\n private removeHitAreas(): void {\n this.hitAreas = [];\n }\n\n private removeHover(): void {\n this.hoveredArea = null;\n }\n\n private startOpenFolderTimer(folder: Node): void {\n const openFolder = (): void => {\n void this.openNode(folder, this.slide).then(() => {\n this.refresh();\n this.updateDropHint();\n });\n };\n\n this.stopOpenFolderTimer();\n\n const openFolderDelay = this.openFolderDelay;\n\n if (openFolderDelay !== false) {\n this.openFolderTimer = window.setTimeout(\n openFolder,\n openFolderDelay,\n );\n }\n }\n\n private stopOpenFolderTimer(): void {\n if (this.openFolderTimer) {\n clearTimeout(this.openFolderTimer);\n this.openFolderTimer = null;\n }\n }\n\n private updateDropHint(): void {\n if (!this.hoveredArea) {\n return;\n }\n\n // remove previous drop hint\n this.removeDropHint();\n\n // add new drop hint\n const nodeElement = this.getNodeElementForNode(this.hoveredArea.node);\n this.previousGhost = nodeElement.addDropHint(this.hoveredArea.position);\n }\n}\n"],"names":["autoEscape","classNames","dragElement","getNodeElement","getNodeElementForNode","getScrollLeft","getTree","onCanMove","onCanMoveTo","onDragMove","onDragStop","onIsMoveHandle","openFolderDelay","openFolderTimer","openNode","previousGhost","refreshElements","slide","treeElement","triggerEvent","mustCaptureElement","findHoveredArea","canMoveToArea","stopOpenFolderTimer","mustOpenFolderTimer","startOpenFolderTimer","updateDropHint","removeDropHint","moveItem","clear","removeHover","removeHitAreas","generateHitAreas","getTreeDimensions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/dragAndDropHandler/index.ts"],"sourcesContent":["import type { ClassNames } from \"../classNames\";\nimport type {\n GetScrollLeft,\n GetTree,\n OpenNode,\n RefreshElements,\n TriggerEvent,\n} from \"../methodTypes\";\nimport type { PositionInfo } from \"../mouseUtils\";\nimport type { Node } from \"../node\";\nimport type NodeElement from \"../nodeElement\";\nimport type {\n DragMethod,\n OnCanMove,\n OnCanMoveTo,\n OnIsMoveHandle,\n} from \"../options\";\nimport type { DropHint, HitArea } from \"./types\";\n\nimport { getElementPosition } from \"../positionUtils\";\nimport binarySearch from \"./binarySearch\";\nimport DragElement from \"./dragElement\";\nimport generateHitAreas from \"./generateHitAreas\";\n\ninterface Dimensions {\n bottom: number;\n left: number;\n right: number;\n top: number;\n}\n\ninterface DragAndDropHandlerParams {\n autoEscape?: boolean;\n classNames: ClassNames;\n getNodeElement: GetNodeElement;\n getNodeElementForNode: GetNodeElementForNode;\n getScrollLeft: GetScrollLeft;\n getTree: GetTree;\n onCanMove?: OnCanMove;\n onCanMoveTo?: OnCanMoveTo;\n onDragMove?: DragMethod;\n onDragStop?: DragMethod;\n onIsMoveHandle?: OnIsMoveHandle;\n openFolderDelay: false | number;\n openNode: OpenNode;\n refreshElements: RefreshElements;\n slide: boolean;\n treeElement: HTMLElement;\n triggerEvent: TriggerEvent;\n}\ntype GetNodeElement = (element: HTMLElement) => NodeElement | null;\n\ntype GetNodeElementForNode = (node: Node) => NodeElement;\n\nexport class DragAndDropHandler {\n public currentItem: NodeElement | null;\n public hitAreas: HitArea[];\n public hoveredArea: HitArea | null;\n public isDragging: boolean;\n\n private autoEscape?: boolean;\n private classNames: ClassNames;\n private dragElement: DragElement | null;\n private getNodeElement: GetNodeElement;\n private getNodeElementForNode: GetNodeElementForNode;\n private getScrollLeft: GetScrollLeft;\n private getTree: GetTree;\n private onCanMove?: OnCanMove;\n private onCanMoveTo?: OnCanMoveTo;\n private onDragMove?: DragMethod;\n private onDragStop?: DragMethod;\n private onIsMoveHandle?: OnIsMoveHandle;\n private openFolderDelay: false | number;\n private openFolderTimer: null | number;\n private openNode: OpenNode;\n private previousGhost: DropHint | null;\n private refreshElements: RefreshElements;\n private slide: boolean;\n private treeElement: HTMLElement;\n private triggerEvent: TriggerEvent;\n\n constructor({\n autoEscape,\n classNames,\n getNodeElement,\n getNodeElementForNode,\n getScrollLeft,\n getTree,\n onCanMove,\n onCanMoveTo,\n onDragMove,\n onDragStop,\n onIsMoveHandle,\n openFolderDelay,\n openNode,\n refreshElements,\n slide,\n treeElement,\n triggerEvent,\n }: DragAndDropHandlerParams) {\n this.autoEscape = autoEscape;\n this.classNames = classNames;\n this.getNodeElement = getNodeElement;\n this.getNodeElementForNode = getNodeElementForNode;\n this.getScrollLeft = getScrollLeft;\n this.getTree = getTree;\n this.onCanMove = onCanMove;\n this.onCanMoveTo = onCanMoveTo;\n this.onDragMove = onDragMove;\n this.onDragStop = onDragStop;\n this.onIsMoveHandle = onIsMoveHandle;\n this.openFolderDelay = openFolderDelay;\n this.openNode = openNode;\n this.refreshElements = refreshElements;\n this.slide = slide;\n this.treeElement = treeElement;\n this.triggerEvent = triggerEvent;\n\n this.hoveredArea = null;\n this.hitAreas = [];\n this.isDragging = false;\n this.currentItem = null;\n\n this.dragElement = null;\n this.openFolderTimer = null;\n this.previousGhost = null;\n }\n\n public mouseCapture(positionInfo: PositionInfo): boolean | null {\n const element = positionInfo.target;\n\n if (!this.mustCaptureElement(element)) {\n return null;\n }\n\n if (this.onIsMoveHandle && !this.onIsMoveHandle(element)) {\n return null;\n }\n\n let nodeElement = this.getNodeElement(element);\n\n if (nodeElement && this.onCanMove && !this.onCanMove(nodeElement.node)) {\n nodeElement = null;\n }\n\n this.currentItem = nodeElement;\n return this.currentItem != null;\n }\n\n public mouseDrag(positionInfo: PositionInfo): boolean {\n if (!this.currentItem || !this.dragElement) {\n return false;\n }\n\n this.dragElement.move(positionInfo.pageX, positionInfo.pageY);\n\n const area = this.findHoveredArea(positionInfo.pageX, positionInfo.pageY);\n\n if (area && this.canMoveToArea(area, this.currentItem)) {\n if (!area.node.isFolder()) {\n this.stopOpenFolderTimer();\n }\n\n if (this.hoveredArea !== area) {\n this.hoveredArea = area;\n\n // If this is a closed folder, start timer to open it\n if (this.mustOpenFolderTimer(area)) {\n this.startOpenFolderTimer(area.node);\n } else {\n this.stopOpenFolderTimer();\n }\n\n this.updateDropHint();\n }\n } else {\n this.removeDropHint();\n this.stopOpenFolderTimer();\n this.hoveredArea = area;\n }\n\n if (!area && this.onDragMove) {\n this.onDragMove(this.currentItem.node, positionInfo.originalEvent);\n }\n\n return true;\n }\n\n public mouseStart(positionInfo: PositionInfo): boolean {\n if (!this.currentItem) {\n return false;\n }\n\n this.refresh();\n\n const { left, top } = getElementPosition(positionInfo.target);\n\n const node = this.currentItem.node;\n\n this.dragElement = new DragElement({\n autoEscape: this.autoEscape ?? true,\n classNames: this.classNames,\n nodeName: node.name,\n offsetX: positionInfo.pageX - left,\n offsetY: positionInfo.pageY - top,\n treeElement: this.treeElement,\n });\n\n this.isDragging = true;\n this.currentItem.element.classList.add(this.classNames.moving);\n\n return true;\n }\n\n public mouseStop(positionInfo: PositionInfo): boolean {\n this.moveItem(positionInfo);\n this.clear();\n this.removeHover();\n this.removeDropHint();\n this.removeHitAreas();\n\n const currentItem = this.currentItem;\n\n if (this.currentItem) {\n this.currentItem.element.classList.remove(this.classNames.moving);\n this.currentItem = null;\n }\n\n this.isDragging = false;\n\n if (!this.hoveredArea && currentItem && this.onDragStop) {\n this.onDragStop(currentItem.node, positionInfo.originalEvent);\n }\n\n return false;\n }\n\n public refresh(): void {\n this.removeHitAreas();\n\n if (!this.currentItem) {\n return;\n }\n\n const currentNode = this.currentItem.node;\n this.generateHitAreas(currentNode);\n this.currentItem = this.getNodeElementForNode(currentNode);\n\n if (this.isDragging) {\n this.currentItem.element.classList.add(this.classNames.moving);\n }\n }\n\n private canMoveToArea(area: HitArea, currentItem: NodeElement): boolean {\n return this.onCanMoveTo\n ? this.onCanMoveTo(currentItem.node, area.node, area.position)\n : true;\n }\n\n private clear(): void {\n if (!this.dragElement) {\n return;\n }\n\n this.dragElement.remove();\n this.dragElement = null;\n }\n\n private findHoveredArea(x: number, y: number): HitArea | null {\n const dimensions = this.getTreeDimensions();\n\n if (\n x < dimensions.left ||\n y < dimensions.top ||\n x > dimensions.right ||\n y > dimensions.bottom\n ) {\n return null;\n }\n\n return binarySearch<HitArea>(this.hitAreas, (area) => {\n if (y < area.top) {\n return 1;\n }\n return y > area.bottom ? -1 : 0;\n });\n }\n\n private generateHitAreas(currentNode: Node): void {\n const tree = this.getTree();\n\n this.hitAreas = tree\n ? generateHitAreas(tree, currentNode, this.getTreeDimensions().bottom)\n : [];\n }\n\n private getTreeDimensions(): Dimensions {\n // Return the dimensions of the tree. Add a margin to the bottom to allow\n // to drag-and-drop after the last element.\n const treePosition = getElementPosition(this.treeElement);\n const left = treePosition.left + this.getScrollLeft();\n const top = treePosition.top;\n\n return {\n bottom: top + this.treeElement.clientHeight + 16,\n left,\n right: left + this.treeElement.clientWidth,\n top,\n };\n }\n\n /*\n Move the dragged node to the selected position in the tree.\n */\n private moveItem(positionInfo: PositionInfo): void {\n if (!(\n this.currentItem &&\n this.hoveredArea?.position &&\n this.canMoveToArea(this.hoveredArea, this.currentItem)\n )) {\n return;\n }\n\n const movedNode = this.currentItem.node;\n const targetNode = this.hoveredArea.node;\n const position = this.hoveredArea.position;\n const previousParent = movedNode.parent;\n\n if (position === \"inside\") {\n this.hoveredArea.node.is_open = true;\n }\n\n const doMove = (): void => {\n const tree = this.getTree();\n\n if (!tree) {\n return;\n }\n\n tree.moveNode(movedNode, targetNode, position);\n\n this.treeElement.textContent = \"\";\n this.refreshElements(null);\n };\n\n if (\n this.triggerEvent(\"tree.move\", {\n moveInfo: {\n doMove,\n movedNode,\n originalEvent: positionInfo.originalEvent,\n position,\n previousParent,\n targetNode,\n },\n })\n ) {\n doMove();\n }\n }\n\n private mustCaptureElement(element: HTMLElement): boolean {\n const nodeName = element.nodeName;\n\n return (\n nodeName !== \"INPUT\" && nodeName !== \"SELECT\" && nodeName !== \"TEXTAREA\"\n );\n }\n\n private mustOpenFolderTimer(area: HitArea): boolean {\n const node = area.node;\n\n return node.isFolder() && !node.is_open && area.position === \"inside\";\n }\n\n private removeDropHint(): void {\n if (this.previousGhost) {\n this.previousGhost.remove();\n }\n }\n\n private removeHitAreas(): void {\n this.hitAreas = [];\n }\n\n private removeHover(): void {\n this.hoveredArea = null;\n }\n\n private startOpenFolderTimer(folder: Node): void {\n const openFolder = (): void => {\n void this.openNode(folder, this.slide).then(() => {\n this.refresh();\n this.updateDropHint();\n });\n };\n\n this.stopOpenFolderTimer();\n\n const openFolderDelay = this.openFolderDelay;\n\n if (openFolderDelay !== false) {\n this.openFolderTimer = window.setTimeout(openFolder, openFolderDelay);\n }\n }\n\n private stopOpenFolderTimer(): void {\n if (!this.openFolderTimer) {\n return;\n }\n\n clearTimeout(this.openFolderTimer);\n this.openFolderTimer = null;\n }\n\n private updateDropHint(): void {\n if (!this.hoveredArea) {\n return;\n }\n\n // remove previous drop hint\n this.removeDropHint();\n\n // add new drop hint\n const nodeElement = this.getNodeElementForNode(this.hoveredArea.node);\n this.previousGhost = nodeElement.addDropHint(this.hoveredArea.position);\n }\n}\n"],"names":["autoEscape","classNames","getNodeElement","getNodeElementForNode","getScrollLeft","getTree","onCanMove","onCanMoveTo","onDragMove","onDragStop","onIsMoveHandle","openFolderDelay","openNode","refreshElements","slide","treeElement","triggerEvent","hoveredArea","hitAreas","isDragging","currentItem","dragElement","openFolderTimer","previousGhost","mouseCapture","mustCaptureElement","node","mouseDrag","move","findHoveredArea","canMoveToArea","stopOpenFolderTimer","mustOpenFolderTimer","startOpenFolderTimer","updateDropHint","removeDropHint","mouseStart","refresh","element","mouseStop","moveItem","clear","removeHover","removeHitAreas","generateHitAreas","remove","getTreeDimensions","addDropHint"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iterateVisibleNodes.d.ts","sourceRoot":"","sources":["../../src/dragAndDropHandler/iterateVisibleNodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEpC,UAAU,OAAO;
|
|
1
|
+
{"version":3,"file":"iterateVisibleNodes.d.ts","sourceRoot":"","sources":["../../src/dragAndDropHandler/iterateVisibleNodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEpC,UAAU,OAAO;IACf,qBAAqB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IACnE,kBAAkB,EAAE,CAClB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,IAAI,GAAG,IAAI,EACrB,OAAO,EAAE,WAAW,KACjB,IAAI,CAAC;IACV,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACtC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAG,IAAI,EAAE,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAQ9E,gBAAgB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC;CACjE;AAED,QAAA,MAAM,mBAAmB,GACvB,MAAM,IAAI,EACV,+FAMG,OAAO,SAyDX,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|