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,220 +1,327 @@
1
1
  "use strict";
2
- exports.__esModule = true;
3
- var util_1 = require("./util");
4
- var SaveStateHandler = /** @class */ (function () {
5
- function SaveStateHandler(treeWidget) {
6
- this.treeWidget = treeWidget;
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _util = require("./util");
9
+
10
+ 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; } } }; }
11
+
12
+ 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); }
13
+
14
+ 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; }
15
+
16
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
17
+
18
+ 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); } }
19
+
20
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
21
+
22
+ 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; }
23
+
24
+ var SaveStateHandler = /*#__PURE__*/function () {
25
+ function SaveStateHandler(treeWidget) {
26
+ _classCallCheck(this, SaveStateHandler);
27
+
28
+ _defineProperty(this, "treeWidget", void 0);
29
+
30
+ _defineProperty(this, "_supportsLocalStorage", void 0);
31
+
32
+ this.treeWidget = treeWidget;
33
+ }
34
+
35
+ _createClass(SaveStateHandler, [{
36
+ key: "saveState",
37
+ value: function saveState() {
38
+ var state = JSON.stringify(this.getState());
39
+
40
+ if (this.treeWidget.options.onSetStateFromStorage) {
41
+ this.treeWidget.options.onSetStateFromStorage(state);
42
+ } else if (this.supportsLocalStorage()) {
43
+ localStorage.setItem(this.getKeyName(), state);
44
+ }
45
+ }
46
+ }, {
47
+ key: "getStateFromStorage",
48
+ value: function getStateFromStorage() {
49
+ var jsonData = this.loadFromStorage();
50
+
51
+ if (jsonData) {
52
+ return this.parseState(jsonData);
53
+ } else {
54
+ return null;
55
+ }
56
+ }
57
+ }, {
58
+ key: "getState",
59
+ value: function getState() {
60
+ var _this = this;
61
+
62
+ var getOpenNodeIds = function getOpenNodeIds() {
63
+ var openNodes = [];
64
+
65
+ _this.treeWidget.tree.iterate(function (node) {
66
+ if (node.is_open && node.id && node.hasChildren()) {
67
+ openNodes.push(node.id);
68
+ }
69
+
70
+ return true;
71
+ });
72
+
73
+ return openNodes;
74
+ };
75
+
76
+ var getSelectedNodeIds = function getSelectedNodeIds() {
77
+ var selectedNodeIds = [];
78
+
79
+ _this.treeWidget.getSelectedNodes().forEach(function (node) {
80
+ if (node.id != null) {
81
+ selectedNodeIds.push(node.id);
82
+ }
83
+ });
84
+
85
+ return selectedNodeIds;
86
+ };
87
+
88
+ return {
89
+ open_nodes: getOpenNodeIds(),
90
+ selected_node: getSelectedNodeIds()
91
+ };
7
92
  }
8
- SaveStateHandler.prototype.saveState = function () {
9
- var state = JSON.stringify(this.getState());
10
- if (this.treeWidget.options.onSetStateFromStorage) {
11
- this.treeWidget.options.onSetStateFromStorage(state);
12
- }
13
- else if (this.supportsLocalStorage()) {
14
- localStorage.setItem(this.getKeyName(), state);
15
- }
16
- };
17
- SaveStateHandler.prototype.getStateFromStorage = function () {
18
- var jsonData = this.loadFromStorage();
19
- if (jsonData) {
20
- return this.parseState(jsonData);
21
- }
22
- else {
23
- return null;
24
- }
25
- };
26
- SaveStateHandler.prototype.getState = function () {
27
- var _this = this;
28
- var getOpenNodeIds = function () {
29
- var openNodes = [];
30
- _this.treeWidget.tree.iterate(function (node) {
31
- if (node.is_open && node.id && node.hasChildren()) {
32
- openNodes.push(node.id);
33
- }
34
- return true;
35
- });
36
- return openNodes;
37
- };
38
- var getSelectedNodeIds = function () {
39
- var selectedNodeIds = [];
40
- _this.treeWidget.getSelectedNodes().forEach(function (node) {
41
- if (node.id != null) {
42
- selectedNodeIds.push(node.id);
43
- }
44
- });
45
- return selectedNodeIds;
46
- };
47
- return {
48
- open_nodes: getOpenNodeIds(),
49
- selected_node: getSelectedNodeIds()
50
- };
51
- };
52
93
  /*
53
94
  Set initial state
54
95
  Don't handle nodes that are loaded on demand
55
-
56
- result: must load on demand
96
+ result: must load on demand
57
97
  */
58
- SaveStateHandler.prototype.setInitialState = function (state) {
59
- if (!state) {
60
- return false;
61
- }
62
- else {
63
- var mustLoadOnDemand = false;
64
- if (state.open_nodes) {
65
- mustLoadOnDemand = this.openInitialNodes(state.open_nodes);
66
- }
67
- if (state.selected_node) {
68
- this.resetSelection();
69
- this.selectInitialNodes(state.selected_node);
70
- }
71
- return mustLoadOnDemand;
72
- }
73
- };
74
- SaveStateHandler.prototype.setInitialStateOnDemand = function (state, cbFinished) {
75
- if (state) {
76
- this.doSetInitialStateOnDemand(state.open_nodes, state.selected_node, cbFinished);
77
- }
78
- else {
79
- cbFinished();
80
- }
81
- };
82
- SaveStateHandler.prototype.getNodeIdToBeSelected = function () {
83
- var state = this.getStateFromStorage();
84
- if (state && state.selected_node) {
85
- return state.selected_node[0];
86
- }
87
- else {
88
- return null;
89
- }
90
- };
91
- SaveStateHandler.prototype.parseState = function (jsonData) {
92
- var state = JSON.parse(jsonData);
93
- // Check if selected_node is an int (instead of an array)
94
- if (state && state.selected_node && util_1.isInt(state.selected_node)) {
95
- // Convert to array
96
- state.selected_node = [state.selected_node];
97
- }
98
- return state;
99
- };
100
- SaveStateHandler.prototype.loadFromStorage = function () {
101
- if (this.treeWidget.options.onGetStateFromStorage) {
102
- return this.treeWidget.options.onGetStateFromStorage();
103
- }
104
- else if (this.supportsLocalStorage()) {
105
- return localStorage.getItem(this.getKeyName());
106
- }
107
- else {
108
- return null;
109
- }
110
- };
111
- SaveStateHandler.prototype.openInitialNodes = function (nodeIds) {
98
+
99
+ }, {
100
+ key: "setInitialState",
101
+ value: function setInitialState(state) {
102
+ if (!state) {
103
+ return false;
104
+ } else {
112
105
  var mustLoadOnDemand = false;
113
- for (var _i = 0, nodeIds_1 = nodeIds; _i < nodeIds_1.length; _i++) {
114
- var nodeDd = nodeIds_1[_i];
115
- var node = this.treeWidget.getNodeById(nodeDd);
116
- if (node) {
117
- if (!node.load_on_demand) {
118
- node.is_open = true;
119
- }
120
- else {
121
- mustLoadOnDemand = true;
122
- }
123
- }
106
+
107
+ if (state.open_nodes) {
108
+ mustLoadOnDemand = this.openInitialNodes(state.open_nodes);
124
109
  }
110
+
111
+ if (state.selected_node) {
112
+ this.resetSelection();
113
+ this.selectInitialNodes(state.selected_node);
114
+ }
115
+
125
116
  return mustLoadOnDemand;
126
- };
127
- SaveStateHandler.prototype.selectInitialNodes = function (nodeIds) {
128
- var selectCount = 0;
129
- for (var _i = 0, nodeIds_2 = nodeIds; _i < nodeIds_2.length; _i++) {
130
- var nodeId = nodeIds_2[_i];
131
- var node = this.treeWidget.getNodeById(nodeId);
132
- if (node) {
133
- selectCount += 1;
134
- this.treeWidget.selectNodeHandler.addToSelection(node);
117
+ }
118
+ }
119
+ }, {
120
+ key: "setInitialStateOnDemand",
121
+ value: function setInitialStateOnDemand(state, cbFinished) {
122
+ if (state) {
123
+ this.doSetInitialStateOnDemand(state.open_nodes, state.selected_node, cbFinished);
124
+ } else {
125
+ cbFinished();
126
+ }
127
+ }
128
+ }, {
129
+ key: "getNodeIdToBeSelected",
130
+ value: function getNodeIdToBeSelected() {
131
+ var state = this.getStateFromStorage();
132
+
133
+ if (state && state.selected_node) {
134
+ return state.selected_node[0];
135
+ } else {
136
+ return null;
137
+ }
138
+ }
139
+ }, {
140
+ key: "parseState",
141
+ value: function parseState(jsonData) {
142
+ var state = JSON.parse(jsonData); // Check if selected_node is an int (instead of an array)
143
+
144
+ if (state && state.selected_node && (0, _util.isInt)(state.selected_node)) {
145
+ // Convert to array
146
+ state.selected_node = [state.selected_node];
147
+ }
148
+
149
+ return state;
150
+ }
151
+ }, {
152
+ key: "loadFromStorage",
153
+ value: function loadFromStorage() {
154
+ if (this.treeWidget.options.onGetStateFromStorage) {
155
+ return this.treeWidget.options.onGetStateFromStorage();
156
+ } else if (this.supportsLocalStorage()) {
157
+ return localStorage.getItem(this.getKeyName());
158
+ } else {
159
+ return null;
160
+ }
161
+ }
162
+ }, {
163
+ key: "openInitialNodes",
164
+ value: function openInitialNodes(nodeIds) {
165
+ var mustLoadOnDemand = false;
166
+
167
+ var _iterator = _createForOfIteratorHelper(nodeIds),
168
+ _step;
169
+
170
+ try {
171
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
172
+ var nodeId = _step.value;
173
+ var node = this.treeWidget.getNodeById(nodeId);
174
+
175
+ if (node) {
176
+ if (!node.load_on_demand) {
177
+ node.is_open = true;
178
+ } else {
179
+ mustLoadOnDemand = true;
135
180
  }
181
+ }
136
182
  }
137
- return selectCount !== 0;
138
- };
139
- SaveStateHandler.prototype.resetSelection = function () {
140
- var selectNodeHandler = this.treeWidget.selectNodeHandler;
141
- var selectedNodes = selectNodeHandler.getSelectedNodes();
142
- selectedNodes.forEach(function (node) {
143
- selectNodeHandler.removeFromSelection(node);
144
- });
145
- };
146
- SaveStateHandler.prototype.doSetInitialStateOnDemand = function (nodeIdsParam, selectedNodes, cbFinished) {
147
- var _this = this;
148
- var loadingCount = 0;
149
- var nodeIds = nodeIdsParam;
150
- var openNodes = function () {
151
- var newNodesIds = [];
152
- for (var _i = 0, nodeIds_3 = nodeIds; _i < nodeIds_3.length; _i++) {
153
- var nodeId = nodeIds_3[_i];
154
- var node = _this.treeWidget.getNodeById(nodeId);
155
- if (!node) {
156
- newNodesIds.push(nodeId);
157
- }
158
- else {
159
- if (!node.is_loading) {
160
- if (node.load_on_demand) {
161
- loadAndOpenNode(node);
162
- }
163
- else {
164
- _this.treeWidget._openNode(node, false, null);
165
- }
166
- }
183
+ } catch (err) {
184
+ _iterator.e(err);
185
+ } finally {
186
+ _iterator.f();
187
+ }
188
+
189
+ return mustLoadOnDemand;
190
+ }
191
+ }, {
192
+ key: "selectInitialNodes",
193
+ value: function selectInitialNodes(nodeIds) {
194
+ var selectCount = 0;
195
+
196
+ var _iterator2 = _createForOfIteratorHelper(nodeIds),
197
+ _step2;
198
+
199
+ try {
200
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
201
+ var nodeId = _step2.value;
202
+ var node = this.treeWidget.getNodeById(nodeId);
203
+
204
+ if (node) {
205
+ selectCount += 1;
206
+ this.treeWidget.selectNodeHandler.addToSelection(node);
207
+ }
208
+ }
209
+ } catch (err) {
210
+ _iterator2.e(err);
211
+ } finally {
212
+ _iterator2.f();
213
+ }
214
+
215
+ return selectCount !== 0;
216
+ }
217
+ }, {
218
+ key: "resetSelection",
219
+ value: function resetSelection() {
220
+ var selectNodeHandler = this.treeWidget.selectNodeHandler;
221
+ var selectedNodes = selectNodeHandler.getSelectedNodes();
222
+ selectedNodes.forEach(function (node) {
223
+ selectNodeHandler.removeFromSelection(node);
224
+ });
225
+ }
226
+ }, {
227
+ key: "doSetInitialStateOnDemand",
228
+ value: function doSetInitialStateOnDemand(nodeIdsParam, selectedNodes, cbFinished) {
229
+ var _this2 = this;
230
+
231
+ var loadingCount = 0;
232
+ var nodeIds = nodeIdsParam;
233
+
234
+ var openNodes = function openNodes() {
235
+ var newNodesIds = [];
236
+
237
+ var _iterator3 = _createForOfIteratorHelper(nodeIds),
238
+ _step3;
239
+
240
+ try {
241
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
242
+ var nodeId = _step3.value;
243
+
244
+ var node = _this2.treeWidget.getNodeById(nodeId);
245
+
246
+ if (!node) {
247
+ newNodesIds.push(nodeId);
248
+ } else {
249
+ if (!node.is_loading) {
250
+ if (node.load_on_demand) {
251
+ loadAndOpenNode(node);
252
+ } else {
253
+ _this2.treeWidget._openNode(node, false, null);
167
254
  }
255
+ }
168
256
  }
169
- nodeIds = newNodesIds;
170
- if (_this.selectInitialNodes(selectedNodes)) {
171
- _this.treeWidget._refreshElements(null);
172
- }
173
- if (loadingCount === 0) {
174
- cbFinished();
175
- }
176
- };
177
- var loadAndOpenNode = function (node) {
178
- loadingCount += 1;
179
- _this.treeWidget._openNode(node, false, function () {
180
- loadingCount -= 1;
181
- openNodes();
182
- });
183
- };
184
- openNodes();
185
- };
186
- SaveStateHandler.prototype.getKeyName = function () {
187
- if (typeof this.treeWidget.options.saveState === "string") {
188
- return this.treeWidget.options.saveState;
257
+ }
258
+ } catch (err) {
259
+ _iterator3.e(err);
260
+ } finally {
261
+ _iterator3.f();
189
262
  }
190
- else {
191
- return "tree";
263
+
264
+ nodeIds = newNodesIds;
265
+
266
+ if (_this2.selectInitialNodes(selectedNodes)) {
267
+ _this2.treeWidget._refreshElements(null);
192
268
  }
193
- };
194
- SaveStateHandler.prototype.supportsLocalStorage = function () {
195
- var testSupport = function () {
196
- // Is local storage supported?
197
- if (localStorage == null) {
198
- return false;
199
- }
200
- else {
201
- // Check if it's possible to store an item. Safari does not allow this in private browsing mode.
202
- try {
203
- var key = "_storage_test";
204
- sessionStorage.setItem(key, "value");
205
- sessionStorage.removeItem(key);
206
- }
207
- catch (error) {
208
- return false;
209
- }
210
- return true;
211
- }
212
- };
213
- if (this._supportsLocalStorage == null) {
214
- this._supportsLocalStorage = testSupport();
269
+
270
+ if (loadingCount === 0) {
271
+ cbFinished();
272
+ }
273
+ };
274
+
275
+ var loadAndOpenNode = function loadAndOpenNode(node) {
276
+ loadingCount += 1;
277
+
278
+ _this2.treeWidget._openNode(node, false, function () {
279
+ loadingCount -= 1;
280
+ openNodes();
281
+ });
282
+ };
283
+
284
+ openNodes();
285
+ }
286
+ }, {
287
+ key: "getKeyName",
288
+ value: function getKeyName() {
289
+ if (typeof this.treeWidget.options.saveState === "string") {
290
+ return this.treeWidget.options.saveState;
291
+ } else {
292
+ return "tree";
293
+ }
294
+ }
295
+ }, {
296
+ key: "supportsLocalStorage",
297
+ value: function supportsLocalStorage() {
298
+ var testSupport = function testSupport() {
299
+ // Is local storage supported?
300
+ if (localStorage == null) {
301
+ return false;
302
+ } else {
303
+ // Check if it's possible to store an item. Safari does not allow this in private browsing mode.
304
+ try {
305
+ var key = "_storage_test";
306
+ sessionStorage.setItem(key, "value");
307
+ sessionStorage.removeItem(key);
308
+ } catch (error) {
309
+ return false;
310
+ }
311
+
312
+ return true;
215
313
  }
216
- return this._supportsLocalStorage;
217
- };
218
- return SaveStateHandler;
219
- }());
220
- exports["default"] = SaveStateHandler;
314
+ };
315
+
316
+ if (this._supportsLocalStorage == null) {
317
+ this._supportsLocalStorage = testSupport();
318
+ }
319
+
320
+ return this._supportsLocalStorage;
321
+ }
322
+ }]);
323
+
324
+ return SaveStateHandler;
325
+ }();
326
+
327
+ exports["default"] = SaveStateHandler;