jqtree 1.7.5 → 1.8.1
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/.eslintrc +13 -3
- package/.github/workflows/ci.yml +6 -6
- package/.github/workflows/codeql-analysis.yml +4 -4
- package/.github/workflows/size.yml +3 -3
- package/.github/workflows/static.yml +1 -1
- package/bower.json +1 -1
- package/config/babel.config.json +1 -1
- package/config/jest.config.js +4 -0
- package/config/jest.polyfills.js +14 -0
- package/config/production +2 -0
- package/devserver/devserver_scroll.js +8 -0
- package/devserver/test_index.html +9 -0
- package/devserver/test_scroll.html +28 -0
- package/devserver/test_scroll_container.html +39 -0
- package/docs/.ruby-version +1 -1
- package/docs/_config.yml +1 -1
- package/docs/_entries/general/changelog.md +11 -0
- package/docs/_entries/multiple_selection/get-selected-nodes.md +1 -1
- package/docs/_entries/node/getnextnode.md +3 -6
- package/docs/_entries/node/getnextsibling.md +1 -1
- package/docs/_entries/node/getnextvisiblenode.md +8 -5
- package/docs/_entries/node/getpreviousnode.md +12 -0
- package/docs/_entries/node/getprevioussibling.md +1 -1
- package/docs/_entries/node/getpreviousvisiblenode.md +6 -5
- package/package.json +35 -29
- package/src/dataLoader.ts +57 -34
- package/src/dragAndDropHandler/dragElement.ts +54 -0
- package/src/dragAndDropHandler/generateHitAreas.ts +176 -0
- package/src/dragAndDropHandler/index.ts +454 -0
- package/src/dragAndDropHandler/iterateVisibleNodes.ts +91 -0
- package/src/dragAndDropHandler/types.ts +13 -0
- package/src/elementsRenderer.ts +75 -40
- package/src/jqtreeMethodTypes.ts +40 -0
- package/src/jqtreeOptions.ts +43 -25
- package/src/keyHandler.ts +59 -30
- package/src/mouseHandler.ts +385 -0
- package/src/mouseUtils.ts +23 -0
- package/src/node.ts +1 -29
- package/src/nodeElement/borderDropHint.ts +32 -0
- package/src/nodeElement/folderElement.ts +133 -0
- package/src/nodeElement/ghostDropHint.ts +69 -0
- package/src/nodeElement/index.ts +102 -0
- package/src/playwright/coverage.ts +4 -7
- package/src/playwright/playwright.test.ts +150 -53
- package/src/playwright/testUtils.ts +28 -5
- package/src/position.ts +28 -0
- package/src/saveStateHandler.ts +75 -26
- package/src/scrollHandler/containerScrollParent.ts +13 -23
- package/src/scrollHandler/createScrollParent.ts +22 -22
- package/src/scrollHandler/documentScrollParent.ts +16 -13
- package/src/scrollHandler.ts +13 -15
- package/src/selectNodeHandler.ts +10 -16
- package/src/test/jqTree/events.test.ts +97 -30
- package/src/test/jqTree/keyboard.test.ts +18 -23
- package/src/test/jqTree/loadOnDemand.test.ts +22 -15
- package/src/test/jqTree/methods.test.ts +40 -14
- package/src/test/jqTree/mouse.test.ts +82 -0
- package/src/test/jqTree/options.test.ts +24 -12
- package/src/test/node.test.ts +3 -2
- package/src/test/{nodeUtil.test.ts → position.test.ts} +1 -1
- package/src/tree.jquery.ts +314 -208
- package/src/util.ts +12 -0
- package/src/version.ts +1 -1
- package/tree.jquery.debug.js +2594 -3419
- package/tree.jquery.debug.js.map +1 -1
- package/tree.jquery.js +3 -3
- package/tree.jquery.js.map +1 -1
- package/tsconfig.json +5 -3
- package/docs/_entries/functions/get-selected-nodes.md +0 -10
- package/lib/dataLoader.js +0 -123
- package/lib/dragAndDropHandler.js +0 -588
- package/lib/elementsRenderer.js +0 -267
- package/lib/jqtreeOptions.js +0 -1
- package/lib/keyHandler.js +0 -111
- package/lib/mouse.widget.js +0 -255
- package/lib/node.js +0 -708
- package/lib/nodeElement.js +0 -274
- package/lib/nodeUtils.js +0 -10
- package/lib/playwright/coverage.js +0 -99
- package/lib/playwright/playwright.test.js +0 -606
- package/lib/playwright/testUtils.js +0 -210
- package/lib/saveStateHandler.js +0 -277
- package/lib/scrollHandler/containerScrollParent.js +0 -160
- package/lib/scrollHandler/createScrollParent.js +0 -57
- package/lib/scrollHandler/documentScrollParent.js +0 -169
- package/lib/scrollHandler/scrollParent.js +0 -58
- package/lib/scrollHandler/types.js +0 -1
- package/lib/scrollHandler.js +0 -71
- package/lib/selectNodeHandler.js +0 -128
- package/lib/simple.widget.js +0 -158
- package/lib/test/global.d.js +0 -3
- package/lib/test/jqTree/accessibility.test.js +0 -37
- package/lib/test/jqTree/create.test.js +0 -48
- package/lib/test/jqTree/events.test.js +0 -210
- package/lib/test/jqTree/keyboard.test.js +0 -225
- package/lib/test/jqTree/loadOnDemand.test.js +0 -218
- package/lib/test/jqTree/methods.test.js +0 -1348
- package/lib/test/jqTree/options.test.js +0 -548
- package/lib/test/jqTree/scrollHandler/containerScrollParent.test.js +0 -94
- package/lib/test/node.test.js +0 -1202
- package/lib/test/nodeUtil.test.js +0 -27
- package/lib/test/nodeUtils.test.js +0 -20
- package/lib/test/support/exampleData.js +0 -35
- package/lib/test/support/jqTreeMatchers.js +0 -70
- package/lib/test/support/matchers.d.js +0 -1
- package/lib/test/support/setupTests.js +0 -7
- package/lib/test/support/testUtil.js +0 -29
- package/lib/test/support/treeStructure.js +0 -38
- package/lib/test/util.test.js +0 -26
- package/lib/tree.jquery.d.js +0 -1
- package/lib/tree.jquery.js +0 -1105
- package/lib/types.js +0 -1
- package/lib/typings.d.js +0 -2
- package/lib/util.js +0 -15
- package/lib/version.js +0 -8
- package/src/dragAndDropHandler.ts +0 -713
- package/src/mouse.widget.ts +0 -266
- package/src/nodeElement.ts +0 -272
- package/src/types.ts +0 -19
|
@@ -1,588 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.HitAreasGenerator = exports.DragAndDropHandler = void 0;
|
|
7
|
-
var _node = require("./node");
|
|
8
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
9
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
10
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
11
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
12
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
13
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
14
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
15
|
-
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
16
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
17
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
18
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
19
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
20
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
21
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
22
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
23
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
24
|
-
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
25
|
-
var DragAndDropHandler = exports.DragAndDropHandler = /*#__PURE__*/function () {
|
|
26
|
-
function DragAndDropHandler(treeWidget) {
|
|
27
|
-
_classCallCheck(this, DragAndDropHandler);
|
|
28
|
-
_defineProperty(this, "hitAreas", void 0);
|
|
29
|
-
_defineProperty(this, "isDragging", void 0);
|
|
30
|
-
_defineProperty(this, "currentItem", void 0);
|
|
31
|
-
_defineProperty(this, "hoveredArea", void 0);
|
|
32
|
-
_defineProperty(this, "treeWidget", void 0);
|
|
33
|
-
_defineProperty(this, "dragElement", void 0);
|
|
34
|
-
_defineProperty(this, "previousGhost", void 0);
|
|
35
|
-
_defineProperty(this, "openFolderTimer", void 0);
|
|
36
|
-
this.treeWidget = treeWidget;
|
|
37
|
-
this.hoveredArea = null;
|
|
38
|
-
this.hitAreas = [];
|
|
39
|
-
this.isDragging = false;
|
|
40
|
-
this.currentItem = null;
|
|
41
|
-
}
|
|
42
|
-
_createClass(DragAndDropHandler, [{
|
|
43
|
-
key: "mouseCapture",
|
|
44
|
-
value: function mouseCapture(positionInfo) {
|
|
45
|
-
var $element = jQuery(positionInfo.target);
|
|
46
|
-
if (!this.mustCaptureElement($element)) {
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
if (this.treeWidget.options.onIsMoveHandle && !this.treeWidget.options.onIsMoveHandle($element)) {
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
var nodeElement = this.treeWidget._getNodeElement($element);
|
|
53
|
-
if (nodeElement && this.treeWidget.options.onCanMove) {
|
|
54
|
-
if (!this.treeWidget.options.onCanMove(nodeElement.node)) {
|
|
55
|
-
nodeElement = null;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
this.currentItem = nodeElement;
|
|
59
|
-
return this.currentItem != null;
|
|
60
|
-
}
|
|
61
|
-
}, {
|
|
62
|
-
key: "mouseStart",
|
|
63
|
-
value: function mouseStart(positionInfo) {
|
|
64
|
-
var _this$treeWidget$opti;
|
|
65
|
-
if (!this.currentItem || positionInfo.pageX === undefined || positionInfo.pageY === undefined) {
|
|
66
|
-
return false;
|
|
67
|
-
}
|
|
68
|
-
this.refresh();
|
|
69
|
-
var offset = jQuery(positionInfo.target).offset();
|
|
70
|
-
var left = offset ? offset.left : 0;
|
|
71
|
-
var top = offset ? offset.top : 0;
|
|
72
|
-
var node = this.currentItem.node;
|
|
73
|
-
this.dragElement = new DragElement(node.name, positionInfo.pageX - left, positionInfo.pageY - top, this.treeWidget.element, (_this$treeWidget$opti = this.treeWidget.options.autoEscape) !== null && _this$treeWidget$opti !== void 0 ? _this$treeWidget$opti : true);
|
|
74
|
-
this.isDragging = true;
|
|
75
|
-
this.currentItem.$element.addClass("jqtree-moving");
|
|
76
|
-
return true;
|
|
77
|
-
}
|
|
78
|
-
}, {
|
|
79
|
-
key: "mouseDrag",
|
|
80
|
-
value: function mouseDrag(positionInfo) {
|
|
81
|
-
if (!this.currentItem || !this.dragElement || positionInfo.pageX === undefined || positionInfo.pageY === undefined) {
|
|
82
|
-
return false;
|
|
83
|
-
}
|
|
84
|
-
this.dragElement.move(positionInfo.pageX, positionInfo.pageY);
|
|
85
|
-
var area = this.findHoveredArea(positionInfo.pageX, positionInfo.pageY);
|
|
86
|
-
if (area && this.canMoveToArea(area)) {
|
|
87
|
-
if (!area.node.isFolder()) {
|
|
88
|
-
this.stopOpenFolderTimer();
|
|
89
|
-
}
|
|
90
|
-
if (this.hoveredArea !== area) {
|
|
91
|
-
this.hoveredArea = area;
|
|
92
|
-
|
|
93
|
-
// If this is a closed folder, start timer to open it
|
|
94
|
-
if (this.mustOpenFolderTimer(area)) {
|
|
95
|
-
this.startOpenFolderTimer(area.node);
|
|
96
|
-
} else {
|
|
97
|
-
this.stopOpenFolderTimer();
|
|
98
|
-
}
|
|
99
|
-
this.updateDropHint();
|
|
100
|
-
}
|
|
101
|
-
} else {
|
|
102
|
-
this.removeDropHint();
|
|
103
|
-
this.stopOpenFolderTimer();
|
|
104
|
-
this.hoveredArea = area;
|
|
105
|
-
}
|
|
106
|
-
if (!area) {
|
|
107
|
-
if (this.treeWidget.options.onDragMove) {
|
|
108
|
-
this.treeWidget.options.onDragMove(this.currentItem.node, positionInfo.originalEvent);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
return true;
|
|
112
|
-
}
|
|
113
|
-
}, {
|
|
114
|
-
key: "mouseStop",
|
|
115
|
-
value: function mouseStop(positionInfo) {
|
|
116
|
-
this.moveItem(positionInfo);
|
|
117
|
-
this.clear();
|
|
118
|
-
this.removeHover();
|
|
119
|
-
this.removeDropHint();
|
|
120
|
-
this.removeHitAreas();
|
|
121
|
-
var currentItem = this.currentItem;
|
|
122
|
-
if (this.currentItem) {
|
|
123
|
-
this.currentItem.$element.removeClass("jqtree-moving");
|
|
124
|
-
this.currentItem = null;
|
|
125
|
-
}
|
|
126
|
-
this.isDragging = false;
|
|
127
|
-
if (!this.hoveredArea && currentItem) {
|
|
128
|
-
if (this.treeWidget.options.onDragStop) {
|
|
129
|
-
this.treeWidget.options.onDragStop(currentItem.node, positionInfo.originalEvent);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return false;
|
|
133
|
-
}
|
|
134
|
-
}, {
|
|
135
|
-
key: "refresh",
|
|
136
|
-
value: function refresh() {
|
|
137
|
-
this.removeHitAreas();
|
|
138
|
-
if (this.currentItem) {
|
|
139
|
-
this.generateHitAreas();
|
|
140
|
-
this.currentItem = this.treeWidget._getNodeElementForNode(this.currentItem.node);
|
|
141
|
-
if (this.isDragging) {
|
|
142
|
-
this.currentItem.$element.addClass("jqtree-moving");
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}, {
|
|
147
|
-
key: "generateHitAreas",
|
|
148
|
-
value: function generateHitAreas() {
|
|
149
|
-
if (!this.currentItem) {
|
|
150
|
-
this.hitAreas = [];
|
|
151
|
-
} else {
|
|
152
|
-
var hitAreasGenerator = new HitAreasGenerator(this.treeWidget.tree, this.currentItem.node, this.getTreeDimensions().bottom);
|
|
153
|
-
this.hitAreas = hitAreasGenerator.generate();
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}, {
|
|
157
|
-
key: "mustCaptureElement",
|
|
158
|
-
value: function mustCaptureElement($element) {
|
|
159
|
-
return !$element.is("input,select,textarea");
|
|
160
|
-
}
|
|
161
|
-
}, {
|
|
162
|
-
key: "canMoveToArea",
|
|
163
|
-
value: function canMoveToArea(area) {
|
|
164
|
-
if (!this.treeWidget.options.onCanMoveTo) {
|
|
165
|
-
return true;
|
|
166
|
-
}
|
|
167
|
-
if (!this.currentItem) {
|
|
168
|
-
return false;
|
|
169
|
-
}
|
|
170
|
-
var positionName = (0, _node.getPositionName)(area.position);
|
|
171
|
-
return this.treeWidget.options.onCanMoveTo(this.currentItem.node, area.node, positionName);
|
|
172
|
-
}
|
|
173
|
-
}, {
|
|
174
|
-
key: "removeHitAreas",
|
|
175
|
-
value: function removeHitAreas() {
|
|
176
|
-
this.hitAreas = [];
|
|
177
|
-
}
|
|
178
|
-
}, {
|
|
179
|
-
key: "clear",
|
|
180
|
-
value: function clear() {
|
|
181
|
-
if (this.dragElement) {
|
|
182
|
-
this.dragElement.remove();
|
|
183
|
-
this.dragElement = null;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}, {
|
|
187
|
-
key: "removeDropHint",
|
|
188
|
-
value: function removeDropHint() {
|
|
189
|
-
if (this.previousGhost) {
|
|
190
|
-
this.previousGhost.remove();
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}, {
|
|
194
|
-
key: "removeHover",
|
|
195
|
-
value: function removeHover() {
|
|
196
|
-
this.hoveredArea = null;
|
|
197
|
-
}
|
|
198
|
-
}, {
|
|
199
|
-
key: "findHoveredArea",
|
|
200
|
-
value: function findHoveredArea(x, y) {
|
|
201
|
-
var dimensions = this.getTreeDimensions();
|
|
202
|
-
if (x < dimensions.left || y < dimensions.top || x > dimensions.right || y > dimensions.bottom) {
|
|
203
|
-
return null;
|
|
204
|
-
}
|
|
205
|
-
var low = 0;
|
|
206
|
-
var high = this.hitAreas.length;
|
|
207
|
-
while (low < high) {
|
|
208
|
-
var mid = low + high >> 1;
|
|
209
|
-
var area = this.hitAreas[mid];
|
|
210
|
-
if (!area) {
|
|
211
|
-
return null;
|
|
212
|
-
}
|
|
213
|
-
if (y < area.top) {
|
|
214
|
-
high = mid;
|
|
215
|
-
} else if (y > area.bottom) {
|
|
216
|
-
low = mid + 1;
|
|
217
|
-
} else {
|
|
218
|
-
return area;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
return null;
|
|
222
|
-
}
|
|
223
|
-
}, {
|
|
224
|
-
key: "mustOpenFolderTimer",
|
|
225
|
-
value: function mustOpenFolderTimer(area) {
|
|
226
|
-
var node = area.node;
|
|
227
|
-
return node.isFolder() && !node.is_open && area.position === _node.Position.Inside;
|
|
228
|
-
}
|
|
229
|
-
}, {
|
|
230
|
-
key: "updateDropHint",
|
|
231
|
-
value: function updateDropHint() {
|
|
232
|
-
if (!this.hoveredArea) {
|
|
233
|
-
return;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
// remove previous drop hint
|
|
237
|
-
this.removeDropHint();
|
|
238
|
-
|
|
239
|
-
// add new drop hint
|
|
240
|
-
var nodeElement = this.treeWidget._getNodeElementForNode(this.hoveredArea.node);
|
|
241
|
-
this.previousGhost = nodeElement.addDropHint(this.hoveredArea.position);
|
|
242
|
-
}
|
|
243
|
-
}, {
|
|
244
|
-
key: "startOpenFolderTimer",
|
|
245
|
-
value: function startOpenFolderTimer(folder) {
|
|
246
|
-
var _this = this;
|
|
247
|
-
var openFolder = function openFolder() {
|
|
248
|
-
_this.treeWidget._openNode(folder, _this.treeWidget.options.slide, function () {
|
|
249
|
-
_this.refresh();
|
|
250
|
-
_this.updateDropHint();
|
|
251
|
-
});
|
|
252
|
-
};
|
|
253
|
-
this.stopOpenFolderTimer();
|
|
254
|
-
var openFolderDelay = this.treeWidget.options.openFolderDelay;
|
|
255
|
-
if (openFolderDelay !== false) {
|
|
256
|
-
this.openFolderTimer = window.setTimeout(openFolder, openFolderDelay);
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
}, {
|
|
260
|
-
key: "stopOpenFolderTimer",
|
|
261
|
-
value: function stopOpenFolderTimer() {
|
|
262
|
-
if (this.openFolderTimer) {
|
|
263
|
-
clearTimeout(this.openFolderTimer);
|
|
264
|
-
this.openFolderTimer = null;
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
}, {
|
|
268
|
-
key: "moveItem",
|
|
269
|
-
value: function moveItem(positionInfo) {
|
|
270
|
-
var _this2 = this;
|
|
271
|
-
if (this.currentItem && this.hoveredArea && this.hoveredArea.position !== _node.Position.None && this.canMoveToArea(this.hoveredArea)) {
|
|
272
|
-
var movedNode = this.currentItem.node;
|
|
273
|
-
var targetNode = this.hoveredArea.node;
|
|
274
|
-
var position = this.hoveredArea.position;
|
|
275
|
-
var previousParent = movedNode.parent;
|
|
276
|
-
if (position === _node.Position.Inside) {
|
|
277
|
-
this.hoveredArea.node.is_open = true;
|
|
278
|
-
}
|
|
279
|
-
var doMove = function doMove() {
|
|
280
|
-
_this2.treeWidget.tree.moveNode(movedNode, targetNode, position);
|
|
281
|
-
_this2.treeWidget.element.empty();
|
|
282
|
-
_this2.treeWidget._refreshElements(null);
|
|
283
|
-
};
|
|
284
|
-
var event = this.treeWidget._triggerEvent("tree.move", {
|
|
285
|
-
move_info: {
|
|
286
|
-
moved_node: movedNode,
|
|
287
|
-
target_node: targetNode,
|
|
288
|
-
position: (0, _node.getPositionName)(position),
|
|
289
|
-
previous_parent: previousParent,
|
|
290
|
-
do_move: doMove,
|
|
291
|
-
original_event: positionInfo.originalEvent
|
|
292
|
-
}
|
|
293
|
-
});
|
|
294
|
-
if (!event.isDefaultPrevented()) {
|
|
295
|
-
doMove();
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
}, {
|
|
300
|
-
key: "getTreeDimensions",
|
|
301
|
-
value: function getTreeDimensions() {
|
|
302
|
-
// Return the dimensions of the tree. Add a margin to the bottom to allow
|
|
303
|
-
// to drag-and-drop after the last element.
|
|
304
|
-
var offset = this.treeWidget.element.offset();
|
|
305
|
-
if (!offset) {
|
|
306
|
-
return {
|
|
307
|
-
left: 0,
|
|
308
|
-
top: 0,
|
|
309
|
-
right: 0,
|
|
310
|
-
bottom: 0
|
|
311
|
-
};
|
|
312
|
-
} else {
|
|
313
|
-
var el = this.treeWidget.element;
|
|
314
|
-
var width = el.width() || 0;
|
|
315
|
-
var height = el.height() || 0;
|
|
316
|
-
var left = offset.left + this.treeWidget._getScrollLeft();
|
|
317
|
-
return {
|
|
318
|
-
left: left,
|
|
319
|
-
top: offset.top,
|
|
320
|
-
right: left + width,
|
|
321
|
-
bottom: offset.top + height + 16
|
|
322
|
-
};
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
}]);
|
|
326
|
-
return DragAndDropHandler;
|
|
327
|
-
}();
|
|
328
|
-
var VisibleNodeIterator = /*#__PURE__*/function () {
|
|
329
|
-
function VisibleNodeIterator(tree) {
|
|
330
|
-
_classCallCheck(this, VisibleNodeIterator);
|
|
331
|
-
_defineProperty(this, "tree", void 0);
|
|
332
|
-
this.tree = tree;
|
|
333
|
-
}
|
|
334
|
-
_createClass(VisibleNodeIterator, [{
|
|
335
|
-
key: "iterate",
|
|
336
|
-
value: function iterate() {
|
|
337
|
-
var _this3 = this;
|
|
338
|
-
var isFirstNode = true;
|
|
339
|
-
var _iterateNode = function _iterateNode(node, nextNode) {
|
|
340
|
-
var mustIterateInside = (node.is_open || !node.element) && node.hasChildren();
|
|
341
|
-
var $element = null;
|
|
342
|
-
if (node.element) {
|
|
343
|
-
$element = jQuery(node.element);
|
|
344
|
-
if (!$element.is(":visible")) {
|
|
345
|
-
return;
|
|
346
|
-
}
|
|
347
|
-
if (isFirstNode) {
|
|
348
|
-
_this3.handleFirstNode(node);
|
|
349
|
-
isFirstNode = false;
|
|
350
|
-
}
|
|
351
|
-
if (!node.hasChildren()) {
|
|
352
|
-
_this3.handleNode(node, nextNode, $element);
|
|
353
|
-
} else if (node.is_open) {
|
|
354
|
-
if (!_this3.handleOpenFolder(node, $element)) {
|
|
355
|
-
mustIterateInside = false;
|
|
356
|
-
}
|
|
357
|
-
} else {
|
|
358
|
-
_this3.handleClosedFolder(node, nextNode, $element);
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
if (mustIterateInside) {
|
|
362
|
-
var childrenLength = node.children.length;
|
|
363
|
-
node.children.forEach(function (_, i) {
|
|
364
|
-
var child = node.children[i];
|
|
365
|
-
if (child) {
|
|
366
|
-
if (i === childrenLength - 1) {
|
|
367
|
-
_iterateNode(child, null);
|
|
368
|
-
} else {
|
|
369
|
-
var nextChild = node.children[i + 1];
|
|
370
|
-
if (nextChild) {
|
|
371
|
-
_iterateNode(child, nextChild);
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
});
|
|
376
|
-
if (node.is_open && $element) {
|
|
377
|
-
_this3.handleAfterOpenFolder(node, nextNode);
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
};
|
|
381
|
-
_iterateNode(this.tree, null);
|
|
382
|
-
}
|
|
383
|
-
}]);
|
|
384
|
-
return VisibleNodeIterator;
|
|
385
|
-
}();
|
|
386
|
-
var HitAreasGenerator = exports.HitAreasGenerator = /*#__PURE__*/function (_VisibleNodeIterator) {
|
|
387
|
-
_inherits(HitAreasGenerator, _VisibleNodeIterator);
|
|
388
|
-
var _super = _createSuper(HitAreasGenerator);
|
|
389
|
-
function HitAreasGenerator(tree, currentNode, treeBottom) {
|
|
390
|
-
var _this4;
|
|
391
|
-
_classCallCheck(this, HitAreasGenerator);
|
|
392
|
-
_this4 = _super.call(this, tree);
|
|
393
|
-
_defineProperty(_assertThisInitialized(_this4), "currentNode", void 0);
|
|
394
|
-
_defineProperty(_assertThisInitialized(_this4), "treeBottom", void 0);
|
|
395
|
-
_defineProperty(_assertThisInitialized(_this4), "positions", void 0);
|
|
396
|
-
_defineProperty(_assertThisInitialized(_this4), "lastTop", void 0);
|
|
397
|
-
_this4.currentNode = currentNode;
|
|
398
|
-
_this4.treeBottom = treeBottom;
|
|
399
|
-
return _this4;
|
|
400
|
-
}
|
|
401
|
-
_createClass(HitAreasGenerator, [{
|
|
402
|
-
key: "generate",
|
|
403
|
-
value: function generate() {
|
|
404
|
-
this.positions = [];
|
|
405
|
-
this.lastTop = 0;
|
|
406
|
-
this.iterate();
|
|
407
|
-
return this.generateHitAreas(this.positions);
|
|
408
|
-
}
|
|
409
|
-
}, {
|
|
410
|
-
key: "generateHitAreas",
|
|
411
|
-
value: function generateHitAreas(positions) {
|
|
412
|
-
var _positions$0$top, _positions$;
|
|
413
|
-
var previousTop = (_positions$0$top = (_positions$ = positions[0]) === null || _positions$ === void 0 ? void 0 : _positions$.top) !== null && _positions$0$top !== void 0 ? _positions$0$top : 0;
|
|
414
|
-
var group = [];
|
|
415
|
-
var hitAreas = [];
|
|
416
|
-
var _iterator = _createForOfIteratorHelper(positions),
|
|
417
|
-
_step;
|
|
418
|
-
try {
|
|
419
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
420
|
-
var position = _step.value;
|
|
421
|
-
if (position.top !== previousTop && group.length) {
|
|
422
|
-
this.generateHitAreasForGroup(hitAreas, group, previousTop, position.top);
|
|
423
|
-
previousTop = position.top;
|
|
424
|
-
group = [];
|
|
425
|
-
}
|
|
426
|
-
group.push(position);
|
|
427
|
-
}
|
|
428
|
-
} catch (err) {
|
|
429
|
-
_iterator.e(err);
|
|
430
|
-
} finally {
|
|
431
|
-
_iterator.f();
|
|
432
|
-
}
|
|
433
|
-
this.generateHitAreasForGroup(hitAreas, group, previousTop, this.treeBottom);
|
|
434
|
-
return hitAreas;
|
|
435
|
-
}
|
|
436
|
-
}, {
|
|
437
|
-
key: "handleOpenFolder",
|
|
438
|
-
value: function handleOpenFolder(node, $element) {
|
|
439
|
-
if (node === this.currentNode) {
|
|
440
|
-
// Cannot move inside current item
|
|
441
|
-
|
|
442
|
-
// Dnd over the current element is not possible: add a position with type None for the top and the bottom.
|
|
443
|
-
var top = this.getTop($element);
|
|
444
|
-
var height = $element.height() || 0;
|
|
445
|
-
this.addPosition(node, _node.Position.None, top);
|
|
446
|
-
if (height > 5) {
|
|
447
|
-
// Subtract 5 pixels to allow more space for the next element.
|
|
448
|
-
this.addPosition(node, _node.Position.None, top + height - 5);
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
// Stop iterating
|
|
452
|
-
return false;
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
// Cannot move before current item
|
|
456
|
-
if (node.children[0] !== this.currentNode) {
|
|
457
|
-
this.addPosition(node, _node.Position.Inside, this.getTop($element));
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
// Continue iterating
|
|
461
|
-
return true;
|
|
462
|
-
}
|
|
463
|
-
}, {
|
|
464
|
-
key: "handleClosedFolder",
|
|
465
|
-
value: function handleClosedFolder(node, nextNode, $element) {
|
|
466
|
-
var top = this.getTop($element);
|
|
467
|
-
if (node === this.currentNode) {
|
|
468
|
-
// Cannot move after current item
|
|
469
|
-
this.addPosition(node, _node.Position.None, top);
|
|
470
|
-
} else {
|
|
471
|
-
this.addPosition(node, _node.Position.Inside, top);
|
|
472
|
-
|
|
473
|
-
// Cannot move before current item
|
|
474
|
-
if (nextNode !== this.currentNode) {
|
|
475
|
-
this.addPosition(node, _node.Position.After, top);
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
}, {
|
|
480
|
-
key: "handleFirstNode",
|
|
481
|
-
value: function handleFirstNode(node) {
|
|
482
|
-
if (node !== this.currentNode) {
|
|
483
|
-
this.addPosition(node, _node.Position.Before, this.getTop(jQuery(node.element)));
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
}, {
|
|
487
|
-
key: "handleAfterOpenFolder",
|
|
488
|
-
value: function handleAfterOpenFolder(node, nextNode) {
|
|
489
|
-
if (node === this.currentNode || nextNode === this.currentNode) {
|
|
490
|
-
// Cannot move before or after current item
|
|
491
|
-
this.addPosition(node, _node.Position.None, this.lastTop);
|
|
492
|
-
} else {
|
|
493
|
-
this.addPosition(node, _node.Position.After, this.lastTop);
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
}, {
|
|
497
|
-
key: "handleNode",
|
|
498
|
-
value: function handleNode(node, nextNode, $element) {
|
|
499
|
-
var top = this.getTop($element);
|
|
500
|
-
if (node === this.currentNode) {
|
|
501
|
-
// Cannot move inside current item
|
|
502
|
-
this.addPosition(node, _node.Position.None, top);
|
|
503
|
-
} else {
|
|
504
|
-
this.addPosition(node, _node.Position.Inside, top);
|
|
505
|
-
}
|
|
506
|
-
if (nextNode === this.currentNode || node === this.currentNode) {
|
|
507
|
-
// Cannot move before or after current item
|
|
508
|
-
this.addPosition(node, _node.Position.None, top);
|
|
509
|
-
} else {
|
|
510
|
-
this.addPosition(node, _node.Position.After, top);
|
|
511
|
-
}
|
|
512
|
-
}
|
|
513
|
-
}, {
|
|
514
|
-
key: "getTop",
|
|
515
|
-
value: function getTop($element) {
|
|
516
|
-
var offset = $element.offset();
|
|
517
|
-
return offset ? offset.top : 0;
|
|
518
|
-
}
|
|
519
|
-
}, {
|
|
520
|
-
key: "addPosition",
|
|
521
|
-
value: function addPosition(node, position, top) {
|
|
522
|
-
var area = {
|
|
523
|
-
top: top,
|
|
524
|
-
bottom: 0,
|
|
525
|
-
node: node,
|
|
526
|
-
position: position
|
|
527
|
-
};
|
|
528
|
-
this.positions.push(area);
|
|
529
|
-
this.lastTop = top;
|
|
530
|
-
}
|
|
531
|
-
}, {
|
|
532
|
-
key: "generateHitAreasForGroup",
|
|
533
|
-
value: function generateHitAreasForGroup(hitAreas, positionsInGroup, top, bottom) {
|
|
534
|
-
// limit positions in group
|
|
535
|
-
var positionCount = Math.min(positionsInGroup.length, 4);
|
|
536
|
-
var areaHeight = Math.round((bottom - top) / positionCount);
|
|
537
|
-
var areaTop = top;
|
|
538
|
-
var i = 0;
|
|
539
|
-
while (i < positionCount) {
|
|
540
|
-
var position = positionsInGroup[i];
|
|
541
|
-
if (position && position.position !== _node.Position.None) {
|
|
542
|
-
hitAreas.push({
|
|
543
|
-
top: areaTop,
|
|
544
|
-
bottom: areaTop + areaHeight,
|
|
545
|
-
node: position.node,
|
|
546
|
-
position: position.position
|
|
547
|
-
});
|
|
548
|
-
}
|
|
549
|
-
areaTop += areaHeight;
|
|
550
|
-
i += 1;
|
|
551
|
-
}
|
|
552
|
-
}
|
|
553
|
-
}]);
|
|
554
|
-
return HitAreasGenerator;
|
|
555
|
-
}(VisibleNodeIterator);
|
|
556
|
-
var DragElement = /*#__PURE__*/function () {
|
|
557
|
-
function DragElement(nodeName, offsetX, offsetY, $tree, autoEscape) {
|
|
558
|
-
_classCallCheck(this, DragElement);
|
|
559
|
-
_defineProperty(this, "offsetX", void 0);
|
|
560
|
-
_defineProperty(this, "offsetY", void 0);
|
|
561
|
-
_defineProperty(this, "$element", void 0);
|
|
562
|
-
this.offsetX = offsetX;
|
|
563
|
-
this.offsetY = offsetY;
|
|
564
|
-
this.$element = jQuery("<span>").addClass("jqtree-title jqtree-dragging");
|
|
565
|
-
if (autoEscape) {
|
|
566
|
-
this.$element.text(nodeName);
|
|
567
|
-
} else {
|
|
568
|
-
this.$element.html(nodeName);
|
|
569
|
-
}
|
|
570
|
-
this.$element.css("position", "absolute");
|
|
571
|
-
$tree.append(this.$element);
|
|
572
|
-
}
|
|
573
|
-
_createClass(DragElement, [{
|
|
574
|
-
key: "move",
|
|
575
|
-
value: function move(pageX, pageY) {
|
|
576
|
-
this.$element.offset({
|
|
577
|
-
left: pageX - this.offsetX,
|
|
578
|
-
top: pageY - this.offsetY
|
|
579
|
-
});
|
|
580
|
-
}
|
|
581
|
-
}, {
|
|
582
|
-
key: "remove",
|
|
583
|
-
value: function remove() {
|
|
584
|
-
this.$element.remove();
|
|
585
|
-
}
|
|
586
|
-
}]);
|
|
587
|
-
return DragElement;
|
|
588
|
-
}();
|