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.
Files changed (119) hide show
  1. package/.eslintrc +13 -3
  2. package/.github/workflows/ci.yml +6 -6
  3. package/.github/workflows/codeql-analysis.yml +4 -4
  4. package/.github/workflows/size.yml +3 -3
  5. package/.github/workflows/static.yml +1 -1
  6. package/bower.json +1 -1
  7. package/config/babel.config.json +1 -1
  8. package/config/jest.config.js +4 -0
  9. package/config/jest.polyfills.js +14 -0
  10. package/config/production +2 -0
  11. package/devserver/devserver_scroll.js +8 -0
  12. package/devserver/test_index.html +9 -0
  13. package/devserver/test_scroll.html +28 -0
  14. package/devserver/test_scroll_container.html +39 -0
  15. package/docs/.ruby-version +1 -1
  16. package/docs/_config.yml +1 -1
  17. package/docs/_entries/general/changelog.md +11 -0
  18. package/docs/_entries/multiple_selection/get-selected-nodes.md +1 -1
  19. package/docs/_entries/node/getnextnode.md +3 -6
  20. package/docs/_entries/node/getnextsibling.md +1 -1
  21. package/docs/_entries/node/getnextvisiblenode.md +8 -5
  22. package/docs/_entries/node/getpreviousnode.md +12 -0
  23. package/docs/_entries/node/getprevioussibling.md +1 -1
  24. package/docs/_entries/node/getpreviousvisiblenode.md +6 -5
  25. package/package.json +35 -29
  26. package/src/dataLoader.ts +57 -34
  27. package/src/dragAndDropHandler/dragElement.ts +54 -0
  28. package/src/dragAndDropHandler/generateHitAreas.ts +176 -0
  29. package/src/dragAndDropHandler/index.ts +454 -0
  30. package/src/dragAndDropHandler/iterateVisibleNodes.ts +91 -0
  31. package/src/dragAndDropHandler/types.ts +13 -0
  32. package/src/elementsRenderer.ts +75 -40
  33. package/src/jqtreeMethodTypes.ts +40 -0
  34. package/src/jqtreeOptions.ts +43 -25
  35. package/src/keyHandler.ts +59 -30
  36. package/src/mouseHandler.ts +385 -0
  37. package/src/mouseUtils.ts +23 -0
  38. package/src/node.ts +1 -29
  39. package/src/nodeElement/borderDropHint.ts +32 -0
  40. package/src/nodeElement/folderElement.ts +133 -0
  41. package/src/nodeElement/ghostDropHint.ts +69 -0
  42. package/src/nodeElement/index.ts +102 -0
  43. package/src/playwright/coverage.ts +4 -7
  44. package/src/playwright/playwright.test.ts +150 -53
  45. package/src/playwright/testUtils.ts +28 -5
  46. package/src/position.ts +28 -0
  47. package/src/saveStateHandler.ts +75 -26
  48. package/src/scrollHandler/containerScrollParent.ts +13 -23
  49. package/src/scrollHandler/createScrollParent.ts +22 -22
  50. package/src/scrollHandler/documentScrollParent.ts +16 -13
  51. package/src/scrollHandler.ts +13 -15
  52. package/src/selectNodeHandler.ts +10 -16
  53. package/src/test/jqTree/events.test.ts +97 -30
  54. package/src/test/jqTree/keyboard.test.ts +18 -23
  55. package/src/test/jqTree/loadOnDemand.test.ts +22 -15
  56. package/src/test/jqTree/methods.test.ts +40 -14
  57. package/src/test/jqTree/mouse.test.ts +82 -0
  58. package/src/test/jqTree/options.test.ts +24 -12
  59. package/src/test/node.test.ts +3 -2
  60. package/src/test/{nodeUtil.test.ts → position.test.ts} +1 -1
  61. package/src/tree.jquery.ts +314 -208
  62. package/src/util.ts +12 -0
  63. package/src/version.ts +1 -1
  64. package/tree.jquery.debug.js +2594 -3419
  65. package/tree.jquery.debug.js.map +1 -1
  66. package/tree.jquery.js +3 -3
  67. package/tree.jquery.js.map +1 -1
  68. package/tsconfig.json +5 -3
  69. package/docs/_entries/functions/get-selected-nodes.md +0 -10
  70. package/lib/dataLoader.js +0 -123
  71. package/lib/dragAndDropHandler.js +0 -588
  72. package/lib/elementsRenderer.js +0 -267
  73. package/lib/jqtreeOptions.js +0 -1
  74. package/lib/keyHandler.js +0 -111
  75. package/lib/mouse.widget.js +0 -255
  76. package/lib/node.js +0 -708
  77. package/lib/nodeElement.js +0 -274
  78. package/lib/nodeUtils.js +0 -10
  79. package/lib/playwright/coverage.js +0 -99
  80. package/lib/playwright/playwright.test.js +0 -606
  81. package/lib/playwright/testUtils.js +0 -210
  82. package/lib/saveStateHandler.js +0 -277
  83. package/lib/scrollHandler/containerScrollParent.js +0 -160
  84. package/lib/scrollHandler/createScrollParent.js +0 -57
  85. package/lib/scrollHandler/documentScrollParent.js +0 -169
  86. package/lib/scrollHandler/scrollParent.js +0 -58
  87. package/lib/scrollHandler/types.js +0 -1
  88. package/lib/scrollHandler.js +0 -71
  89. package/lib/selectNodeHandler.js +0 -128
  90. package/lib/simple.widget.js +0 -158
  91. package/lib/test/global.d.js +0 -3
  92. package/lib/test/jqTree/accessibility.test.js +0 -37
  93. package/lib/test/jqTree/create.test.js +0 -48
  94. package/lib/test/jqTree/events.test.js +0 -210
  95. package/lib/test/jqTree/keyboard.test.js +0 -225
  96. package/lib/test/jqTree/loadOnDemand.test.js +0 -218
  97. package/lib/test/jqTree/methods.test.js +0 -1348
  98. package/lib/test/jqTree/options.test.js +0 -548
  99. package/lib/test/jqTree/scrollHandler/containerScrollParent.test.js +0 -94
  100. package/lib/test/node.test.js +0 -1202
  101. package/lib/test/nodeUtil.test.js +0 -27
  102. package/lib/test/nodeUtils.test.js +0 -20
  103. package/lib/test/support/exampleData.js +0 -35
  104. package/lib/test/support/jqTreeMatchers.js +0 -70
  105. package/lib/test/support/matchers.d.js +0 -1
  106. package/lib/test/support/setupTests.js +0 -7
  107. package/lib/test/support/testUtil.js +0 -29
  108. package/lib/test/support/treeStructure.js +0 -38
  109. package/lib/test/util.test.js +0 -26
  110. package/lib/tree.jquery.d.js +0 -1
  111. package/lib/tree.jquery.js +0 -1105
  112. package/lib/types.js +0 -1
  113. package/lib/typings.d.js +0 -2
  114. package/lib/util.js +0 -15
  115. package/lib/version.js +0 -8
  116. package/src/dragAndDropHandler.ts +0 -713
  117. package/src/mouse.widget.ts +0 -266
  118. package/src/nodeElement.ts +0 -272
  119. package/src/types.ts +0 -19
@@ -1,37 +0,0 @@
1
- "use strict";
2
-
3
- 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); }
4
- var _jestAxe = require("jest-axe");
5
- require("../../tree.jquery");
6
- var _exampleData = _interopRequireDefault(require("../support/exampleData"));
7
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
8
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
9
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
10
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
11
- expect.extend(_jestAxe.toHaveNoViolations);
12
- beforeEach(function () {
13
- $("body").append('<div id="tree1"></div>');
14
- });
15
- afterEach(function () {
16
- var $tree = $("#tree1");
17
- $tree.tree("destroy");
18
- $tree.remove();
19
- });
20
- it("has an accessible ui", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
21
- var $tree, element;
22
- return _regeneratorRuntime().wrap(function _callee$(_context) {
23
- while (1) switch (_context.prev = _context.next) {
24
- case 0:
25
- $tree = $("#tree1");
26
- $tree.tree({
27
- data: _exampleData["default"]
28
- });
29
- element = $tree.get()[0];
30
- _context.next = 5;
31
- return expect((0, _jestAxe.axe)(element)).resolves.toHaveNoViolations();
32
- case 5:
33
- case "end":
34
- return _context.stop();
35
- }
36
- }, _callee);
37
- })));
@@ -1,48 +0,0 @@
1
- "use strict";
2
-
3
- var _givens = _interopRequireDefault(require("givens"));
4
- require("../../tree.jquery");
5
- var _exampleData = _interopRequireDefault(require("../support/exampleData"));
6
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
7
- beforeEach(function () {
8
- $("body").append('<div id="tree1"></div>');
9
- });
10
- afterEach(function () {
11
- var $tree = $("#tree1");
12
- $tree.tree("destroy");
13
- $tree.remove();
14
- });
15
- describe("create with data", function () {
16
- var given = (0, _givens["default"])();
17
- given("$tree", function () {
18
- return $("#tree1");
19
- });
20
- beforeEach(function () {
21
- given.$tree.tree({
22
- data: _exampleData["default"]
23
- });
24
- });
25
- it("creates a tree", function () {
26
- expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
27
- name: "node1",
28
- open: false,
29
- selected: false,
30
- children: [expect.objectContaining({
31
- name: "child1"
32
- }), expect.objectContaining({
33
- name: "child2"
34
- })]
35
- }), expect.objectContaining({
36
- name: "node2",
37
- open: false,
38
- selected: false,
39
- children: [expect.objectContaining({
40
- name: "node3",
41
- open: false,
42
- children: [expect.objectContaining({
43
- name: "child3"
44
- })]
45
- })]
46
- })]);
47
- });
48
- });
@@ -1,210 +0,0 @@
1
- "use strict";
2
-
3
- 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); }
4
- var _givens = _interopRequireDefault(require("givens"));
5
- var _msw = require("msw");
6
- var _node = require("msw/node");
7
- var _dom = require("@testing-library/dom");
8
- require("../../tree.jquery");
9
- var _exampleData = _interopRequireDefault(require("../support/exampleData"));
10
- var _testUtil = require("../support/testUtil");
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
12
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
13
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
14
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
15
- var context = describe;
16
- var server = (0, _node.setupServer)();
17
- beforeAll(function () {
18
- return server.listen();
19
- });
20
- beforeEach(function () {
21
- $("body").append('<div id="tree1"></div>');
22
- });
23
- afterEach(function () {
24
- server.resetHandlers();
25
- var $tree = $("#tree1");
26
- $tree.tree("destroy");
27
- $tree.remove();
28
- });
29
- afterAll(function () {
30
- return server.close();
31
- });
32
- describe("tree.click", function () {
33
- var given = (0, _givens["default"])();
34
- given("node1", function () {
35
- return given.$tree.tree("getNodeByNameMustExist", "node1");
36
- });
37
- given("titleSpan", function () {
38
- return (0, _testUtil.titleSpan)(given.node1.element);
39
- });
40
- given("$tree", function () {
41
- return $("#tree1");
42
- });
43
- beforeEach(function () {
44
- given.$tree.tree({
45
- data: _exampleData["default"]
46
- });
47
- });
48
- it("fires tree.click", function () {
49
- var onClick = jest.fn();
50
- given.$tree.on("tree.click", onClick);
51
- given.titleSpan.trigger("click");
52
- expect(onClick).toHaveBeenCalledWith(expect.objectContaining({
53
- node: given.node1
54
- }));
55
- });
56
- });
57
- describe("tree.contextmenu", function () {
58
- var given = (0, _givens["default"])();
59
- given("node1", function () {
60
- return given.$tree.tree("getNodeByNameMustExist", "node1");
61
- });
62
- given("titleSpan", function () {
63
- return (0, _testUtil.titleSpan)(given.node1.element);
64
- });
65
- given("$tree", function () {
66
- return $("#tree1");
67
- });
68
- beforeEach(function () {
69
- given.$tree.tree({
70
- data: _exampleData["default"]
71
- });
72
- });
73
- it("fires tree.contextmenu", function () {
74
- var onContextMenu = jest.fn();
75
- given.$tree.on("tree.contextmenu", onContextMenu);
76
- given.titleSpan.trigger("contextmenu");
77
- expect(onContextMenu).toHaveBeenCalledWith(expect.objectContaining({
78
- node: given.node1
79
- }));
80
- });
81
- });
82
- describe("tree.dblclick", function () {
83
- var given = (0, _givens["default"])();
84
- given("node1", function () {
85
- return given.$tree.tree("getNodeByNameMustExist", "node1");
86
- });
87
- given("titleSpan", function () {
88
- return (0, _testUtil.titleSpan)(given.node1.element);
89
- });
90
- given("$tree", function () {
91
- return $("#tree1");
92
- });
93
- beforeEach(function () {
94
- given.$tree.tree({
95
- data: _exampleData["default"]
96
- });
97
- });
98
- it("fires tree.dblclick", function () {
99
- var onDoubleClick = jest.fn();
100
- given.$tree.on("tree.dblclick", onDoubleClick);
101
- given.titleSpan.trigger("dblclick");
102
- expect(onDoubleClick).toHaveBeenCalledWith(expect.objectContaining({
103
- node: given.node1
104
- }));
105
- });
106
- });
107
- describe("tree.init", function () {
108
- var given = (0, _givens["default"])();
109
- given("$tree", function () {
110
- return $("#tree1");
111
- });
112
- context("with json data", function () {
113
- it("is called", function () {
114
- var onInit = jest.fn();
115
- given.$tree.on("tree.init", onInit);
116
- given.$tree.tree({
117
- data: _exampleData["default"]
118
- });
119
-
120
- // eslint-disable-next-line jest/prefer-called-with
121
- expect(onInit).toHaveBeenCalled();
122
- });
123
- });
124
- context("with data loaded from an url", function () {
125
- beforeEach(function () {
126
- server.use(_msw.rest.get("/tree/", function (_request, response, ctx) {
127
- return response(ctx.status(200), ctx.json(_exampleData["default"]));
128
- }));
129
- });
130
- it("is called", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
131
- var onInit;
132
- return _regeneratorRuntime().wrap(function _callee$(_context) {
133
- while (1) switch (_context.prev = _context.next) {
134
- case 0:
135
- onInit = jest.fn();
136
- given.$tree.on("tree.init", onInit);
137
- given.$tree.tree({
138
- dataUrl: "/tree/"
139
- });
140
- _context.next = 5;
141
- return (0, _dom.waitFor)(function () {
142
- // eslint-disable-next-line jest/prefer-called-with
143
- expect(onInit).toHaveBeenCalled();
144
- });
145
- case 5:
146
- case "end":
147
- return _context.stop();
148
- }
149
- }, _callee);
150
- })));
151
- });
152
- });
153
- describe("tree.load_data", function () {
154
- var given = (0, _givens["default"])();
155
- given("$tree", function () {
156
- return $("#tree1");
157
- });
158
- context("when the tree is initialized with data", function () {
159
- it("fires tree.load_data", function () {
160
- var onLoadData = jest.fn();
161
- given.$tree.on("tree.load_data", onLoadData);
162
- given.$tree.tree({
163
- data: _exampleData["default"]
164
- });
165
- expect(onLoadData).toHaveBeenCalledWith(expect.objectContaining({
166
- tree_data: _exampleData["default"]
167
- }));
168
- });
169
- });
170
- });
171
- describe("tree.select", function () {
172
- var given = (0, _givens["default"])();
173
- given("node1", function () {
174
- return given.$tree.tree("getNodeByNameMustExist", "node1");
175
- });
176
- given("titleSpan", function () {
177
- return (0, _testUtil.titleSpan)(given.node1.element);
178
- });
179
- given("$tree", function () {
180
- return $("#tree1");
181
- });
182
- beforeEach(function () {
183
- given.$tree.tree({
184
- data: _exampleData["default"]
185
- });
186
- });
187
- it("fires tree.select", function () {
188
- var onSelect = jest.fn();
189
- given.$tree.on("tree.select", onSelect);
190
- given.titleSpan.trigger("click");
191
- expect(onSelect).toHaveBeenCalledWith(expect.objectContaining({
192
- node: given.node1,
193
- deselected_node: null
194
- }));
195
- });
196
- context("when the node was selected", function () {
197
- beforeEach(function () {
198
- given.$tree.tree("selectNode", given.node1);
199
- });
200
- it("fires tree.select with node is null", function () {
201
- var onSelect = jest.fn();
202
- given.$tree.on("tree.select", onSelect);
203
- given.titleSpan.trigger("click");
204
- expect(onSelect).toHaveBeenCalledWith(expect.objectContaining({
205
- node: null,
206
- previous_node: given.node1
207
- }));
208
- });
209
- });
210
- });
@@ -1,225 +0,0 @@
1
- "use strict";
2
-
3
- var _givens = _interopRequireDefault(require("givens"));
4
- require("../../tree.jquery");
5
- var _exampleData = _interopRequireDefault(require("../support/exampleData"));
6
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
7
- var context = describe;
8
- beforeEach(function () {
9
- $("body").append('<div id="tree1"></div>');
10
- });
11
- afterEach(function () {
12
- var $tree = $("#tree1");
13
- $tree.tree("destroy");
14
- $tree.remove();
15
- });
16
- describe("keyboard support", function () {
17
- var KEY_DOWN = 40;
18
- var KEY_LEFT = 37;
19
- var KEY_RIGHT = 39;
20
- var KEY_UP = 38;
21
- var KEY_PAGE_UP = 33;
22
- var given = (0, _givens["default"])();
23
- given("autoOpen", function () {
24
- return false;
25
- });
26
- given("initialSelectedNode", function () {
27
- return null;
28
- });
29
- given("$tree", function () {
30
- return $("#tree1");
31
- });
32
- beforeEach(function () {
33
- given.$tree.tree({
34
- animationSpeed: 0,
35
- autoOpen: given.autoOpen,
36
- data: _exampleData["default"]
37
- });
38
- if (given.initialSelectedNode) {
39
- given.$tree.tree("selectNode", given.initialSelectedNode);
40
- }
41
- given.$tree.trigger($.Event("keydown", {
42
- which: given.pressedKey
43
- }));
44
- });
45
- context("with key down", function () {
46
- given("pressedKey", function () {
47
- return KEY_DOWN;
48
- });
49
- context("when a node is selected", function () {
50
- given("initialSelectedNode", function () {
51
- return given.$tree.tree("getNodeByNameMustExist", "node1");
52
- });
53
- it("selects the next node", function () {
54
- expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
55
- name: "node1",
56
- selected: false
57
- }), expect.objectContaining({
58
- name: "node2",
59
- selected: true
60
- })]);
61
- });
62
- });
63
- context("when no node is selected", function () {
64
- it("does nothing", function () {
65
- expect(given.$tree.tree("getSelectedNode")).toBe(false);
66
- });
67
- });
68
- context("when the last node is selected", function () {
69
- given("initialSelectedNode", function () {
70
- return given.$tree.tree("getNodeByNameMustExist", "node2");
71
- });
72
- it("keeps the node selected", function () {
73
- expect(given.$tree.tree("getSelectedNode")).toMatchObject({
74
- name: "node2"
75
- });
76
- });
77
- });
78
- });
79
- context("with key up", function () {
80
- given("pressedKey", function () {
81
- return KEY_UP;
82
- });
83
- context("when a node is selected", function () {
84
- given("initialSelectedNode", function () {
85
- return given.$tree.tree("getNodeByNameMustExist", "node2");
86
- });
87
- it("selects the next node", function () {
88
- expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
89
- name: "node1",
90
- selected: true
91
- }), expect.objectContaining({
92
- name: "node2",
93
- selected: false
94
- })]);
95
- });
96
- });
97
- context("when no node is selected", function () {
98
- it("does nothing", function () {
99
- expect(given.$tree.tree("getSelectedNode")).toBe(false);
100
- });
101
- });
102
- });
103
- context("with key right", function () {
104
- given("pressedKey", function () {
105
- return KEY_RIGHT;
106
- });
107
- context("when a closed folder is selected", function () {
108
- given("initialSelectedNode", function () {
109
- return given.$tree.tree("getNodeByNameMustExist", "node1");
110
- });
111
- it("opens the folder", function () {
112
- expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
113
- name: "node1",
114
- open: true,
115
- selected: true
116
- }), expect.objectContaining({
117
- name: "node2",
118
- open: false,
119
- selected: false
120
- })]);
121
- });
122
- });
123
- context("when an open folder is selected", function () {
124
- given("autoOpen", function () {
125
- return true;
126
- });
127
- given("initialSelectedNode", function () {
128
- return given.$tree.tree("getNodeByNameMustExist", "node1");
129
- });
130
- it("selects the first child", function () {
131
- expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
132
- name: "node1",
133
- open: true,
134
- selected: false,
135
- children: [expect.objectContaining({
136
- name: "child1",
137
- selected: true
138
- }), expect.objectContaining({
139
- name: "child2",
140
- selected: false
141
- })]
142
- }), expect.objectContaining({
143
- name: "node2",
144
- selected: false
145
- })]);
146
- });
147
- });
148
- context("when no node is selected", function () {
149
- it("does nothing", function () {
150
- expect(given.$tree.tree("getSelectedNode")).toBe(false);
151
- });
152
- });
153
- context("when a child is selected", function () {
154
- given("initialSelectedNode", function () {
155
- return given.$tree.tree("getNodeByNameMustExist", "child1");
156
- });
157
- it("does nothing", function () {
158
- expect(given.$tree.tree("getSelectedNode")).toMatchObject({
159
- name: "child1"
160
- });
161
- });
162
- });
163
- });
164
- context("with key left", function () {
165
- given("pressedKey", function () {
166
- return KEY_LEFT;
167
- });
168
- context("when a closed folder is selected", function () {
169
- given("initialSelectedNode", function () {
170
- return given.$tree.tree("getNodeByNameMustExist", "node3");
171
- });
172
- it("selects the previous node", function () {
173
- expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
174
- name: "node1",
175
- selected: false
176
- }), expect.objectContaining({
177
- name: "node2",
178
- selected: true,
179
- children: [expect.objectContaining({
180
- name: "node3",
181
- open: false,
182
- selected: false
183
- })]
184
- })]);
185
- });
186
- });
187
- context("when an open folder is selected", function () {
188
- given("autoOpen", function () {
189
- return true;
190
- });
191
- given("initialSelectedNode", function () {
192
- return given.$tree.tree("getNodeByNameMustExist", "node2");
193
- });
194
- it("closes the folder", function () {
195
- expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
196
- name: "node1",
197
- open: true,
198
- selected: false
199
- }), expect.objectContaining({
200
- name: "node2",
201
- open: false,
202
- selected: true
203
- })]);
204
- });
205
- });
206
- context("when no node is selected", function () {
207
- it("does nothing", function () {
208
- expect(given.$tree.tree("getSelectedNode")).toBe(false);
209
- });
210
- });
211
- });
212
- context("with page up key", function () {
213
- given("pressedKey", function () {
214
- return KEY_PAGE_UP;
215
- });
216
- given("initialSelectedNode", function () {
217
- return given.$tree.tree("getNodeByNameMustExist", "child1");
218
- });
219
- it("does nothing", function () {
220
- expect(given.$tree.tree("getSelectedNode")).toMatchObject({
221
- name: "child1"
222
- });
223
- });
224
- });
225
- });