jqtree 1.6.3 → 1.7.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.
Files changed (97) hide show
  1. package/.github/workflows/ci.yml +15 -21
  2. package/.github/workflows/codeql-analysis.yml +2 -2
  3. package/README.md +1 -1
  4. package/bower.json +10 -3
  5. package/config/production +2 -2
  6. package/config/{rollup.config.js → rollup.config.mjs} +3 -8
  7. package/docs/Gemfile.lock +34 -37
  8. package/docs/_config.yml +1 -1
  9. package/docs/_entries/10_changelog.md +13 -0
  10. package/docs/_entries/93_getnextnode.md +4 -1
  11. package/docs/_entries/{95_getpreviousnode.md → 95_getnextvisiblenode.md} +1 -1
  12. package/docs/_entries/96_getpreviousnode.md +0 -0
  13. package/docs/_entries/98_getpreviousvisiblenode.md +14 -0
  14. package/docs/package.json +7 -7
  15. package/docs/pnpm-lock.yaml +413 -265
  16. package/docs/static/bower.json +2 -2
  17. package/docs/static/bower_components/fontawesome/css/all.min.css +6 -2
  18. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.ttf +0 -0
  19. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
  20. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.ttf +0 -0
  21. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
  22. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.ttf +0 -0
  23. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
  24. package/docs/static/bower_components/fontawesome/webfonts/fa-v4compatibility.ttf +0 -0
  25. package/docs/static/bower_components/fontawesome/webfonts/fa-v4compatibility.woff2 +0 -0
  26. package/docs/static/bower_components/jquery/dist/jquery.js +944 -1121
  27. package/docs/static/bower_components/jquery/dist/jquery.min.js +2 -2
  28. package/docs/static/documentation.css +181 -159
  29. package/docs/static/example.css +0 -1
  30. package/docs/tree.jquery.js +3 -3
  31. package/lib/dataLoader.js +5 -31
  32. package/lib/dragAndDropHandler.js +40 -142
  33. package/lib/elementsRenderer.js +52 -72
  34. package/lib/keyHandler.js +8 -32
  35. package/lib/mouse.widget.js +24 -74
  36. package/lib/node.js +72 -134
  37. package/lib/nodeElement.js +24 -84
  38. package/lib/playwright/coverage.js +58 -97
  39. package/lib/playwright/playwright.test.js +148 -210
  40. package/lib/playwright/testUtils.js +116 -182
  41. package/lib/saveStateHandler.js +13 -62
  42. package/lib/scrollHandler.js +24 -77
  43. package/lib/selectNodeHandler.js +6 -25
  44. package/lib/simple.widget.js +20 -53
  45. package/lib/test/jqTree/accessibility.test.js +37 -0
  46. package/lib/test/jqTree/create.test.js +0 -4
  47. package/lib/test/jqTree/events.test.js +73 -84
  48. package/lib/test/jqTree/keyboard.test.js +0 -6
  49. package/lib/test/jqTree/loadOnDemand.test.js +84 -121
  50. package/lib/test/jqTree/methods.test.js +107 -150
  51. package/lib/test/jqTree/options.test.js +32 -54
  52. package/lib/test/node.test.js +134 -76
  53. package/lib/test/nodeUtil.test.js +0 -1
  54. package/lib/test/support/jqTreeMatchers.js +4 -9
  55. package/lib/test/support/setupTests.js +0 -4
  56. package/lib/test/support/testUtil.js +2 -11
  57. package/lib/test/support/treeStructure.js +0 -6
  58. package/lib/test/util.test.js +0 -1
  59. package/lib/tree.jquery.js +28 -239
  60. package/lib/util.js +0 -6
  61. package/lib/version.js +1 -1
  62. package/package.json +44 -47
  63. package/src/dragAndDropHandler.ts +24 -10
  64. package/src/elementsRenderer.ts +49 -42
  65. package/src/jqtreeOptions.ts +3 -3
  66. package/src/keyHandler.ts +3 -3
  67. package/src/mouse.widget.ts +12 -0
  68. package/src/node.ts +52 -16
  69. package/src/nodeElement.ts +27 -21
  70. package/src/saveStateHandler.ts +1 -1
  71. package/src/scrollHandler.ts +6 -2
  72. package/src/selectNodeHandler.ts +1 -1
  73. package/src/simple.widget.ts +2 -0
  74. package/src/test/.eslintrc +3 -1
  75. package/src/test/jqTree/accessibility.test.ts +25 -0
  76. package/src/test/jqTree/events.test.ts +79 -93
  77. package/src/test/jqTree/methods.test.ts +1 -1
  78. package/src/test/node.test.ts +152 -58
  79. package/src/test/nodeUtil.test.ts +1 -1
  80. package/src/tree.jquery.ts +7 -6
  81. package/src/version.ts +1 -1
  82. package/tree.jquery.debug.js +297 -904
  83. package/tree.jquery.debug.js.map +1 -1
  84. package/tree.jquery.js +3 -3
  85. package/tree.jquery.js.map +1 -1
  86. package/tsconfig.json +1 -0
  87. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.eot +0 -0
  88. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.svg +0 -3717
  89. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.woff +0 -0
  90. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.eot +0 -0
  91. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.svg +0 -801
  92. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.woff +0 -0
  93. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.eot +0 -0
  94. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.svg +0 -5028
  95. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.woff +0 -0
  96. /package/docs/_entries/{96_getprevioussibling.md → 97_getprevioussibling.md} +0 -0
  97. /package/docs/_entries/{97_parent.md → 99_parent.md} +0 -0
@@ -1,64 +1,39 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports.HitAreasGenerator = exports.DragAndDropHandler = void 0;
9
-
10
7
  var _node = require("./node");
11
-
8
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
12
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; } } }; }
13
-
14
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); }
15
-
16
- 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; }
17
-
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; }
18
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); }
19
-
20
13
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
21
-
22
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); }; }
23
-
24
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); }
25
-
26
16
  function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
27
-
28
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; } }
29
-
30
18
  function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
31
-
32
19
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
33
-
34
- 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, descriptor.key, descriptor); } }
35
-
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); } }
36
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; }
37
-
38
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
39
-
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); }
40
25
  var DragAndDropHandler = /*#__PURE__*/function () {
41
26
  function DragAndDropHandler(treeWidget) {
42
27
  _classCallCheck(this, DragAndDropHandler);
43
-
44
28
  _defineProperty(this, "hitAreas", void 0);
45
-
46
29
  _defineProperty(this, "isDragging", void 0);
47
-
48
30
  _defineProperty(this, "currentItem", void 0);
49
-
50
31
  _defineProperty(this, "hoveredArea", void 0);
51
-
52
32
  _defineProperty(this, "positionInfo", void 0);
53
-
54
33
  _defineProperty(this, "treeWidget", void 0);
55
-
56
34
  _defineProperty(this, "dragElement", void 0);
57
-
58
35
  _defineProperty(this, "previousGhost", void 0);
59
-
60
36
  _defineProperty(this, "openFolderTimer", void 0);
61
-
62
37
  this.treeWidget = treeWidget;
63
38
  this.hoveredArea = null;
64
39
  this.hitAreas = [];
@@ -66,28 +41,22 @@ var DragAndDropHandler = /*#__PURE__*/function () {
66
41
  this.currentItem = null;
67
42
  this.positionInfo = null;
68
43
  }
69
-
70
44
  _createClass(DragAndDropHandler, [{
71
45
  key: "mouseCapture",
72
46
  value: function mouseCapture(positionInfo) {
73
47
  var $element = jQuery(positionInfo.target);
74
-
75
48
  if (!this.mustCaptureElement($element)) {
76
49
  return null;
77
50
  }
78
-
79
51
  if (this.treeWidget.options.onIsMoveHandle && !this.treeWidget.options.onIsMoveHandle($element)) {
80
52
  return null;
81
53
  }
82
-
83
54
  var nodeElement = this.treeWidget._getNodeElement($element);
84
-
85
55
  if (nodeElement && this.treeWidget.options.onCanMove) {
86
56
  if (!this.treeWidget.options.onCanMove(nodeElement.node)) {
87
57
  nodeElement = null;
88
58
  }
89
59
  }
90
-
91
60
  this.currentItem = nodeElement;
92
61
  return this.currentItem != null;
93
62
  }
@@ -95,11 +64,9 @@ var DragAndDropHandler = /*#__PURE__*/function () {
95
64
  key: "mouseStart",
96
65
  value: function mouseStart(positionInfo) {
97
66
  var _this$treeWidget$opti;
98
-
99
67
  if (!this.currentItem || positionInfo.pageX === undefined || positionInfo.pageY === undefined) {
100
68
  return false;
101
69
  }
102
-
103
70
  this.refresh();
104
71
  var offset = jQuery(positionInfo.target).offset();
105
72
  var left = offset ? offset.left : 0;
@@ -117,25 +84,22 @@ var DragAndDropHandler = /*#__PURE__*/function () {
117
84
  if (!this.currentItem || !this.dragElement || positionInfo.pageX === undefined || positionInfo.pageY === undefined) {
118
85
  return false;
119
86
  }
120
-
121
87
  this.dragElement.move(positionInfo.pageX, positionInfo.pageY);
122
88
  this.positionInfo = positionInfo;
123
89
  var area = this.findHoveredArea(positionInfo.pageX, positionInfo.pageY);
124
-
125
90
  if (area && this.canMoveToArea(area)) {
126
91
  if (!area.node.isFolder()) {
127
92
  this.stopOpenFolderTimer();
128
93
  }
129
-
130
94
  if (this.hoveredArea !== area) {
131
- this.hoveredArea = area; // If this is a closed folder, start timer to open it
95
+ this.hoveredArea = area;
132
96
 
97
+ // If this is a closed folder, start timer to open it
133
98
  if (this.mustOpenFolderTimer(area)) {
134
99
  this.startOpenFolderTimer(area.node);
135
100
  } else {
136
101
  this.stopOpenFolderTimer();
137
102
  }
138
-
139
103
  this.updateDropHint();
140
104
  }
141
105
  } else {
@@ -143,13 +107,11 @@ var DragAndDropHandler = /*#__PURE__*/function () {
143
107
  this.stopOpenFolderTimer();
144
108
  this.hoveredArea = area;
145
109
  }
146
-
147
110
  if (!area) {
148
111
  if (this.treeWidget.options.onDragMove) {
149
112
  this.treeWidget.options.onDragMove(this.currentItem.node, positionInfo.originalEvent);
150
113
  }
151
114
  }
152
-
153
115
  return true;
154
116
  }
155
117
  }, {
@@ -161,32 +123,26 @@ var DragAndDropHandler = /*#__PURE__*/function () {
161
123
  this.removeDropHint();
162
124
  this.removeHitAreas();
163
125
  var currentItem = this.currentItem;
164
-
165
126
  if (this.currentItem) {
166
127
  this.currentItem.$element.removeClass("jqtree-moving");
167
128
  this.currentItem = null;
168
129
  }
169
-
170
130
  this.isDragging = false;
171
131
  this.positionInfo = null;
172
-
173
132
  if (!this.hoveredArea && currentItem) {
174
133
  if (this.treeWidget.options.onDragStop) {
175
134
  this.treeWidget.options.onDragStop(currentItem.node, positionInfo.originalEvent);
176
135
  }
177
136
  }
178
-
179
137
  return false;
180
138
  }
181
139
  }, {
182
140
  key: "refresh",
183
141
  value: function refresh() {
184
142
  this.removeHitAreas();
185
-
186
143
  if (this.currentItem) {
187
144
  this.generateHitAreas();
188
145
  this.currentItem = this.treeWidget._getNodeElementForNode(this.currentItem.node);
189
-
190
146
  if (this.isDragging) {
191
147
  this.currentItem.$element.addClass("jqtree-moving");
192
148
  }
@@ -213,11 +169,9 @@ var DragAndDropHandler = /*#__PURE__*/function () {
213
169
  if (!this.treeWidget.options.onCanMoveTo) {
214
170
  return true;
215
171
  }
216
-
217
172
  if (!this.currentItem) {
218
173
  return false;
219
174
  }
220
-
221
175
  var positionName = (0, _node.getPositionName)(area.position);
222
176
  return this.treeWidget.options.onCanMoveTo(this.currentItem.node, area.node, positionName);
223
177
  }
@@ -250,18 +204,17 @@ var DragAndDropHandler = /*#__PURE__*/function () {
250
204
  key: "findHoveredArea",
251
205
  value: function findHoveredArea(x, y) {
252
206
  var dimensions = this.getTreeDimensions();
253
-
254
207
  if (x < dimensions.left || y < dimensions.top || x > dimensions.right || y > dimensions.bottom) {
255
208
  return null;
256
209
  }
257
-
258
210
  var low = 0;
259
211
  var high = this.hitAreas.length;
260
-
261
212
  while (low < high) {
262
213
  var mid = low + high >> 1;
263
214
  var area = this.hitAreas[mid];
264
-
215
+ if (!area) {
216
+ return null;
217
+ }
265
218
  if (y < area.top) {
266
219
  high = mid;
267
220
  } else if (y > area.bottom) {
@@ -270,7 +223,6 @@ var DragAndDropHandler = /*#__PURE__*/function () {
270
223
  return area;
271
224
  }
272
225
  }
273
-
274
226
  return null;
275
227
  }
276
228
  }, {
@@ -284,31 +236,27 @@ var DragAndDropHandler = /*#__PURE__*/function () {
284
236
  value: function updateDropHint() {
285
237
  if (!this.hoveredArea) {
286
238
  return;
287
- } // remove previous drop hint
288
-
239
+ }
289
240
 
290
- this.removeDropHint(); // add new drop hint
241
+ // remove previous drop hint
242
+ this.removeDropHint();
291
243
 
244
+ // add new drop hint
292
245
  var nodeElement = this.treeWidget._getNodeElementForNode(this.hoveredArea.node);
293
-
294
246
  this.previousGhost = nodeElement.addDropHint(this.hoveredArea.position);
295
247
  }
296
248
  }, {
297
249
  key: "startOpenFolderTimer",
298
250
  value: function startOpenFolderTimer(folder) {
299
251
  var _this = this;
300
-
301
252
  var openFolder = function openFolder() {
302
253
  _this.treeWidget._openNode(folder, _this.treeWidget.options.slide, function () {
303
254
  _this.refresh();
304
-
305
255
  _this.updateDropHint();
306
256
  });
307
257
  };
308
-
309
258
  this.stopOpenFolderTimer();
310
259
  var openFolderDelay = this.treeWidget.options.openFolderDelay;
311
-
312
260
  if (openFolderDelay !== false) {
313
261
  this.openFolderTimer = window.setTimeout(openFolder, openFolderDelay);
314
262
  }
@@ -325,25 +273,19 @@ var DragAndDropHandler = /*#__PURE__*/function () {
325
273
  key: "moveItem",
326
274
  value: function moveItem(positionInfo) {
327
275
  var _this2 = this;
328
-
329
276
  if (this.currentItem && this.hoveredArea && this.hoveredArea.position !== _node.Position.None && this.canMoveToArea(this.hoveredArea)) {
330
277
  var movedNode = this.currentItem.node;
331
278
  var targetNode = this.hoveredArea.node;
332
279
  var position = this.hoveredArea.position;
333
280
  var previousParent = movedNode.parent;
334
-
335
281
  if (position === _node.Position.Inside) {
336
282
  this.hoveredArea.node.is_open = true;
337
283
  }
338
-
339
284
  var doMove = function doMove() {
340
285
  _this2.treeWidget.tree.moveNode(movedNode, targetNode, position);
341
-
342
286
  _this2.treeWidget.element.empty();
343
-
344
287
  _this2.treeWidget._refreshElements(null);
345
288
  };
346
-
347
289
  var event = this.treeWidget._triggerEvent("tree.move", {
348
290
  move_info: {
349
291
  moved_node: movedNode,
@@ -354,7 +296,6 @@ var DragAndDropHandler = /*#__PURE__*/function () {
354
296
  original_event: positionInfo.originalEvent
355
297
  }
356
298
  });
357
-
358
299
  if (!event.isDefaultPrevented()) {
359
300
  doMove();
360
301
  }
@@ -366,7 +307,6 @@ var DragAndDropHandler = /*#__PURE__*/function () {
366
307
  // Return the dimensions of the tree. Add a margin to the bottom to allow
367
308
  // to drag-and-drop after the last element.
368
309
  var offset = this.treeWidget.element.offset();
369
-
370
310
  if (!offset) {
371
311
  return {
372
312
  left: 0,
@@ -378,9 +318,7 @@ var DragAndDropHandler = /*#__PURE__*/function () {
378
318
  var el = this.treeWidget.element;
379
319
  var width = el.width() || 0;
380
320
  var height = el.height() || 0;
381
-
382
321
  var left = offset.left + this.treeWidget._getScrollLeft();
383
-
384
322
  return {
385
323
  left: left,
386
324
  top: offset.top,
@@ -390,45 +328,32 @@ var DragAndDropHandler = /*#__PURE__*/function () {
390
328
  }
391
329
  }
392
330
  }]);
393
-
394
331
  return DragAndDropHandler;
395
332
  }();
396
-
397
333
  exports.DragAndDropHandler = DragAndDropHandler;
398
-
399
334
  var VisibleNodeIterator = /*#__PURE__*/function () {
400
335
  function VisibleNodeIterator(tree) {
401
336
  _classCallCheck(this, VisibleNodeIterator);
402
-
403
337
  _defineProperty(this, "tree", void 0);
404
-
405
338
  this.tree = tree;
406
339
  }
407
-
408
340
  _createClass(VisibleNodeIterator, [{
409
341
  key: "iterate",
410
342
  value: function iterate() {
411
343
  var _this3 = this;
412
-
413
344
  var isFirstNode = true;
414
-
415
345
  var _iterateNode = function _iterateNode(node, nextNode) {
416
346
  var mustIterateInside = (node.is_open || !node.element) && node.hasChildren();
417
347
  var $element = null;
418
-
419
348
  if (node.element) {
420
349
  $element = jQuery(node.element);
421
-
422
350
  if (!$element.is(":visible")) {
423
351
  return;
424
352
  }
425
-
426
353
  if (isFirstNode) {
427
354
  _this3.handleFirstNode(node);
428
-
429
355
  isFirstNode = false;
430
356
  }
431
-
432
357
  if (!node.hasChildren()) {
433
358
  _this3.handleNode(node, nextNode, $element);
434
359
  } else if (node.is_open) {
@@ -439,55 +364,46 @@ var VisibleNodeIterator = /*#__PURE__*/function () {
439
364
  _this3.handleClosedFolder(node, nextNode, $element);
440
365
  }
441
366
  }
442
-
443
367
  if (mustIterateInside) {
444
368
  var childrenLength = node.children.length;
445
369
  node.children.forEach(function (_, i) {
446
- if (i === childrenLength - 1) {
447
- _iterateNode(node.children[i], null);
448
- } else {
449
- _iterateNode(node.children[i], node.children[i + 1]);
370
+ var child = node.children[i];
371
+ if (child) {
372
+ if (i === childrenLength - 1) {
373
+ _iterateNode(child, null);
374
+ } else {
375
+ var nextChild = node.children[i + 1];
376
+ if (nextChild) {
377
+ _iterateNode(child, nextChild);
378
+ }
379
+ }
450
380
  }
451
381
  });
452
-
453
382
  if (node.is_open && $element) {
454
383
  _this3.handleAfterOpenFolder(node, nextNode);
455
384
  }
456
385
  }
457
386
  };
458
-
459
387
  _iterateNode(this.tree, null);
460
388
  }
461
389
  }]);
462
-
463
390
  return VisibleNodeIterator;
464
391
  }();
465
-
466
392
  var HitAreasGenerator = /*#__PURE__*/function (_VisibleNodeIterator) {
467
393
  _inherits(HitAreasGenerator, _VisibleNodeIterator);
468
-
469
394
  var _super = _createSuper(HitAreasGenerator);
470
-
471
395
  function HitAreasGenerator(tree, currentNode, treeBottom) {
472
396
  var _this4;
473
-
474
397
  _classCallCheck(this, HitAreasGenerator);
475
-
476
398
  _this4 = _super.call(this, tree);
477
-
478
399
  _defineProperty(_assertThisInitialized(_this4), "currentNode", void 0);
479
-
480
400
  _defineProperty(_assertThisInitialized(_this4), "treeBottom", void 0);
481
-
482
401
  _defineProperty(_assertThisInitialized(_this4), "positions", void 0);
483
-
484
402
  _defineProperty(_assertThisInitialized(_this4), "lastTop", void 0);
485
-
486
403
  _this4.currentNode = currentNode;
487
404
  _this4.treeBottom = treeBottom;
488
405
  return _this4;
489
406
  }
490
-
491
407
  _createClass(HitAreasGenerator, [{
492
408
  key: "generate",
493
409
  value: function generate() {
@@ -502,23 +418,18 @@ var HitAreasGenerator = /*#__PURE__*/function (_VisibleNodeIterator) {
502
418
  var previousTop = -1;
503
419
  var group = [];
504
420
  var hitAreas = [];
505
-
506
421
  var _iterator = _createForOfIteratorHelper(positions),
507
- _step;
508
-
422
+ _step;
509
423
  try {
510
424
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
511
425
  var position = _step.value;
512
-
513
426
  if (position.top !== previousTop && group.length) {
514
427
  if (group.length) {
515
428
  this.generateHitAreasForGroup(hitAreas, group, previousTop, position.top);
516
429
  }
517
-
518
430
  previousTop = position.top;
519
431
  group = [];
520
432
  }
521
-
522
433
  group.push(position);
523
434
  }
524
435
  } catch (err) {
@@ -526,7 +437,6 @@ var HitAreasGenerator = /*#__PURE__*/function (_VisibleNodeIterator) {
526
437
  } finally {
527
438
  _iterator.f();
528
439
  }
529
-
530
440
  this.generateHitAreasForGroup(hitAreas, group, previousTop, this.treeBottom);
531
441
  return hitAreas;
532
442
  }
@@ -537,27 +447,27 @@ var HitAreasGenerator = /*#__PURE__*/function (_VisibleNodeIterator) {
537
447
  // Cannot move inside current item
538
448
  // Stop iterating
539
449
  return false;
540
- } // Cannot move before current item
541
-
450
+ }
542
451
 
452
+ // Cannot move before current item
543
453
  if (node.children[0] !== this.currentNode) {
544
454
  this.addPosition(node, _node.Position.Inside, this.getTop($element));
545
- } // Continue iterating
546
-
455
+ }
547
456
 
457
+ // Continue iterating
548
458
  return true;
549
459
  }
550
460
  }, {
551
461
  key: "handleClosedFolder",
552
462
  value: function handleClosedFolder(node, nextNode, $element) {
553
463
  var top = this.getTop($element);
554
-
555
464
  if (node === this.currentNode) {
556
465
  // Cannot move after current item
557
466
  this.addPosition(node, _node.Position.None, top);
558
467
  } else {
559
- this.addPosition(node, _node.Position.Inside, top); // Cannot move before current item
468
+ this.addPosition(node, _node.Position.Inside, top);
560
469
 
470
+ // Cannot move before current item
561
471
  if (nextNode !== this.currentNode) {
562
472
  this.addPosition(node, _node.Position.After, top);
563
473
  }
@@ -584,14 +494,12 @@ var HitAreasGenerator = /*#__PURE__*/function (_VisibleNodeIterator) {
584
494
  key: "handleNode",
585
495
  value: function handleNode(node, nextNode, $element) {
586
496
  var top = this.getTop($element);
587
-
588
497
  if (node === this.currentNode) {
589
498
  // Cannot move inside current item
590
499
  this.addPosition(node, _node.Position.None, top);
591
500
  } else {
592
501
  this.addPosition(node, _node.Position.Inside, top);
593
502
  }
594
-
595
503
  if (nextNode === this.currentNode || node === this.currentNode) {
596
504
  // Cannot move before or after current item
597
505
  this.addPosition(node, _node.Position.None, top);
@@ -625,50 +533,41 @@ var HitAreasGenerator = /*#__PURE__*/function (_VisibleNodeIterator) {
625
533
  var areaHeight = Math.round((bottom - top) / positionCount);
626
534
  var areaTop = top;
627
535
  var i = 0;
628
-
629
536
  while (i < positionCount) {
630
537
  var position = positionsInGroup[i];
631
- hitAreas.push({
632
- top: areaTop,
633
- bottom: areaTop + areaHeight,
634
- node: position.node,
635
- position: position.position
636
- });
538
+ if (position) {
539
+ hitAreas.push({
540
+ top: areaTop,
541
+ bottom: areaTop + areaHeight,
542
+ node: position.node,
543
+ position: position.position
544
+ });
545
+ }
637
546
  areaTop += areaHeight;
638
547
  i += 1;
639
548
  }
640
549
  }
641
550
  }]);
642
-
643
551
  return HitAreasGenerator;
644
552
  }(VisibleNodeIterator);
645
-
646
553
  exports.HitAreasGenerator = HitAreasGenerator;
647
-
648
554
  var DragElement = /*#__PURE__*/function () {
649
555
  function DragElement(nodeName, offsetX, offsetY, $tree, autoEscape) {
650
556
  _classCallCheck(this, DragElement);
651
-
652
557
  _defineProperty(this, "offsetX", void 0);
653
-
654
558
  _defineProperty(this, "offsetY", void 0);
655
-
656
559
  _defineProperty(this, "$element", void 0);
657
-
658
560
  this.offsetX = offsetX;
659
561
  this.offsetY = offsetY;
660
562
  this.$element = jQuery("<span>").addClass("jqtree-title jqtree-dragging");
661
-
662
563
  if (autoEscape) {
663
564
  this.$element.text(nodeName);
664
565
  } else {
665
566
  this.$element.html(nodeName);
666
567
  }
667
-
668
568
  this.$element.css("position", "absolute");
669
569
  $tree.append(this.$element);
670
570
  }
671
-
672
571
  _createClass(DragElement, [{
673
572
  key: "move",
674
573
  value: function move(pageX, pageY) {
@@ -683,6 +582,5 @@ var DragElement = /*#__PURE__*/function () {
683
582
  this.$element.remove();
684
583
  }
685
584
  }]);
686
-
687
585
  return DragElement;
688
586
  }();