jqtree 1.8.1 → 1.8.3

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 (222) hide show
  1. package/bower.json +1 -1
  2. package/package.json +20 -19
  3. package/src/dragAndDropHandler/generateHitAreas.ts +56 -41
  4. package/src/nodeElement/ghostDropHint.ts +3 -37
  5. package/src/nodeElement/index.ts +1 -1
  6. package/src/saveStateHandler.ts +43 -59
  7. package/src/version.ts +1 -1
  8. package/tree.jquery.debug.js +77 -104
  9. package/tree.jquery.debug.js.map +1 -1
  10. package/tree.jquery.js +2 -2
  11. package/tree.jquery.js.map +1 -1
  12. package/.editorconfig +0 -12
  13. package/.eslintrc +0 -48
  14. package/.github/workflows/ci.yml +0 -68
  15. package/.github/workflows/codeql-analysis.yml +0 -32
  16. package/.github/workflows/size.yml +0 -24
  17. package/.github/workflows/static.yml +0 -57
  18. package/.prettier +0 -3
  19. package/config/.postcssrc +0 -6
  20. package/config/babel.config.json +0 -11
  21. package/config/babel.coverage.config.json +0 -4
  22. package/config/jest.config.js +0 -24
  23. package/config/jest.polyfills.js +0 -14
  24. package/config/playwright.config.js +0 -18
  25. package/config/production +0 -6
  26. package/config/rollup.config.mjs +0 -71
  27. package/css/jqtree.postcss +0 -193
  28. package/devserver/devserver.js +0 -7
  29. package/devserver/devserver_scroll.js +0 -8
  30. package/devserver/index.html +0 -22
  31. package/devserver/test_index.html +0 -22
  32. package/devserver/test_scroll.html +0 -28
  33. package/devserver/test_scroll_container.html +0 -39
  34. package/docs/.ruby-version +0 -1
  35. package/docs/Gemfile +0 -5
  36. package/docs/Gemfile.lock +0 -82
  37. package/docs/_config.yml +0 -126
  38. package/docs/_entries/events/index.md +0 -6
  39. package/docs/_entries/events/tree-click.md +0 -37
  40. package/docs/_entries/events/tree-close.md +0 -15
  41. package/docs/_entries/events/tree-contextmenu.md +0 -21
  42. package/docs/_entries/events/tree-dblclick.md +0 -19
  43. package/docs/_entries/events/tree-init.md +0 -15
  44. package/docs/_entries/events/tree-load-data.md +0 -15
  45. package/docs/_entries/events/tree-loading-data.md +0 -27
  46. package/docs/_entries/events/tree-move.md +0 -73
  47. package/docs/_entries/events/tree-open.md +0 -15
  48. package/docs/_entries/events/tree-refresh.md +0 -12
  49. package/docs/_entries/events/tree-select.md +0 -28
  50. package/docs/_entries/functions/addnodeafter.md +0 -20
  51. package/docs/_entries/functions/addnodebefore.md +0 -8
  52. package/docs/_entries/functions/addparentnode.md +0 -20
  53. package/docs/_entries/functions/appendnode.md +0 -50
  54. package/docs/_entries/functions/closenode.md +0 -23
  55. package/docs/_entries/functions/destroy.md +0 -12
  56. package/docs/_entries/functions/getnodebycallback.md +0 -24
  57. package/docs/_entries/functions/getnodebyhtmlelement.md +0 -29
  58. package/docs/_entries/functions/getnodebyid.md +0 -21
  59. package/docs/_entries/functions/getselectednode.md +0 -10
  60. package/docs/_entries/functions/getstate.md +0 -19
  61. package/docs/_entries/functions/gettree.md +0 -12
  62. package/docs/_entries/functions/index.md +0 -6
  63. package/docs/_entries/functions/is-node-selected.md +0 -11
  64. package/docs/_entries/functions/isdragging.md +0 -12
  65. package/docs/_entries/functions/loaddata.md +0 -46
  66. package/docs/_entries/functions/loaddatafromurl.md +0 -55
  67. package/docs/_entries/functions/movedown.md +0 -8
  68. package/docs/_entries/functions/movenode.md +0 -15
  69. package/docs/_entries/functions/moveup.md +0 -8
  70. package/docs/_entries/functions/opennode.md +0 -44
  71. package/docs/_entries/functions/prependnode.md +0 -21
  72. package/docs/_entries/functions/refresh.md +0 -12
  73. package/docs/_entries/functions/reload.md +0 -22
  74. package/docs/_entries/functions/removenode.md +0 -12
  75. package/docs/_entries/functions/scrolltonode.md +0 -13
  76. package/docs/_entries/functions/selectnode.md +0 -45
  77. package/docs/_entries/functions/setoption.md +0 -12
  78. package/docs/_entries/functions/setstate.md +0 -8
  79. package/docs/_entries/functions/toggle.md +0 -25
  80. package/docs/_entries/functions/tojson.md +0 -13
  81. package/docs/_entries/functions/updatenode.md +0 -50
  82. package/docs/_entries/general/changelog.md +0 -430
  83. package/docs/_entries/general/demo.html +0 -28
  84. package/docs/_entries/general/downloads.md +0 -9
  85. package/docs/_entries/general/examples.md +0 -8
  86. package/docs/_entries/general/features.md +0 -15
  87. package/docs/_entries/general/index.md +0 -7
  88. package/docs/_entries/general/introduction.md +0 -9
  89. package/docs/_entries/general/requirements.md +0 -6
  90. package/docs/_entries/general/tutorial.md +0 -71
  91. package/docs/_entries/general/usecases.md +0 -15
  92. package/docs/_entries/multiple_selection/add-to-selection.md +0 -21
  93. package/docs/_entries/multiple_selection/get-selected-nodes.md +0 -10
  94. package/docs/_entries/multiple_selection/index.md +0 -9
  95. package/docs/_entries/multiple_selection/remove-from-selection.md +0 -11
  96. package/docs/_entries/node/children.md +0 -12
  97. package/docs/_entries/node/getdata.md +0 -17
  98. package/docs/_entries/node/getlevel.md +0 -13
  99. package/docs/_entries/node/getnextnode.md +0 -12
  100. package/docs/_entries/node/getnextsibling.md +0 -10
  101. package/docs/_entries/node/getnextvisiblenode.md +0 -15
  102. package/docs/_entries/node/getpreviousnode.md +0 -12
  103. package/docs/_entries/node/getprevioussibling.md +0 -10
  104. package/docs/_entries/node/getpreviousvisiblenode.md +0 -15
  105. package/docs/_entries/node/index.md +0 -13
  106. package/docs/_entries/node/parent.md +0 -10
  107. package/docs/_entries/options/animationspeed.md +0 -7
  108. package/docs/_entries/options/autoescape.md +0 -6
  109. package/docs/_entries/options/autoopen.md +0 -28
  110. package/docs/_entries/options/buttonleft.md +0 -12
  111. package/docs/_entries/options/closedicon.md +0 -26
  112. package/docs/_entries/options/data-url.md +0 -45
  113. package/docs/_entries/options/data.md +0 -46
  114. package/docs/_entries/options/datafilter.md +0 -17
  115. package/docs/_entries/options/draganddrop.md +0 -18
  116. package/docs/_entries/options/index.md +0 -6
  117. package/docs/_entries/options/keyboardsupport.md +0 -14
  118. package/docs/_entries/options/oncanmove.md +0 -22
  119. package/docs/_entries/options/oncanmoveto.md +0 -22
  120. package/docs/_entries/options/oncanselectnode.md +0 -26
  121. package/docs/_entries/options/oncreateli.md +0 -22
  122. package/docs/_entries/options/ondragmove.md +0 -20
  123. package/docs/_entries/options/ondragstop.md +0 -20
  124. package/docs/_entries/options/onismovehandle.md +0 -17
  125. package/docs/_entries/options/onloadfailed.md +0 -15
  126. package/docs/_entries/options/onloading.md +0 -22
  127. package/docs/_entries/options/openedicon.md +0 -26
  128. package/docs/_entries/options/openfolderdelay.md +0 -15
  129. package/docs/_entries/options/rtl.md +0 -18
  130. package/docs/_entries/options/savestate.md +0 -39
  131. package/docs/_entries/options/selectable.md +0 -18
  132. package/docs/_entries/options/showemptyfolder.md +0 -26
  133. package/docs/_entries/options/slide.md +0 -12
  134. package/docs/_entries/options/start_dnd_delay.md +0 -13
  135. package/docs/_entries/options/tabindex.md +0 -14
  136. package/docs/_entries/options/usecontextmenu.md +0 -14
  137. package/docs/_examples/01_load_json_data.html +0 -45
  138. package/docs/_examples/02_load_json_data_from_server.html +0 -29
  139. package/docs/_examples/03_drag_and_drop.html +0 -42
  140. package/docs/_examples/04_save_state.html +0 -46
  141. package/docs/_examples/05_load_on_demand.html +0 -68
  142. package/docs/_examples/06_autoescape.html +0 -45
  143. package/docs/_examples/07_autoscroll.html +0 -42
  144. package/docs/_examples/08_multiple_select.html +0 -60
  145. package/docs/_examples/09_custom_html.html +0 -61
  146. package/docs/_examples/10_icon_buttons.html +0 -26
  147. package/docs/_examples/11_right-to-left.html +0 -25
  148. package/docs/_examples/12_button_on_right.html +0 -26
  149. package/docs/_examples/13_drag_outside.html +0 -48
  150. package/docs/_examples/14_filter.html +0 -111
  151. package/docs/_layouts/example.html +0 -7
  152. package/docs/_layouts/page.html +0 -26
  153. package/docs/documentation.css +0 -3
  154. package/docs/index.html +0 -65
  155. package/docs/package.json +0 -22
  156. package/docs/pnpm-lock.yaml +0 -892
  157. package/docs/postcss.config.js +0 -7
  158. package/docs/static/bower.json +0 -8
  159. package/docs/static/bower_components/fontawesome/css/all.min.css +0 -9
  160. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.ttf +0 -0
  161. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
  162. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.ttf +0 -0
  163. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
  164. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.ttf +0 -0
  165. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
  166. package/docs/static/bower_components/fontawesome/webfonts/fa-v4compatibility.ttf +0 -0
  167. package/docs/static/bower_components/fontawesome/webfonts/fa-v4compatibility.woff2 +0 -0
  168. package/docs/static/bower_components/jquery/dist/jquery.js +0 -10704
  169. package/docs/static/bower_components/jquery/dist/jquery.min.js +0 -2
  170. package/docs/static/bower_components/jquery-mockjax/dist/jquery.mockjax.js +0 -1061
  171. package/docs/static/documentation.js +0 -26
  172. package/docs/static/example.postcss +0 -68
  173. package/docs/static/example_data.js +0 -122
  174. package/docs/static/examples/autoescape.js +0 -17
  175. package/docs/static/examples/autoscroll.js +0 -6
  176. package/docs/static/examples/button-on-right.js +0 -13
  177. package/docs/static/examples/custom_html.js +0 -27
  178. package/docs/static/examples/drag-outside.js +0 -37
  179. package/docs/static/examples/drag_and_drop.js +0 -13
  180. package/docs/static/examples/filter.js +0 -63
  181. package/docs/static/examples/icon_buttons.js +0 -12
  182. package/docs/static/examples/load_json_data.js +0 -16
  183. package/docs/static/examples/load_json_data_from_server.js +0 -9
  184. package/docs/static/examples/load_on_demand.js +0 -19
  185. package/docs/static/examples/multiple_select.js +0 -23
  186. package/docs/static/examples/right-to-left.js +0 -11
  187. package/docs/static/examples/save_state.js +0 -11
  188. package/docs/static/monokai.css +0 -70
  189. package/docs/static/spinner.gif +0 -0
  190. package/docs/tailwind.config.js +0 -16
  191. package/sitemap.txt +0 -14
  192. package/src/playwright/.eslintrc +0 -5
  193. package/src/playwright/coverage.ts +0 -38
  194. package/src/playwright/playwright.test.ts +0 -401
  195. package/src/playwright/playwright.test.ts-snapshots/with-dragAndDrop-moves-a-node-1-Chromium-darwin.png +0 -0
  196. package/src/playwright/playwright.test.ts-snapshots/with-dragAndDrop-moves-a-node-1-Chromium-linux.png +0 -0
  197. package/src/playwright/playwright.test.ts-snapshots/without-dragAndDrop-displays-a-tree-1-Chromium-darwin.png +0 -0
  198. package/src/playwright/playwright.test.ts-snapshots/without-dragAndDrop-displays-a-tree-1-Chromium-linux.png +0 -0
  199. package/src/playwright/playwright.test.ts-snapshots/without-dragAndDrop-selects-a-node-1-Chromium-darwin.png +0 -0
  200. package/src/playwright/playwright.test.ts-snapshots/without-dragAndDrop-selects-a-node-1-Chromium-linux.png +0 -0
  201. package/src/playwright/testUtils.ts +0 -153
  202. package/src/test/.eslintrc +0 -17
  203. package/src/test/global.d.ts +0 -1
  204. package/src/test/jqTree/accessibility.test.ts +0 -25
  205. package/src/test/jqTree/create.test.ts +0 -54
  206. package/src/test/jqTree/events.test.ts +0 -290
  207. package/src/test/jqTree/keyboard.test.ts +0 -247
  208. package/src/test/jqTree/loadOnDemand.test.ts +0 -198
  209. package/src/test/jqTree/methods.test.ts +0 -1491
  210. package/src/test/jqTree/mouse.test.ts +0 -82
  211. package/src/test/jqTree/options.test.ts +0 -595
  212. package/src/test/node.test.ts +0 -1396
  213. package/src/test/nodeUtils.test.ts +0 -21
  214. package/src/test/position.test.ts +0 -30
  215. package/src/test/support/exampleData.ts +0 -23
  216. package/src/test/support/jqTreeMatchers.ts +0 -68
  217. package/src/test/support/matchers.d.ts +0 -31
  218. package/src/test/support/setupTests.ts +0 -5
  219. package/src/test/support/testUtil.ts +0 -30
  220. package/src/test/support/treeStructure.ts +0 -39
  221. package/src/test/util.test.ts +0 -27
  222. package/tsconfig.json +0 -24
@@ -1,5 +1,5 @@
1
1
  /*
2
- JqTree 1.8.1
2
+ JqTree 1.8.3
3
3
 
4
4
  Copyright 2024 Marco Braak
5
5
 
@@ -20,7 +20,7 @@ limitations under the License.
20
20
  var jqtree = (function (exports) {
21
21
  'use strict';
22
22
 
23
- const version = "1.8.1";
23
+ const version = "1.8.3";
24
24
 
25
25
  let Position = /*#__PURE__*/function (Position) {
26
26
  Position[Position["Before"] = 1] = "Before";
@@ -146,71 +146,79 @@ var jqtree = (function (exports) {
146
146
  iterate(tree, null);
147
147
  };
148
148
 
149
- const generatePositions = (tree, currentNode) => {
150
- const positions = [];
149
+ const generateHitPositions = (tree, currentNode) => {
150
+ const hitPositions = [];
151
151
  let lastTop = 0;
152
- const addPosition = (node, position, top) => {
153
- const area = {
152
+ const addHitPosition = (node, position, top) => {
153
+ hitPositions.push({
154
154
  top,
155
- bottom: 0,
156
155
  node,
157
156
  position
158
- };
159
- positions.push(area);
157
+ });
160
158
  lastTop = top;
161
159
  };
162
160
  const handleAfterOpenFolder = (node, nextNode) => {
163
161
  if (node === currentNode || nextNode === currentNode) {
164
162
  // Cannot move before or after current item
165
- addPosition(node, Position.None, lastTop);
163
+ addHitPosition(node, Position.None, lastTop);
166
164
  } else {
167
- addPosition(node, Position.After, lastTop);
165
+ addHitPosition(node, Position.After, lastTop);
168
166
  }
169
167
  };
170
168
  const handleClosedFolder = (node, nextNode, element) => {
171
169
  const top = getOffsetTop(element);
172
170
  if (node === currentNode) {
173
171
  // Cannot move after current item
174
- addPosition(node, Position.None, top);
172
+ addHitPosition(node, Position.None, top);
175
173
  } else {
176
- addPosition(node, Position.Inside, top);
174
+ addHitPosition(node, Position.Inside, top);
177
175
 
178
176
  // Cannot move before current item
179
177
  if (nextNode !== currentNode) {
180
- addPosition(node, Position.After, top);
178
+ addHitPosition(node, Position.After, top);
181
179
  }
182
180
  }
183
181
  };
184
182
  const handleFirstNode = node => {
185
183
  if (node !== currentNode) {
186
- addPosition(node, Position.Before, getOffsetTop(node.element));
184
+ addHitPosition(node, Position.Before, getOffsetTop(node.element));
187
185
  }
188
186
  };
189
187
  const handleNode = (node, nextNode, element) => {
190
188
  const top = getOffsetTop(element);
191
189
  if (node === currentNode) {
192
190
  // Cannot move inside current item
193
- addPosition(node, Position.None, top);
191
+ addHitPosition(node, Position.None, top);
194
192
  } else {
195
- addPosition(node, Position.Inside, top);
193
+ addHitPosition(node, Position.Inside, top);
196
194
  }
197
195
  if (nextNode === currentNode || node === currentNode) {
198
196
  // Cannot move before or after current item
199
- addPosition(node, Position.None, top);
197
+ addHitPosition(node, Position.None, top);
200
198
  } else {
201
- addPosition(node, Position.After, top);
199
+ addHitPosition(node, Position.After, top);
202
200
  }
203
201
  };
204
202
  const handleOpenFolder = (node, element) => {
205
203
  if (node === currentNode) {
206
204
  // Cannot move inside current item
205
+
206
+ // Dnd over the current element is not possible: add a position with type None for the top and the bottom.
207
+ const top = getOffsetTop(element);
208
+ const height = element.clientHeight;
209
+ addHitPosition(node, Position.None, top);
210
+ if (height > 5) {
211
+ // Subtract 5 pixels to allow more space for the next element.
212
+ addHitPosition(node, Position.None, top + height - 5);
213
+ }
214
+
207
215
  // Stop iterating
208
216
  return false;
209
217
  }
210
218
 
211
219
  // Cannot move before current item
212
220
  if (node.children[0] !== currentNode) {
213
- addPosition(node, Position.Inside, getOffsetTop(element));
221
+ addHitPosition(node, Position.Inside, getOffsetTop(element));
214
222
  }
215
223
 
216
224
  // Continue iterating
@@ -223,17 +231,16 @@ var jqtree = (function (exports) {
223
231
  handleNode,
224
232
  handleOpenFolder
225
233
  });
226
- return positions;
234
+ return hitPositions;
227
235
  };
228
236
  const generateHitAreasForGroup = (hitAreas, positionsInGroup, top, bottom) => {
229
237
  // limit positions in group
230
238
  const positionCount = Math.min(positionsInGroup.length, 4);
231
239
  const areaHeight = Math.round((bottom - top) / positionCount);
232
240
  let areaTop = top;
233
- let i = 0;
234
- while (i < positionCount) {
241
+ for (let i = 0; i < positionCount; i++) {
235
242
  const position = positionsInGroup[i];
236
- if (position) {
243
+ if (position.position !== Position.None) {
237
244
  hitAreas.push({
238
245
  top: areaTop,
239
246
  bottom: areaTop + areaHeight,
@@ -242,14 +249,16 @@ var jqtree = (function (exports) {
242
249
  });
243
250
  }
244
251
  areaTop += areaHeight;
245
- i += 1;
246
252
  }
247
253
  };
248
- const generateHitAreasFromPositions = (positions, treeBottom) => {
249
- let previousTop = positions[0]?.top ?? 0;
254
+ const generateHitAreasFromPositions = (hitPositions, treeBottom) => {
255
+ if (!hitPositions.length) {
256
+ return [];
257
+ }
258
+ let previousTop = hitPositions[0].top;
250
259
  let group = [];
251
260
  const hitAreas = [];
252
- for (const position of positions) {
261
+ for (const position of hitPositions) {
253
262
  if (position.top !== previousTop && group.length) {
254
263
  generateHitAreasForGroup(hitAreas, group, previousTop, position.top);
255
264
  previousTop = position.top;
@@ -260,10 +269,7 @@ var jqtree = (function (exports) {
260
269
  generateHitAreasForGroup(hitAreas, group, previousTop, treeBottom);
261
270
  return hitAreas;
262
271
  };
263
- const generateHitAreas = (tree, currentNode, treeBottom) => {
264
- const positions = generatePositions(tree, currentNode);
265
- return generateHitAreasFromPositions(positions, treeBottom);
266
- };
272
+ const generateHitAreas = (tree, currentNode, treeBottom) => generateHitAreasFromPositions(generateHitPositions(tree, currentNode), treeBottom);
267
273
 
268
274
  class DragAndDropHandler {
269
275
  constructor(_ref) {
@@ -1341,15 +1347,44 @@ var jqtree = (function (exports) {
1341
1347
  }
1342
1348
  }
1343
1349
  setInitialStateOnDemand(state, cbFinished) {
1344
- if (state) {
1345
- this.doSetInitialStateOnDemand(state.open_nodes, state.selected_node, cbFinished);
1346
- } else {
1347
- cbFinished();
1348
- }
1350
+ let loadingCount = 0;
1351
+ let nodeIds = state.open_nodes;
1352
+ const openNodes = () => {
1353
+ const newNodesIds = [];
1354
+ for (const nodeId of nodeIds) {
1355
+ const node = this.getNodeById(nodeId);
1356
+ if (!node) {
1357
+ newNodesIds.push(nodeId);
1358
+ } else {
1359
+ if (!node.is_loading) {
1360
+ if (node.load_on_demand) {
1361
+ loadAndOpenNode(node);
1362
+ } else {
1363
+ this.openNode(node, false);
1364
+ }
1365
+ }
1366
+ }
1367
+ }
1368
+ nodeIds = newNodesIds;
1369
+ if (this.selectInitialNodes(state.selected_node)) {
1370
+ this.refreshElements(null);
1371
+ }
1372
+ if (loadingCount === 0) {
1373
+ cbFinished();
1374
+ }
1375
+ };
1376
+ const loadAndOpenNode = node => {
1377
+ loadingCount += 1;
1378
+ this.openNode(node, false, () => {
1379
+ loadingCount -= 1;
1380
+ openNodes();
1381
+ });
1382
+ };
1383
+ openNodes();
1349
1384
  }
1350
1385
  getNodeIdToBeSelected() {
1351
1386
  const state = this.getStateFromStorage();
1352
- if (state && state.selected_node) {
1387
+ if (state?.selected_node) {
1353
1388
  return state.selected_node[0] || null;
1354
1389
  } else {
1355
1390
  return null;
@@ -1405,42 +1440,6 @@ var jqtree = (function (exports) {
1405
1440
  this.removeFromSelection(node);
1406
1441
  });
1407
1442
  }
1408
- doSetInitialStateOnDemand(nodeIdsParam, selectedNodes, cbFinished) {
1409
- let loadingCount = 0;
1410
- let nodeIds = nodeIdsParam;
1411
- const openNodes = () => {
1412
- const newNodesIds = [];
1413
- for (const nodeId of nodeIds) {
1414
- const node = this.getNodeById(nodeId);
1415
- if (!node) {
1416
- newNodesIds.push(nodeId);
1417
- } else {
1418
- if (!node.is_loading) {
1419
- if (node.load_on_demand) {
1420
- loadAndOpenNode(node);
1421
- } else {
1422
- this.openNode(node, false);
1423
- }
1424
- }
1425
- }
1426
- }
1427
- nodeIds = newNodesIds;
1428
- if (this.selectInitialNodes(selectedNodes)) {
1429
- this.refreshElements(null);
1430
- }
1431
- if (loadingCount === 0) {
1432
- cbFinished();
1433
- }
1434
- };
1435
- const loadAndOpenNode = node => {
1436
- loadingCount += 1;
1437
- this.openNode(node, false, () => {
1438
- loadingCount -= 1;
1439
- openNodes();
1440
- });
1441
- };
1442
- openNodes();
1443
- }
1444
1443
  getKeyName() {
1445
1444
  if (typeof this.saveStateOption === "string") {
1446
1445
  return this.saveStateOption;
@@ -2508,41 +2507,15 @@ var jqtree = (function (exports) {
2508
2507
  }
2509
2508
 
2510
2509
  class GhostDropHint {
2511
- constructor(node, element, position) {
2510
+ constructor(element) {
2512
2511
  this.element = element;
2513
- this.node = node;
2514
2512
  this.ghost = this.createGhostElement();
2515
- if (position === Position.After) {
2516
- this.moveAfter();
2517
- } else if (position === Position.Before) {
2518
- this.moveBefore();
2519
- } else if (position === Position.Inside) {
2520
- if (node.isFolder() && node.is_open) {
2521
- this.moveInsideOpenFolder();
2522
- } else {
2523
- this.moveInside();
2524
- }
2525
- }
2513
+ this.element.after(this.ghost);
2514
+ this.ghost.classList.add("jqtree-inside");
2526
2515
  }
2527
2516
  remove() {
2528
2517
  this.ghost.remove();
2529
2518
  }
2530
- moveAfter() {
2531
- this.element.after(this.ghost);
2532
- }
2533
- moveBefore() {
2534
- this.element.before(this.ghost);
2535
- }
2536
- moveInsideOpenFolder() {
2537
- const childElement = this.node.children[0]?.element;
2538
- if (childElement) {
2539
- childElement.before(this.ghost);
2540
- }
2541
- }
2542
- moveInside() {
2543
- this.element.after(this.ghost);
2544
- this.ghost.classList.add("jqtree-inside");
2545
- }
2546
2519
  createGhostElement() {
2547
2520
  const ghost = document.createElement("li");
2548
2521
  ghost.className = "jqtree_common jqtree-ghost";
@@ -2585,7 +2558,7 @@ var jqtree = (function (exports) {
2585
2558
  if (this.mustShowBorderDropHint(position)) {
2586
2559
  return new BorderDropHint(this.element, this.getScrollLeft());
2587
2560
  } else {
2588
- return new GhostDropHint(this.node, this.element, position);
2561
+ return new GhostDropHint(this.element);
2589
2562
  }
2590
2563
  }
2591
2564
  select(mustSetFocus) {