jqtree 1.5.2 → 1.6.2

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 (174) hide show
  1. package/.eslintrc +1 -0
  2. package/.github/workflows/ci.yml +54 -0
  3. package/.github/workflows/codeql-analysis.yml +28 -0
  4. package/README.md +1 -1
  5. package/_config.yml +1 -1
  6. package/_entries/10_changelog.md +20 -0
  7. package/_entries/{36_showemptynode.md → 36_showemptyfolder.md} +5 -5
  8. package/_entries/38_start_dnd_delay.md +13 -0
  9. package/_entries/{38_tabindex.md → 39_tabindex.md} +0 -0
  10. package/_entries/{39_usecontextmenu.md → 40_usecontextmenu.md} +0 -0
  11. package/_entries/{40_functions.md → 41_functions.md} +0 -0
  12. package/_entries/{41_addparentnode.md → 42_addparentnode.md} +0 -0
  13. package/_entries/{42_addnodeafter.md → 43_addnodeafter.md} +0 -0
  14. package/_entries/{43_addnodebefore.md → 44_addnodebefore.md} +0 -0
  15. package/_entries/{44_appendnode.md → 45_appendnode.md} +0 -0
  16. package/_entries/{45_closenode.md → 46_closenode.md} +0 -0
  17. package/_entries/{46_destroy.md → 47_destroy.md} +0 -0
  18. package/_entries/{47_getnodebycallback.md → 48_getnodebycallback.md} +0 -0
  19. package/_entries/{48_getnodebyid.md → 49_getnodebyid.md} +0 -0
  20. package/_entries/{49_getnodebyhtmlelement.md → 50_getnodebyhtmlelement.md} +0 -0
  21. package/_entries/{50_getselectednode.md → 51_getselectednode.md} +0 -0
  22. package/_entries/{51_getstate.md → 52_getstate.md} +0 -0
  23. package/_entries/{52_gettree.md → 53_gettree.md} +0 -0
  24. package/_entries/{53_isdragging.md → 54_isdragging.md} +0 -0
  25. package/_entries/{54_loaddata.md → 55_loaddata.md} +0 -0
  26. package/_entries/{55_loaddatafromurl.md → 56_loaddatafromurl.md} +0 -0
  27. package/_entries/{56_movedown.md → 57_movedown.md} +0 -0
  28. package/_entries/{57_movenode.md → 58_movenode.md} +0 -0
  29. package/_entries/{58_moveup.md → 59_moveup.md} +0 -0
  30. package/_entries/{59_opennode.md → 60_opennode.md} +0 -0
  31. package/_entries/{60_prependnode.md → 61_prependnode.md} +0 -0
  32. package/_entries/62_refresh.md +12 -0
  33. package/_entries/{61_reload.md → 63_reload.md} +0 -0
  34. package/_entries/{62_removenode.md → 64_removenode.md} +0 -0
  35. package/_entries/{63_selectnode.md → 65_selectnode.md} +0 -0
  36. package/_entries/{64_scrolltonode.md → 66_scrolltonode.md} +0 -0
  37. package/_entries/{65_setoption.md → 67_setoption.md} +0 -0
  38. package/_entries/{66_setstate.md → 68_setstate.md} +0 -0
  39. package/_entries/{67_toggle.md → 69_toggle.md} +0 -0
  40. package/_entries/{68_tojson.md → 70_tojson.md} +0 -0
  41. package/_entries/{69_updatenode.md → 71_updatenode.md} +0 -0
  42. package/_entries/{70_events.md → 72_events.md} +0 -0
  43. package/_entries/{71_tree-click.md → 73_tree-click.md} +0 -0
  44. package/_entries/{72_tree-close.md → 74_tree-close.md} +0 -0
  45. package/_entries/{73_tree-contextmenu.md → 75_tree-contextmenu.md} +0 -0
  46. package/_entries/{74_tree-dblclick.md → 76_tree-dblclick.md} +0 -0
  47. package/_entries/{75_tree-init.md → 77_tree-init.md} +0 -0
  48. package/_entries/{76_tree-load-data.md → 78_tree-load-data.md} +0 -0
  49. package/_entries/{77_tree-loading-data.md → 79_tree-loading-data.md} +0 -0
  50. package/_entries/{78_tree-move.md → 80_tree-move.md} +0 -0
  51. package/_entries/{79_tree-refresh.md → 81_tree-refresh.md} +0 -0
  52. package/_entries/{80_tree-open.md → 82_tree-open.md} +0 -0
  53. package/_entries/{81_tree-select.md → 83_tree-select.md} +0 -0
  54. package/_entries/{82_multiple-selection.md → 84_multiple-selection.md} +0 -0
  55. package/_entries/{83_add-to-selection.md → 85_add-to-selection.md} +0 -0
  56. package/_entries/{84_get-selected-nodes.md → 86_get-selected-nodes.md} +0 -0
  57. package/_entries/{85_is-node-selected.md → 87_is-node-selected.md} +0 -0
  58. package/_entries/{86_remove-from-selection.md → 88_remove-from-selection.md} +0 -0
  59. package/_entries/{87_node-functions.md → 89_node-functions.md} +0 -0
  60. package/_entries/{88_children.md → 90_children.md} +0 -0
  61. package/_entries/{89_getdata.md → 91_getdata.md} +0 -0
  62. package/_entries/{90_getlevel.md → 92_getlevel.md} +0 -0
  63. package/_entries/{91_getnextnode.md → 93_getnextnode.md} +0 -0
  64. package/_entries/{92_getnextsibling.md → 94_getnextsibling.md} +0 -0
  65. package/_entries/{93_getpreviousnode.md → 95_getpreviousnode.md} +0 -0
  66. package/_entries/{94_getprevioussibling.md → 96_getprevioussibling.md} +0 -0
  67. package/_entries/{95_parent.md → 97_parent.md} +0 -0
  68. package/_examples/13_drag_outside.html +2 -1
  69. package/_examples/14_filter.html +113 -0
  70. package/_layouts/base.html +1 -23
  71. package/babel.config.json +11 -0
  72. package/babel.coverage.config.json +4 -0
  73. package/bower.json +1 -1
  74. package/jest-browser.config.js +0 -3
  75. package/jest-jsdom.config.js +1 -2
  76. package/jqtree.css +4 -1
  77. package/jqtree.postcss +3 -0
  78. package/lib/dataLoader.js +146 -98
  79. package/lib/dragAndDropHandler.js +668 -470
  80. package/lib/elementsRenderer.js +282 -197
  81. package/lib/jqtreeOptions.js +1 -2
  82. package/lib/keyHandler.js +134 -87
  83. package/lib/mouse.widget.js +288 -165
  84. package/lib/node.js +693 -505
  85. package/lib/nodeElement.js +329 -205
  86. package/lib/playwright/playwright.test.js +216 -189
  87. package/lib/playwright/testUtil.js +437 -192
  88. package/lib/playwright/visualRegression.js +183 -117
  89. package/lib/saveStateHandler.js +311 -204
  90. package/lib/scrollHandler.js +293 -199
  91. package/lib/selectNodeHandler.js +140 -105
  92. package/lib/simple.widget.js +184 -109
  93. package/lib/test/global.d.js +3 -0
  94. package/lib/test/jqTree/create.test.js +44 -40
  95. package/lib/test/jqTree/events.test.js +185 -138
  96. package/lib/test/jqTree/keyboard.test.js +216 -199
  97. package/lib/test/jqTree/loadOnDemand.test.js +233 -157
  98. package/lib/test/jqTree/methods.test.js +1269 -1000
  99. package/lib/test/jqTree/options.test.js +467 -398
  100. package/lib/test/node.test.js +1036 -873
  101. package/lib/test/nodeUtil.test.js +21 -20
  102. package/lib/test/support/exampleData.js +35 -23
  103. package/lib/test/support/jqTreeMatchers.js +72 -54
  104. package/lib/test/support/matchers.d.js +1 -0
  105. package/lib/test/support/setupTests.js +9 -3
  106. package/lib/test/support/testUtil.js +38 -15
  107. package/lib/test/support/treeStructure.js +41 -32
  108. package/lib/test/util.test.js +21 -20
  109. package/lib/tree.jquery.d.js +1 -0
  110. package/lib/tree.jquery.js +1264 -883
  111. package/lib/types.js +1 -2
  112. package/lib/typings.d.js +2 -0
  113. package/lib/util.js +21 -7
  114. package/lib/version.js +8 -3
  115. package/package.json +43 -36
  116. package/production +4 -4
  117. package/rollup.config.js +16 -11
  118. package/src/dataLoader.ts +6 -6
  119. package/src/dragAndDropHandler.ts +0 -4
  120. package/src/elementsRenderer.ts +4 -0
  121. package/src/jqtreeOptions.ts +33 -32
  122. package/src/mouse.widget.ts +58 -29
  123. package/src/node.ts +32 -46
  124. package/src/nodeElement.ts +17 -9
  125. package/src/playwright/.eslintrc +5 -0
  126. package/src/playwright/playwright.test.ts +30 -30
  127. package/src/playwright/testUtil.ts +36 -37
  128. package/src/saveStateHandler.ts +11 -6
  129. package/src/selectNodeHandler.ts +14 -21
  130. package/src/simple.widget.ts +1 -1
  131. package/src/test/.eslintrc +4 -0
  132. package/src/test/jqTree/create.test.ts +0 -1
  133. package/src/test/jqTree/events.test.ts +12 -13
  134. package/src/test/jqTree/keyboard.test.ts +0 -1
  135. package/src/test/jqTree/loadOnDemand.test.ts +46 -1
  136. package/src/test/jqTree/methods.test.ts +67 -18
  137. package/src/test/jqTree/options.test.ts +5 -6
  138. package/src/test/node.test.ts +2 -2
  139. package/src/test/support/jqTreeMatchers.ts +8 -9
  140. package/src/test/support/matchers.d.ts +2 -4
  141. package/src/test/support/setupTests.ts +2 -1
  142. package/src/tree.jquery.d.ts +19 -13
  143. package/src/tree.jquery.ts +63 -57
  144. package/src/version.ts +1 -1
  145. package/static/bower.json +3 -3
  146. package/static/bower_components/fontawesome/css/all.min.css +2 -2
  147. package/static/bower_components/fontawesome/webfonts/fa-brands-400.eot +0 -0
  148. package/static/bower_components/fontawesome/webfonts/fa-brands-400.svg +774 -627
  149. package/static/bower_components/fontawesome/webfonts/fa-brands-400.ttf +0 -0
  150. package/static/bower_components/fontawesome/webfonts/fa-brands-400.woff +0 -0
  151. package/static/bower_components/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
  152. package/static/bower_components/fontawesome/webfonts/fa-regular-400.eot +0 -0
  153. package/static/bower_components/fontawesome/webfonts/fa-regular-400.svg +93 -95
  154. package/static/bower_components/fontawesome/webfonts/fa-regular-400.ttf +0 -0
  155. package/static/bower_components/fontawesome/webfonts/fa-regular-400.woff +0 -0
  156. package/static/bower_components/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
  157. package/static/bower_components/fontawesome/webfonts/fa-solid-900.eot +0 -0
  158. package/static/bower_components/fontawesome/webfonts/fa-solid-900.svg +1164 -1074
  159. package/static/bower_components/fontawesome/webfonts/fa-solid-900.ttf +0 -0
  160. package/static/bower_components/fontawesome/webfonts/fa-solid-900.woff +0 -0
  161. package/static/bower_components/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
  162. package/static/bower_components/jquery/dist/jquery.js +118 -109
  163. package/static/bower_components/jquery/dist/jquery.min.js +2 -2
  164. package/static/bower_components/jquery-mockjax/dist/jquery.mockjax.js +15 -9
  165. package/static/example.css +13 -0
  166. package/static/example.postcss +13 -0
  167. package/static/example_data.js +33 -36
  168. package/static/examples/filter.js +63 -0
  169. package/tree.jquery.debug.js +4809 -3305
  170. package/tree.jquery.debug.js.map +1 -1
  171. package/tree.jquery.js +3 -3
  172. package/tree.jquery.js.map +1 -1
  173. package/tsconfig.json +1 -0
  174. package/.travis.yml +0 -18
@@ -1,113 +1,148 @@
1
1
  "use strict";
2
- exports.__esModule = true;
3
- var SelectNodeHandler = /** @class */ (function () {
4
- function SelectNodeHandler(treeWidget) {
5
- this.treeWidget = treeWidget;
6
- this.clear();
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
9
+
10
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
11
+
12
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
13
+
14
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
+
16
+ var SelectNodeHandler = /*#__PURE__*/function () {
17
+ function SelectNodeHandler(treeWidget) {
18
+ _classCallCheck(this, SelectNodeHandler);
19
+
20
+ _defineProperty(this, "treeWidget", void 0);
21
+
22
+ _defineProperty(this, "selectedNodes", void 0);
23
+
24
+ _defineProperty(this, "selectedSingleNode", void 0);
25
+
26
+ this.treeWidget = treeWidget;
27
+ this.selectedNodes = new Set();
28
+ this.clear();
29
+ }
30
+
31
+ _createClass(SelectNodeHandler, [{
32
+ key: "getSelectedNode",
33
+ value: function getSelectedNode() {
34
+ var selectedNodes = this.getSelectedNodes();
35
+
36
+ if (selectedNodes.length) {
37
+ return selectedNodes[0];
38
+ } else {
39
+ return false;
40
+ }
7
41
  }
8
- SelectNodeHandler.prototype.getSelectedNode = function () {
9
- var selectedNodes = this.getSelectedNodes();
10
- if (selectedNodes.length) {
11
- return selectedNodes[0];
12
- }
13
- else {
14
- return false;
15
- }
16
- };
17
- SelectNodeHandler.prototype.getSelectedNodes = function () {
18
- if (this.selectedSingleNode) {
19
- return [this.selectedSingleNode];
20
- }
21
- else {
22
- var selectedNodes = [];
23
- for (var id in this.selectedNodes) {
24
- if (Object.prototype.hasOwnProperty.call(this.selectedNodes, id)) {
25
- var node = this.treeWidget.getNodeById(id);
26
- if (node) {
27
- selectedNodes.push(node);
28
- }
29
- }
30
- }
31
- return selectedNodes;
32
- }
33
- };
34
- SelectNodeHandler.prototype.getSelectedNodesUnder = function (parent) {
35
- if (this.selectedSingleNode) {
36
- if (parent.isParentOf(this.selectedSingleNode)) {
37
- return [this.selectedSingleNode];
38
- }
39
- else {
40
- return [];
41
- }
42
- }
43
- else {
44
- var selectedNodes = [];
45
- for (var id in this.selectedNodes) {
46
- if (Object.prototype.hasOwnProperty.call(this.selectedNodes, id)) {
47
- var node = this.treeWidget.getNodeById(id);
48
- if (node && parent.isParentOf(node)) {
49
- selectedNodes.push(node);
50
- }
51
- }
52
- }
53
- return selectedNodes;
42
+ }, {
43
+ key: "getSelectedNodes",
44
+ value: function getSelectedNodes() {
45
+ var _this = this;
46
+
47
+ if (this.selectedSingleNode) {
48
+ return [this.selectedSingleNode];
49
+ } else {
50
+ var selectedNodes = [];
51
+ this.selectedNodes.forEach(function (id) {
52
+ var node = _this.treeWidget.getNodeById(id);
53
+
54
+ if (node) {
55
+ selectedNodes.push(node);
56
+ }
57
+ });
58
+ return selectedNodes;
59
+ }
60
+ }
61
+ }, {
62
+ key: "getSelectedNodesUnder",
63
+ value: function getSelectedNodesUnder(parent) {
64
+ if (this.selectedSingleNode) {
65
+ if (parent.isParentOf(this.selectedSingleNode)) {
66
+ return [this.selectedSingleNode];
67
+ } else {
68
+ return [];
54
69
  }
55
- };
56
- SelectNodeHandler.prototype.isNodeSelected = function (node) {
57
- if (node.id != null) {
58
- if (this.selectedNodes[node.id]) {
59
- return true;
60
- }
61
- else {
62
- return false;
70
+ } else {
71
+ var selectedNodes = [];
72
+
73
+ for (var id in this.selectedNodes) {
74
+ if (Object.prototype.hasOwnProperty.call(this.selectedNodes, id)) {
75
+ var node = this.treeWidget.getNodeById(id);
76
+
77
+ if (node && parent.isParentOf(node)) {
78
+ selectedNodes.push(node);
63
79
  }
80
+ }
64
81
  }
65
- else if (this.selectedSingleNode) {
66
- return this.selectedSingleNode.element === node.element;
67
- }
68
- else {
69
- return false;
70
- }
71
- };
72
- SelectNodeHandler.prototype.clear = function () {
73
- this.selectedNodes = {};
74
- this.selectedSingleNode = null;
75
- };
76
- SelectNodeHandler.prototype.removeFromSelection = function (node, includeChildren) {
77
- var _this = this;
78
- if (includeChildren === void 0) { includeChildren = false; }
79
- if (node.id == null) {
80
- if (this.selectedSingleNode &&
81
- node.element === this.selectedSingleNode.element) {
82
- this.selectedSingleNode = null;
83
- }
82
+
83
+ return selectedNodes;
84
+ }
85
+ }
86
+ }, {
87
+ key: "isNodeSelected",
88
+ value: function isNodeSelected(node) {
89
+ if (node.id != null) {
90
+ return this.selectedNodes.has(node.id);
91
+ } else if (this.selectedSingleNode) {
92
+ return this.selectedSingleNode.element === node.element;
93
+ } else {
94
+ return false;
95
+ }
96
+ }
97
+ }, {
98
+ key: "clear",
99
+ value: function clear() {
100
+ this.selectedNodes.clear();
101
+ this.selectedSingleNode = null;
102
+ }
103
+ }, {
104
+ key: "removeFromSelection",
105
+ value: function removeFromSelection(node) {
106
+ var _this2 = this;
107
+
108
+ var includeChildren = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
109
+
110
+ if (node.id == null) {
111
+ if (this.selectedSingleNode && node.element === this.selectedSingleNode.element) {
112
+ this.selectedSingleNode = null;
84
113
  }
85
- else {
86
- delete this.selectedNodes[node.id];
87
- if (includeChildren) {
88
- node.iterate(function () {
89
- if (node.id != null) {
90
- delete _this.selectedNodes[node.id];
91
- }
92
- return true;
93
- });
114
+ } else {
115
+ this.selectedNodes["delete"](node.id);
116
+
117
+ if (includeChildren) {
118
+ node.iterate(function () {
119
+ if (node.id != null) {
120
+ _this2.selectedNodes["delete"](node.id);
94
121
  }
122
+
123
+ return true;
124
+ });
95
125
  }
96
- };
97
- SelectNodeHandler.prototype.addToSelection = function (node) {
98
- if (node.id != null) {
99
- this.selectedNodes[node.id] = true;
100
- }
101
- else {
102
- this.selectedSingleNode = node;
103
- }
104
- };
105
- SelectNodeHandler.prototype.isFocusOnTree = function () {
106
- var activeElement = document.activeElement;
107
- return Boolean(activeElement &&
108
- activeElement.tagName === "SPAN" &&
109
- this.treeWidget._containsElement(activeElement));
110
- };
111
- return SelectNodeHandler;
112
- }());
113
- exports["default"] = SelectNodeHandler;
126
+ }
127
+ }
128
+ }, {
129
+ key: "addToSelection",
130
+ value: function addToSelection(node) {
131
+ if (node.id != null) {
132
+ this.selectedNodes.add(node.id);
133
+ } else {
134
+ this.selectedSingleNode = node;
135
+ }
136
+ }
137
+ }, {
138
+ key: "isFocusOnTree",
139
+ value: function isFocusOnTree() {
140
+ var activeElement = document.activeElement;
141
+ return Boolean(activeElement && activeElement.tagName === "SPAN" && this.treeWidget._containsElement(activeElement));
142
+ }
143
+ }]);
144
+
145
+ return SelectNodeHandler;
146
+ }();
147
+
148
+ exports["default"] = SelectNodeHandler;
@@ -1,117 +1,192 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- exports.__esModule = true;
14
- var register = function (widgetClass, widgetName) {
15
- var getDataKey = function () { return "simple_widget_" + widgetName; };
16
- var getWidgetData = function (el, dataKey) {
17
- var widget = jQuery.data(el, dataKey);
18
- if (widget && widget instanceof SimpleWidget) {
19
- return widget;
20
- }
21
- else {
22
- return null;
23
- }
24
- };
25
- var createWidget = function ($el, options) {
26
- var dataKey = getDataKey();
27
- for (var _i = 0, _a = $el.get(); _i < _a.length; _i++) {
28
- var el = _a[_i];
29
- var existingWidget = getWidgetData(el, dataKey);
30
- if (!existingWidget) {
31
- var simpleWidgetClass = widgetClass;
32
- var widget = new simpleWidgetClass(el, options);
33
- if (!jQuery.data(el, dataKey)) {
34
- jQuery.data(el, dataKey, widget);
35
- }
36
- // Call init after setting data, so we can call methods
37
- widget.init();
38
- }
39
- }
40
- return $el;
41
- };
42
- var destroyWidget = function ($el) {
43
- var dataKey = getDataKey();
44
- for (var _i = 0, _a = $el.get(); _i < _a.length; _i++) {
45
- var el = _a[_i];
46
- var widget = getWidgetData(el, dataKey);
47
- if (widget) {
48
- widget.destroy();
49
- }
50
- jQuery.removeData(el, dataKey);
51
- }
52
- };
53
- var callFunction = function ($el, functionName, args) {
54
- var result = null;
55
- for (var _i = 0, _a = $el.get(); _i < _a.length; _i++) {
56
- var el = _a[_i];
57
- var widget = jQuery.data(el, getDataKey());
58
- if (widget && widget instanceof SimpleWidget) {
59
- var simpleWidget = widget;
60
- var widgetFunction = simpleWidget[functionName];
61
- if (widgetFunction && typeof widgetFunction === "function") {
62
- result = widgetFunction.apply(widget, args);
63
- }
64
- }
65
- }
66
- return result;
67
- };
68
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
69
- jQuery.fn[widgetName] = function (argument1) {
70
- var args = [];
71
- for (var _i = 1; _i < arguments.length; _i++) {
72
- args[_i - 1] = arguments[_i];
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
9
+
10
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
11
+
12
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
13
+
14
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
15
+
16
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
17
+
18
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
+
20
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
21
+
22
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
23
+
24
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
25
+
26
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
27
+
28
+ var _register = function register(widgetClass, widgetName) {
29
+ var getDataKey = function getDataKey() {
30
+ return "simple_widget_".concat(widgetName);
31
+ };
32
+
33
+ var getWidgetData = function getWidgetData(el, dataKey) {
34
+ var widget = jQuery.data(el, dataKey);
35
+
36
+ if (widget && widget instanceof SimpleWidget) {
37
+ return widget;
38
+ } else {
39
+ return null;
40
+ }
41
+ };
42
+
43
+ var createWidget = function createWidget($el, options) {
44
+ var dataKey = getDataKey();
45
+
46
+ var _iterator = _createForOfIteratorHelper($el.get()),
47
+ _step;
48
+
49
+ try {
50
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
51
+ var el = _step.value;
52
+ var existingWidget = getWidgetData(el, dataKey);
53
+
54
+ if (!existingWidget) {
55
+ var simpleWidgetClass = widgetClass;
56
+ var widget = new simpleWidgetClass(el, options);
57
+
58
+ if (!jQuery.data(el, dataKey)) {
59
+ jQuery.data(el, dataKey, widget);
60
+ } // Call init after setting data, so we can call methods
61
+
62
+
63
+ widget.init();
73
64
  }
74
- if (!argument1) {
75
- return createWidget(this, null);
65
+ }
66
+ } catch (err) {
67
+ _iterator.e(err);
68
+ } finally {
69
+ _iterator.f();
70
+ }
71
+
72
+ return $el;
73
+ };
74
+
75
+ var destroyWidget = function destroyWidget($el) {
76
+ var dataKey = getDataKey();
77
+
78
+ var _iterator2 = _createForOfIteratorHelper($el.get()),
79
+ _step2;
80
+
81
+ try {
82
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
83
+ var el = _step2.value;
84
+ var widget = getWidgetData(el, dataKey);
85
+
86
+ if (widget) {
87
+ widget.destroy();
76
88
  }
77
- else if (typeof argument1 === "object") {
78
- var options = argument1;
79
- return createWidget(this, options);
89
+
90
+ jQuery.removeData(el, dataKey);
91
+ }
92
+ } catch (err) {
93
+ _iterator2.e(err);
94
+ } finally {
95
+ _iterator2.f();
96
+ }
97
+ };
98
+
99
+ var callFunction = function callFunction($el, functionName, args) {
100
+ var result = null;
101
+
102
+ var _iterator3 = _createForOfIteratorHelper($el.get()),
103
+ _step3;
104
+
105
+ try {
106
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
107
+ var el = _step3.value;
108
+ var widget = jQuery.data(el, getDataKey());
109
+
110
+ if (widget && widget instanceof SimpleWidget) {
111
+ var simpleWidget = widget;
112
+ var widgetFunction = simpleWidget[functionName];
113
+
114
+ if (widgetFunction && typeof widgetFunction === "function") {
115
+ result = widgetFunction.apply(widget, args);
116
+ }
80
117
  }
81
- else if (typeof argument1 === "string" && argument1[0] !== "_") {
82
- var functionName = argument1;
83
- if (functionName === "destroy") {
84
- return destroyWidget(this);
85
- }
86
- else if (functionName === "get_widget_class") {
87
- return widgetClass;
88
- }
89
- else {
90
- return callFunction(this, functionName, args);
91
- }
118
+ }
119
+ } catch (err) {
120
+ _iterator3.e(err);
121
+ } finally {
122
+ _iterator3.f();
123
+ }
124
+
125
+ return result;
126
+ }; // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
127
+
128
+
129
+ jQuery.fn[widgetName] = function (argument1) {
130
+ if (!argument1) {
131
+ return createWidget(this, null);
132
+ } else if (_typeof(argument1) === "object") {
133
+ var options = argument1;
134
+ return createWidget(this, options);
135
+ } else if (typeof argument1 === "string" && argument1[0] !== "_") {
136
+ var functionName = argument1;
137
+
138
+ if (functionName === "destroy") {
139
+ return destroyWidget(this);
140
+ } else if (functionName === "get_widget_class") {
141
+ return widgetClass;
142
+ } else {
143
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
144
+ args[_key - 1] = arguments[_key];
92
145
  }
93
- };
146
+
147
+ return callFunction(this, functionName, args);
148
+ }
149
+ }
150
+ };
94
151
  };
95
- var SimpleWidget = /** @class */ (function () {
96
- function SimpleWidget(el, options) {
97
- this.$el = jQuery(el);
98
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
99
- var defaults = this.constructor["defaults"];
100
- this.options = __assign(__assign({}, defaults), options);
152
+
153
+ var SimpleWidget = /*#__PURE__*/function () {
154
+ function SimpleWidget(el, options) {
155
+ _classCallCheck(this, SimpleWidget);
156
+
157
+ _defineProperty(this, "options", void 0);
158
+
159
+ _defineProperty(this, "$el", void 0);
160
+
161
+ this.$el = jQuery(el); // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
162
+
163
+ var defaults = this.constructor["defaults"];
164
+ this.options = _objectSpread(_objectSpread({}, defaults), options);
165
+ }
166
+
167
+ _createClass(SimpleWidget, [{
168
+ key: "destroy",
169
+ value: function destroy() {
170
+ this.deinit();
171
+ }
172
+ }, {
173
+ key: "init",
174
+ value: function init() {//
175
+ }
176
+ }, {
177
+ key: "deinit",
178
+ value: function deinit() {//
179
+ }
180
+ }], [{
181
+ key: "register",
182
+ value: function register(widgetClass, widgetName) {
183
+ _register(widgetClass, widgetName);
101
184
  }
102
- SimpleWidget.register = function (widgetClass, widgetName) {
103
- register(widgetClass, widgetName);
104
- };
105
- SimpleWidget.prototype.destroy = function () {
106
- this.deinit();
107
- };
108
- SimpleWidget.prototype.init = function () {
109
- //
110
- };
111
- SimpleWidget.prototype.deinit = function () {
112
- //
113
- };
114
- SimpleWidget.defaults = {};
115
- return SimpleWidget;
116
- }());
185
+ }]);
186
+
187
+ return SimpleWidget;
188
+ }();
189
+
117
190
  exports["default"] = SimpleWidget;
191
+
192
+ _defineProperty(SimpleWidget, "defaults", {});
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ require("jest-extended");
@@ -1,48 +1,52 @@
1
1
  "use strict";
2
- exports.__esModule = true;
3
- var $ = require("jquery");
4
- var givens_1 = require("givens");
2
+
3
+ var _givens = _interopRequireDefault(require("givens"));
4
+
5
5
  require("../../tree.jquery");
6
- var exampleData_1 = require("../support/exampleData");
6
+
7
+ var _exampleData = _interopRequireDefault(require("../support/exampleData"));
8
+
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
+
7
11
  beforeEach(function () {
8
- $("body").append('<div id="tree1"></div>');
12
+ $("body").append('<div id="tree1"></div>');
9
13
  });
10
14
  afterEach(function () {
11
- var $tree = $("#tree1");
12
- $tree.tree("destroy");
13
- $tree.remove();
15
+ var $tree = $("#tree1");
16
+ $tree.tree("destroy");
17
+ $tree.remove();
14
18
  });
15
19
  describe("create with data", function () {
16
- var given = givens_1["default"]();
17
- given("$tree", function () { return $("#tree1"); });
18
- beforeEach(function () {
19
- given.$tree.tree({
20
- data: exampleData_1["default"]
21
- });
20
+ var given = (0, _givens["default"])();
21
+ given("$tree", function () {
22
+ return $("#tree1");
23
+ });
24
+ beforeEach(function () {
25
+ given.$tree.tree({
26
+ data: _exampleData["default"]
22
27
  });
23
- it("creates a tree", function () {
24
- expect(given.$tree).toHaveTreeStructure([
25
- expect.objectContaining({
26
- name: "node1",
27
- open: false,
28
- selected: false,
29
- children: [
30
- expect.objectContaining({ name: "child1" }),
31
- expect.objectContaining({ name: "child2" }),
32
- ]
33
- }),
34
- expect.objectContaining({
35
- name: "node2",
36
- open: false,
37
- selected: false,
38
- children: [
39
- expect.objectContaining({
40
- name: "node3",
41
- open: false,
42
- children: [expect.objectContaining({ name: "child3" })]
43
- }),
44
- ]
45
- }),
46
- ]);
47
- });
48
- });
28
+ });
29
+ it("creates a tree", function () {
30
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
31
+ name: "node1",
32
+ open: false,
33
+ selected: false,
34
+ children: [expect.objectContaining({
35
+ name: "child1"
36
+ }), expect.objectContaining({
37
+ name: "child2"
38
+ })]
39
+ }), expect.objectContaining({
40
+ name: "node2",
41
+ open: false,
42
+ selected: false,
43
+ children: [expect.objectContaining({
44
+ name: "node3",
45
+ open: false,
46
+ children: [expect.objectContaining({
47
+ name: "child3"
48
+ })]
49
+ })]
50
+ })]);
51
+ });
52
+ });