jqtree 1.8.10 → 1.8.11

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.
@@ -1,7 +1,7 @@
1
1
  /*
2
- JqTree 1.8.10
2
+ JqTree 1.8.11
3
3
 
4
- Copyright 2025 Marco Braak
4
+ Copyright 2026 Marco Braak
5
5
 
6
6
  Licensed under the Apache License, Version 2.0 (the "License");
7
7
  you may not use this file except in compliance with the License.
@@ -21,15 +21,14 @@ var jqtree = (function (exports) {
21
21
  'use strict';
22
22
 
23
23
  class DataLoader {
24
- constructor(_ref) {
25
- let {
26
- dataFilter,
27
- loadData,
28
- onLoadFailed,
29
- onLoading,
30
- treeElement,
31
- triggerEvent
32
- } = _ref;
24
+ constructor({
25
+ dataFilter,
26
+ loadData,
27
+ onLoadFailed,
28
+ onLoading,
29
+ treeElement,
30
+ triggerEvent
31
+ }) {
33
32
  this.dataFilter = dataFilter;
34
33
  this.loadData = loadData;
35
34
  this.onLoadFailed = onLoadFailed;
@@ -153,14 +152,13 @@ var jqtree = (function (exports) {
153
152
  }
154
153
 
155
154
  class DragElement {
156
- constructor(_ref) {
157
- let {
158
- autoEscape,
159
- nodeName,
160
- offsetX,
161
- offsetY,
162
- treeElement
163
- } = _ref;
155
+ constructor({
156
+ autoEscape,
157
+ nodeName,
158
+ offsetX,
159
+ offsetY,
160
+ treeElement
161
+ }) {
164
162
  this.offsetX = offsetX;
165
163
  this.offsetY = offsetY;
166
164
  this.element = this.createElement(nodeName, autoEscape);
@@ -186,14 +184,13 @@ var jqtree = (function (exports) {
186
184
  }
187
185
  }
188
186
 
189
- const iterateVisibleNodes = (tree, _ref) => {
190
- let {
191
- handleAfterOpenFolder,
192
- handleClosedFolder,
193
- handleFirstNode,
194
- handleNode,
195
- handleOpenFolder
196
- } = _ref;
187
+ const iterateVisibleNodes = (tree, {
188
+ handleAfterOpenFolder,
189
+ handleClosedFolder,
190
+ handleFirstNode,
191
+ handleNode,
192
+ handleOpenFolder
193
+ }) => {
197
194
  let isFirstNode = true;
198
195
  const iterate = (node, nextNode) => {
199
196
  let mustIterateInside = (node.is_open || !node.element) && node.hasChildren();
@@ -365,25 +362,24 @@ var jqtree = (function (exports) {
365
362
  const generateHitAreas = (tree, currentNode, treeBottom) => generateHitAreasFromPositions(generateHitPositions(tree, currentNode), treeBottom);
366
363
 
367
364
  class DragAndDropHandler {
368
- constructor(_ref) {
369
- let {
370
- autoEscape,
371
- getNodeElement,
372
- getNodeElementForNode,
373
- getScrollLeft,
374
- getTree,
375
- onCanMove,
376
- onCanMoveTo,
377
- onDragMove,
378
- onDragStop,
379
- onIsMoveHandle,
380
- openFolderDelay,
381
- openNode,
382
- refreshElements,
383
- slide,
384
- treeElement,
385
- triggerEvent
386
- } = _ref;
365
+ constructor({
366
+ autoEscape,
367
+ getNodeElement,
368
+ getNodeElementForNode,
369
+ getScrollLeft,
370
+ getTree,
371
+ onCanMove,
372
+ onCanMoveTo,
373
+ onDragMove,
374
+ onDragStop,
375
+ onIsMoveHandle,
376
+ openFolderDelay,
377
+ openNode,
378
+ refreshElements,
379
+ slide,
380
+ treeElement,
381
+ triggerEvent
382
+ }) {
387
383
  this.autoEscape = autoEscape;
388
384
  this.getNodeElement = getNodeElement;
389
385
  this.getNodeElementForNode = getNodeElementForNode;
@@ -641,21 +637,20 @@ var jqtree = (function (exports) {
641
637
  }
642
638
 
643
639
  class ElementsRenderer {
644
- constructor(_ref) {
645
- let {
646
- $element,
647
- autoEscape,
648
- buttonLeft,
649
- closedIcon,
650
- dragAndDrop,
651
- getTree,
652
- isNodeSelected,
653
- onCreateLi,
654
- openedIcon,
655
- rtl,
656
- showEmptyFolder,
657
- tabIndex
658
- } = _ref;
640
+ constructor({
641
+ $element,
642
+ autoEscape,
643
+ buttonLeft,
644
+ closedIcon,
645
+ dragAndDrop,
646
+ getTree,
647
+ isNodeSelected,
648
+ onCreateLi,
649
+ openedIcon,
650
+ rtl,
651
+ showEmptyFolder,
652
+ tabIndex
653
+ }) {
659
654
  this.autoEscape = autoEscape;
660
655
  this.buttonLeft = buttonLeft;
661
656
  this.dragAndDrop = dragAndDrop;
@@ -771,7 +766,7 @@ var jqtree = (function (exports) {
771
766
  * Call onCreateLi
772
767
  */
773
768
  createLi(node, level) {
774
- const isSelected = Boolean(this.isNodeSelected(node));
769
+ const isSelected = this.isNodeSelected(node);
775
770
  const mustShowFolder = node.isFolder() || node.isEmptyFolder && this.showEmptyFolder;
776
771
  const li = mustShowFolder ? this.createFolderLi(node, level, isSelected) : this.createNodeLi(node, level, isSelected);
777
772
  this.attachNodeData(node, li);
@@ -880,15 +875,14 @@ var jqtree = (function (exports) {
880
875
  }
881
876
 
882
877
  class KeyHandler {
883
- constructor(_ref) {
884
- let {
885
- closeNode,
886
- getSelectedNode,
887
- isFocusOnTree,
888
- keyboardSupport,
889
- openNode,
890
- selectNode
891
- } = _ref;
878
+ constructor({
879
+ closeNode,
880
+ getSelectedNode,
881
+ isFocusOnTree,
882
+ keyboardSupport,
883
+ openNode,
884
+ selectNode
885
+ }) {
892
886
  this.closeNode = closeNode;
893
887
  this.getSelectedNode = getSelectedNode;
894
888
  this.isFocusOnTree = isFocusOnTree;
@@ -993,20 +987,19 @@ var jqtree = (function (exports) {
993
987
  });
994
988
 
995
989
  class MouseHandler {
996
- constructor(_ref) {
997
- let {
998
- element,
999
- getMouseDelay,
1000
- getNode,
1001
- onClickButton,
1002
- onClickTitle,
1003
- onMouseCapture,
1004
- onMouseDrag,
1005
- onMouseStart,
1006
- onMouseStop,
1007
- triggerEvent,
1008
- useContextMenu
1009
- } = _ref;
990
+ constructor({
991
+ element,
992
+ getMouseDelay,
993
+ getNode,
994
+ onClickButton,
995
+ onClickTitle,
996
+ onMouseCapture,
997
+ onMouseDrag,
998
+ onMouseStart,
999
+ onMouseStop,
1000
+ triggerEvent,
1001
+ useContextMenu
1002
+ }) {
1010
1003
  this.element = element;
1011
1004
  this.getMouseDelay = getMouseDelay;
1012
1005
  this.getNode = getNode;
@@ -1258,10 +1251,7 @@ var jqtree = (function (exports) {
1258
1251
  const isNodeRecordWithChildren = data => typeof data === "object" && "children" in data && data.children instanceof Array;
1259
1252
 
1260
1253
  class Node {
1261
- constructor() {
1262
- let nodeData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
1263
- let isRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1264
- let nodeClass = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Node;
1254
+ constructor(nodeData = null, isRoot = false, nodeClass = Node) {
1265
1255
  this.name = "";
1266
1256
  this.load_on_demand = false;
1267
1257
  this.isEmptyFolder = nodeData != null && isNodeRecordWithChildren(nodeData) && nodeData.children.length === 0;
@@ -1369,8 +1359,7 @@ var jqtree = (function (exports) {
1369
1359
  /*
1370
1360
  Get the tree as data.
1371
1361
  */
1372
- getData() {
1373
- let includeParent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
1362
+ getData(includeParent = false) {
1374
1363
  const getDataFromNodes = nodes => {
1375
1364
  return nodes.map(node => {
1376
1365
  const tmpNode = {};
@@ -1397,9 +1386,6 @@ var jqtree = (function (exports) {
1397
1386
  return null;
1398
1387
  } else {
1399
1388
  const lastChild = this.children[this.children.length - 1];
1400
- if (!lastChild) {
1401
- return null;
1402
- }
1403
1389
  if (!(lastChild.hasChildren() && lastChild.is_open)) {
1404
1390
  return lastChild;
1405
1391
  } else {
@@ -1417,8 +1403,7 @@ var jqtree = (function (exports) {
1417
1403
  }
1418
1404
  return level;
1419
1405
  }
1420
- getNextNode() {
1421
- let includeChildren = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
1406
+ getNextNode(includeChildren = true) {
1422
1407
  if (includeChildren && this.hasChildren()) {
1423
1408
  return this.children[0] ?? null;
1424
1409
  } else if (!this.parent) {
@@ -1848,13 +1833,12 @@ var jqtree = (function (exports) {
1848
1833
  }
1849
1834
 
1850
1835
  class NodeElement {
1851
- constructor(_ref) {
1852
- let {
1853
- getScrollLeft,
1854
- node,
1855
- tabIndex,
1856
- treeElement
1857
- } = _ref;
1836
+ constructor({
1837
+ getScrollLeft,
1838
+ node,
1839
+ tabIndex,
1840
+ treeElement
1841
+ }) {
1858
1842
  this.getScrollLeft = getScrollLeft;
1859
1843
  this.tabIndex = tabIndex;
1860
1844
  this.treeElement = treeElement;
@@ -1876,9 +1860,7 @@ var jqtree = (function (exports) {
1876
1860
  }
1877
1861
  init(node) {
1878
1862
  this.node = node;
1879
- if (!node.element) {
1880
- node.element = this.treeElement;
1881
- }
1863
+ node.element ??= this.treeElement;
1882
1864
  this.element = node.element;
1883
1865
  }
1884
1866
  select(mustSetFocus) {
@@ -1907,16 +1889,15 @@ var jqtree = (function (exports) {
1907
1889
  }
1908
1890
 
1909
1891
  class FolderElement extends NodeElement {
1910
- constructor(_ref) {
1911
- let {
1912
- closedIconElement,
1913
- getScrollLeft,
1914
- node,
1915
- openedIconElement,
1916
- tabIndex,
1917
- treeElement,
1918
- triggerEvent
1919
- } = _ref;
1892
+ constructor({
1893
+ closedIconElement,
1894
+ getScrollLeft,
1895
+ node,
1896
+ openedIconElement,
1897
+ tabIndex,
1898
+ treeElement,
1899
+ triggerEvent
1900
+ }) {
1920
1901
  super({
1921
1902
  getScrollLeft,
1922
1903
  node,
@@ -1995,19 +1976,18 @@ var jqtree = (function (exports) {
1995
1976
  }
1996
1977
 
1997
1978
  class SaveStateHandler {
1998
- constructor(_ref) {
1999
- let {
2000
- addToSelection,
2001
- getNodeById,
2002
- getSelectedNodes,
2003
- getTree,
2004
- onGetStateFromStorage,
2005
- onSetStateFromStorage,
2006
- openNode,
2007
- refreshElements,
2008
- removeFromSelection,
2009
- saveState
2010
- } = _ref;
1979
+ constructor({
1980
+ addToSelection,
1981
+ getNodeById,
1982
+ getSelectedNodes,
1983
+ getTree,
1984
+ onGetStateFromStorage,
1985
+ onSetStateFromStorage,
1986
+ openNode,
1987
+ refreshElements,
1988
+ removeFromSelection,
1989
+ saveState
1990
+ }) {
2011
1991
  this.addToSelection = addToSelection;
2012
1992
  this.getNodeById = getNodeById;
2013
1993
  this.getSelectedNodes = getSelectedNodes;
@@ -2183,12 +2163,11 @@ var jqtree = (function (exports) {
2183
2163
  }
2184
2164
  }
2185
2165
 
2186
- class ContainerScrollParent {
2187
- constructor(_ref) {
2188
- let {
2189
- container,
2190
- refreshHitAreas
2191
- } = _ref;
2166
+ class ScrollParent {
2167
+ constructor({
2168
+ container,
2169
+ refreshHitAreas
2170
+ }) {
2192
2171
  this.container = container;
2193
2172
  this.refreshHitAreas = refreshHitAreas;
2194
2173
  }
@@ -2197,7 +2176,7 @@ var jqtree = (function (exports) {
2197
2176
  if (this.horizontalScrollDirection !== newHorizontalScrollDirection) {
2198
2177
  this.horizontalScrollDirection = newHorizontalScrollDirection;
2199
2178
  if (this.horizontalScrollTimeout != null) {
2200
- window.clearTimeout(this.verticalScrollTimeout);
2179
+ window.clearTimeout(this.horizontalScrollTimeout);
2201
2180
  }
2202
2181
  if (newHorizontalScrollDirection) {
2203
2182
  this.horizontalScrollTimeout = window.setTimeout(this.scrollHorizontally.bind(this), 40);
@@ -2226,42 +2205,6 @@ var jqtree = (function (exports) {
2226
2205
  stopScrolling() {
2227
2206
  this.horizontalScrollDirection = undefined;
2228
2207
  this.verticalScrollDirection = undefined;
2229
- this.scrollParentTop = undefined;
2230
- this.scrollParentBottom = undefined;
2231
- }
2232
- getNewHorizontalScrollDirection(pageX) {
2233
- const scrollParentOffset = getElementPosition(this.container);
2234
- const rightEdge = scrollParentOffset.left + this.container.clientWidth;
2235
- const leftEdge = scrollParentOffset.left;
2236
- const isNearRightEdge = pageX > rightEdge - 20;
2237
- const isNearLeftEdge = pageX < leftEdge + 20;
2238
- if (isNearRightEdge) {
2239
- return "right";
2240
- } else if (isNearLeftEdge) {
2241
- return "left";
2242
- }
2243
- return undefined;
2244
- }
2245
- getNewVerticalScrollDirection(pageY) {
2246
- if (pageY < this.getScrollParentTop()) {
2247
- return "top";
2248
- }
2249
- if (pageY > this.getScrollParentBottom()) {
2250
- return "bottom";
2251
- }
2252
- return undefined;
2253
- }
2254
- getScrollParentBottom() {
2255
- if (this.scrollParentBottom == null) {
2256
- this.scrollParentBottom = this.getScrollParentTop() + this.container.clientHeight;
2257
- }
2258
- return this.scrollParentBottom;
2259
- }
2260
- getScrollParentTop() {
2261
- if (this.scrollParentTop == null) {
2262
- this.scrollParentTop = getOffsetTop(this.container);
2263
- }
2264
- return this.scrollParentTop;
2265
2208
  }
2266
2209
  scrollHorizontally() {
2267
2210
  if (!this.horizontalScrollDirection) {
@@ -2291,77 +2234,70 @@ var jqtree = (function (exports) {
2291
2234
  }
2292
2235
  }
2293
2236
 
2294
- class DocumentScrollParent {
2295
- constructor(_ref) {
2296
- let {
2297
- refreshHitAreas,
2298
- treeElement
2299
- } = _ref;
2300
- this.refreshHitAreas = refreshHitAreas;
2301
- this.treeElement = treeElement;
2237
+ class ContainerScrollParent extends ScrollParent {
2238
+ stopScrolling() {
2239
+ super.stopScrolling();
2240
+ this.horizontalScrollDirection = undefined;
2241
+ this.verticalScrollDirection = undefined;
2302
2242
  }
2303
- checkHorizontalScrolling(pageX) {
2304
- const newHorizontalScrollDirection = this.getNewHorizontalScrollDirection(pageX);
2305
- if (this.horizontalScrollDirection !== newHorizontalScrollDirection) {
2306
- this.horizontalScrollDirection = newHorizontalScrollDirection;
2307
- if (this.horizontalScrollTimeout != null) {
2308
- window.clearTimeout(this.horizontalScrollTimeout);
2309
- }
2310
- if (newHorizontalScrollDirection) {
2311
- this.horizontalScrollTimeout = window.setTimeout(this.scrollHorizontally.bind(this), 40);
2312
- }
2243
+ getNewHorizontalScrollDirection(pageX) {
2244
+ const scrollParentOffset = getElementPosition(this.container);
2245
+ const containerWidth = this.container.getBoundingClientRect().width;
2246
+ const rightEdge = scrollParentOffset.left + containerWidth;
2247
+ const leftEdge = scrollParentOffset.left;
2248
+ const isNearRightEdge = pageX > rightEdge - 20;
2249
+ const isNearLeftEdge = pageX < leftEdge + 20;
2250
+ if (isNearRightEdge) {
2251
+ return "right";
2252
+ } else if (isNearLeftEdge) {
2253
+ return "left";
2313
2254
  }
2255
+ return undefined;
2314
2256
  }
2315
- checkVerticalScrolling(pageY) {
2316
- const newVerticalScrollDirection = this.getNewVerticalScrollDirection(pageY);
2317
- if (this.verticalScrollDirection !== newVerticalScrollDirection) {
2318
- this.verticalScrollDirection = newVerticalScrollDirection;
2319
- if (this.verticalScrollTimeout != null) {
2320
- window.clearTimeout(this.verticalScrollTimeout);
2321
- this.verticalScrollTimeout = undefined;
2322
- }
2323
- if (newVerticalScrollDirection) {
2324
- this.verticalScrollTimeout = window.setTimeout(this.scrollVertically.bind(this), 40);
2325
- }
2257
+ getNewVerticalScrollDirection(pageY) {
2258
+ if (pageY < this.getScrollParentTop()) {
2259
+ return "top";
2326
2260
  }
2261
+ if (pageY > this.getScrollParentBottom()) {
2262
+ return "bottom";
2263
+ }
2264
+ return undefined;
2327
2265
  }
2328
- getScrollLeft() {
2329
- return document.documentElement.scrollLeft;
2266
+ getScrollParentBottom() {
2267
+ if (this.scrollParentBottom == null) {
2268
+ const containerHeight = this.container.getBoundingClientRect().height;
2269
+ this.scrollParentBottom = this.getScrollParentTop() + containerHeight;
2270
+ }
2271
+ return this.scrollParentBottom;
2272
+ }
2273
+ getScrollParentTop() {
2274
+ this.scrollParentTop ??= getOffsetTop(this.container);
2275
+ return this.scrollParentTop;
2276
+ }
2277
+ }
2278
+
2279
+ class DocumentScrollParent extends ScrollParent {
2280
+ constructor({
2281
+ refreshHitAreas,
2282
+ treeElement
2283
+ }) {
2284
+ super({
2285
+ container: document.documentElement,
2286
+ refreshHitAreas
2287
+ });
2288
+ this.treeElement = treeElement;
2330
2289
  }
2331
2290
  scrollToY(top) {
2332
2291
  const treeTop = getOffsetTop(this.treeElement);
2333
- document.documentElement.scrollTop = top + treeTop;
2292
+ super.scrollToY(top + treeTop);
2334
2293
  }
2335
2294
  stopScrolling() {
2336
- this.horizontalScrollDirection = undefined;
2337
- this.verticalScrollDirection = undefined;
2295
+ super.stopScrolling();
2338
2296
  this.documentScrollHeight = undefined;
2339
2297
  this.documentScrollWidth = undefined;
2340
2298
  }
2341
- canScrollDown() {
2342
- const documentElement = document.documentElement;
2343
- return documentElement.scrollTop + documentElement.clientHeight < this.getDocumentScrollHeight();
2344
- }
2345
- canScrollRight() {
2346
- const documentElement = document.documentElement;
2347
- return documentElement.scrollLeft + documentElement.clientWidth < this.getDocumentScrollWidth();
2348
- }
2349
- getDocumentScrollHeight() {
2350
- // Store the original scroll height because the scroll height can increase when the drag element is moved beyond the scroll height.
2351
- if (this.documentScrollHeight == null) {
2352
- this.documentScrollHeight = document.documentElement.scrollHeight;
2353
- }
2354
- return this.documentScrollHeight;
2355
- }
2356
- getDocumentScrollWidth() {
2357
- // Store the original scroll width because the scroll width can increase when the drag element is moved beyond the scroll width.
2358
- if (this.documentScrollWidth == null) {
2359
- this.documentScrollWidth = document.documentElement.scrollWidth;
2360
- }
2361
- return this.documentScrollWidth;
2362
- }
2363
2299
  getNewHorizontalScrollDirection(pageX) {
2364
- const scrollLeft = document.documentElement.scrollLeft;
2300
+ const scrollLeft = this.container.scrollLeft;
2365
2301
  const windowWidth = window.innerWidth;
2366
2302
  const isNearRightEdge = pageX > windowWidth - 20;
2367
2303
  const isNearLeftEdge = pageX - scrollLeft < 20;
@@ -2374,7 +2310,7 @@ var jqtree = (function (exports) {
2374
2310
  return undefined;
2375
2311
  }
2376
2312
  getNewVerticalScrollDirection(pageY) {
2377
- const scrollTop = jQuery(document).scrollTop() ?? 0;
2313
+ const scrollTop = this.container.scrollTop;
2378
2314
  const distanceTop = pageY - scrollTop;
2379
2315
  if (distanceTop < 20) {
2380
2316
  return "top";
@@ -2385,31 +2321,21 @@ var jqtree = (function (exports) {
2385
2321
  }
2386
2322
  return undefined;
2387
2323
  }
2388
- scrollHorizontally() {
2389
- if (!this.horizontalScrollDirection) {
2390
- return;
2391
- }
2392
- const distance = this.horizontalScrollDirection === "left" ? -20 : 20;
2393
- window.scrollBy({
2394
- behavior: "instant",
2395
- left: distance,
2396
- top: 0
2397
- });
2398
- this.refreshHitAreas();
2399
- setTimeout(this.scrollHorizontally.bind(this), 40);
2324
+ canScrollDown() {
2325
+ return this.container.scrollTop + this.container.clientHeight < this.getDocumentScrollHeight();
2400
2326
  }
2401
- scrollVertically() {
2402
- if (!this.verticalScrollDirection) {
2403
- return;
2404
- }
2405
- const distance = this.verticalScrollDirection === "top" ? -20 : 20;
2406
- window.scrollBy({
2407
- behavior: "instant",
2408
- left: 0,
2409
- top: distance
2410
- });
2411
- this.refreshHitAreas();
2412
- setTimeout(this.scrollVertically.bind(this), 40);
2327
+ canScrollRight() {
2328
+ return this.container.scrollLeft + this.container.clientWidth < this.getDocumentScrollWidth();
2329
+ }
2330
+ getDocumentScrollHeight() {
2331
+ // Store the original scroll height because the scroll height can increase when the drag element is moved beyond the scroll height.
2332
+ this.documentScrollHeight ??= this.container.scrollHeight;
2333
+ return this.documentScrollHeight;
2334
+ }
2335
+ getDocumentScrollWidth() {
2336
+ // Store the original scroll width because the scroll width can increase when the drag element is moved beyond the scroll width.
2337
+ this.documentScrollWidth ??= this.container.scrollWidth;
2338
+ return this.documentScrollWidth;
2413
2339
  }
2414
2340
  }
2415
2341
 
@@ -2447,11 +2373,10 @@ var jqtree = (function (exports) {
2447
2373
  };
2448
2374
 
2449
2375
  class ScrollHandler {
2450
- constructor(_ref) {
2451
- let {
2452
- refreshHitAreas,
2453
- treeElement
2454
- } = _ref;
2376
+ constructor({
2377
+ refreshHitAreas,
2378
+ treeElement
2379
+ }) {
2455
2380
  this.refreshHitAreas = refreshHitAreas;
2456
2381
  this.scrollParent = undefined;
2457
2382
  this.treeElement = treeElement;
@@ -2476,18 +2401,15 @@ var jqtree = (function (exports) {
2476
2401
  this.getScrollParent().checkVerticalScrolling(positionInfo.pageY);
2477
2402
  }
2478
2403
  getScrollParent() {
2479
- if (!this.scrollParent) {
2480
- this.scrollParent = createScrollParent(this.treeElement, this.refreshHitAreas);
2481
- }
2404
+ this.scrollParent ??= createScrollParent(this.treeElement, this.refreshHitAreas);
2482
2405
  return this.scrollParent;
2483
2406
  }
2484
2407
  }
2485
2408
 
2486
2409
  class SelectNodeHandler {
2487
- constructor(_ref) {
2488
- let {
2489
- getNodeById
2490
- } = _ref;
2410
+ constructor({
2411
+ getNodeById
2412
+ }) {
2491
2413
  this.getNodeById = getNodeById;
2492
2414
  this.selectedNodes = new Set();
2493
2415
  this.clear();
@@ -2552,8 +2474,7 @@ var jqtree = (function (exports) {
2552
2474
  return false;
2553
2475
  }
2554
2476
  }
2555
- removeFromSelection(node) {
2556
- let includeChildren = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
2477
+ removeFromSelection(node, includeChildren = false) {
2557
2478
  if (node.id == null) {
2558
2479
  if (this.selectedSingleNode && node.element === this.selectedSingleNode.element) {
2559
2480
  this.selectedSingleNode = null;
@@ -2625,7 +2546,7 @@ var jqtree = (function (exports) {
2625
2546
  };
2626
2547
 
2627
2548
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
2628
- jQuery.fn[widgetName] = function (argument1) {
2549
+ jQuery.fn[widgetName] = function (argument1, ...args) {
2629
2550
  if (!argument1) {
2630
2551
  return createWidget(this, null);
2631
2552
  } else if (typeof argument1 === "object") {
@@ -2633,15 +2554,10 @@ var jqtree = (function (exports) {
2633
2554
  return createWidget(this, options);
2634
2555
  } else if (typeof argument1 === "string" && argument1[0] !== "_") {
2635
2556
  const functionName = argument1;
2636
- if (functionName === "destroy") {
2557
+ if (argument1 === "destroy") {
2637
2558
  destroyWidget(this);
2638
2559
  return undefined;
2639
- } else if (functionName === "get_widget_class") {
2640
- return widgetClass;
2641
2560
  } else {
2642
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
2643
- args[_key - 1] = arguments[_key];
2644
- }
2645
2561
  return callFunction(this, functionName, args);
2646
2562
  }
2647
2563
  } else {
@@ -2675,12 +2591,12 @@ var jqtree = (function (exports) {
2675
2591
  }
2676
2592
  }
2677
2593
 
2678
- const version = "1.8.10";
2594
+ const version = "1.8.11";
2679
2595
 
2680
2596
  const NODE_PARAM_IS_EMPTY = "Node parameter is empty";
2681
2597
  const PARAM_IS_EMPTY = "Parameter is empty: ";
2682
2598
  class JqTreeWidget extends SimpleWidget {
2683
- static defaults = (() => ({
2599
+ static defaults = {
2684
2600
  animationSpeed: "fast",
2685
2601
  autoEscape: true,
2686
2602
  autoOpen: false,
@@ -2725,7 +2641,7 @@ var jqtree = (function (exports) {
2725
2641
  // The delay for starting dnd (in milliseconds)
2726
2642
  tabIndex: 0,
2727
2643
  useContextMenu: true
2728
- }))();
2644
+ };
2729
2645
  addNodeAfter(newNodeInfo, existingNode) {
2730
2646
  const newNode = existingNode.addAfter(newNodeInfo);
2731
2647
  if (newNode) {
@@ -2792,7 +2708,7 @@ var jqtree = (function (exports) {
2792
2708
  return this.tree.getNodeByCallback(callback);
2793
2709
  }
2794
2710
  getNodeByHtmlElement(inputElement) {
2795
- const element = inputElement instanceof HTMLElement ? inputElement : inputElement[0];
2711
+ const element = inputElement instanceof HTMLElement ? inputElement : inputElement.get(0);
2796
2712
  if (!element) {
2797
2713
  return null;
2798
2714
  }
@@ -2833,9 +2749,7 @@ var jqtree = (function (exports) {
2833
2749
  this.element = this.$el;
2834
2750
  this.isInitialized = false;
2835
2751
  this.options.rtl = this.getRtlOption();
2836
- if (this.options.closedIcon == null) {
2837
- this.options.closedIcon = this.getDefaultClosedIcon();
2838
- }
2752
+ this.options.closedIcon ??= this.getDefaultClosedIcon();
2839
2753
  this.connectHandlers();
2840
2754
  this.initData();
2841
2755
  }
@@ -2918,9 +2832,7 @@ var jqtree = (function (exports) {
2918
2832
  slide = param1;
2919
2833
  onFinished = param2;
2920
2834
  }
2921
- if (slide == null) {
2922
- slide = this.options.slide;
2923
- }
2835
+ slide ??= this.options.slide;
2924
2836
  return [slide, onFinished];
2925
2837
  };
2926
2838
  const [slide, onFinished] = parseParams();
@@ -2994,8 +2906,7 @@ var jqtree = (function (exports) {
2994
2906
  }
2995
2907
  return this.element;
2996
2908
  }
2997
- toggle(node) {
2998
- let slideParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
2909
+ toggle(node, slideParam = null) {
2999
2910
  if (!node) {
3000
2911
  throw Error(NODE_PARAM_IS_EMPTY);
3001
2912
  }
@@ -3177,7 +3088,7 @@ var jqtree = (function (exports) {
3177
3088
  }
3178
3089
  containsElement(element) {
3179
3090
  const node = this.getNode(element);
3180
- return node != null && node.tree === this.tree;
3091
+ return node?.tree === this.tree;
3181
3092
  }
3182
3093
  createFolderElement(node) {
3183
3094
  const closedIconElement = this.renderer.closedIconElement;
@@ -3423,7 +3334,7 @@ var jqtree = (function (exports) {
3423
3334
  }
3424
3335
  isFocusOnTree() {
3425
3336
  const activeElement = document.activeElement;
3426
- return Boolean(activeElement && activeElement.tagName === "SPAN" && this.containsElement(activeElement));
3337
+ return activeElement?.tagName === "SPAN" && this.containsElement(activeElement);
3427
3338
  }
3428
3339
  isSelectedNodeInSubtree(subtree) {
3429
3340
  const selectedNode = this.getSelectedNode();
@@ -3433,9 +3344,7 @@ var jqtree = (function (exports) {
3433
3344
  return subtree === selectedNode || subtree.isParentOf(selectedNode);
3434
3345
  }
3435
3346
  }
3436
- loadFolderOnDemand(node) {
3437
- let slide = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
3438
- let onFinished = arguments.length > 2 ? arguments[2] : undefined;
3347
+ loadFolderOnDemand(node, slide = true, onFinished) {
3439
3348
  node.is_loading = true;
3440
3349
  this.doLoadDataFromUrl(null, node, () => {
3441
3350
  this.openNodeInternal(node, slide, onFinished);
@@ -3478,9 +3387,7 @@ var jqtree = (function (exports) {
3478
3387
  return false;
3479
3388
  }
3480
3389
  }
3481
- openNodeInternal(node) {
3482
- let slide = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
3483
- let onFinished = arguments.length > 2 ? arguments[2] : undefined;
3390
+ openNodeInternal(node, slide = true, onFinished) {
3484
3391
  const doOpenNode = (_node, _slide, _onFinished) => {
3485
3392
  if (!node.children.length) {
3486
3393
  return;