jqtree 1.6.0 → 1.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/.eslintrc +3 -11
  2. package/.github/workflows/ci.yml +48 -23
  3. package/.github/workflows/codeql-analysis.yml +9 -5
  4. package/.prettier +3 -0
  5. package/README.md +11 -8
  6. package/bower.json +1 -1
  7. package/{.postcssrc → config/.postcssrc} +0 -0
  8. package/config/babel.config.json +11 -0
  9. package/config/babel.coverage.config.json +4 -0
  10. package/{jest-jsdom.config.js → config/jest.config.js} +9 -5
  11. package/config/playwright.config.js +18 -0
  12. package/config/production +4 -0
  13. package/{rollup.config.js → config/rollup.config.js} +19 -14
  14. package/{jqtree.postcss → css/jqtree.postcss} +3 -0
  15. package/devserver/index.html +1 -9
  16. package/docs/Gemfile +2 -0
  17. package/docs/Gemfile.lock +263 -0
  18. package/{_config.yml → docs/_config.yml} +8 -1
  19. package/{_entries → docs/_entries}/01_general.md +0 -0
  20. package/{_entries → docs/_entries}/02_introduction.md +0 -0
  21. package/{_entries → docs/_entries}/03_features.md +1 -1
  22. package/{_entries → docs/_entries}/04_demo.html +1 -7
  23. package/{_entries → docs/_entries}/05_requirements.md +0 -0
  24. package/{_entries → docs/_entries}/06_downloads.md +0 -0
  25. package/{_entries → docs/_entries}/07_tutorial.md +0 -0
  26. package/{_entries → docs/_entries}/08_examples.md +0 -0
  27. package/{_entries → docs/_entries}/09_usecases.md +0 -0
  28. package/{_entries → docs/_entries}/10_changelog.md +14 -0
  29. package/{_entries → docs/_entries}/11_options.md +0 -0
  30. package/{_entries → docs/_entries}/12_animationspeed.md +0 -0
  31. package/{_entries → docs/_entries}/13_autoescape.md +0 -0
  32. package/{_entries → docs/_entries}/14_autoopen.md +0 -0
  33. package/{_entries → docs/_entries}/15_buttonleft.md +0 -0
  34. package/{_entries → docs/_entries}/16_closedicon.md +0 -0
  35. package/{_entries → docs/_entries}/17_data.md +0 -0
  36. package/{_entries → docs/_entries}/18_datafilter.md +0 -0
  37. package/{_entries → docs/_entries}/19_data-url.md +0 -0
  38. package/{_entries → docs/_entries}/20_draganddrop.md +0 -0
  39. package/{_entries → docs/_entries}/21_keyboardsupport.md +0 -0
  40. package/{_entries → docs/_entries}/22_oncanmove.md +0 -0
  41. package/{_entries → docs/_entries}/23_oncanmoveto.md +2 -2
  42. package/{_entries → docs/_entries}/24_oncanselectnode.md +0 -0
  43. package/{_entries → docs/_entries}/25_oncreateli.md +2 -2
  44. package/{_entries → docs/_entries}/26_ondragmove.md +0 -0
  45. package/{_entries → docs/_entries}/27_ondragstop.md +0 -0
  46. package/{_entries → docs/_entries}/28_onismovehandle.md +0 -0
  47. package/{_entries → docs/_entries}/29_onloadfailed.md +0 -0
  48. package/{_entries → docs/_entries}/30_onloading.md +2 -2
  49. package/{_entries → docs/_entries}/31_openedicon.md +0 -0
  50. package/{_entries → docs/_entries}/32_openfolderdelay.md +2 -0
  51. package/{_entries → docs/_entries}/33_rtl.md +0 -0
  52. package/{_entries → docs/_entries}/34_savestate.md +0 -0
  53. package/{_entries → docs/_entries}/35_selectable.md +0 -0
  54. package/{_entries → docs/_entries}/36_showemptyfolder.md +0 -0
  55. package/{_entries → docs/_entries}/37_slide.md +0 -0
  56. package/{_entries → docs/_entries}/38_start_dnd_delay.md +0 -0
  57. package/{_entries → docs/_entries}/39_tabindex.md +0 -0
  58. package/{_entries → docs/_entries}/40_usecontextmenu.md +0 -0
  59. package/{_entries → docs/_entries}/41_functions.md +0 -0
  60. package/{_entries → docs/_entries}/42_addparentnode.md +1 -1
  61. package/{_entries → docs/_entries}/43_addnodeafter.md +1 -1
  62. package/{_entries → docs/_entries}/44_addnodebefore.md +1 -1
  63. package/{_entries → docs/_entries}/45_appendnode.md +5 -5
  64. package/{_entries → docs/_entries}/46_closenode.md +0 -0
  65. package/{_entries → docs/_entries}/47_destroy.md +0 -0
  66. package/{_entries → docs/_entries}/48_getnodebycallback.md +0 -0
  67. package/{_entries → docs/_entries}/49_getnodebyid.md +0 -0
  68. package/{_entries → docs/_entries}/50_getnodebyhtmlelement.md +2 -2
  69. package/{_entries → docs/_entries}/51_getselectednode.md +0 -0
  70. package/{_entries → docs/_entries}/52_getstate.md +0 -0
  71. package/{_entries → docs/_entries}/53_gettree.md +1 -1
  72. package/{_entries → docs/_entries}/54_isdragging.md +1 -1
  73. package/{_entries → docs/_entries}/55_loaddata.md +3 -3
  74. package/{_entries → docs/_entries}/56_loaddatafromurl.md +4 -4
  75. package/{_entries → docs/_entries}/57_movedown.md +0 -0
  76. package/{_entries → docs/_entries}/58_movenode.md +3 -3
  77. package/{_entries → docs/_entries}/59_moveup.md +0 -0
  78. package/{_entries → docs/_entries}/60_opennode.md +3 -3
  79. package/docs/_entries/61_prependnode.md +21 -0
  80. package/docs/_entries/62_refresh.md +12 -0
  81. package/{_entries/62_reload.md → docs/_entries/63_reload.md} +2 -2
  82. package/{_entries/63_removenode.md → docs/_entries/64_removenode.md} +0 -0
  83. package/{_entries/64_selectnode.md → docs/_entries/65_selectnode.md} +0 -0
  84. package/{_entries/65_scrolltonode.md → docs/_entries/66_scrolltonode.md} +0 -0
  85. package/{_entries/66_setoption.md → docs/_entries/67_setoption.md} +0 -0
  86. package/{_entries/67_setstate.md → docs/_entries/68_setstate.md} +0 -0
  87. package/{_entries/68_toggle.md → docs/_entries/69_toggle.md} +0 -0
  88. package/{_entries/69_tojson.md → docs/_entries/70_tojson.md} +0 -0
  89. package/{_entries/70_updatenode.md → docs/_entries/71_updatenode.md} +1 -1
  90. package/{_entries/71_events.md → docs/_entries/72_events.md} +0 -0
  91. package/{_entries/72_tree-click.md → docs/_entries/73_tree-click.md} +0 -0
  92. package/{_entries/73_tree-close.md → docs/_entries/74_tree-close.md} +0 -0
  93. package/{_entries/74_tree-contextmenu.md → docs/_entries/75_tree-contextmenu.md} +0 -0
  94. package/{_entries/75_tree-dblclick.md → docs/_entries/76_tree-dblclick.md} +0 -0
  95. package/{_entries/76_tree-init.md → docs/_entries/77_tree-init.md} +0 -0
  96. package/{_entries/77_tree-load-data.md → docs/_entries/78_tree-load-data.md} +0 -0
  97. package/{_entries/78_tree-loading-data.md → docs/_entries/79_tree-loading-data.md} +0 -0
  98. package/{_entries/79_tree-move.md → docs/_entries/80_tree-move.md} +0 -0
  99. package/{_entries/80_tree-refresh.md → docs/_entries/81_tree-refresh.md} +0 -0
  100. package/{_entries/81_tree-open.md → docs/_entries/82_tree-open.md} +0 -0
  101. package/{_entries/82_tree-select.md → docs/_entries/83_tree-select.md} +0 -0
  102. package/{_entries/83_multiple-selection.md → docs/_entries/84_multiple-selection.md} +0 -0
  103. package/{_entries/84_add-to-selection.md → docs/_entries/85_add-to-selection.md} +0 -0
  104. package/{_entries/85_get-selected-nodes.md → docs/_entries/86_get-selected-nodes.md} +0 -0
  105. package/{_entries/86_is-node-selected.md → docs/_entries/87_is-node-selected.md} +1 -1
  106. package/{_entries/87_remove-from-selection.md → docs/_entries/88_remove-from-selection.md} +0 -0
  107. package/{_entries/88_node-functions.md → docs/_entries/89_node-functions.md} +0 -0
  108. package/{_entries/89_children.md → docs/_entries/90_children.md} +0 -0
  109. package/{_entries/90_getdata.md → docs/_entries/91_getdata.md} +2 -2
  110. package/{_entries/91_getlevel.md → docs/_entries/92_getlevel.md} +0 -0
  111. package/{_entries/92_getnextnode.md → docs/_entries/93_getnextnode.md} +0 -0
  112. package/{_entries/93_getnextsibling.md → docs/_entries/94_getnextsibling.md} +0 -0
  113. package/{_entries/94_getpreviousnode.md → docs/_entries/95_getpreviousnode.md} +0 -0
  114. package/{_entries/95_getprevioussibling.md → docs/_entries/96_getprevioussibling.md} +0 -0
  115. package/{_entries/96_parent.md → docs/_entries/97_parent.md} +1 -1
  116. package/{_entries → docs/_entries}/insert.py +0 -0
  117. package/{_entries → docs/_entries}/renumber.py +0 -0
  118. package/{_examples → docs/_examples}/01_load_json_data.html +3 -5
  119. package/{_examples → docs/_examples}/02_load_json_data_from_server.html +3 -5
  120. package/{_examples → docs/_examples}/03_drag_and_drop.html +3 -5
  121. package/{_examples → docs/_examples}/04_save_state.html +3 -5
  122. package/{_examples → docs/_examples}/05_load_on_demand.html +3 -5
  123. package/{_examples → docs/_examples}/06_autoescape.html +3 -5
  124. package/{_examples → docs/_examples}/07_autoscroll.html +3 -5
  125. package/{_examples → docs/_examples}/08_multiple_select.html +3 -5
  126. package/{_examples → docs/_examples}/09_custom_html.html +3 -5
  127. package/{_examples → docs/_examples}/10_icon_buttons.html +3 -5
  128. package/{_examples → docs/_examples}/11_right-to-left.html +3 -5
  129. package/{_examples → docs/_examples}/12_button_on_right.html +3 -5
  130. package/docs/_examples/13_drag_outside.html +48 -0
  131. package/docs/_examples/14_filter.html +111 -0
  132. package/docs/_layouts/example.html +7 -0
  133. package/docs/_layouts/page.html +26 -0
  134. package/docs/documentation.css +3 -0
  135. package/docs/index.html +65 -0
  136. package/docs/jqtree.css +189 -0
  137. package/docs/package.json +22 -0
  138. package/docs/pnpm-lock.yaml +768 -0
  139. package/docs/postcss.config.js +7 -0
  140. package/docs/static/bower.json +8 -0
  141. package/docs/static/bower_components/fontawesome/css/all.min.css +5 -0
  142. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-brands-400.eot +0 -0
  143. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-brands-400.svg +774 -627
  144. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-brands-400.ttf +0 -0
  145. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.woff +0 -0
  146. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
  147. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-regular-400.eot +0 -0
  148. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-regular-400.svg +93 -95
  149. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-regular-400.ttf +0 -0
  150. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.woff +0 -0
  151. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
  152. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-solid-900.eot +0 -0
  153. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-solid-900.svg +1164 -1074
  154. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-solid-900.ttf +0 -0
  155. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.woff +0 -0
  156. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
  157. package/{static → docs/static}/bower_components/jquery/dist/jquery.js +118 -109
  158. package/docs/static/bower_components/jquery/dist/jquery.min.js +2 -0
  159. package/{static → docs/static}/bower_components/jquery-mockjax/dist/jquery.mockjax.js +15 -9
  160. package/docs/static/documentation.css +1313 -0
  161. package/docs/static/documentation.js +26 -0
  162. package/{static → docs/static}/example.css +14 -33
  163. package/{static → docs/static}/example.postcss +15 -32
  164. package/{static → docs/static}/example_data.js +33 -36
  165. package/{static → docs/static}/examples/autoescape.js +0 -0
  166. package/{static → docs/static}/examples/autoscroll.js +0 -0
  167. package/{static → docs/static}/examples/button-on-right.js +0 -0
  168. package/{static → docs/static}/examples/custom_html.js +5 -9
  169. package/{static → docs/static}/examples/drag-outside.js +0 -0
  170. package/{static → docs/static}/examples/drag_and_drop.js +0 -0
  171. package/docs/static/examples/filter.js +63 -0
  172. package/{static → docs/static}/examples/icon_buttons.js +0 -0
  173. package/{static → docs/static}/examples/load_json_data.js +0 -0
  174. package/{static → docs/static}/examples/load_json_data_from_server.js +0 -0
  175. package/{static → docs/static}/examples/load_on_demand.js +0 -0
  176. package/{static → docs/static}/examples/multiple_select.js +0 -0
  177. package/{static → docs/static}/examples/right-to-left.js +0 -0
  178. package/{static → docs/static}/examples/save_state.js +0 -0
  179. package/{static → docs/static}/monokai.css +0 -0
  180. package/{static → docs/static}/spinner.gif +0 -0
  181. package/docs/tailwind.config.js +16 -0
  182. package/docs/tree.jquery.js +21 -0
  183. package/jqtree.css +4 -1
  184. package/lib/dataLoader.js +146 -98
  185. package/lib/dragAndDropHandler.js +672 -470
  186. package/lib/elementsRenderer.js +282 -197
  187. package/lib/jqtreeOptions.js +1 -2
  188. package/lib/keyHandler.js +134 -87
  189. package/lib/mouse.widget.js +285 -184
  190. package/lib/node.js +691 -505
  191. package/lib/nodeElement.js +329 -205
  192. package/lib/playwright/coverage.js +140 -0
  193. package/lib/playwright/playwright.test.js +298 -179
  194. package/lib/playwright/testUtils.js +267 -0
  195. package/lib/saveStateHandler.js +311 -204
  196. package/lib/scrollHandler.js +293 -199
  197. package/lib/selectNodeHandler.js +140 -100
  198. package/lib/simple.widget.js +184 -109
  199. package/lib/test/global.d.js +3 -0
  200. package/lib/test/jqTree/create.test.js +44 -40
  201. package/lib/test/jqTree/events.test.js +186 -138
  202. package/lib/test/jqTree/keyboard.test.js +216 -199
  203. package/lib/test/jqTree/loadOnDemand.test.js +238 -157
  204. package/lib/test/jqTree/methods.test.js +1289 -1019
  205. package/lib/test/jqTree/options.test.js +491 -410
  206. package/lib/test/node.test.js +1036 -873
  207. package/lib/test/nodeUtil.test.js +21 -20
  208. package/lib/test/support/exampleData.js +35 -23
  209. package/lib/test/support/jqTreeMatchers.js +72 -54
  210. package/lib/test/support/matchers.d.js +1 -0
  211. package/lib/test/support/setupTests.js +9 -3
  212. package/lib/test/support/testUtil.js +35 -15
  213. package/lib/test/support/treeStructure.js +41 -32
  214. package/lib/test/util.test.js +21 -20
  215. package/lib/tree.jquery.d.js +1 -0
  216. package/lib/tree.jquery.js +1264 -886
  217. package/lib/types.js +1 -2
  218. package/lib/typings.d.js +2 -0
  219. package/lib/util.js +19 -8
  220. package/lib/version.js +8 -3
  221. package/package.json +54 -47
  222. package/src/dataLoader.ts +6 -6
  223. package/src/dragAndDropHandler.ts +8 -8
  224. package/src/elementsRenderer.ts +4 -0
  225. package/src/jqtreeOptions.ts +2 -2
  226. package/src/mouse.widget.ts +19 -15
  227. package/src/node.ts +27 -41
  228. package/src/nodeElement.ts +17 -9
  229. package/src/playwright/.eslintrc +5 -0
  230. package/src/playwright/coverage.ts +41 -0
  231. package/src/playwright/playwright.test.ts +75 -77
  232. package/src/playwright/playwright.test.ts-snapshots/with-dragAndDrop-moves-a-node-1-Chromium-darwin.png +0 -0
  233. package/src/playwright/playwright.test.ts-snapshots/with-dragAndDrop-moves-a-node-1-Chromium-linux.png +0 -0
  234. package/src/playwright/playwright.test.ts-snapshots/without-dragAndDrop-displays-a-tree-1-Chromium-darwin.png +0 -0
  235. package/src/playwright/playwright.test.ts-snapshots/without-dragAndDrop-displays-a-tree-1-Chromium-linux.png +0 -0
  236. package/src/playwright/playwright.test.ts-snapshots/without-dragAndDrop-selects-a-node-1-Chromium-darwin.png +0 -0
  237. package/src/playwright/playwright.test.ts-snapshots/without-dragAndDrop-selects-a-node-1-Chromium-linux.png +0 -0
  238. package/src/playwright/testUtils.ts +122 -0
  239. package/src/saveStateHandler.ts +11 -6
  240. package/src/selectNodeHandler.ts +1 -1
  241. package/src/simple.widget.ts +1 -1
  242. package/src/test/.eslintrc +14 -0
  243. package/src/test/jqTree/create.test.ts +0 -1
  244. package/src/test/jqTree/events.test.ts +10 -10
  245. package/src/test/jqTree/keyboard.test.ts +0 -1
  246. package/src/test/jqTree/loadOnDemand.test.ts +56 -11
  247. package/src/test/jqTree/methods.test.ts +72 -55
  248. package/src/test/jqTree/options.test.ts +30 -33
  249. package/src/test/node.test.ts +2 -2
  250. package/src/test/support/jqTreeMatchers.ts +8 -9
  251. package/src/test/support/matchers.d.ts +2 -4
  252. package/src/test/support/setupTests.ts +2 -1
  253. package/src/tree.jquery.d.ts +19 -13
  254. package/src/tree.jquery.ts +35 -28
  255. package/src/version.ts +1 -1
  256. package/tree.jquery.debug.js +4810 -3325
  257. package/tree.jquery.debug.js.map +1 -1
  258. package/tree.jquery.js +3 -3
  259. package/tree.jquery.js.map +1 -1
  260. package/tsconfig.json +1 -0
  261. package/_entries/61_prependnode.md +0 -21
  262. package/_examples/13_drag_outside.html +0 -25
  263. package/_layouts/base.html +0 -55
  264. package/_layouts/frontpage.html +0 -20
  265. package/_layouts/page.html +0 -7
  266. package/index.html +0 -48
  267. package/jest-browser.config.js +0 -18
  268. package/jest-playwright.config.js +0 -21
  269. package/jest.config.js +0 -8
  270. package/lib/playwright/testUtil.js +0 -223
  271. package/lib/playwright/visualRegression.js +0 -128
  272. package/production +0 -5
  273. package/src/playwright/screenshots/displays_a_tree_Desktop.png +0 -0
  274. package/src/playwright/screenshots/displays_a_tree_iPhone 6.png +0 -0
  275. package/src/playwright/screenshots/moves_a_node_Desktop.png +0 -0
  276. package/src/playwright/screenshots/moves_a_node_iPhone 6.png +0 -0
  277. package/src/playwright/screenshots/opens_a_node_Desktop.png +0 -0
  278. package/src/playwright/screenshots/opens_a_node_iPhone 6.png +0 -0
  279. package/src/playwright/screenshots/selects_a_node_Desktop.png +0 -0
  280. package/src/playwright/screenshots/selects_a_node_iPhone 6.png +0 -0
  281. package/src/playwright/testUtil.ts +0 -171
  282. package/src/playwright/visualRegression.ts +0 -88
  283. package/static/bower.json +0 -9
  284. package/static/bower_components/bootstrap/dist/css/bootstrap-theme.min.css +0 -6
  285. package/static/bower_components/bootstrap/dist/css/bootstrap.min.css +0 -6
  286. package/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  287. package/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +0 -288
  288. package/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  289. package/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  290. package/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
  291. package/static/bower_components/bootstrap/dist/js/bootstrap.min.js +0 -6
  292. package/static/bower_components/fontawesome/css/all.min.css +0 -5
  293. package/static/bower_components/fontawesome/webfonts/fa-brands-400.woff +0 -0
  294. package/static/bower_components/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
  295. package/static/bower_components/fontawesome/webfonts/fa-regular-400.woff +0 -0
  296. package/static/bower_components/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
  297. package/static/bower_components/fontawesome/webfonts/fa-solid-900.woff +0 -0
  298. package/static/bower_components/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
  299. package/static/bower_components/jquery/dist/jquery.min.js +0 -2
  300. package/static/documentation.css +0 -171
  301. package/static/documentation.js +0 -48
@@ -1,448 +1,529 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- exports.__esModule = true;
39
- var $ = require("jquery");
40
- var givens_1 = require("givens");
41
- var dom_1 = require("@testing-library/dom");
42
- var msw_1 = require("msw");
43
- var node_1 = require("msw/node");
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
5
+ var _givens = _interopRequireDefault(require("givens"));
6
+
7
+ var _dom = require("@testing-library/dom");
8
+
9
+ var _msw = require("msw");
10
+
11
+ var _node = require("msw/node");
12
+
44
13
  require("../../tree.jquery");
45
- var exampleData_1 = require("../support/exampleData");
46
- var testUtil_1 = require("../support/testUtil");
14
+
15
+ var _exampleData = _interopRequireDefault(require("../support/exampleData"));
16
+
17
+ var _testUtil = require("../support/testUtil");
18
+
19
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
20
+
21
+ 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 exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return generator._invoke = function (innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; }(innerFn, self, context), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
22
+
23
+ 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); } }
24
+
25
+ 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); }); }; }
26
+
47
27
  var context = describe;
28
+ var server = (0, _node.setupServer)();
29
+ beforeAll(function () {
30
+ return server.listen();
31
+ });
48
32
  beforeEach(function () {
49
- $("body").append('<div id="tree1"></div>');
33
+ $("body").append('<div id="tree1"></div>');
50
34
  });
51
35
  afterEach(function () {
52
- var $tree = $("#tree1");
53
- $tree.tree("destroy");
54
- $tree.remove();
55
- localStorage.clear();
36
+ server.resetHandlers();
37
+ var $tree = $("#tree1");
38
+ $tree.tree("destroy");
39
+ $tree.remove();
40
+ localStorage.clear();
41
+ });
42
+ afterAll(function () {
43
+ return server.close();
56
44
  });
57
45
  describe("autoEscape", function () {
58
- var given = givens_1["default"]();
59
- given("$tree", function () { return $("#tree1"); });
60
- beforeEach(function () {
61
- given.$tree.tree({
62
- autoEscape: given.autoEscape,
63
- data: ["<span>test</span>"]
64
- });
65
- });
66
- context("with autoEscape true", function () {
67
- given("autoEscape", function () { return true; });
68
- it("escapes the node name", function () {
69
- expect(given.$tree).toHaveTreeStructure([
70
- expect.objectContaining({
71
- name: "&lt;span&gt;test&lt;/span&gt;"
72
- }),
73
- ]);
74
- });
75
- });
76
- context("with autoEscape false", function () {
77
- given("autoEscape", function () { return false; });
78
- it("doesn't escape the node name", function () {
79
- expect(given.$tree).toHaveTreeStructure([
80
- expect.objectContaining({
81
- name: "<span>test</span>"
82
- }),
83
- ]);
84
- });
46
+ var given = (0, _givens["default"])();
47
+ given("$tree", function () {
48
+ return $("#tree1");
49
+ });
50
+ beforeEach(function () {
51
+ given.$tree.tree({
52
+ autoEscape: given.autoEscape,
53
+ data: ["<span>test</span>"]
54
+ });
55
+ });
56
+ context("with autoEscape true", function () {
57
+ given("autoEscape", function () {
58
+ return true;
59
+ });
60
+ it("escapes the node name", function () {
61
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
62
+ name: "&lt;span&gt;test&lt;/span&gt;"
63
+ })]);
64
+ });
65
+ });
66
+ context("with autoEscape false", function () {
67
+ given("autoEscape", function () {
68
+ return false;
85
69
  });
70
+ it("doesn't escape the node name", function () {
71
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
72
+ name: "<span>test</span>"
73
+ })]);
74
+ });
75
+ });
86
76
  });
87
77
  describe("autoOpen", function () {
88
- var given = givens_1["default"]();
89
- given("$tree", function () { return $("#tree1"); });
90
- beforeEach(function () {
91
- given.$tree.tree({
92
- autoOpen: given.autoOpen,
93
- data: exampleData_1["default"]
94
- });
95
- });
96
- context("with autoOpen false", function () {
97
- given("autoOpen", function () { return false; });
98
- it("doesn't open any nodes", function () {
99
- expect(given.$tree).toHaveTreeStructure([
100
- expect.objectContaining({ name: "node1", open: false }),
101
- expect.objectContaining({ name: "node2", open: false }),
102
- ]);
103
- });
104
- });
105
- context("with autoOpen true", function () {
106
- given("autoOpen", function () { return true; });
107
- it("opens all nodes", function () {
108
- expect(given.$tree).toHaveTreeStructure([
109
- expect.objectContaining({ name: "node1", open: true }),
110
- expect.objectContaining({
111
- name: "node2",
112
- open: true,
113
- children: [
114
- expect.objectContaining({ name: "node3", open: true }),
115
- ]
116
- }),
117
- ]);
118
- });
119
- });
120
- context("with autoOpen 0", function () {
121
- given("autoOpen", function () { return 0; });
122
- it("opens level 0", function () {
123
- expect(given.$tree).toHaveTreeStructure([
124
- expect.objectContaining({ name: "node1", open: true }),
125
- expect.objectContaining({
126
- name: "node2",
127
- open: true,
128
- children: [
129
- expect.objectContaining({ name: "node3", open: false }),
130
- ]
131
- }),
132
- ]);
133
- });
134
- });
135
- context("with autoOpen 1", function () {
136
- given("autoOpen", function () { return 1; });
137
- it("opens levels 1", function () {
138
- expect(given.$tree).toHaveTreeStructure([
139
- expect.objectContaining({ name: "node1", open: true }),
140
- expect.objectContaining({
141
- name: "node2",
142
- open: true,
143
- children: [
144
- expect.objectContaining({ name: "node3", open: true }),
145
- ]
146
- }),
147
- ]);
148
- });
149
- });
150
- context("with autoOpen '1'", function () {
151
- given("autoOpen", function () { return "1"; });
152
- it("opens levels 1", function () {
153
- expect(given.$tree).toHaveTreeStructure([
154
- expect.objectContaining({ name: "node1", open: true }),
155
- expect.objectContaining({
156
- name: "node2",
157
- open: true,
158
- children: [
159
- expect.objectContaining({ name: "node3", open: true }),
160
- ]
161
- }),
162
- ]);
163
- });
78
+ var given = (0, _givens["default"])();
79
+ given("$tree", function () {
80
+ return $("#tree1");
81
+ });
82
+ beforeEach(function () {
83
+ given.$tree.tree({
84
+ autoOpen: given.autoOpen,
85
+ data: _exampleData["default"]
86
+ });
87
+ });
88
+ context("with autoOpen false", function () {
89
+ given("autoOpen", function () {
90
+ return false;
91
+ });
92
+ it("doesn't open any nodes", function () {
93
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
94
+ name: "node1",
95
+ open: false
96
+ }), expect.objectContaining({
97
+ name: "node2",
98
+ open: false
99
+ })]);
100
+ });
101
+ });
102
+ context("with autoOpen true", function () {
103
+ given("autoOpen", function () {
104
+ return true;
105
+ });
106
+ it("opens all nodes", function () {
107
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
108
+ name: "node1",
109
+ open: true
110
+ }), expect.objectContaining({
111
+ name: "node2",
112
+ open: true,
113
+ children: [expect.objectContaining({
114
+ name: "node3",
115
+ open: true
116
+ })]
117
+ })]);
164
118
  });
119
+ });
120
+ context("with autoOpen 0", function () {
121
+ given("autoOpen", function () {
122
+ return 0;
123
+ });
124
+ it("opens level 0", function () {
125
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
126
+ name: "node1",
127
+ open: true
128
+ }), expect.objectContaining({
129
+ name: "node2",
130
+ open: true,
131
+ children: [expect.objectContaining({
132
+ name: "node3",
133
+ open: false
134
+ })]
135
+ })]);
136
+ });
137
+ });
138
+ context("with autoOpen 1", function () {
139
+ given("autoOpen", function () {
140
+ return 1;
141
+ });
142
+ it("opens levels 1", function () {
143
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
144
+ name: "node1",
145
+ open: true
146
+ }), expect.objectContaining({
147
+ name: "node2",
148
+ open: true,
149
+ children: [expect.objectContaining({
150
+ name: "node3",
151
+ open: true
152
+ })]
153
+ })]);
154
+ });
155
+ });
156
+ context("with autoOpen '1'", function () {
157
+ given("autoOpen", function () {
158
+ return "1";
159
+ });
160
+ it("opens levels 1", function () {
161
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
162
+ name: "node1",
163
+ open: true
164
+ }), expect.objectContaining({
165
+ name: "node2",
166
+ open: true,
167
+ children: [expect.objectContaining({
168
+ name: "node3",
169
+ open: true
170
+ })]
171
+ })]);
172
+ });
173
+ });
165
174
  });
166
175
  describe("dataUrl", function () {
167
- var exampleStructure = [
168
- expect.objectContaining({ name: "node1" }),
169
- expect.objectContaining({ name: "node2" }),
170
- ];
171
- var testCases = [
172
- {
173
- name: "string",
174
- dataUrl: "/tree/",
175
- expectedNode: "node1",
176
- expectedStructure: exampleStructure
177
- },
178
- {
179
- name: "object with url and headers",
180
- dataUrl: {
181
- url: "/tree/",
182
- headers: { node: "test-node" }
183
- },
184
- expectedNode: "test-node",
185
- expectedStructure: [expect.objectContaining({ name: "test-node" })]
186
- },
187
- {
188
- name: "function",
189
- dataUrl: function () { return ({ url: "/tree/" }); },
190
- expectedNode: "node1",
191
- expectedStructure: exampleStructure
192
- },
193
- ];
194
- var server = null;
195
- beforeAll(function () {
196
- server = node_1.setupServer(msw_1.rest.get("/tree/", function (request, response, ctx) {
197
- var nodeName = request.headers.get("node");
198
- var data = nodeName ? [nodeName] : exampleData_1["default"];
199
- return response(ctx.status(200), ctx.json(data));
200
- }));
201
- server.listen();
202
- });
203
- afterAll(function () {
204
- server === null || server === void 0 ? void 0 : server.close();
205
- });
206
- var given = givens_1["default"]();
207
- given("$tree", function () { return $("#tree1"); });
208
- testCases.forEach(function (_a) {
209
- var dataUrl = _a.dataUrl, expectedNode = _a.expectedNode, expectedStructure = _a.expectedStructure, name = _a.name;
210
- context("with " + name, function () {
211
- it("loads the data from the url", function () { return __awaiter(void 0, void 0, void 0, function () {
212
- return __generator(this, function (_a) {
213
- switch (_a.label) {
214
- case 0:
215
- given.$tree.tree({ dataUrl: dataUrl });
216
- return [4 /*yield*/, dom_1.screen.findByText(expectedNode)];
217
- case 1:
218
- _a.sent();
219
- expect(given.$tree).toHaveTreeStructure(expectedStructure);
220
- return [2 /*return*/];
221
- }
176
+ var exampleStructure = [expect.objectContaining({
177
+ name: "node1"
178
+ }), expect.objectContaining({
179
+ name: "node2"
180
+ })];
181
+ var testCases = [{
182
+ name: "string",
183
+ dataUrl: "/tree/",
184
+ expectedNode: "node1",
185
+ expectedStructure: exampleStructure
186
+ }, {
187
+ name: "object with url and headers",
188
+ dataUrl: {
189
+ url: "/tree/",
190
+ headers: {
191
+ node: "test-node"
192
+ }
193
+ },
194
+ expectedNode: "test-node",
195
+ expectedStructure: [expect.objectContaining({
196
+ name: "test-node"
197
+ })]
198
+ }, {
199
+ name: "function",
200
+ dataUrl: function dataUrl() {
201
+ return {
202
+ url: "/tree/"
203
+ };
204
+ },
205
+ expectedNode: "node1",
206
+ expectedStructure: exampleStructure
207
+ }];
208
+ beforeEach(function () {
209
+ server.use(_msw.rest.get("/tree/", function (request, response, ctx) {
210
+ var nodeName = request.headers.get("node");
211
+ var data = nodeName ? [nodeName] : _exampleData["default"];
212
+ return response(ctx.status(200), ctx.json(data));
213
+ }));
214
+ });
215
+ var given = (0, _givens["default"])();
216
+ given("$tree", function () {
217
+ return $("#tree1");
218
+ });
219
+ testCases.forEach(function (_ref) {
220
+ var dataUrl = _ref.dataUrl,
221
+ expectedNode = _ref.expectedNode,
222
+ expectedStructure = _ref.expectedStructure,
223
+ name = _ref.name;
224
+ context("with ".concat(name), function () {
225
+ it("loads the data from the url", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
226
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
227
+ while (1) {
228
+ switch (_context.prev = _context.next) {
229
+ case 0:
230
+ given.$tree.tree({
231
+ dataUrl: dataUrl
222
232
  });
223
- }); });
224
- });
233
+ _context.next = 3;
234
+ return _dom.screen.findByText(expectedNode);
235
+
236
+ case 3:
237
+ expect(given.$tree).toHaveTreeStructure(expectedStructure);
238
+
239
+ case 4:
240
+ case "end":
241
+ return _context.stop();
242
+ }
243
+ }
244
+ }, _callee);
245
+ })));
225
246
  });
247
+ });
226
248
  });
227
249
  describe("onCanSelectNode", function () {
228
- var given = givens_1["default"]();
229
- given("node1", function () { return given.$tree.tree("getNodeByNameMustExist", "node1"); });
230
- given("$tree", function () { return $("#tree1"); });
231
- beforeEach(function () {
232
- given.$tree.tree({
233
- data: exampleData_1["default"],
234
- onCanSelectNode: function (node) { return node.name !== "node1"; }
235
- });
236
- });
237
- it("doesn't select the node", function () {
238
- given.$tree.tree("selectNode", given.node1);
239
- expect(given.$tree.tree("getSelectedNode")).toBe(false);
250
+ var given = (0, _givens["default"])();
251
+ given("node1", function () {
252
+ return given.$tree.tree("getNodeByNameMustExist", "node1");
253
+ });
254
+ given("$tree", function () {
255
+ return $("#tree1");
256
+ });
257
+ beforeEach(function () {
258
+ given.$tree.tree({
259
+ data: _exampleData["default"],
260
+ onCanSelectNode: function onCanSelectNode(node) {
261
+ return node.name !== "node1";
262
+ }
240
263
  });
264
+ });
265
+ it("doesn't select the node", function () {
266
+ given.$tree.tree("selectNode", given.node1);
267
+ expect(given.$tree.tree("getSelectedNode")).toBe(false);
268
+ });
241
269
  });
242
270
  describe("onCreateLi", function () {
243
- var given = givens_1["default"]();
244
- given("$tree", function () { return $("#tree1"); });
245
- beforeEach(function () {
246
- given.$tree.tree({
247
- data: exampleData_1["default"],
248
- onCreateLi: function (node, el) {
249
- testUtil_1.titleSpan(el).text("_" + node.name + "_");
250
- }
251
- });
252
- });
253
- it("is called when creating a node", function () {
254
- expect(given.$tree).toHaveTreeStructure([
255
- expect.objectContaining({ name: "_node1_" }),
256
- expect.objectContaining({ name: "_node2_" }),
257
- ]);
271
+ var given = (0, _givens["default"])();
272
+ given("$tree", function () {
273
+ return $("#tree1");
274
+ });
275
+ beforeEach(function () {
276
+ given.$tree.tree({
277
+ data: _exampleData["default"],
278
+ onCreateLi: function onCreateLi(node, el) {
279
+ (0, _testUtil.titleSpan)(el).text("_".concat(node.name, "_"));
280
+ }
258
281
  });
282
+ });
283
+ it("is called when creating a node", function () {
284
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
285
+ name: "_node1_"
286
+ }), expect.objectContaining({
287
+ name: "_node2_"
288
+ })]);
289
+ });
259
290
  });
260
291
  describe("onGetStateFromStorage and onSetStateFromStorage", function () {
261
- var savedState = "";
262
- var setState = function (state) {
263
- savedState = state;
264
- };
265
- var getState = function () { return savedState; };
266
- var given = givens_1["default"]();
267
- given("initialState", function () { return ""; });
268
- given("node1", function () { return given.$tree.tree("getNodeByNameMustExist", "node1"); });
269
- given("$tree", function () { return $("#tree1"); });
292
+ var savedState = "";
293
+
294
+ var setState = function setState(state) {
295
+ savedState = state;
296
+ };
297
+
298
+ var getState = function getState() {
299
+ return savedState;
300
+ };
301
+
302
+ var given = (0, _givens["default"])();
303
+ given("initialState", function () {
304
+ return "";
305
+ });
306
+ given("node1", function () {
307
+ return given.$tree.tree("getNodeByNameMustExist", "node1");
308
+ });
309
+ given("$tree", function () {
310
+ return $("#tree1");
311
+ });
312
+ beforeEach(function () {
313
+ savedState = given.initialState;
314
+ given.$tree.tree({
315
+ autoOpen: false,
316
+ data: _exampleData["default"],
317
+ onGetStateFromStorage: getState,
318
+ onSetStateFromStorage: setState,
319
+ saveState: true
320
+ });
321
+ });
322
+ context("with an open and a selected node", function () {
270
323
  beforeEach(function () {
271
- savedState = given.initialState;
272
- given.$tree.tree({
273
- autoOpen: false,
274
- data: exampleData_1["default"],
275
- onGetStateFromStorage: getState,
276
- onSetStateFromStorage: setState,
277
- saveState: true
278
- });
279
- });
280
- context("with an open and a selected node", function () {
281
- beforeEach(function () {
282
- given.$tree.tree("selectNode", given.node1);
283
- given.$tree.tree("openNode", given.node1);
284
- });
285
- it("saves the state", function () {
286
- expect(JSON.parse(savedState)).toEqual({
287
- open_nodes: [123],
288
- selected_node: [123]
289
- });
290
- });
291
- });
292
- context("with a saved state", function () {
293
- given("initialState", function () {
294
- return JSON.stringify({
295
- open_nodes: [123],
296
- selected_node: [123]
297
- });
298
- });
299
- it("restores the state", function () {
300
- expect(given.$tree).toHaveTreeStructure([
301
- expect.objectContaining({
302
- name: "node1",
303
- open: true
304
- }),
305
- expect.objectContaining({ name: "node2", open: false }),
306
- ]);
307
- expect(given.node1.element).toBeSelected();
308
- });
324
+ given.$tree.tree("selectNode", given.node1);
325
+ given.$tree.tree("openNode", given.node1);
326
+ });
327
+ it("saves the state", function () {
328
+ expect(JSON.parse(savedState)).toEqual({
329
+ open_nodes: [123],
330
+ selected_node: [123]
331
+ });
332
+ });
333
+ });
334
+ context("with a saved state", function () {
335
+ given("initialState", function () {
336
+ return JSON.stringify({
337
+ open_nodes: [123],
338
+ selected_node: [123]
339
+ });
340
+ });
341
+ it("restores the state", function () {
342
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
343
+ name: "node1",
344
+ open: true
345
+ }), expect.objectContaining({
346
+ name: "node2",
347
+ open: false
348
+ })]);
349
+ expect(given.node1.element).toBeSelected();
309
350
  });
351
+ });
310
352
  });
311
353
  describe("onLoadFailed", function () {
312
- var given = givens_1["default"]();
313
- given("$tree", function () { return $("#tree1"); });
314
- context("when the loading fails", function () {
315
- var server = null;
316
- beforeAll(function () {
317
- server = node_1.setupServer(msw_1.rest.get("/tree/", function (_request, response, ctx) {
318
- return response(ctx.status(500), ctx.body("Internal server error"));
319
- }));
320
- server.listen();
321
- });
322
- afterAll(function () {
323
- server === null || server === void 0 ? void 0 : server.close();
324
- });
325
- it("calls onLoadFailed", function () {
326
- return new Promise(function (done) {
327
- given.$tree.tree({
328
- dataUrl: "/tree/",
329
- onLoadFailed: function (jqXHR) {
330
- expect(jqXHR.status).toBe(500);
331
- done();
332
- }
333
- });
334
- });
335
- });
354
+ var given = (0, _givens["default"])();
355
+ given("$tree", function () {
356
+ return $("#tree1");
357
+ });
358
+ context("when the loading fails", function () {
359
+ beforeEach(function () {
360
+ server.use(_msw.rest.get("/tree/", function (_request, response, ctx) {
361
+ return response(ctx.status(500), ctx.body("Internal server error"));
362
+ }));
336
363
  });
364
+ it("calls onLoadFailed", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
365
+ var onLoadFailed;
366
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
367
+ while (1) {
368
+ switch (_context2.prev = _context2.next) {
369
+ case 0:
370
+ onLoadFailed = jest.fn();
371
+ given.$tree.tree({
372
+ dataUrl: "/tree/",
373
+ onLoadFailed: onLoadFailed
374
+ });
375
+ _context2.next = 4;
376
+ return (0, _dom.waitFor)(function () {
377
+ expect(onLoadFailed).toHaveBeenCalledWith(expect.objectContaining({
378
+ status: 500
379
+ }));
380
+ });
381
+
382
+ case 4:
383
+ case "end":
384
+ return _context2.stop();
385
+ }
386
+ }
387
+ }, _callee2);
388
+ })));
389
+ });
337
390
  });
338
391
  describe("rtl", function () {
339
- var given = givens_1["default"]();
340
- given("node1", function () { return given.$tree.tree("getNodeByNameMustExist", "node1"); });
341
- given("$tree", function () { return $("#tree1"); });
342
- context("with the rtl option is true", function () {
343
- beforeEach(function () {
344
- given.$tree.tree({ data: exampleData_1["default"], rtl: true });
345
- });
346
- it("has a different closed icon", function () {
347
- expect(testUtil_1.togglerLink(given.node1.element).text()).toEqual("◀");
348
- });
349
- });
350
- context("with the rtl data option", function () {
351
- beforeEach(function () {
352
- given.$tree.attr("data-rtl", "true");
353
- given.$tree.tree({ data: exampleData_1["default"] });
354
- });
355
- it("has a different closed icon", function () {
356
- expect(testUtil_1.togglerLink(given.node1.element).text()).toEqual("◀");
357
- });
392
+ var given = (0, _givens["default"])();
393
+ given("node1", function () {
394
+ return given.$tree.tree("getNodeByNameMustExist", "node1");
395
+ });
396
+ given("$tree", function () {
397
+ return $("#tree1");
398
+ });
399
+ context("with the rtl option is true", function () {
400
+ beforeEach(function () {
401
+ given.$tree.tree({
402
+ data: _exampleData["default"],
403
+ rtl: true
404
+ });
405
+ });
406
+ it("has a different closed icon", function () {
407
+ expect((0, _testUtil.togglerLink)(given.node1.element).text()).toBe("◀");
408
+ });
409
+ });
410
+ context("with the rtl data option", function () {
411
+ beforeEach(function () {
412
+ given.$tree.attr("data-rtl", "true");
413
+ given.$tree.tree({
414
+ data: _exampleData["default"]
415
+ });
416
+ });
417
+ it("has a different closed icon", function () {
418
+ expect((0, _testUtil.togglerLink)(given.node1.element).text()).toBe("◀");
358
419
  });
420
+ });
359
421
  });
360
422
  describe("saveState", function () {
361
- var given = givens_1["default"]();
362
- given("node1", function () { return given.$tree.tree("getNodeByNameMustExist", "node1"); });
363
- given("$tree", function () { return $("#tree1"); });
364
- context("when a node is open and selected", function () {
365
- beforeEach(function () {
366
- given.$tree.tree({
367
- animationSpeed: 0,
368
- autoOpen: false,
369
- data: exampleData_1["default"],
370
- saveState: given.saveState
371
- });
372
- given.$tree.tree("selectNode", given.node1);
373
- given.$tree.tree("openNode", given.node1);
374
- });
375
- context("when saveState is true", function () {
376
- given("saveState", function () { return true; });
377
- it("saves the state to local storage", function () {
378
- expect(localStorage.getItem("tree")).toEqual('{"open_nodes":[123],"selected_node":[123]}');
379
- });
380
- });
381
- context("when saveState is a string", function () {
382
- given("saveState", function () { return "my-state"; });
383
- it("uses the string as a key", function () {
384
- expect(localStorage.getItem("my-state")).toEqual('{"open_nodes":[123],"selected_node":[123]}');
385
- });
386
- });
387
- context("when saveState is false", function () {
388
- given("saveState", function () { return false; });
389
- it("doesn't save to local storage", function () {
390
- expect(localStorage.getItem("tree")).toBeNull();
391
- });
392
- });
393
- });
394
- context("when there is a state in the local storage", function () {
395
- given("saveState", function () { return true; });
396
- beforeEach(function () {
397
- localStorage.setItem("tree", '{"open_nodes":[123],"selected_node":[123]}');
398
- given.$tree.tree({
399
- animationSpeed: 0,
400
- autoOpen: false,
401
- data: exampleData_1["default"],
402
- saveState: given.saveState
403
- });
404
- });
405
- it("restores the state", function () {
406
- expect(given.$tree).toHaveTreeStructure([
407
- expect.objectContaining({
408
- name: "node1",
409
- open: true,
410
- selected: true
411
- }),
412
- expect.objectContaining({
413
- name: "node2",
414
- open: false,
415
- selected: false
416
- }),
417
- ]);
418
- });
423
+ var given = (0, _givens["default"])();
424
+ given("node1", function () {
425
+ return given.$tree.tree("getNodeByNameMustExist", "node1");
426
+ });
427
+ given("$tree", function () {
428
+ return $("#tree1");
429
+ });
430
+ context("when a node is open and selected", function () {
431
+ beforeEach(function () {
432
+ given.$tree.tree({
433
+ animationSpeed: 0,
434
+ autoOpen: false,
435
+ data: _exampleData["default"],
436
+ saveState: given.saveState
437
+ });
438
+ given.$tree.tree("selectNode", given.node1);
439
+ given.$tree.tree("openNode", given.node1);
419
440
  });
441
+ context("when saveState is true", function () {
442
+ given("saveState", function () {
443
+ return true;
444
+ });
445
+ it("saves the state to local storage", function () {
446
+ expect(localStorage.getItem("tree")).toBe('{"open_nodes":[123],"selected_node":[123]}');
447
+ });
448
+ });
449
+ context("when saveState is a string", function () {
450
+ given("saveState", function () {
451
+ return "my-state";
452
+ });
453
+ it("uses the string as a key", function () {
454
+ expect(localStorage.getItem("my-state")).toBe('{"open_nodes":[123],"selected_node":[123]}');
455
+ });
456
+ });
457
+ context("when saveState is false", function () {
458
+ given("saveState", function () {
459
+ return false;
460
+ });
461
+ it("doesn't save to local storage", function () {
462
+ expect(localStorage.getItem("tree")).toBeNull();
463
+ });
464
+ });
465
+ });
466
+ context("when there is a state in the local storage", function () {
467
+ given("saveState", function () {
468
+ return true;
469
+ });
470
+ beforeEach(function () {
471
+ localStorage.setItem("tree", '{"open_nodes":[123],"selected_node":[123]}');
472
+ given.$tree.tree({
473
+ animationSpeed: 0,
474
+ autoOpen: false,
475
+ data: _exampleData["default"],
476
+ saveState: given.saveState
477
+ });
478
+ });
479
+ it("restores the state", function () {
480
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
481
+ name: "node1",
482
+ open: true,
483
+ selected: true
484
+ }), expect.objectContaining({
485
+ name: "node2",
486
+ open: false,
487
+ selected: false
488
+ })]);
489
+ });
490
+ });
420
491
  });
421
492
  describe("showEmptyFolder", function () {
422
- context("when children attribute is an empty array", function () {
423
- var given = givens_1["default"]();
424
- given("$tree", function () { return $("#tree1"); });
425
- beforeEach(function () {
426
- given.$tree.tree({
427
- data: [{ name: "parent1", children: [] }],
428
- showEmptyFolder: given.showEmptyFolder
429
- });
430
- });
431
- context("with showEmptyFolder false", function () {
432
- given("showEmptyFolder", function () { return false; });
433
- it("creates a child node", function () {
434
- expect(given.$tree).toHaveTreeStructure([
435
- expect.objectContaining({ name: "parent1" }),
436
- ]);
437
- });
438
- });
439
- context("with showEmptyFolder true", function () {
440
- given("showEmptyFolder", function () { return true; });
441
- it("creates a folder", function () {
442
- expect(given.$tree).toHaveTreeStructure([
443
- expect.objectContaining({ name: "parent1", children: [] }),
444
- ]);
445
- });
446
- });
493
+ context("when children attribute is an empty array", function () {
494
+ var given = (0, _givens["default"])();
495
+ given("$tree", function () {
496
+ return $("#tree1");
447
497
  });
448
- });
498
+ beforeEach(function () {
499
+ given.$tree.tree({
500
+ data: [{
501
+ name: "parent1",
502
+ children: []
503
+ }],
504
+ showEmptyFolder: given.showEmptyFolder
505
+ });
506
+ });
507
+ context("with showEmptyFolder false", function () {
508
+ given("showEmptyFolder", function () {
509
+ return false;
510
+ });
511
+ it("creates a child node", function () {
512
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
513
+ name: "parent1"
514
+ })]);
515
+ });
516
+ });
517
+ context("with showEmptyFolder true", function () {
518
+ given("showEmptyFolder", function () {
519
+ return true;
520
+ });
521
+ it("creates a folder", function () {
522
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
523
+ name: "parent1",
524
+ children: []
525
+ })]);
526
+ });
527
+ });
528
+ });
529
+ });