@jaisocx/tree 1.5.36 → 2.2.18

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 (252) hide show
  1. package/{assets/css/tree.css → MediaAndStyles/Tree_main.css} +43 -39
  2. package/MediaAndStyles/Tree_main_Relative.css +17 -0
  3. package/MediaAndStyles/Tree_main_Webpack.css +18 -0
  4. package/MediaAndStyles/Tree_main_Webpack_minimal.css +17 -0
  5. package/MediaAndStyles/Tree_main_resolved.css +1005 -0
  6. package/MediaAndStyles/Tree_main_resolved_minimal.css +972 -0
  7. package/{assets/css → MediaAndStyles/presets}/tree-animated-expand-button.css +2 -3
  8. package/MediaAndStyles/themes/theme-funny/tree_theme-funny.css +29 -0
  9. package/MediaAndStyles/themes/theme-funny/tree_theme-funny_fonts.css +7 -0
  10. package/MediaAndStyles/themes/theme_base/Tree_theme_base_Imports_fonts_cdn.css +35 -0
  11. package/MediaAndStyles/themes/theme_base/Tree_theme_base_Imports_mini_images_Absolute_preview.css +41 -0
  12. package/MediaAndStyles/themes/theme_base/Tree_theme_base_Imports_mini_images_Relative.css +41 -0
  13. package/{assets/themes/theme-base/theme-base.css → MediaAndStyles/themes/theme_base/Tree_theme_base_main.css} +2 -2
  14. package/MediaAndStyles/themes/theme_base/Tree_theme_base_main_Relative.css +13 -0
  15. package/MediaAndStyles/themes/theme_base/Tree_theme_base_main_Webpack.css +12 -0
  16. package/MediaAndStyles/themes/theme_base/Tree_theme_base_main_Webpack_minimal.css +12 -0
  17. package/MediaAndStyles/themes/theme_base/mini_images/home_tree_mode_conf/catalog.png +0 -0
  18. package/MediaAndStyles/themes/theme_base/mini_images/home_tree_mode_conf/github.png +0 -0
  19. package/MediaAndStyles/themes/theme_base/mini_images/home_tree_mode_conf/google.png +0 -0
  20. package/MediaAndStyles/themes/theme_base/mini_images/home_tree_mode_conf/house.png +0 -0
  21. package/MediaAndStyles/themes/theme_base/mini_images/home_tree_mode_conf/html-intence.png +0 -0
  22. package/MediaAndStyles/themes/theme_base/mini_images/home_tree_mode_conf/html.png +0 -0
  23. package/MediaAndStyles/themes/theme_base/mini_images/home_tree_mode_conf/money-transfer.png +0 -0
  24. package/MediaAndStyles/themes/theme_base/mini_images/home_tree_mode_conf/track.png +0 -0
  25. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_d05_very_small_xxs_landscape__Tree__theme_base.css +10 -0
  26. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_d05_very_small_xxs_portrait__Tree__theme_base.css +10 -0
  27. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_e02_mobile_xs_landscape__Tree__theme_base.css +10 -0
  28. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_e02_mobile_xs_portrait__Tree__theme_base.css +10 -0
  29. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_e04_mobile_s_landscape__Tree__theme_base.css +10 -0
  30. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_e04_mobile_s_portrait__Tree__theme_base.css +10 -0
  31. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_e06_mobile_sm_landscape__Tree__theme_base.css +10 -0
  32. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_e06_mobile_sm_portrait__Tree__theme_base.css +10 -0
  33. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_e08_mobile_md_landscape__Tree__theme_base.css +10 -0
  34. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_e08_mobile_md_portrait__Tree__theme_base.css +10 -0
  35. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_h03_tablet_s_landscape__Tree__theme_base.css +10 -0
  36. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_h03_tablet_s_portrait__Tree__theme_base.css +10 -0
  37. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_h05_tablet_sm_landscape__Tree__theme_base.css +10 -0
  38. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_h05_tablet_sm_portrait__Tree__theme_base.css +10 -0
  39. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_h07_tablet_md_landscape__Tree__theme_base.css +10 -0
  40. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_h07_tablet_md_portrait__Tree__theme_base.css +10 -0
  41. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_h09_tablet_lg_landscape__Tree__theme_base.css +10 -0
  42. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_h09_tablet_lg_portrait__Tree__theme_base.css +10 -0
  43. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_l02_laptop_sm_landscape__Tree__theme_base.css +10 -0
  44. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_l02_laptop_sm_portrait__Tree__theme_base.css +10 -0
  45. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_l03_laptop_md_landscape__Tree__theme_base.css +10 -0
  46. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_l03_laptop_md_portrait__Tree__theme_base.css +10 -0
  47. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_l07_laptop_lg_landscape__Tree__theme_base.css +10 -0
  48. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_l07_laptop_lg_portrait__Tree__theme_base.css +10 -0
  49. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_s02_display_xl_landscape__Tree__theme_base.css +10 -0
  50. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_s02_display_xl_portrait__Tree__theme_base.css +10 -0
  51. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_s04_display_xxl_landscape__Tree__theme_base.css +10 -0
  52. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_s04_display_xxl_portrait__Tree__theme_base.css +10 -0
  53. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_s08_display_qhd_landscape__Tree__theme_base.css +10 -0
  54. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_s08_display_qhd_portrait__Tree__theme_base.css +10 -0
  55. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_t04_tv_4k_landscape__Tree__theme_base.css +10 -0
  56. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_t04_tv_4k_portrait__Tree__theme_base.css +10 -0
  57. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_t08_tv_8k_landscape__Tree__theme_base.css +10 -0
  58. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_t08_tv_8k_portrait__Tree__theme_base.css +10 -0
  59. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_t16_tv_16k_landscape__Tree__theme_base.css +10 -0
  60. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_t16_tv_16k_portrait__Tree__theme_base.css +10 -0
  61. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_t99_tv_xxxl_landscape__Tree__theme_base.css +10 -0
  62. package/MediaAndStyles/themes/theme_base/responsive/responsive_size_t99_tv_xxxl_portrait__Tree__theme_base.css +10 -0
  63. package/MediaAndStyles/themes/theme_base/responsive_size_Imports_Tree_theme_base_Relative.css +98 -0
  64. package/MediaAndStyles/themes/theme_base/responsive_size_Imports_Tree_theme_base_Webpack.css +98 -0
  65. package/MediaAndStyles/themes/theme_base/responsive_size_Imports_Tree_theme_base_Webpack_minimal.css +98 -0
  66. package/README.md +68 -59
  67. package/{README_WEBPACK.md → docs/README_WEBPACK.md} +31 -31
  68. package/docs/README_preview.md +167 -0
  69. package/favicon/Icon_Jaisocx.ico +0 -0
  70. package/favicon/Icon_Sandbox_Brightday.ico +0 -0
  71. package/index.preview.html +755 -0
  72. package/package.json +40 -31
  73. package/transpiled/CommonJS/index.d.ts +11 -0
  74. package/transpiled/CommonJS/index.d.ts.map +1 -0
  75. package/{build → transpiled}/CommonJS/index.js +10 -10
  76. package/transpiled/CommonJS/index.js.map +1 -0
  77. package/{build → transpiled}/CommonJS/typescript/ArrayOrObjectPackage.d.ts.map +1 -1
  78. package/{build → transpiled}/CommonJS/typescript/ArrayOrObjectPackage.js +3 -3
  79. package/{build → transpiled}/CommonJS/typescript/ArrayOrObjectPackage.js.map +1 -1
  80. package/{build → transpiled}/CommonJS/typescript/Tree.d.ts +9 -10
  81. package/transpiled/CommonJS/typescript/Tree.d.ts.map +1 -0
  82. package/{build → transpiled}/CommonJS/typescript/Tree.js +70 -54
  83. package/transpiled/CommonJS/typescript/Tree.js.map +1 -0
  84. package/{build → transpiled}/CommonJS/typescript/TreeAdapter.d.ts.map +1 -1
  85. package/{build → transpiled}/CommonJS/typescript/TreeAdapter.js.map +1 -1
  86. package/{build/ESNext → transpiled/CommonJS}/typescript/TreeAdapterModeConf.d.ts +4 -4
  87. package/transpiled/CommonJS/typescript/TreeAdapterModeConf.d.ts.map +1 -0
  88. package/{build → transpiled}/CommonJS/typescript/TreeAdapterModeConf.js +28 -11
  89. package/transpiled/CommonJS/typescript/TreeAdapterModeConf.js.map +1 -0
  90. package/{build/ESNext → transpiled/CommonJS}/typescript/TreeAdapterModeEase.d.ts +4 -4
  91. package/transpiled/CommonJS/typescript/TreeAdapterModeEase.d.ts.map +1 -0
  92. package/{build → transpiled}/CommonJS/typescript/TreeAdapterModeEase.js +9 -9
  93. package/transpiled/CommonJS/typescript/TreeAdapterModeEase.js.map +1 -0
  94. package/{build → transpiled}/CommonJS/typescript/TreeConf.d.ts.map +1 -1
  95. package/{build → transpiled}/CommonJS/typescript/TreeConf.js.map +1 -1
  96. package/{build → transpiled}/CommonJS/typescript/TreeConstants.d.ts.map +1 -1
  97. package/{build → transpiled}/CommonJS/typescript/TreeConstants.js +13 -11
  98. package/transpiled/CommonJS/typescript/TreeConstants.js.map +1 -0
  99. package/transpiled/CommonJS/typescript/TreeInterface.d.ts +44 -0
  100. package/transpiled/CommonJS/typescript/TreeInterface.d.ts.map +1 -0
  101. package/transpiled/CommonJS/typescript/TreeInterface.js +3 -0
  102. package/transpiled/CommonJS/typescript/TreeInterface.js.map +1 -0
  103. package/{build → transpiled}/CommonJS/typescript/Types.d.ts +2 -0
  104. package/{build → transpiled}/CommonJS/typescript/Types.d.ts.map +1 -1
  105. package/{build → transpiled}/CommonJS/webpack.aliases.cjs +1 -0
  106. package/transpiled/CommonJS/webpack.aliases.cjs.map +1 -0
  107. package/{build → transpiled}/CommonJS/webpack.aliases.mjs +1 -0
  108. package/transpiled/CommonJS/webpack.aliases.mjs.map +1 -0
  109. package/transpiled/CommonJS/webpackAliases.d.ts.map +1 -0
  110. package/{build → transpiled}/CommonJS/webpackAliases.js +1 -0
  111. package/transpiled/CommonJS/webpackAliases.js.map +1 -0
  112. package/transpiled/ESNext/index.d.ts +11 -0
  113. package/transpiled/ESNext/index.d.ts.map +1 -0
  114. package/{build → transpiled}/ESNext/index.js +5 -6
  115. package/transpiled/ESNext/index.js.map +1 -0
  116. package/{build → transpiled}/ESNext/typescript/ArrayOrObjectPackage.d.ts.map +1 -1
  117. package/{build → transpiled}/ESNext/typescript/ArrayOrObjectPackage.js +3 -3
  118. package/{build → transpiled}/ESNext/typescript/ArrayOrObjectPackage.js.map +1 -1
  119. package/{build → transpiled}/ESNext/typescript/Tree.d.ts +9 -10
  120. package/transpiled/ESNext/typescript/Tree.d.ts.map +1 -0
  121. package/{build → transpiled}/ESNext/typescript/Tree.js +71 -55
  122. package/transpiled/ESNext/typescript/Tree.js.map +1 -0
  123. package/{build → transpiled}/ESNext/typescript/TreeAdapter.d.ts.map +1 -1
  124. package/{build → transpiled}/ESNext/typescript/TreeAdapter.js.map +1 -1
  125. package/{build/CommonJS → transpiled/ESNext}/typescript/TreeAdapterModeConf.d.ts +4 -4
  126. package/transpiled/ESNext/typescript/TreeAdapterModeConf.d.ts.map +1 -0
  127. package/{build → transpiled}/ESNext/typescript/TreeAdapterModeConf.js +28 -11
  128. package/transpiled/ESNext/typescript/TreeAdapterModeConf.js.map +1 -0
  129. package/{build/CommonJS → transpiled/ESNext}/typescript/TreeAdapterModeEase.d.ts +4 -4
  130. package/transpiled/ESNext/typescript/TreeAdapterModeEase.d.ts.map +1 -0
  131. package/{build → transpiled}/ESNext/typescript/TreeAdapterModeEase.js +9 -9
  132. package/transpiled/ESNext/typescript/TreeAdapterModeEase.js.map +1 -0
  133. package/{build → transpiled}/ESNext/typescript/TreeConf.d.ts.map +1 -1
  134. package/{build → transpiled}/ESNext/typescript/TreeConf.js.map +1 -1
  135. package/{build → transpiled}/ESNext/typescript/TreeConstants.d.ts.map +1 -1
  136. package/transpiled/ESNext/typescript/TreeConstants.js +67 -0
  137. package/transpiled/ESNext/typescript/TreeConstants.js.map +1 -0
  138. package/transpiled/ESNext/typescript/TreeInterface.d.ts +44 -0
  139. package/transpiled/ESNext/typescript/TreeInterface.d.ts.map +1 -0
  140. package/transpiled/ESNext/typescript/TreeInterface.js +2 -0
  141. package/transpiled/ESNext/typescript/TreeInterface.js.map +1 -0
  142. package/{build → transpiled}/ESNext/typescript/Types.d.ts +2 -0
  143. package/{build → transpiled}/ESNext/typescript/Types.d.ts.map +1 -1
  144. package/{build → transpiled}/ESNext/webpack.aliases.cjs +1 -0
  145. package/transpiled/ESNext/webpack.aliases.cjs.map +1 -0
  146. package/{build → transpiled}/ESNext/webpack.aliases.mjs +1 -0
  147. package/transpiled/ESNext/webpack.aliases.mjs.map +1 -0
  148. package/transpiled/ESNext/webpackAliases.d.ts.map +1 -0
  149. package/{build → transpiled}/ESNext/webpackAliases.js +1 -0
  150. package/transpiled/ESNext/webpackAliases.js.map +1 -0
  151. package/transpiled/Simple/typescript/ArrayOrObjectPackage.js +143 -0
  152. package/transpiled/Simple/typescript/Tree.js +926 -0
  153. package/transpiled/Simple/typescript/TreeAdapter.js +17 -0
  154. package/transpiled/Simple/typescript/TreeAdapterModeConf.js +117 -0
  155. package/transpiled/Simple/typescript/TreeAdapterModeEase.js +87 -0
  156. package/transpiled/Simple/typescript/TreeConf.js +31 -0
  157. package/{build/ESNext → transpiled/Simple}/typescript/TreeConstants.js +16 -13
  158. package/transpiled/Simple/typescript/Types.js +4 -0
  159. package/transpiled/Simple/webpack.aliases.cjs +19 -0
  160. package/transpiled/Simple/webpack.aliases.mjs +14 -0
  161. package/transpiled/Simple/webpackAliases.js +44 -0
  162. package/tree_preview_dev.html +729 -0
  163. package/tree_preview_prod.html +755 -0
  164. package/webpack.aliases.json +2 -1
  165. package/assets/themes/theme-base/fonts/Baloo_Paaji_2/BalooPaaji2-VariableFont_wght.ttf +0 -0
  166. package/assets/themes/theme-base/fonts/Baloo_Paaji_2/OFL.txt +0 -93
  167. package/assets/themes/theme-base/fonts/Baloo_Paaji_2/README.txt +0 -67
  168. package/assets/themes/theme-base/fonts/Baloo_Paaji_2/static/BalooPaaji2-Bold.ttf +0 -0
  169. package/assets/themes/theme-base/fonts/Baloo_Paaji_2/static/BalooPaaji2-ExtraBold.ttf +0 -0
  170. package/assets/themes/theme-base/fonts/Baloo_Paaji_2/static/BalooPaaji2-Medium.ttf +0 -0
  171. package/assets/themes/theme-base/fonts/Baloo_Paaji_2/static/BalooPaaji2-Regular.ttf +0 -0
  172. package/assets/themes/theme-base/fonts/Baloo_Paaji_2/static/BalooPaaji2-SemiBold.ttf +0 -0
  173. package/assets/themes/theme-base/fonts-webpack.css +0 -35
  174. package/assets/themes/theme-base/fonts.css +0 -35
  175. package/assets/themes/theme-base/theme-base-assets-webpack.css +0 -43
  176. package/assets/themes/theme-base/theme-base-assets.css +0 -43
  177. package/assets/themes/theme-funny/fonts/Niconne/Niconne-Regular.ttf +0 -0
  178. package/assets/themes/theme-funny/fonts/Niconne/OFL.txt +0 -94
  179. package/assets/themes/theme-funny/fonts-webpack.css +0 -7
  180. package/assets/themes/theme-funny/fonts.css +0 -7
  181. package/assets/themes/theme-funny/theme-funny-webpack.css +0 -22
  182. package/assets/themes/theme-funny/theme-funny.css +0 -22
  183. package/assets/tree-styles-main-webpack.css +0 -5
  184. package/assets/tree-styles-main.css +0 -5
  185. package/build/CommonJS/index.d.ts +0 -8
  186. package/build/CommonJS/index.d.ts.map +0 -1
  187. package/build/CommonJS/index.js.map +0 -1
  188. package/build/CommonJS/typescript/Tree.d.ts.map +0 -1
  189. package/build/CommonJS/typescript/Tree.js.map +0 -1
  190. package/build/CommonJS/typescript/TreeAdapterModeConf.d.ts.map +0 -1
  191. package/build/CommonJS/typescript/TreeAdapterModeConf.js.map +0 -1
  192. package/build/CommonJS/typescript/TreeAdapterModeEase.d.ts.map +0 -1
  193. package/build/CommonJS/typescript/TreeAdapterModeEase.js.map +0 -1
  194. package/build/CommonJS/typescript/TreeConstants.js.map +0 -1
  195. package/build/CommonJS/webpack.aliases.cjs.map +0 -1
  196. package/build/CommonJS/webpack.aliases.mjs.map +0 -1
  197. package/build/CommonJS/webpackAliases.d.ts.map +0 -1
  198. package/build/CommonJS/webpackAliases.js.map +0 -1
  199. package/build/ESNext/index.d.ts +0 -8
  200. package/build/ESNext/index.d.ts.map +0 -1
  201. package/build/ESNext/index.js.map +0 -1
  202. package/build/ESNext/typescript/Tree.d.ts.map +0 -1
  203. package/build/ESNext/typescript/Tree.js.map +0 -1
  204. package/build/ESNext/typescript/TreeAdapterModeConf.d.ts.map +0 -1
  205. package/build/ESNext/typescript/TreeAdapterModeConf.js.map +0 -1
  206. package/build/ESNext/typescript/TreeAdapterModeEase.d.ts.map +0 -1
  207. package/build/ESNext/typescript/TreeAdapterModeEase.js.map +0 -1
  208. package/build/ESNext/typescript/TreeConstants.js.map +0 -1
  209. package/build/ESNext/webpack.aliases.cjs.map +0 -1
  210. package/build/ESNext/webpack.aliases.mjs.map +0 -1
  211. package/build/ESNext/webpackAliases.d.ts.map +0 -1
  212. package/build/ESNext/webpackAliases.js.map +0 -1
  213. /package/{assets → MediaAndStyles}/themes/theme-funny/mini-images/data-types/house.png +0 -0
  214. /package/{assets → MediaAndStyles}/themes/theme-funny/mini-images/data-types/html-intence.png +0 -0
  215. /package/{assets → MediaAndStyles}/themes/theme-funny/mini-images/data-types/html.png +0 -0
  216. /package/{assets → MediaAndStyles}/themes/theme-funny/mini-images/data-types/money-transfer.png +0 -0
  217. /package/{assets → MediaAndStyles}/themes/theme-funny/mini-images/data-types/track.png +0 -0
  218. /package/{assets/themes/theme-base/mini-images → MediaAndStyles/themes/theme_base/mini_images}/button-open/button-animated.gif +0 -0
  219. /package/{assets/themes/theme-base/mini-images → MediaAndStyles/themes/theme_base/mini_images}/button-open/button-opened.png +0 -0
  220. /package/{assets/themes/theme-base/mini-images → MediaAndStyles/themes/theme_base/mini_images}/button-open/button-without-subtree.svg +0 -0
  221. /package/{assets/themes/theme-base/mini-images → MediaAndStyles/themes/theme_base/mini_images}/data-types/icons8-3-100.png +0 -0
  222. /package/{assets/themes/theme-base/mini-images → MediaAndStyles/themes/theme_base/mini_images}/data-types/icons8-font-style-formatting-96.png +0 -0
  223. /package/{assets/themes/theme-base/mini-images → MediaAndStyles/themes/theme_base/mini_images}/data-types/icons8-json-96.png +0 -0
  224. /package/{assets/themes/theme-base/mini-images → MediaAndStyles/themes/theme_base/mini_images}/data-types/icons8-static-view-level2-80.png +0 -0
  225. /package/{assets/themes/theme-base/mini-images → MediaAndStyles/themes/theme_base/mini_images}/data-types/icons8-true-false-96.png +0 -0
  226. /package/{assets/themes/theme-base/mini-images → MediaAndStyles/themes/theme_base/mini_images}/data-types/icons8-view-array-96.png +0 -0
  227. /package/{build → transpiled}/CommonJS/typescript/ArrayOrObjectPackage.d.ts +0 -0
  228. /package/{build → transpiled}/CommonJS/typescript/TreeAdapter.d.ts +0 -0
  229. /package/{build → transpiled}/CommonJS/typescript/TreeAdapter.js +0 -0
  230. /package/{build → transpiled}/CommonJS/typescript/TreeConf.d.ts +0 -0
  231. /package/{build → transpiled}/CommonJS/typescript/TreeConf.js +0 -0
  232. /package/{build → transpiled}/CommonJS/typescript/TreeConstants.d.ts +0 -0
  233. /package/{build → transpiled}/CommonJS/typescript/Types.js +0 -0
  234. /package/{build → transpiled}/CommonJS/typescript/Types.js.map +0 -0
  235. /package/{build → transpiled}/CommonJS/webpack.aliases.d.cts +0 -0
  236. /package/{build → transpiled}/CommonJS/webpack.aliases.d.cts.map +0 -0
  237. /package/{build → transpiled}/CommonJS/webpack.aliases.d.mts +0 -0
  238. /package/{build → transpiled}/CommonJS/webpack.aliases.d.mts.map +0 -0
  239. /package/{build → transpiled}/CommonJS/webpackAliases.d.ts +0 -0
  240. /package/{build → transpiled}/ESNext/typescript/ArrayOrObjectPackage.d.ts +0 -0
  241. /package/{build → transpiled}/ESNext/typescript/TreeAdapter.d.ts +0 -0
  242. /package/{build → transpiled}/ESNext/typescript/TreeAdapter.js +0 -0
  243. /package/{build → transpiled}/ESNext/typescript/TreeConf.d.ts +0 -0
  244. /package/{build → transpiled}/ESNext/typescript/TreeConf.js +0 -0
  245. /package/{build → transpiled}/ESNext/typescript/TreeConstants.d.ts +0 -0
  246. /package/{build → transpiled}/ESNext/typescript/Types.js +0 -0
  247. /package/{build → transpiled}/ESNext/typescript/Types.js.map +0 -0
  248. /package/{build → transpiled}/ESNext/webpack.aliases.d.cts +0 -0
  249. /package/{build → transpiled}/ESNext/webpack.aliases.d.cts.map +0 -0
  250. /package/{build → transpiled}/ESNext/webpack.aliases.d.mts +0 -0
  251. /package/{build → transpiled}/ESNext/webpack.aliases.d.mts.map +0 -0
  252. /package/{build → transpiled}/ESNext/webpackAliases.d.ts +0 -0
@@ -0,0 +1,926 @@
1
+ class Tree extends ImprovedRenderEventEmitter {
2
+ debug;
3
+ mainHtmlNodeId;
4
+ mainHolderHtmlNode;
5
+ url;
6
+ data;
7
+ conf;
8
+ subtreeLength;
9
+ subtreeLengthDeep;
10
+ templateRenderer;
11
+ contextMenuJSClass;
12
+ renderingMode;
13
+ nodesWithIcons;
14
+ nodesOpenedMode;
15
+ isModifiable;
16
+ dataTypesCssClassesEnabled;
17
+ adapter;
18
+
19
+
20
+
21
+ constructor() {
22
+ super();
23
+ this.debug = TreeConstants.Defaults.debug;
24
+ this.mainHtmlNodeId = "";
25
+ this.mainHolderHtmlNode = null;
26
+ this.url = "";
27
+ this.data = null;
28
+ this.conf = new TreeConf();
29
+ this.subtreeLength = 0;
30
+ this.subtreeLengthDeep = 0;
31
+ this.templateRenderer = new TemplateRenderer();
32
+
33
+
34
+ /* this.templateRenderer
35
+ .addThisClassEventListener (
36
+ this.templateRenderer.EVENT_NAME__AFTER_RENDER,
37
+ // @ts-ignore
38
+ (payload: {html, data}) => {
39
+ let renderedHtml: any = payload.html;
40
+ let value: any = null;
41
+
42
+ if (!payload.data.hasSubtree) {
43
+ renderedHtml = payload.html.replace('<ul></ul>', '');
44
+ value = 'html modified';
45
+ }
46
+
47
+ const payloadReturned: any = {...payload, html: renderedHtml};
48
+ return {payloadReturned, value};
49
+ }
50
+ ); */
51
+ this.contextMenuJSClass = null;
52
+
53
+
54
+ // DEFAULT VALUES ARE FROM CONSTANTS CLASS
55
+ this.setDebug(TreeConstants.Defaults.debug);
56
+ this.renderingMode = TreeConstants.Defaults.renderingMode;
57
+ this.nodesWithIcons = TreeConstants.Defaults.nodesWithIcons;
58
+ this.nodesOpenedMode = TreeConstants.Defaults.nodesOpenedMode;
59
+ this.isModifiable = TreeConstants.Defaults.isModifiable;
60
+ this.dataTypesCssClassesEnabled = TreeConstants.Defaults.dataTypesCssClassesEnabled;
61
+ this.adapter = new TreeAdapterModeEase();
62
+ }
63
+
64
+
65
+
66
+ setDebug(debug) {
67
+
68
+ // optional method
69
+ super.setDebug(debug);
70
+ this.templateRenderer.setDebug(debug);
71
+ this.debug = debug;
72
+
73
+
74
+ return this;
75
+ }
76
+
77
+
78
+
79
+ setNodesWithIcons(withIcons) {
80
+
81
+ // optional method
82
+ this.nodesWithIcons = withIcons;
83
+
84
+
85
+ return this;
86
+ }
87
+
88
+
89
+
90
+ setNodesOpenedMode(openedMode) {
91
+
92
+ // optional method
93
+ this.nodesOpenedMode = openedMode;
94
+
95
+
96
+ return this;
97
+ }
98
+
99
+
100
+
101
+ setUrl(url) {
102
+
103
+ // optional method
104
+ this.url = url;
105
+
106
+
107
+ return this;
108
+ }
109
+
110
+
111
+
112
+ setMainHtmlNodeId(mainHtmlNodeId) {
113
+
114
+ // required method
115
+ this.mainHtmlNodeId = mainHtmlNodeId;
116
+
117
+
118
+ return this;
119
+ }
120
+
121
+
122
+
123
+ setConf(conf) {
124
+
125
+ // optional method
126
+ this.conf = conf;
127
+
128
+
129
+ return this;
130
+ }
131
+
132
+
133
+
134
+ setModifiable(isModifiable) {
135
+
136
+ // optional method
137
+ this.isModifiable = isModifiable;
138
+
139
+
140
+ return this;
141
+ }
142
+
143
+
144
+
145
+ setRenderingMode(mode) {
146
+
147
+ // optional method
148
+ this.renderingMode = mode;
149
+
150
+
151
+ return this;
152
+ }
153
+
154
+
155
+
156
+ setDataTypesCssClassesEnabled(dataTypesCssEnabled) {
157
+ this.dataTypesCssClassesEnabled = dataTypesCssEnabled;
158
+
159
+
160
+ return this;
161
+ }
162
+
163
+
164
+
165
+ load(url) {
166
+
167
+ if (url && url.length) {
168
+ this.url = url;
169
+ }
170
+
171
+ if (!this.url || !this.mainHtmlNodeId) {
172
+ throw new Error("No url set");
173
+ }
174
+ fetch(this.url)
175
+ .then((response) => response.json())
176
+ .then((json) => {
177
+ this.render(json);
178
+ });
179
+
180
+
181
+ return this;
182
+ }
183
+
184
+
185
+
186
+ adaptRenderingModeSubcalls() {
187
+
188
+ if (this.renderingMode === TreeConstants.RenderingMode.Conf) {
189
+ this.adapter = new TreeAdapterModeConf();
190
+
191
+ if (this.dataTypesCssClassesEnabled === true) {
192
+ this.getTreeNodeCssClasses = this.adapter.getTreeNodeCssClasses__dataTypesCssClassesEnabled.bind(this);
193
+ }
194
+ else {
195
+ this.getTreeNodeCssClasses = this.adapter.getTreeNodeCssClasses__dataTypesCssClassesDisabled.bind(this);
196
+ }
197
+ }
198
+ else if (this.renderingMode === TreeConstants.RenderingMode.Ease) {
199
+ this.adapter = new TreeAdapterModeEase();
200
+
201
+ if (this.dataTypesCssClassesEnabled === true) {
202
+ this.getTreeNodeCssClasses = this.adapter.getTreeNodeCssClasses__dataTypesCssClassesEnabled.bind(this);
203
+ }
204
+ else {
205
+
206
+ // this.getTreeNodeCssClasses = this.getTreeNodeCssClasses__dataTypesCssClassesDisabled__renderingModeConf.bind(this);
207
+ }
208
+ }
209
+ this.getSubtreeNodeToRender = this.adapter.getSubtreeNodeToRender.bind(this);
210
+ this.getDataForRendering = this.adapter.getDataForRendering.bind(this);
211
+ }
212
+
213
+
214
+
215
+ reRender() {
216
+ this.render(this.data);
217
+
218
+
219
+ return this;
220
+ }
221
+
222
+
223
+
224
+ render(nodes) {
225
+
226
+ if (nodes) {
227
+ this.data = nodes;
228
+ }
229
+
230
+ if (!this.data
231
+ || !this.conf) {
232
+ throw new Error(`Empty: data ${this.data} or conf ${this.conf}`);
233
+ }
234
+ this.mainHolderHtmlNode = document.getElementById(this.mainHtmlNodeId);
235
+
236
+ if (!this.mainHolderHtmlNode) {
237
+ throw new Error("Tree holder html node ID did not match any html node in this html doc.");
238
+ }
239
+ this.adaptRenderingModeSubcalls();
240
+
241
+
242
+ // set main css class name to the main tree holder html node
243
+ if (this.mainHolderHtmlNode.classList
244
+ && !this.mainHolderHtmlNode.classList.contains(TreeConstants.TreeCssClassNames.MAIN_CLASS_NAME)) {
245
+ this.mainHolderHtmlNode.classList.add(TreeConstants.TreeCssClassNames.MAIN_CLASS_NAME);
246
+ }
247
+ else if (!this.mainHolderHtmlNode.classList) {
248
+ this.mainHolderHtmlNode.className = (TreeConstants.TreeCssClassNames.MAIN_CLASS_NAME);
249
+ }
250
+
251
+ if (this.nodesWithIcons === true) {
252
+ this.mainHolderHtmlNode.classList.add(TreeConstants.TreeCssClassNames.CLASS_NAME_WITH_ICONS);
253
+ }
254
+ else {
255
+ this.mainHolderHtmlNode.classList.remove(TreeConstants.TreeCssClassNames.CLASS_NAME_WITH_ICONS);
256
+ }
257
+
258
+
259
+ // add an html holder node for subtree html nodes
260
+ const ul = document.createElement("UL");
261
+
262
+
263
+ // get datatype of the main json data node
264
+ const dataType = ArrayOrObjectPackage.getDataType(nodes);
265
+ let isArray = 0;
266
+
267
+ if (dataType === ArrayOrObjectPackage.JsonDataType.ARRAY) {
268
+ isArray = 1;
269
+ }
270
+ else if (dataType !== ArrayOrObjectPackage.JsonDataType.OBJECT) {
271
+ throw new Error("Arrays or Objects supported. This JSON Data is not iterable.");
272
+ }
273
+
274
+
275
+ // get info on subtree nodes amount
276
+ const { itemsAmount, objectKeys } = ArrayOrObjectPackage.getArrayOrObjectItemsAmount(isArray, this.data);
277
+ const subtreeNodesCount = itemsAmount;
278
+
279
+
280
+ // exit throwing exception, if the tree json data is empty
281
+ if (subtreeNodesCount === 0) {
282
+ throw new Error("Tree json data is empty.");
283
+ }
284
+ const flatNodeHolderClone = { _pathArray: ["this.data"] };
285
+ let subtreeRenderResult;
286
+
287
+ if (this.renderingMode === TreeConstants.RenderingMode.Conf) {
288
+
289
+ if (isArray === 1) {
290
+ subtreeRenderResult = this.renderSubtree(
291
+ isArray,
292
+ this.data,
293
+ flatNodeHolderClone,
294
+ objectKeys,
295
+ ul
296
+ );
297
+
298
+
299
+ // @ts-ignore
300
+ this.subtreeLength = subtreeNodesCount;
301
+
302
+
303
+ // @ts-ignore
304
+ this.subtreeLengthDeep = subtreeRenderResult;
305
+ }
306
+ else if (isArray === 0) {
307
+ const isTreeItem = this.getInModeConfDataNodeIsTreeItem(this.data);
308
+
309
+
310
+ // the root json data node is the tree item data node
311
+ if (isTreeItem) {
312
+ const renderResult = this.renderOneTreeNode(
313
+ this.data,
314
+ 0,
315
+ "Top",
316
+ { _pathArray: ["this.data"] },
317
+ ul
318
+ );
319
+ const { currentNodeSubtreeLength } = renderResult;
320
+ this.data = renderResult.node;
321
+
322
+
323
+ // @ts-ignore
324
+ this.subtreeLength = subtreeNodesCount;
325
+
326
+
327
+ // @ts-ignore
328
+ this.subtreeLengthDeep = currentNodeSubtreeLength;
329
+ }
330
+ else {
331
+
332
+ // the root json data node is the associative array of tree item data nodes, suggested, if not so, then will not be rendered.
333
+ subtreeRenderResult = this.renderSubtree(
334
+ isArray,
335
+ this.data,
336
+ flatNodeHolderClone,
337
+ objectKeys,
338
+ ul
339
+ );
340
+
341
+
342
+ // @ts-ignore
343
+ this.subtreeLength = subtreeNodesCount;
344
+
345
+
346
+ // @ts-ignore
347
+ this.subtreeLengthDeep = subtreeRenderResult;
348
+ }
349
+ }
350
+ }
351
+ else if (this.renderingMode === TreeConstants.RenderingMode.Ease) {
352
+ const renderResult = this.renderOneTreeNode(
353
+ { "Json Root": this.data },
354
+ 0,
355
+ "Top",
356
+ { _pathArray: ["this.data"] },
357
+ ul
358
+ );
359
+ const { currentNodeSubtreeLength } = renderResult;
360
+
361
+
362
+ // this.data = renderResult.node[0];
363
+ // @ts-ignore
364
+ this.subtreeLength = subtreeNodesCount;
365
+
366
+
367
+ // @ts-ignore
368
+ this.subtreeLengthDeep = currentNodeSubtreeLength;
369
+ }
370
+
371
+ if (this.debug) {
372
+ console.log("Tree.data", this.data);
373
+ }
374
+ this.mainHolderHtmlNode.append(ul);
375
+
376
+
377
+ // all eventsHandlers, assigned with addJSTreeEventListener,
378
+ // here will be attached to one DOM event listener
379
+ this.addJSTreeEventListeners();
380
+
381
+
382
+ return this;
383
+ }
384
+
385
+
386
+
387
+ checkDataNodeSubtree(node) {
388
+ let hasSubtree = false;
389
+ let subtreeJsonNodes = null;
390
+
391
+ if (this.renderingMode === TreeConstants.RenderingMode.Conf) {
392
+ subtreeJsonNodes = node[this.conf.SUBTREE];
393
+ }
394
+ else if (this.renderingMode === TreeConstants.RenderingMode.Ease) {
395
+ subtreeJsonNodes = Object.values(node)[0];
396
+ }
397
+ const { dataTypeString, dataType } = ArrayOrObjectPackage.getDataTypeStringAndConst(subtreeJsonNodes);
398
+ const isArray = ((dataType === ArrayOrObjectPackage.JsonDataType.ARRAY) ? 1 : 0);
399
+
400
+ if ((!subtreeJsonNodes)
401
+ || (subtreeJsonNodes.length === 0)
402
+ || ((dataType !== ArrayOrObjectPackage.JsonDataType.ARRAY)
403
+ && (dataType !== ArrayOrObjectPackage.JsonDataType.OBJECT))) {
404
+ return {
405
+ isArray,
406
+ subtreeNodeDataType: dataType,
407
+ subtreeNodeDataTypeString: dataTypeString,
408
+ hasSubtree,
409
+ subtreeJsonNodes,
410
+ objectKeys: null
411
+ };
412
+ }
413
+ const { itemsAmount, objectKeys } = ArrayOrObjectPackage.getArrayOrObjectItemsAmount(isArray, subtreeJsonNodes);
414
+ hasSubtree = (itemsAmount !== 0);
415
+
416
+
417
+ return {
418
+ isArray,
419
+ subtreeNodeDataType: dataType,
420
+ subtreeNodeDataTypeString: dataTypeString,
421
+ hasSubtree,
422
+ subtreeJsonNodes,
423
+ objectKeys
424
+ };
425
+ }
426
+
427
+
428
+
429
+ renderSubtree(
430
+ isArray,
431
+ subtreeNodes,
432
+ flatNodeHolderClone,
433
+ objectKeys,
434
+ subtreeHtmlHolder
435
+ ) {
436
+ const renderSubtreeResult = ArrayOrObjectPackage.iterateOverArrayOrObjectDefined(
437
+ isArray,
438
+ subtreeNodes,
439
+ this.renderSubtreeCallback.bind(this),
440
+ {
441
+ subtreeHtmlHolder,
442
+ flatNodeHolderClone
443
+ },
444
+ objectKeys
445
+ );
446
+
447
+
448
+ return renderSubtreeResult;
449
+ }
450
+
451
+
452
+
453
+ renderSubtreeCallback(
454
+ _isArray,
455
+ loopCounter,
456
+ loopPropertyValue,
457
+ loopPropertyKey,
458
+ _arrayOrObject,
459
+ previousCallbackResult,
460
+ callbackPayload
461
+ ) {
462
+ let currentNodeSubtreeLength = (previousCallbackResult) || 0;
463
+ const { subtreeHtmlHolder, flatNodeHolderClone } = callbackPayload;
464
+ const subtreeJsonNode = this.getSubtreeNodeToRender(
465
+ loopPropertyValue,
466
+ loopPropertyKey
467
+ );
468
+
469
+
470
+ // RENDERING ONE TREE NODE
471
+ const renderResult = this.renderOneTreeNode(
472
+ subtreeJsonNode,
473
+ loopCounter,
474
+ loopPropertyKey,
475
+ flatNodeHolderClone,
476
+ subtreeHtmlHolder
477
+ );
478
+ currentNodeSubtreeLength += renderResult.currentNodeSubtreeLength;
479
+
480
+
481
+ return currentNodeSubtreeLength;
482
+ }
483
+
484
+
485
+
486
+ renderOneTreeNode(
487
+ node,
488
+ nodePosition,
489
+ nodeKey,
490
+ flatNodeHolderClone,
491
+ holder
492
+ ) {
493
+
494
+ if (this.debug) {
495
+ console.log(node);
496
+ }
497
+ const nodeClone = this.updateDataNodeIdAndPath(
498
+ node,
499
+ nodePosition,
500
+ nodeKey,
501
+ flatNodeHolderClone,
502
+ holder
503
+ );
504
+ const { isArray, subtreeNodeDataTypeString, hasSubtree, subtreeJsonNodes, objectKeys } = this.checkDataNodeSubtree(node);
505
+
506
+
507
+ // TODO: EXTENSIBILITY FEATURE
508
+ let dataForRendering = this.getDataForRendering(
509
+ node,
510
+ nodeClone,
511
+ subtreeNodeDataTypeString,
512
+ hasSubtree
513
+ );
514
+ const eventBeforeRenderOneNodePayload = {
515
+ "eventName": TreeConstants.TreeEventsNames.EVENT_NAME__BEFORE_RENDER_ONE_NODE,
516
+ "dataForRendering": dataForRendering
517
+ };
518
+ const eventBeforeRenderResultsArray = this.emitEvent(
519
+ TreeConstants.TreeEventsNames.EVENT_NAME__BEFORE_RENDER_ONE_NODE,
520
+ eventBeforeRenderOneNodePayload
521
+ );
522
+ const eventResultsLength = eventBeforeRenderResultsArray.length;
523
+ let lastEventRenderResultId = 0;
524
+ let lastEventResult = new Object();
525
+
526
+ if ((eventResultsLength >= 1) && lastEventResult && lastEventResult.result) {
527
+ lastEventRenderResultId = (eventResultsLength - 1);
528
+ lastEventResult = eventBeforeRenderResultsArray[lastEventRenderResultId];
529
+
530
+
531
+ //@ts-ignore
532
+ dataForRendering = lastEventResult.result.value;
533
+ }
534
+ const nodeHtml = this.templateRenderer
535
+ .setTemplate(TreeConstants.TEMPLATE__TREE_HTML_NODE)
536
+
537
+
538
+ // @ts-ignore
539
+ .setData(dataForRendering)
540
+ .render();
541
+ holder.insertAdjacentHTML("beforeend", nodeHtml);
542
+
543
+
544
+ // @ts-ignore
545
+ const holderLiItems = holder.getElementsByTagName("LI");
546
+ const li = holderLiItems.item(holderLiItems.length - 1);
547
+
548
+ if (li === null) {
549
+ throw new Error("Rendiring broken, wrong html structure built.");
550
+ }
551
+ const eventAfterRenderOneNodePayload = {
552
+ "eventName": TreeConstants.TreeEventsNames.EVENT_NAME__AFTER_RENDER_ONE_NODE,
553
+ "treeHtmlNode": li,
554
+ "treeItemJson": nodeClone
555
+ };
556
+
557
+ if (!hasSubtree) {
558
+ this.emitEvent(
559
+ TreeConstants.TreeEventsNames.EVENT_NAME__AFTER_RENDER_ONE_NODE,
560
+ eventAfterRenderOneNodePayload
561
+ );
562
+
563
+
564
+ return {
565
+ currentNodeSubtreeLength: 0,
566
+ node: nodeClone
567
+ };
568
+ }
569
+ const ul = li.getElementsByTagName("UL")[0];
570
+
571
+
572
+ // @ts-ignore
573
+ if (this.nodesOpenedMode === TreeConstants.NodesOpenedMode.ALL_HIDE) {
574
+ ul.style.display = "none";
575
+ }
576
+ else if ((!node[this.conf.NODE__OPENED])
577
+ && (this.nodesOpenedMode === TreeConstants.NodesOpenedMode.JSON_DATA_DEFINED)) {
578
+ ul.style.display = "none";
579
+ }
580
+ else if ((node[this.conf.NODE__OPENED] === true)
581
+ && (this.nodesOpenedMode === TreeConstants.NodesOpenedMode.JSON_DATA_DEFINED)) {
582
+ ul.style.display = "block";
583
+ }
584
+ else if (this.nodesOpenedMode === TreeConstants.NodesOpenedMode.ALL_SHOWN) {
585
+ ul.style.display = "block";
586
+ }
587
+ const subtreeRenderResult = this.renderSubtree(
588
+ isArray,
589
+ subtreeJsonNodes,
590
+ nodeClone,
591
+ objectKeys,
592
+ ul
593
+ );
594
+ this.emitEvent(
595
+ TreeConstants.TreeEventsNames.EVENT_NAME__AFTER_RENDER_ONE_NODE,
596
+ eventAfterRenderOneNodePayload
597
+ );
598
+
599
+
600
+ return {
601
+ currentNodeSubtreeLength: subtreeRenderResult.currentNodeSubtreeLength,
602
+ node: null
603
+
604
+
605
+ // CHECK OUT WHETHER BOKEN WHEN NOW NULL
606
+ };
607
+ }
608
+
609
+
610
+ // TEMPORARY IMPL TO KEEP POINTERS TO JSON DATA NODES IN HTML TREE NODES IN HTML NODE DATA ATTRIBUTES
611
+ updateDataNodeIdAndPath(
612
+ node,
613
+ nodePosition,
614
+ nodeKey,
615
+ flatNodeHolderClone,
616
+ _holder
617
+ ) {
618
+ const id = node[this.conf.NODE__ID] ?? null;
619
+ const holderId = node[this.conf.NODE__HOLDER_ID] ?? null;
620
+ const flatCloneHolderId = flatNodeHolderClone._flatClone ? flatNodeHolderClone._flatClone[this.conf.NODE__ID] : null;
621
+ const pathInJsonOfNodeHolder = flatNodeHolderClone._pathArray ?? ["ROOT-unhandled"];
622
+
623
+
624
+ // let pathKeyInNodeHolder = JSON.stringify(nodeKey);
625
+ let pathInJsonArray = [
626
+ ...pathInJsonOfNodeHolder
627
+ ];
628
+
629
+ if ((pathInJsonOfNodeHolder.length > 1) && this.renderingMode === TreeConstants.RenderingMode.Conf) {
630
+
631
+ // const subtreePropName: any = JSON.stringify(this.conf.SUBTREE);
632
+ pathInJsonArray.push(this.conf.SUBTREE);
633
+ pathInJsonArray.push(nodeKey);
634
+
635
+
636
+ //pathKeyInNodeHolder = `[${subtreePropName}][${pathKeyInNodeHolder}]`;
637
+ }
638
+ else if (this.renderingMode === TreeConstants.RenderingMode.Ease) {
639
+
640
+ //pathKeyInNodeHolder = `[${pathKeyInNodeHolder}]`;
641
+ pathInJsonArray.push(nodeKey);
642
+ }
643
+ else {
644
+
645
+ //pathKeyInNodeHolder = `[${pathKeyInNodeHolder}]`;
646
+ pathInJsonArray.push(nodeKey);
647
+ }
648
+ const pathInJsonString = pathInJsonArray
649
+ .map((jPathIndex, index) => {
650
+ const jPathIndexText = JSON.stringify(jPathIndex);
651
+
652
+
653
+ return (index === 0) ? jPathIndex : `[${jPathIndexText}]`;
654
+ })
655
+ .join("");
656
+ const flatNodeClone = {};
657
+
658
+ for (const propName in node) {
659
+ const propValue = node[propName];
660
+ const dataType = (typeof propValue);
661
+
662
+ if (dataType === "object") {
663
+ continue;
664
+ }
665
+ flatNodeClone[propName] = propValue;
666
+ }
667
+ const nodeClone = {
668
+ [this.conf.NODE__ID]: id,
669
+ [this.conf.NODE__HOLDER_ID]: holderId,
670
+ _flatCloneHolderId: flatCloneHolderId,
671
+ _id: nodePosition,
672
+ _key: nodeKey,
673
+ _flatClone: flatNodeClone,
674
+ _pathArray: pathInJsonArray,
675
+ _path: pathInJsonString
676
+ };
677
+
678
+
679
+ return nodeClone;
680
+ }
681
+
682
+
683
+
684
+ getTreeDataByJPath(jPathArray) {
685
+
686
+ // since complexity of building jPath array in modeEase and modeConf, the JPathArray is not the same,
687
+ // and modeEase was built from item at index 2, since it has array item at index 1 "Top": this.data["Top"], and modeConf does not have this array item.
688
+ // modeConf was built recursively already from item at index 1.
689
+ const startingIndexValidJPath = (this.renderingMode === TreeConstants.RenderingMode.Conf) ? 1 : 2;
690
+ let retVal = new Object();
691
+ retVal = JPath.getByJPath(
692
+ jPathArray.slice(startingIndexValidJPath),
693
+ this.data
694
+ );
695
+
696
+
697
+ return retVal;
698
+ }
699
+
700
+
701
+ // ADAPTIVE PLACEHOLDERS
702
+ getSubtreeNodeToRender(
703
+ _loopPropertyValue,
704
+ _loopPropertyKey
705
+ ) {
706
+ return null;
707
+ }
708
+
709
+
710
+
711
+ getDataForRendering(
712
+ _node,
713
+ _flatNodeClone,
714
+ _dataTypeString,
715
+ _hasSubtree
716
+ ) {
717
+ return {
718
+ iconSrc: "",
719
+ iconShowClassName: "",
720
+ labelText: "",
721
+ hyperlink: "",
722
+ cssClasses: "",
723
+ dataId: "",
724
+ dataHolderId: "",
725
+ dataOrder: "",
726
+ dataJson: "",
727
+ openButtonStateClassName: "",
728
+ hasSubtree: true
729
+ };
730
+ }
731
+
732
+
733
+
734
+ getTreeNodeCssClasses(_dataType, _node) {
735
+ return "";
736
+ }
737
+
738
+
739
+ // FINISH BLOCK ADAPTIVE PLACEHOLDERS
740
+ // EVENTS BLOCK
741
+ addJSTreeEventListener(eventName, eventHandler) {
742
+
743
+ // the holder class LargeDomEventListenersOverheadOptimizer method call
744
+ this.addThisClassEventListener(eventName, eventHandler);
745
+
746
+
747
+ return this;
748
+ }
749
+
750
+
751
+ // the predefined events handlers
752
+ addJSTreeEventListeners() {
753
+
754
+ // the holder class LargeDomEventListenersOverheadOptimizer method call
755
+ // Here is the predefined open button handler,
756
+ // In Your custom code, this way You can define event handlers for heavy tree json data,
757
+ // and the tree will not be overloaded of large number of events listeners on many html nodes.
758
+ this.addDomEventListener(
759
+ "click",
760
+ ".open-button",
761
+ this.initializeCustomJsTreeImprovedEventHandler(
762
+ TreeConstants.TreeEventsNames.EVENT_NAME__TREE_NODE_EXPAND_BUTTON__CLICK,
763
+ this.openButtonClickHandler.bind(this)
764
+ )
765
+ );
766
+ this.addDomEventListener(
767
+ "click",
768
+ ".jstree-html-node-label",
769
+ this.initializeCustomJsTreeImprovedEventHandler(
770
+ TreeConstants.TreeEventsNames.EVENT_NAME__TREE_NODE_LABEL__CLICK,
771
+ this.treeNodeLableClickHandler.bind(this)
772
+ )
773
+ );
774
+
775
+
776
+ /* if (this.isModifiable) {
777
+ this.addDomEventListener(
778
+ "dblclick",
779
+ ".jstree-html-node-holder-icon",
780
+ this.contextMenuRender
781
+ );
782
+ } */
783
+
784
+
785
+ // the holder class LargeDomEventListenersOverheadOptimizer method call
786
+ this.addDomEventListeners();
787
+
788
+
789
+ return this;
790
+ }
791
+
792
+
793
+ // here are set the JsTree event handlers actions, always needed, to reuse always in every JsTreeDomEventHndler.
794
+ initializeCustomJsTreeImprovedEventHandler(
795
+ jsTreeEventName,
796
+ customEventHandler
797
+ ) {
798
+ return (eventPayload) => {
799
+ const treeHtmlNode = eventPayload.eventTarget.closest(".jstree-html-node");
800
+ const jsonNode = JSON.parse(this.unescapeHTMLFromAttribute(treeHtmlNode.dataset.json));
801
+
802
+ if (this.debug === true) {
803
+ console.log(
804
+ eventPayload.event.type,
805
+ treeHtmlNode,
806
+ jsonNode
807
+ );
808
+ }
809
+ eventPayload = {
810
+ ...eventPayload,
811
+ jsonNode,
812
+ treeHtmlNode,
813
+ treeHtmlNodeHolder: treeHtmlNode.closest("li")
814
+ };
815
+ customEventHandler.call(this, eventPayload);
816
+ this.emitEvent(jsTreeEventName, eventPayload);
817
+ };
818
+ }
819
+
820
+
821
+ // the predefined events handlers
822
+ openButtonClickHandler(eventPayload) {
823
+ const toggleButton = eventPayload.eventTarget;
824
+
825
+ if (toggleButton.classList.contains(TreeConstants.TreeCssClassNames.CLASS_WITHOUT_SUBTREE)) {
826
+ return;
827
+ }
828
+ const subtreeContainer = toggleButton.closest("li").getElementsByTagName("ul")[0];
829
+ const isOpened = toggleButton.classList.contains(TreeConstants.TreeCssClassNames.CLASS_OPENED);
830
+
831
+ if (isOpened) {
832
+ toggleButton.classList.remove(TreeConstants.TreeCssClassNames.CLASS_OPENED);
833
+ subtreeContainer.style.display = "none";
834
+ }
835
+ else {
836
+ toggleButton.classList.add(TreeConstants.TreeCssClassNames.CLASS_OPENED);
837
+ subtreeContainer.style.display = "block";
838
+ }
839
+ }
840
+
841
+
842
+ // the predefined events handlers
843
+ treeNodeLableClickHandler(_eventPayload) {
844
+
845
+ // example for custom event handler, the placeholder
846
+ }
847
+
848
+
849
+ // END EVENTS BLOCK
850
+ getInModeConfDataNodeIsTreeItem(node) {
851
+
852
+ // @ts-ignore
853
+ const nodeLabelTextPropertyValue = node[this.conf.NODE_LABEL__TEXT];
854
+
855
+
856
+ // the main conf required dsts json field is label text. and it cannot be an object, but a string or number.
857
+ const isTreeItem = (nodeLabelTextPropertyValue && ((nodeLabelTextPropertyValue) !== "object"));
858
+
859
+
860
+ return isTreeItem;
861
+ }
862
+
863
+
864
+
865
+ escapeHTMLForAttribute(str) {
866
+ return str
867
+ .replace(/"/g, "&quot;")
868
+
869
+
870
+ // Replace double quotes
871
+ .replace(/'/g, "&#39;")
872
+
873
+
874
+ // Replace single quotes
875
+ .replace(/</g, "&lt;")
876
+
877
+
878
+ // Replace <
879
+ .replace(/>/g, "&gt;");
880
+
881
+
882
+ // Replace >
883
+ }
884
+
885
+
886
+
887
+ unescapeHTMLFromAttribute(str) {
888
+
889
+ if (!str) {
890
+ return "";
891
+ }
892
+
893
+
894
+ return str
895
+ .replace(/&quot;/g, "\"")
896
+
897
+
898
+ // Replace double quotes
899
+ .replace(/&#39;/g, "'")
900
+
901
+
902
+ // Replace single quotes
903
+ .replace(/&lt;/g, "<")
904
+
905
+
906
+ // Replace <
907
+ .replace(/&gt;/g, ">");
908
+
909
+
910
+ // Replace >
911
+ }
912
+
913
+
914
+
915
+ getTreeHtmlNodeDatasetJson(htmlNode) {
916
+
917
+ if (htmlNode === null) {
918
+ return "";
919
+ }
920
+
921
+
922
+ return JSON.parse(this.unescapeHTMLFromAttribute(htmlNode.dataset.json));
923
+ }
924
+ }
925
+
926
+