ngx-register-base 1.2.3 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (479) hide show
  1. package/ng-package.json +15 -0
  2. package/package.json +12 -15
  3. package/schematics/ng-update/replace-menu-state-token/index.ts +33 -0
  4. package/schematics/ng-update/update-prefix/index.ts +38 -0
  5. package/schematics/utils/{utils.d.ts → utils.ts} +9 -2
  6. package/src/lib/components/checkbox-selector/checkbox-selector.component.html +91 -0
  7. package/src/lib/components/checkbox-selector/checkbox-selector.component.less +67 -0
  8. package/src/lib/components/checkbox-selector/checkbox-selector.component.ts +176 -0
  9. package/src/lib/components/checkbox-selector/checkbox-selector.types.ts +8 -0
  10. package/src/lib/components/column-settings/column-settings.component.html +160 -0
  11. package/src/lib/components/column-settings/column-settings.component.less +131 -0
  12. package/src/lib/components/column-settings/column-settings.component.ts +352 -0
  13. package/src/lib/components/column-settings/components/column-settings-template/column-settings-template.component.html +65 -0
  14. package/src/lib/components/column-settings/components/column-settings-template/column-settings-template.component.less +79 -0
  15. package/src/lib/components/column-settings/components/column-settings-template/column-settings-template.component.ts +114 -0
  16. package/src/lib/components/column-settings/consts/column-settings.consts.ts +9 -0
  17. package/src/lib/components/column-settings/types/column-settings.types.ts +26 -0
  18. package/src/lib/components/divider/divider.component.html +4 -0
  19. package/src/lib/components/divider/divider.component.less +10 -0
  20. package/src/lib/components/divider/divider.component.ts +12 -0
  21. package/src/lib/components/filter-button/filter-button.component.html +20 -0
  22. package/src/lib/components/filter-button/filter-button.component.less +41 -0
  23. package/src/lib/components/filter-button/filter-button.component.ts +18 -0
  24. package/src/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.html +22 -0
  25. package/src/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.less +23 -0
  26. package/src/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.ts +31 -0
  27. package/src/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.html +49 -0
  28. package/src/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.less +37 -0
  29. package/src/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.ts +66 -0
  30. package/src/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.html +147 -0
  31. package/src/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.less +45 -0
  32. package/src/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.ts +114 -0
  33. package/src/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.html +44 -0
  34. package/src/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.less +49 -0
  35. package/src/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.ts +167 -0
  36. package/src/lib/components/filters/components/filter-list/filter-list.service.ts +97 -0
  37. package/src/lib/components/filters/components/filter-list/filters-section/filters-section.component.html +18 -0
  38. package/src/lib/components/filters/components/filter-list/filters-section/filters-section.component.less +55 -0
  39. package/src/lib/components/filters/components/filter-list/filters-section/filters-section.component.ts +69 -0
  40. package/src/lib/components/filters/components/filter-list.module.ts +29 -0
  41. package/src/lib/components/filters/register-table-filter.component.html +53 -0
  42. package/src/lib/components/filters/register-table-filter.component.less +17 -0
  43. package/src/lib/components/filters/register-table-filter.component.ts +167 -0
  44. package/src/lib/components/filters/register-table-filter.module.ts +22 -0
  45. package/src/lib/components/inputs/inputs.module.ts +104 -0
  46. package/src/lib/components/inputs/param-calendar-year/param-calendar-year.component.html +49 -0
  47. package/src/lib/components/inputs/param-calendar-year/param-calendar-year.component.less +70 -0
  48. package/src/lib/components/inputs/param-calendar-year/param-calendar-year.component.ts +52 -0
  49. package/src/lib/components/inputs/param-custom/param-custom.component.html +1 -0
  50. package/src/lib/components/inputs/param-custom/param-custom.component.ts +9 -0
  51. package/src/lib/components/inputs/param-date/param-date.component.html +55 -0
  52. package/src/lib/components/inputs/param-date/param-date.component.less +67 -0
  53. package/src/lib/components/inputs/param-date/param-date.component.ts +77 -0
  54. package/src/lib/components/inputs/param-date-range/param-date-range.component.html +45 -0
  55. package/src/lib/components/inputs/param-date-range/param-date-range.component.less +75 -0
  56. package/src/lib/components/inputs/param-date-range/param-date-range.component.ts +67 -0
  57. package/src/lib/components/inputs/param-date-time/param-date-time.component.html +70 -0
  58. package/src/lib/components/inputs/param-date-time/param-date-time.component.less +72 -0
  59. package/src/lib/components/inputs/param-date-time/param-date-time.component.ts +101 -0
  60. package/src/lib/components/inputs/param-date-time-range/param-date-time-range.component.html +67 -0
  61. package/src/lib/components/inputs/param-date-time-range/param-date-time-range.component.less +103 -0
  62. package/src/lib/components/inputs/param-date-time-range/param-date-time-range.component.ts +128 -0
  63. package/src/lib/components/inputs/param-month/param-month.component.html +46 -0
  64. package/src/lib/components/inputs/param-month/param-month.component.less +72 -0
  65. package/src/lib/components/inputs/param-month/param-month.component.ts +55 -0
  66. package/src/lib/components/inputs/param-month-range/param-month-range.component.html +39 -0
  67. package/src/lib/components/inputs/param-month-range/param-month-range.component.less +71 -0
  68. package/src/lib/components/inputs/param-month-range/param-month-range.component.ts +76 -0
  69. package/src/lib/components/inputs/param-multi-select/param-multi-select.component.html +84 -0
  70. package/src/lib/components/inputs/param-multi-select/param-multi-select.component.less +108 -0
  71. package/src/lib/components/inputs/param-multi-select/param-multi-select.component.ts +448 -0
  72. package/src/lib/components/inputs/param-select/param-select.component.html +106 -0
  73. package/src/lib/components/inputs/param-select/param-select.component.less +26 -0
  74. package/src/lib/components/inputs/param-select/param-select.component.ts +318 -0
  75. package/src/lib/components/inputs/param-switcher/param-switcher.component.html +8 -0
  76. package/src/lib/components/inputs/param-switcher/param-switcher.component.less +53 -0
  77. package/src/lib/components/inputs/param-switcher/param-switcher.component.ts +13 -0
  78. package/src/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.ts +29 -0
  79. package/src/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.html +19 -0
  80. package/src/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.less +76 -0
  81. package/src/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.ts +134 -0
  82. package/src/lib/components/inputs/param-switcher-date-time-range/types/param-switcher-date-time-range.types.ts +8 -0
  83. package/src/lib/components/inputs/param-text/param-text.component.html +59 -0
  84. package/src/lib/components/inputs/param-text/param-text.component.less +33 -0
  85. package/src/lib/components/inputs/param-text/param-text.component.ts +36 -0
  86. package/src/lib/components/inputs/param-textarea/param-textarea.component.html +61 -0
  87. package/src/lib/components/inputs/param-textarea/param-textarea.component.less +21 -0
  88. package/src/lib/components/inputs/param-textarea/param-textarea.component.ts +33 -0
  89. package/src/lib/components/inputs/param-toggle/param-toggle.component.html +40 -0
  90. package/src/lib/components/inputs/param-toggle/param-toggle.component.less +69 -0
  91. package/src/lib/components/inputs/param-toggle/param-toggle.component.ts +14 -0
  92. package/src/lib/components/inputs/param-tree/consts/param-tree.consts.ts +59 -0
  93. package/src/lib/components/inputs/param-tree/param-tree.component.html +51 -0
  94. package/src/lib/components/inputs/param-tree/param-tree.component.less +3 -0
  95. package/src/lib/components/inputs/param-tree/param-tree.component.ts +282 -0
  96. package/src/lib/components/inputs/param-tree/services/param-tree.service.ts +176 -0
  97. package/src/lib/components/inputs/param-tree/services/sync-tree-loader.service.ts +18 -0
  98. package/{lib/components/inputs/param-tree/tokens/param-tree.tokens.d.ts → src/lib/components/inputs/param-tree/tokens/param-tree.tokens.ts} +2 -1
  99. package/src/lib/components/inputs/param-tree/types/param-tree.types.ts +39 -0
  100. package/src/lib/components/inputs/param-tree/utils/param-tree.utils.ts +18 -0
  101. package/src/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.html +78 -0
  102. package/src/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.less +109 -0
  103. package/src/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.ts +89 -0
  104. package/src/lib/components/inputs/param-tree-select/param-tree-select.component.html +54 -0
  105. package/src/lib/components/inputs/param-tree-select/param-tree-select.component.less +56 -0
  106. package/src/lib/components/inputs/param-tree-select/param-tree-select.component.ts +91 -0
  107. package/src/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.html +5 -0
  108. package/src/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.ts +13 -0
  109. package/src/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.html +4 -0
  110. package/src/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.ts +11 -0
  111. package/src/lib/components/menu-constructor/sproc-menu-constructor.component.html +95 -0
  112. package/src/lib/components/menu-constructor/sproc-menu-constructor.component.less +183 -0
  113. package/src/lib/components/menu-constructor/sproc-menu-constructor.component.ts +687 -0
  114. package/src/lib/components/menu-constructor/store/sproc-abstract-menu-constructor.store.ts +32 -0
  115. package/src/lib/components/menu-constructor/store/sproc-menu-constructor.consts.ts +46 -0
  116. package/{lib/components/menu-constructor/store/sproc-menu.tokens.d.ts → src/lib/components/menu-constructor/store/sproc-menu.tokens.ts} +4 -1
  117. package/src/lib/components/page-menu/README.md +60 -0
  118. package/src/lib/components/page-menu/schema/sproc-page-menu.consts.ts +8 -0
  119. package/src/lib/components/page-menu/schema/sproc-page-menu.schema.ts +35 -0
  120. package/src/lib/components/page-menu/schema/sproc-page-menu.tokens.ts +5 -0
  121. package/src/lib/components/page-menu/schema/sproc-page-menu.types.ts +42 -0
  122. package/src/lib/components/page-menu/sproc-page-menu.component.html +166 -0
  123. package/src/lib/components/page-menu/sproc-page-menu.component.less +228 -0
  124. package/src/lib/components/page-menu/sproc-page-menu.component.ts +337 -0
  125. package/src/lib/components/paginator/paginator.component.html +97 -0
  126. package/src/lib/components/paginator/paginator.component.less +101 -0
  127. package/src/lib/components/paginator/paginator.component.ts +192 -0
  128. package/src/lib/components/paginator/types/paginator.types.ts +16 -0
  129. package/src/lib/components/register-table/consts/register-table.consts.ts +3 -0
  130. package/src/lib/components/register-table/directives/cell-template.directive.ts +11 -0
  131. package/src/lib/components/register-table/directives/header-template.directive.ts +11 -0
  132. package/src/lib/components/register-table/model/schema.ts +62 -0
  133. package/src/lib/components/register-table/pipes/class-by-type.pipe.ts +28 -0
  134. package/src/lib/components/register-table/pipes/sticky-column.pipe.ts +11 -0
  135. package/src/lib/components/register-table/register-table.component.html +257 -0
  136. package/src/lib/components/register-table/register-table.component.less +151 -0
  137. package/src/lib/components/register-table/register-table.component.ts +743 -0
  138. package/src/lib/components/reset-settings-form/reset-settings-form.component.html +14 -0
  139. package/src/lib/components/reset-settings-form/reset-settings-form.component.less +26 -0
  140. package/src/lib/components/reset-settings-form/reset-settings-form.component.ts +15 -0
  141. package/src/lib/components/search-input/search-input.component.html +6 -0
  142. package/src/lib/components/search-input/search-input.component.less +17 -0
  143. package/src/lib/components/search-input/search-input.component.ts +31 -0
  144. package/src/lib/components/sliding-panel/sliding-panel.component.html +13 -0
  145. package/src/lib/components/sliding-panel/sliding-panel.component.less +112 -0
  146. package/src/lib/components/sliding-panel/sliding-panel.component.ts +36 -0
  147. package/src/lib/components/sliding-panel/sliding-panel.module.ts +11 -0
  148. package/src/lib/consts/date-time.consts.ts +1 -0
  149. package/src/lib/consts/index.ts +8 -0
  150. package/src/lib/consts/inputs.consts.ts +9 -0
  151. package/src/lib/consts/month.consts.ts +82 -0
  152. package/src/lib/consts/params.consts.ts +1 -0
  153. package/src/lib/consts/register-base.consts.ts +40 -0
  154. package/src/lib/core/form-group-wrapper/errors-consts.ts +6 -0
  155. package/src/lib/core/form-group-wrapper/form-group-wrapper.ts +109 -0
  156. package/src/lib/core/input-control/input-control.ts +30 -0
  157. package/src/lib/core/param/param-base.ts +262 -0
  158. package/src/lib/core/param/param-date-base.ts +30 -0
  159. package/src/lib/core/param/param-select-base.ts +118 -0
  160. package/src/lib/core/param/param-text-base.ts +23 -0
  161. package/{lib/core/param/param.tokens.d.ts → src/lib/core/param/param.tokens.ts} +2 -1
  162. package/src/lib/core/register-base/register-base.store.ts +84 -0
  163. package/src/lib/core/register-base/register-base.ts +854 -0
  164. package/src/lib/directives/date/date-time.types.ts +36 -0
  165. package/src/lib/directives/date/format-date.pipe.ts +28 -0
  166. package/src/lib/directives/number/number-only.directive.ts +36 -0
  167. package/src/lib/directives/sticky/sticky-relative.directive.ts +30 -0
  168. package/src/lib/directives/sticky/sticky-relative.service.ts +34 -0
  169. package/src/lib/directives/sticky/sticky.directive.ts +189 -0
  170. package/src/lib/services/date-time.service.ts +399 -0
  171. package/src/lib/services/dialog/dialog.service.ts +62 -0
  172. package/{lib/services/dialog/dialog.types.d.ts → src/lib/services/dialog/dialog.types.ts} +8 -4
  173. package/src/lib/services/dom-intersection.service.ts +23 -0
  174. package/src/lib/services/filter/filters-state.service.ts +83 -0
  175. package/src/lib/services/filter/filters-transmit.service.ts +105 -0
  176. package/src/lib/services/filter/filters.service.ts +21 -0
  177. package/src/lib/services/inputs-state.service.ts +157 -0
  178. package/src/lib/services/inputs.service.ts +114 -0
  179. package/src/lib/services/key-pressed.service.ts +40 -0
  180. package/src/lib/services/resize-window-observer.service.ts +37 -0
  181. package/src/lib/services/selected-objects-state.service.ts +159 -0
  182. package/src/lib/store/fast-query-store.service.ts +132 -0
  183. package/{lib/types/event.types.d.ts → src/lib/types/event.types.ts} +1 -1
  184. package/src/lib/types/hasura.types.ts +41 -0
  185. package/src/lib/types/inputs.types.ts +63 -0
  186. package/src/lib/types/params.types.ts +42 -0
  187. package/src/lib/types/register-base.types.ts +161 -0
  188. package/src/lib/types/sub-types.ts +15 -0
  189. package/src/lib/types/user-profile.types.ts +18 -0
  190. package/src/lib/utils/functions.ts +11 -0
  191. package/src/lib/utils/get-url-segment.ts +46 -0
  192. package/src/lib/utils/prizm.shared.module.ts +176 -0
  193. package/src/lib/utils/rxjs.ts +33 -0
  194. package/src/lib/utils/select-all-utils.ts +16 -0
  195. package/tsconfig.lib.json +16 -0
  196. package/tsconfig.lib.prod.json +11 -0
  197. package/tsconfig.schematics.json +26 -0
  198. package/tsconfig.spec.json +15 -0
  199. package/esm2022/lib/components/checkbox-selector/checkbox-selector.component.mjs +0 -129
  200. package/esm2022/lib/components/checkbox-selector/checkbox-selector.types.mjs +0 -8
  201. package/esm2022/lib/components/column-settings/column-settings.component.mjs +0 -249
  202. package/esm2022/lib/components/column-settings/components/column-settings-template/column-settings-template.component.mjs +0 -80
  203. package/esm2022/lib/components/column-settings/consts/column-settings.consts.mjs +0 -10
  204. package/esm2022/lib/components/column-settings/index.mjs +0 -3
  205. package/esm2022/lib/components/column-settings/types/column-settings.types.mjs +0 -7
  206. package/esm2022/lib/components/divider/divider.component.mjs +0 -16
  207. package/esm2022/lib/components/filter-button/filter-button.component.mjs +0 -19
  208. package/esm2022/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.mjs +0 -31
  209. package/esm2022/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.mjs +0 -57
  210. package/esm2022/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.mjs +0 -110
  211. package/esm2022/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.mjs +0 -130
  212. package/esm2022/lib/components/filters/components/filter-list/filter-list.service.mjs +0 -89
  213. package/esm2022/lib/components/filters/components/filter-list/filters-section/filters-section.component.mjs +0 -41
  214. package/esm2022/lib/components/filters/components/filter-list.module.mjs +0 -45
  215. package/esm2022/lib/components/filters/index.mjs +0 -3
  216. package/esm2022/lib/components/filters/register-table-filter.component.mjs +0 -155
  217. package/esm2022/lib/components/filters/register-table-filter.module.mjs +0 -39
  218. package/esm2022/lib/components/index.mjs +0 -11
  219. package/esm2022/lib/components/inputs/index.mjs +0 -20
  220. package/esm2022/lib/components/inputs/inputs.module.mjs +0 -166
  221. package/esm2022/lib/components/inputs/param-calendar-year/param-calendar-year.component.mjs +0 -45
  222. package/esm2022/lib/components/inputs/param-custom/param-custom.component.mjs +0 -12
  223. package/esm2022/lib/components/inputs/param-date/param-date.component.mjs +0 -76
  224. package/esm2022/lib/components/inputs/param-date-range/param-date-range.component.mjs +0 -61
  225. package/esm2022/lib/components/inputs/param-date-time/param-date-time.component.mjs +0 -86
  226. package/esm2022/lib/components/inputs/param-date-time-range/param-date-time-range.component.mjs +0 -96
  227. package/esm2022/lib/components/inputs/param-month/param-month.component.mjs +0 -50
  228. package/esm2022/lib/components/inputs/param-month-range/param-month-range.component.mjs +0 -62
  229. package/esm2022/lib/components/inputs/param-multi-select/param-multi-select.component.mjs +0 -309
  230. package/esm2022/lib/components/inputs/param-select/param-select.component.mjs +0 -209
  231. package/esm2022/lib/components/inputs/param-switcher/param-switcher.component.mjs +0 -21
  232. package/esm2022/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.mjs +0 -28
  233. package/esm2022/lib/components/inputs/param-switcher-date-time-range/index.mjs +0 -3
  234. package/esm2022/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.mjs +0 -105
  235. package/esm2022/lib/components/inputs/param-switcher-date-time-range/types/param-switcher-date-time-range.types.mjs +0 -10
  236. package/esm2022/lib/components/inputs/param-text/param-text.component.mjs +0 -40
  237. package/esm2022/lib/components/inputs/param-textarea/param-textarea.component.mjs +0 -38
  238. package/esm2022/lib/components/inputs/param-toggle/param-toggle.component.mjs +0 -20
  239. package/esm2022/lib/components/inputs/param-tree/consts/param-tree.consts.mjs +0 -37
  240. package/esm2022/lib/components/inputs/param-tree/index.mjs +0 -8
  241. package/esm2022/lib/components/inputs/param-tree/param-tree.component.mjs +0 -207
  242. package/esm2022/lib/components/inputs/param-tree/services/param-tree.service.mjs +0 -116
  243. package/esm2022/lib/components/inputs/param-tree/services/sync-tree-loader.service.mjs +0 -20
  244. package/esm2022/lib/components/inputs/param-tree/tokens/param-tree.tokens.mjs +0 -3
  245. package/esm2022/lib/components/inputs/param-tree/types/param-tree.types.mjs +0 -2
  246. package/esm2022/lib/components/inputs/param-tree/utils/param-tree.utils.mjs +0 -9
  247. package/esm2022/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.mjs +0 -80
  248. package/esm2022/lib/components/inputs/param-tree-select/param-tree-select.component.mjs +0 -85
  249. package/esm2022/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.mjs +0 -15
  250. package/esm2022/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.mjs +0 -12
  251. package/esm2022/lib/components/menu-constructor/index.mjs +0 -5
  252. package/esm2022/lib/components/menu-constructor/sproc-menu-constructor.component.mjs +0 -559
  253. package/esm2022/lib/components/menu-constructor/store/sproc-abstract-menu-constructor.store.mjs +0 -3
  254. package/esm2022/lib/components/menu-constructor/store/sproc-menu-constructor.consts.mjs +0 -5
  255. package/esm2022/lib/components/menu-constructor/store/sproc-menu.tokens.mjs +0 -3
  256. package/esm2022/lib/components/page-menu/index.mjs +0 -6
  257. package/esm2022/lib/components/page-menu/schema/sproc-page-menu.consts.mjs +0 -9
  258. package/esm2022/lib/components/page-menu/schema/sproc-page-menu.schema.mjs +0 -2
  259. package/esm2022/lib/components/page-menu/schema/sproc-page-menu.tokens.mjs +0 -4
  260. package/esm2022/lib/components/page-menu/schema/sproc-page-menu.types.mjs +0 -3
  261. package/esm2022/lib/components/page-menu/sproc-page-menu.component.mjs +0 -275
  262. package/esm2022/lib/components/paginator/paginator.component.mjs +0 -159
  263. package/esm2022/lib/components/paginator/types/paginator.types.mjs +0 -2
  264. package/esm2022/lib/components/register-table/consts/register-table.consts.mjs +0 -4
  265. package/esm2022/lib/components/register-table/directives/cell-template.directive.mjs +0 -19
  266. package/esm2022/lib/components/register-table/directives/header-template.directive.mjs +0 -18
  267. package/esm2022/lib/components/register-table/index.mjs +0 -4
  268. package/esm2022/lib/components/register-table/model/schema.mjs +0 -10
  269. package/esm2022/lib/components/register-table/pipes/class-by-type.pipe.mjs +0 -33
  270. package/esm2022/lib/components/register-table/pipes/sticky-column.pipe.mjs +0 -17
  271. package/esm2022/lib/components/register-table/register-table.component.mjs +0 -544
  272. package/esm2022/lib/components/reset-settings-form/reset-settings-form.component.mjs +0 -18
  273. package/esm2022/lib/components/search-input/search-input.component.mjs +0 -28
  274. package/esm2022/lib/components/sliding-panel/sliding-panel.component.mjs +0 -48
  275. package/esm2022/lib/components/sliding-panel/sliding-panel.module.mjs +0 -19
  276. package/esm2022/lib/consts/date-time.consts.mjs +0 -2
  277. package/esm2022/lib/consts/index.mjs +0 -4
  278. package/esm2022/lib/consts/inputs.consts.mjs +0 -4
  279. package/esm2022/lib/consts/month.consts.mjs +0 -77
  280. package/esm2022/lib/consts/params.consts.mjs +0 -2
  281. package/esm2022/lib/consts/register-base.consts.mjs +0 -26
  282. package/esm2022/lib/core/form-group-wrapper/errors-consts.mjs +0 -8
  283. package/esm2022/lib/core/form-group-wrapper/form-group-wrapper.mjs +0 -81
  284. package/esm2022/lib/core/form-group-wrapper/index.mjs +0 -2
  285. package/esm2022/lib/core/index.mjs +0 -5
  286. package/esm2022/lib/core/input-control/index.mjs +0 -2
  287. package/esm2022/lib/core/input-control/input-control.mjs +0 -11
  288. package/esm2022/lib/core/param/index.mjs +0 -6
  289. package/esm2022/lib/core/param/param-base.mjs +0 -215
  290. package/esm2022/lib/core/param/param-date-base.mjs +0 -26
  291. package/esm2022/lib/core/param/param-select-base.mjs +0 -114
  292. package/esm2022/lib/core/param/param-text-base.mjs +0 -25
  293. package/esm2022/lib/core/param/param.tokens.mjs +0 -4
  294. package/esm2022/lib/core/register-base/index.mjs +0 -3
  295. package/esm2022/lib/core/register-base/register-base.mjs +0 -575
  296. package/esm2022/lib/core/register-base/register-base.store.mjs +0 -43
  297. package/esm2022/lib/directives/date/date-time.types.mjs +0 -34
  298. package/esm2022/lib/directives/date/format-date.pipe.mjs +0 -33
  299. package/esm2022/lib/directives/index.mjs +0 -3
  300. package/esm2022/lib/directives/number/number-only.directive.mjs +0 -41
  301. package/esm2022/lib/directives/sticky/index.mjs +0 -3
  302. package/esm2022/lib/directives/sticky/sticky-relative.directive.mjs +0 -32
  303. package/esm2022/lib/directives/sticky/sticky-relative.service.mjs +0 -32
  304. package/esm2022/lib/directives/sticky/sticky.directive.mjs +0 -169
  305. package/esm2022/lib/services/date-time.service.mjs +0 -314
  306. package/esm2022/lib/services/dialog/dialog.service.mjs +0 -53
  307. package/esm2022/lib/services/dialog/dialog.types.mjs +0 -2
  308. package/esm2022/lib/services/dialog/index.mjs +0 -3
  309. package/esm2022/lib/services/dom-intersection.service.mjs +0 -22
  310. package/esm2022/lib/services/filter/filters-state.service.mjs +0 -65
  311. package/esm2022/lib/services/filter/filters-transmit.service.mjs +0 -82
  312. package/esm2022/lib/services/filter/filters.service.mjs +0 -23
  313. package/esm2022/lib/services/index.mjs +0 -8
  314. package/esm2022/lib/services/inputs-state.service.mjs +0 -130
  315. package/esm2022/lib/services/inputs.service.mjs +0 -88
  316. package/esm2022/lib/services/key-pressed.service.mjs +0 -37
  317. package/esm2022/lib/services/resize-window-observer.service.mjs +0 -33
  318. package/esm2022/lib/services/selected-objects-state.service.mjs +0 -123
  319. package/esm2022/lib/store/fast-query-store.service.mjs +0 -110
  320. package/esm2022/lib/store/index.mjs +0 -2
  321. package/esm2022/lib/types/event.types.mjs +0 -2
  322. package/esm2022/lib/types/hasura.types.mjs +0 -2
  323. package/esm2022/lib/types/index.mjs +0 -7
  324. package/esm2022/lib/types/inputs.types.mjs +0 -19
  325. package/esm2022/lib/types/params.types.mjs +0 -2
  326. package/esm2022/lib/types/register-base.types.mjs +0 -6
  327. package/esm2022/lib/types/sub-types.mjs +0 -2
  328. package/esm2022/lib/types/user-profile.types.mjs +0 -2
  329. package/esm2022/lib/utils/functions.mjs +0 -10
  330. package/esm2022/lib/utils/get-url-segment.mjs +0 -35
  331. package/esm2022/lib/utils/index.mjs +0 -5
  332. package/esm2022/lib/utils/prizm.shared.module.mjs +0 -284
  333. package/esm2022/lib/utils/rxjs.mjs +0 -28
  334. package/esm2022/lib/utils/select-all-utils.mjs +0 -11
  335. package/esm2022/ngx-register-base.mjs +0 -5
  336. package/esm2022/public-api.mjs +0 -9
  337. package/fesm2022/ngx-register-base.mjs +0 -7465
  338. package/fesm2022/ngx-register-base.mjs.map +0 -1
  339. package/index.d.ts +0 -5
  340. package/lib/components/checkbox-selector/checkbox-selector.component.d.ts +0 -33
  341. package/lib/components/checkbox-selector/checkbox-selector.types.d.ts +0 -7
  342. package/lib/components/column-settings/column-settings.component.d.ts +0 -80
  343. package/lib/components/column-settings/components/column-settings-template/column-settings-template.component.d.ts +0 -24
  344. package/lib/components/column-settings/consts/column-settings.consts.d.ts +0 -8
  345. package/lib/components/column-settings/types/column-settings.types.d.ts +0 -22
  346. package/lib/components/divider/divider.component.d.ts +0 -6
  347. package/lib/components/filter-button/filter-button.component.d.ts +0 -8
  348. package/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.d.ts +0 -14
  349. package/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.d.ts +0 -25
  350. package/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.d.ts +0 -39
  351. package/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.d.ts +0 -41
  352. package/lib/components/filters/components/filter-list/filter-list.service.d.ts +0 -20
  353. package/lib/components/filters/components/filter-list/filters-section/filters-section.component.d.ts +0 -15
  354. package/lib/components/filters/components/filter-list.module.d.ts +0 -15
  355. package/lib/components/filters/register-table-filter.component.d.ts +0 -40
  356. package/lib/components/filters/register-table-filter.module.d.ts +0 -13
  357. package/lib/components/inputs/inputs.module.d.ts +0 -31
  358. package/lib/components/inputs/param-calendar-year/param-calendar-year.component.d.ts +0 -19
  359. package/lib/components/inputs/param-custom/param-custom.component.d.ts +0 -6
  360. package/lib/components/inputs/param-date/param-date.component.d.ts +0 -20
  361. package/lib/components/inputs/param-date-range/param-date-range.component.d.ts +0 -26
  362. package/lib/components/inputs/param-date-time/param-date-time.component.d.ts +0 -25
  363. package/lib/components/inputs/param-date-time-range/param-date-time-range.component.d.ts +0 -28
  364. package/lib/components/inputs/param-month/param-month.component.d.ts +0 -18
  365. package/lib/components/inputs/param-month-range/param-month-range.component.d.ts +0 -21
  366. package/lib/components/inputs/param-multi-select/param-multi-select.component.d.ts +0 -46
  367. package/lib/components/inputs/param-select/param-select.component.d.ts +0 -30
  368. package/lib/components/inputs/param-switcher/param-switcher.component.d.ts +0 -8
  369. package/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.d.ts +0 -2
  370. package/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.d.ts +0 -19
  371. package/lib/components/inputs/param-switcher-date-time-range/types/param-switcher-date-time-range.types.d.ts +0 -8
  372. package/lib/components/inputs/param-text/param-text.component.d.ts +0 -10
  373. package/lib/components/inputs/param-textarea/param-textarea.component.d.ts +0 -10
  374. package/lib/components/inputs/param-toggle/param-toggle.component.d.ts +0 -9
  375. package/lib/components/inputs/param-tree/consts/param-tree.consts.d.ts +0 -7
  376. package/lib/components/inputs/param-tree/param-tree.component.d.ts +0 -41
  377. package/lib/components/inputs/param-tree/services/param-tree.service.d.ts +0 -37
  378. package/lib/components/inputs/param-tree/services/sync-tree-loader.service.d.ts +0 -10
  379. package/lib/components/inputs/param-tree/types/param-tree.types.d.ts +0 -32
  380. package/lib/components/inputs/param-tree/utils/param-tree.utils.d.ts +0 -7
  381. package/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.d.ts +0 -31
  382. package/lib/components/inputs/param-tree-select/param-tree-select.component.d.ts +0 -30
  383. package/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.d.ts +0 -6
  384. package/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.d.ts +0 -5
  385. package/lib/components/menu-constructor/sproc-menu-constructor.component.d.ts +0 -113
  386. package/lib/components/menu-constructor/store/sproc-abstract-menu-constructor.store.d.ts +0 -24
  387. package/lib/components/menu-constructor/store/sproc-menu-constructor.consts.d.ts +0 -36
  388. package/lib/components/page-menu/schema/sproc-page-menu.consts.d.ts +0 -7
  389. package/lib/components/page-menu/schema/sproc-page-menu.schema.d.ts +0 -30
  390. package/lib/components/page-menu/schema/sproc-page-menu.tokens.d.ts +0 -3
  391. package/lib/components/page-menu/schema/sproc-page-menu.types.d.ts +0 -36
  392. package/lib/components/page-menu/sproc-page-menu.component.d.ts +0 -48
  393. package/lib/components/paginator/paginator.component.d.ts +0 -52
  394. package/lib/components/paginator/types/paginator.types.d.ts +0 -15
  395. package/lib/components/register-table/consts/register-table.consts.d.ts +0 -3
  396. package/lib/components/register-table/directives/cell-template.directive.d.ts +0 -9
  397. package/lib/components/register-table/directives/header-template.directive.d.ts +0 -9
  398. package/lib/components/register-table/model/schema.d.ts +0 -52
  399. package/lib/components/register-table/pipes/class-by-type.pipe.d.ts +0 -8
  400. package/lib/components/register-table/pipes/sticky-column.pipe.d.ts +0 -7
  401. package/lib/components/register-table/register-table.component.d.ts +0 -165
  402. package/lib/components/reset-settings-form/reset-settings-form.component.d.ts +0 -9
  403. package/lib/components/search-input/search-input.component.d.ts +0 -11
  404. package/lib/components/sliding-panel/sliding-panel.component.d.ts +0 -14
  405. package/lib/components/sliding-panel/sliding-panel.module.d.ts +0 -9
  406. package/lib/consts/date-time.consts.d.ts +0 -1
  407. package/lib/consts/index.d.ts +0 -3
  408. package/lib/consts/inputs.consts.d.ts +0 -4
  409. package/lib/consts/month.consts.d.ts +0 -49
  410. package/lib/consts/params.consts.d.ts +0 -1
  411. package/lib/consts/register-base.consts.d.ts +0 -19
  412. package/lib/core/form-group-wrapper/errors-consts.d.ts +0 -5
  413. package/lib/core/form-group-wrapper/form-group-wrapper.d.ts +0 -15
  414. package/lib/core/input-control/input-control.d.ts +0 -11
  415. package/lib/core/param/param-base.d.ts +0 -68
  416. package/lib/core/param/param-date-base.d.ts +0 -18
  417. package/lib/core/param/param-select-base.d.ts +0 -42
  418. package/lib/core/param/param-text-base.d.ts +0 -15
  419. package/lib/core/register-base/register-base.d.ts +0 -168
  420. package/lib/core/register-base/register-base.store.d.ts +0 -35
  421. package/lib/directives/date/date-time.types.d.ts +0 -32
  422. package/lib/directives/date/format-date.pipe.d.ts +0 -10
  423. package/lib/directives/number/number-only.directive.d.ts +0 -10
  424. package/lib/directives/sticky/sticky-relative.directive.d.ts +0 -13
  425. package/lib/directives/sticky/sticky-relative.service.d.ts +0 -15
  426. package/lib/directives/sticky/sticky.directive.d.ts +0 -27
  427. package/lib/services/date-time.service.d.ts +0 -80
  428. package/lib/services/dialog/dialog.service.d.ts +0 -22
  429. package/lib/services/dom-intersection.service.d.ts +0 -8
  430. package/lib/services/filter/filters-state.service.d.ts +0 -21
  431. package/lib/services/filter/filters-transmit.service.d.ts +0 -28
  432. package/lib/services/filter/filters.service.d.ts +0 -12
  433. package/lib/services/inputs-state.service.d.ts +0 -57
  434. package/lib/services/inputs.service.d.ts +0 -28
  435. package/lib/services/key-pressed.service.d.ts +0 -15
  436. package/lib/services/resize-window-observer.service.d.ts +0 -11
  437. package/lib/services/selected-objects-state.service.d.ts +0 -47
  438. package/lib/store/fast-query-store.service.d.ts +0 -19
  439. package/lib/types/hasura.types.d.ts +0 -35
  440. package/lib/types/inputs.types.d.ts +0 -41
  441. package/lib/types/params.types.d.ts +0 -27
  442. package/lib/types/register-base.types.d.ts +0 -123
  443. package/lib/types/sub-types.d.ts +0 -8
  444. package/lib/types/user-profile.types.d.ts +0 -17
  445. package/lib/utils/functions.d.ts +0 -3
  446. package/lib/utils/get-url-segment.d.ts +0 -7
  447. package/lib/utils/prizm.shared.module.d.ts +0 -14
  448. package/lib/utils/rxjs.d.ts +0 -10
  449. package/lib/utils/select-all-utils.d.ts +0 -8
  450. package/schematics/ng-update/replace-menu-state-token/index.d.ts +0 -2
  451. package/schematics/ng-update/replace-menu-state-token/index.js +0 -29
  452. package/schematics/ng-update/replace-menu-state-token/index.js.map +0 -1
  453. package/schematics/ng-update/update-prefix/index.d.ts +0 -2
  454. package/schematics/ng-update/update-prefix/index.js +0 -33
  455. package/schematics/ng-update/update-prefix/index.js.map +0 -1
  456. package/schematics/utils/utils.js +0 -25
  457. package/schematics/utils/utils.js.map +0 -1
  458. /package/{lib/components/column-settings/index.d.ts → src/lib/components/column-settings/index.ts} +0 -0
  459. /package/{lib/components/filters/index.d.ts → src/lib/components/filters/index.ts} +0 -0
  460. /package/{lib/components/index.d.ts → src/lib/components/index.ts} +0 -0
  461. /package/{lib/components/inputs/index.d.ts → src/lib/components/inputs/index.ts} +0 -0
  462. /package/{lib/components/inputs/param-switcher-date-time-range/index.d.ts → src/lib/components/inputs/param-switcher-date-time-range/index.ts} +0 -0
  463. /package/{lib/components/inputs/param-tree/index.d.ts → src/lib/components/inputs/param-tree/index.ts} +0 -0
  464. /package/{lib/components/menu-constructor/index.d.ts → src/lib/components/menu-constructor/index.ts} +0 -0
  465. /package/{lib/components/page-menu/index.d.ts → src/lib/components/page-menu/index.ts} +0 -0
  466. /package/{lib/components/register-table/index.d.ts → src/lib/components/register-table/index.ts} +0 -0
  467. /package/{lib/core/form-group-wrapper/index.d.ts → src/lib/core/form-group-wrapper/index.ts} +0 -0
  468. /package/{lib/core/index.d.ts → src/lib/core/index.ts} +0 -0
  469. /package/{lib/core/input-control/index.d.ts → src/lib/core/input-control/index.ts} +0 -0
  470. /package/{lib/core/param/index.d.ts → src/lib/core/param/index.ts} +0 -0
  471. /package/{lib/core/register-base/index.d.ts → src/lib/core/register-base/index.ts} +0 -0
  472. /package/{lib/directives/index.d.ts → src/lib/directives/index.ts} +0 -0
  473. /package/{lib/directives/sticky/index.d.ts → src/lib/directives/sticky/index.ts} +0 -0
  474. /package/{lib/services/dialog/index.d.ts → src/lib/services/dialog/index.ts} +0 -0
  475. /package/{lib/services/index.d.ts → src/lib/services/index.ts} +0 -0
  476. /package/{lib/store/index.d.ts → src/lib/store/index.ts} +0 -0
  477. /package/{lib/types/index.d.ts → src/lib/types/index.ts} +0 -0
  478. /package/{lib/utils/index.d.ts → src/lib/utils/index.ts} +0 -0
  479. /package/{public-api.d.ts → src/public-api.ts} +0 -0
@@ -1,207 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, inject, input, output, untracked, } from '@angular/core';
2
- import { TuiCheckbox, TuiTree } from '@taiga-ui/kit';
3
- import { TuiLabel, TuiLoader } from '@taiga-ui/core';
4
- import { FormsModule } from '@angular/forms';
5
- import { AsyncPipe, NgTemplateOutlet } from '@angular/common';
6
- import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
7
- import { EMPTY, expand, filter, from, of, switchMap, take, takeUntil, tap } from 'rxjs';
8
- import { ParamTreeService } from './services/param-tree.service';
9
- import { TREE_LOADING_NODE, treeNodesFlatten, updatesCheckedNodesEqual, } from './consts/param-tree.consts';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@taiga-ui/kit";
12
- import * as i2 from "@angular/forms";
13
- /** Компонент иерархического списка */
14
- export class ParamTreeComponent {
15
- constructor() {
16
- /**
17
- * Режим выбора нескольких значений
18
- *
19
- * @default Выбор единственного узла */
20
- this.multi = input(false);
21
- /** Задать выбранные узлы */
22
- this.checkedNodes = input([]);
23
- /** Кастомный шаблон узла */
24
- this.nodeTemplate = input(null);
25
- /** Выбранные узлы верхнего уровня */
26
- this.selectedNodesChange = output();
27
- this._treeService = inject((ParamTreeService));
28
- this._dr = inject(DestroyRef);
29
- this.defaultNodeOpenedState = toSignal(this._treeService.defaultNodeOpenedState$);
30
- this.openedNodesState = this._treeService.openedNodesState;
31
- this.checkedNodesState = this._treeService.checkedNodesState;
32
- this._lastCheckedNode = toSignal(this._treeService.lastCheckedNode$, {
33
- initialValue: null,
34
- });
35
- this.updatesCheckedNodes = computed(() => this.checkedNodes(), {
36
- equal: (prev, curr) => updatesCheckedNodesEqual(prev, curr, this._treeService),
37
- });
38
- this.treeNodes$ = this._treeService.nodes$;
39
- this.TREE_LOADER = TREE_LOADING_NODE;
40
- this.childrenHandler = (node) => this._treeService.getChildren(node);
41
- this.onChecked = (currentNode, check) => {
42
- this._treeService.setLastCheckedNode(check ? currentNode : null);
43
- const flattenNodes = treeNodesFlatten(currentNode, this._treeService);
44
- if (this.multi()) {
45
- for (const node of flattenNodes) {
46
- this.checkedNodesState().set(node, check);
47
- }
48
- }
49
- else {
50
- this.checkedNodesState().clear();
51
- for (const node of flattenNodes) {
52
- this.checkedNodesState().set(node, true);
53
- }
54
- }
55
- this._updateCheckedNodes();
56
- };
57
- effect(() => {
58
- const nodes = this.updatesCheckedNodes();
59
- untracked(() => {
60
- if (nodes.length === 0) {
61
- this.checkedNodesState.set(new Map());
62
- }
63
- else {
64
- this._tryToSetNodesRecursive(nodes);
65
- }
66
- });
67
- });
68
- }
69
- getValue(currentNode, state) {
70
- return this.multi()
71
- ? this._isSelectedMulti(currentNode, state)
72
- : this._isSelectedSingle(currentNode, state);
73
- }
74
- _isSelectedMulti(currentNode, state) {
75
- let result = null;
76
- const flattenNodes = treeNodesFlatten(currentNode, this._treeService);
77
- const firstNode = flattenNodes[0];
78
- if (firstNode) {
79
- result = !!state.get(firstNode);
80
- }
81
- for (const node of flattenNodes) {
82
- if (result !== !!state.get(node)) {
83
- const currentLevelNode = flattenNodes.filter((value) => value.parent === node.parent);
84
- return currentLevelNode.every((value) => !!state.get(value)) ? true : null;
85
- }
86
- }
87
- return result;
88
- }
89
- _isSelectedSingle(currentNode, state) {
90
- const lastNode = this._lastCheckedNode();
91
- const flattenNodes = treeNodesFlatten(currentNode, this._treeService);
92
- const isLinkedNode = flattenNodes.some((node) => !!state.get(node));
93
- if (!isLinkedNode || !lastNode) {
94
- return false;
95
- }
96
- return lastNode === currentNode ||
97
- this._isDeepParent(currentNode, lastNode) ||
98
- this._isDeepChild(currentNode, lastNode)
99
- ? true
100
- : null;
101
- }
102
- _isDeepParent(parent, child) {
103
- if (!child.parent) {
104
- return false;
105
- }
106
- if (parent === child.parent && parent.children.length === 1) {
107
- return true;
108
- }
109
- if (child.parent.children && child.parent.children.length !== 1) {
110
- return false;
111
- }
112
- return this._isDeepParent(parent, child.parent);
113
- }
114
- _isDeepChild(child, parent) {
115
- if (!parent.children || parent.children.length === 0) {
116
- return false;
117
- }
118
- for (const node of parent.children) {
119
- if (node === child) {
120
- return true;
121
- }
122
- if (this._isDeepChild(child, node)) {
123
- return true;
124
- }
125
- }
126
- return false;
127
- }
128
- onToggle(currentNode) {
129
- this._treeService
130
- .loadChildren(currentNode)
131
- .pipe(takeUntilDestroyed(this._dr))
132
- .subscribe((children) => {
133
- const parent = children?.[0]?.parent;
134
- if (parent && this.checkedNodesState().get(parent)) {
135
- for (const child of children) {
136
- this.checkedNodesState().set(child, true);
137
- }
138
- }
139
- });
140
- }
141
- _updateCheckedNodes(options) {
142
- const topLevelNodes = this._treeService.getTopLevelNodes();
143
- const state = new Map();
144
- this._calcCheckedStateNodes(topLevelNodes, state);
145
- this.checkedNodesState.set(state);
146
- if (options?.emitEvent !== false) {
147
- this.selectedNodesChange.emit(this._findFullySelectedNodes(topLevelNodes));
148
- }
149
- }
150
- _findFullySelectedNodes(nodes) {
151
- const fullySelectedNodes = [];
152
- for (const node of nodes) {
153
- const checked = this.getValue(node, this.checkedNodesState());
154
- if (checked) {
155
- fullySelectedNodes.push(node);
156
- }
157
- else if (checked === null) {
158
- const children = this._treeService.getChildren(node);
159
- const fullySelectedChildren = this._findFullySelectedNodes(children);
160
- fullySelectedNodes.push(...fullySelectedChildren);
161
- }
162
- }
163
- return fullySelectedNodes;
164
- }
165
- _calcCheckedStateNodes(nodes, state) {
166
- for (const node of nodes) {
167
- const checked = this.getValue(node, this.checkedNodesState());
168
- if (checked !== false) {
169
- state.set(node, checked);
170
- const children = this._treeService.getChildren(node);
171
- this._calcCheckedStateNodes(children, state);
172
- }
173
- }
174
- }
175
- _tryToSetNodesRecursive(newNodes) {
176
- const topLevelNodes = this._treeService.getTopLevelNodes();
177
- const searchNodesCompleteState = new Map(newNodes.map((newNode) => [newNode, false]));
178
- const allComplete = (state) => [...state.values()].every(Boolean);
179
- const analogNodes = [];
180
- from(topLevelNodes)
181
- .pipe(expand((node) => this._treeService.hasChildren(node)
182
- ? this._treeService.loadChildren(node).pipe(switchMap((children) => from(children)))
183
- : EMPTY), tap((node) => {
184
- const foundNode = newNodes.find((newNode) => this._treeService.equals(node, newNode));
185
- if (foundNode) {
186
- searchNodesCompleteState.set(foundNode, true);
187
- analogNodes.push(node);
188
- }
189
- }), filter(() => allComplete(searchNodesCompleteState)), take(1),
190
- // eslint-disable-next-line rxjs/no-unsafe-takeuntil
191
- takeUntil(of(null).pipe(filter(() => allComplete(searchNodesCompleteState)))), takeUntilDestroyed(this._dr))
192
- .subscribe({
193
- complete: () => {
194
- for (const node of analogNodes) {
195
- this.onChecked(node, true);
196
- }
197
- },
198
- });
199
- }
200
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ParamTreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
201
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ParamTreeComponent, isStandalone: true, selector: "sproc-param-tree", inputs: { multi: { classPropertyName: "multi", publicName: "multi", isSignal: true, isRequired: false, transformFunction: null }, checkedNodes: { classPropertyName: "checkedNodes", publicName: "checkedNodes", isSignal: true, isRequired: false, transformFunction: null }, nodeTemplate: { classPropertyName: "nodeTemplate", publicName: "nodeTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedNodesChange: "selectedNodesChange" }, ngImport: i0, template: "<div class=\"tree-custom-class__container\">\n @for (node of treeNodes$ | async; track node) {\n @if (node === TREE_LOADER) {\n <tui-loader [showLoader]=\"true\" [overlay]=\"true\" size=\"s\"></tui-loader>\n } @else {\n @if (defaultNodeOpenedState() === undefined) {\n <tui-tree\n class=\"tui_tree--not-collapsed\"\n [value]=\"node\"\n [content]=\"contentTemplate\"\n [childrenHandler]=\"childrenHandler\"\n >\n </tui-tree>\n } @else {\n <tui-tree\n [value]=\"node\"\n [content]=\"contentTemplate\"\n [childrenHandler]=\"childrenHandler\"\n [tuiTreeController]=\"!!defaultNodeOpenedState()\"\n [map]=\"openedNodesState()\"\n (toggled)=\"onToggle($event)\"\n >\n </tui-tree>\n }\n }\n }\n</div>\n\n<ng-template #contentTemplate let-node>\n @let isChecked = checkedNodesState().get(node);\n\n @if (node === TREE_LOADER) {\n <tui-loader [showLoader]=\"true\" [overlay]=\"true\" size=\"s\"></tui-loader>\n } @else if (nodeTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate()\"\n [ngTemplateOutletContext]=\"{ node, isChecked, onChecked }\"\n ></ng-container>\n } @else {\n <label tuiLabel class=\"tree-custom-class__label-checkbox-container\">\n <input\n size=\"s\"\n tuiCheckbox\n type=\"checkbox\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"onChecked(node, $event)\"\n />\n <small>{{ node.name }}</small>\n </label>\n }\n</ng-template>\n", styles: [".tree-custom-class__label-checkbox-container{margin-inline-start:4px}\n"], dependencies: [{ kind: "component", type: i1.TuiTreeComponent, selector: "tui-tree", inputs: ["value", "trackBy", "content"] }, { kind: "directive", type: i1.TuiTreeChildren, selector: "tui-tree[childrenHandler]", inputs: ["childrenHandler"] }, { kind: "directive", type: i1.TuiTreeControllerDirective, selector: "[tuiTreeController][map]", inputs: ["tuiTreeController", "map"], outputs: ["toggled"], exportAs: ["tuiTreeController"] }, { kind: "directive", type: TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: TuiCheckbox, selector: "input[type=\"checkbox\"][tuiCheckbox]", inputs: ["size"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
202
- }
203
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ParamTreeComponent, decorators: [{
204
- type: Component,
205
- args: [{ selector: 'sproc-param-tree', standalone: true, imports: [TuiTree, TuiLabel, TuiCheckbox, FormsModule, AsyncPipe, TuiLoader, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"tree-custom-class__container\">\n @for (node of treeNodes$ | async; track node) {\n @if (node === TREE_LOADER) {\n <tui-loader [showLoader]=\"true\" [overlay]=\"true\" size=\"s\"></tui-loader>\n } @else {\n @if (defaultNodeOpenedState() === undefined) {\n <tui-tree\n class=\"tui_tree--not-collapsed\"\n [value]=\"node\"\n [content]=\"contentTemplate\"\n [childrenHandler]=\"childrenHandler\"\n >\n </tui-tree>\n } @else {\n <tui-tree\n [value]=\"node\"\n [content]=\"contentTemplate\"\n [childrenHandler]=\"childrenHandler\"\n [tuiTreeController]=\"!!defaultNodeOpenedState()\"\n [map]=\"openedNodesState()\"\n (toggled)=\"onToggle($event)\"\n >\n </tui-tree>\n }\n }\n }\n</div>\n\n<ng-template #contentTemplate let-node>\n @let isChecked = checkedNodesState().get(node);\n\n @if (node === TREE_LOADER) {\n <tui-loader [showLoader]=\"true\" [overlay]=\"true\" size=\"s\"></tui-loader>\n } @else if (nodeTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate()\"\n [ngTemplateOutletContext]=\"{ node, isChecked, onChecked }\"\n ></ng-container>\n } @else {\n <label tuiLabel class=\"tree-custom-class__label-checkbox-container\">\n <input\n size=\"s\"\n tuiCheckbox\n type=\"checkbox\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"onChecked(node, $event)\"\n />\n <small>{{ node.name }}</small>\n </label>\n }\n</ng-template>\n", styles: [".tree-custom-class__label-checkbox-container{margin-inline-start:4px}\n"] }]
206
- }], ctorParameters: () => [] });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0tdHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVnaXN0ZXItYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL3BhcmFtLXRyZWUvcGFyYW0tdHJlZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVnaXN0ZXItYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL3BhcmFtLXRyZWUvcGFyYW0tdHJlZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFeEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixnQkFB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LEtBQUssTUFBTSxJQUFJLElBQUksV0FBVyxFQUFFLENBQUM7b0JBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM3QixDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBclBVLGtCQUFrQjttR0FBbEIsa0JBQWtCLG1pQkNuQy9CLDhqREFtREEsc2lCRHJCcUIsUUFBUSw0REFBRSxXQUFXLG1HQUFFLFdBQVcsMmdCQUFFLFNBQVMsOENBQUUsU0FBUyxpSUFBRSxnQkFBZ0I7OzRGQUtsRixrQkFBa0I7a0JBUjlCLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixDQUFDLG1CQUc3RSx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIERlc3Ryb3lSZWYsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFR1aUNoZWNrYm94LCBUdWlUcmVlIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBUdWlMYWJlbCwgVHVpTG9hZGVyIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEVNUFRZLCBleHBhbmQsIGZpbHRlciwgZnJvbSwgb2YsIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENoaWxkcmVuSGFuZGxlclR5cGUsIElUcmVlTm9kZSB9IGZyb20gJy4vdHlwZXMvcGFyYW0tdHJlZS50eXBlcyc7XG5pbXBvcnQgeyBQYXJhbVRyZWVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wYXJhbS10cmVlLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgVFJFRV9MT0FESU5HX05PREUsXG4gIHRyZWVOb2Rlc0ZsYXR0ZW4sXG4gIHVwZGF0ZXNDaGVja2VkTm9kZXNFcXVhbCxcbn0gZnJvbSAnLi9jb25zdHMvcGFyYW0tdHJlZS5jb25zdHMnO1xuXG4vKiog0JrQvtC80L/QvtC90LXQvdGCINC40LXRgNCw0YDRhdC40YfQtdGB0LrQvtCz0L4g0YHQv9C40YHQutCwICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcHJvYy1wYXJhbS10cmVlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1R1aVRyZWUsIFR1aUxhYmVsLCBUdWlDaGVja2JveCwgRm9ybXNNb2R1bGUsIEFzeW5jUGlwZSwgVHVpTG9hZGVyLCBOZ1RlbXBsYXRlT3V0bGV0XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhcmFtLXRyZWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcGFyYW0tdHJlZS5jb21wb25lbnQubGVzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQYXJhbVRyZWVDb21wb25lbnQ8VD4ge1xuICAvKipcbiAgICog0KDQtdC20LjQvCDQstGL0LHQvtGA0LAg0L3QtdGB0LrQvtC70YzQutC40YUg0LfQvdCw0YfQtdC90LjQuVxuICAgKlxuICAgKiBAZGVmYXVsdCDQktGL0LHQvtGAINC10LTQuNC90YHRgtCy0LXQvdC90L7Qs9C+INGD0LfQu9CwICovXG4gIHB1YmxpYyBtdWx0aSA9IGlucHV0KGZhbHNlKTtcbiAgLyoqINCX0LDQtNCw0YLRjCDQstGL0LHRgNCw0L3QvdGL0LUg0YPQt9C70YsgKi9cbiAgcHVibGljIGNoZWNrZWROb2RlcyA9IGlucHV0PElUcmVlTm9kZTxUPltdPihbXSk7XG4gIC8qKiDQmtCw0YHRgtC+0LzQvdGL0Lkg0YjQsNCx0LvQvtC9INGD0LfQu9CwICovXG4gIHB1YmxpYyBub2RlVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqINCS0YvQsdGA0LDQvdC90YvQtSDRg9C30LvRiyDQstC10YDRhdC90LXQs9C+INGD0YDQvtCy0L3RjyAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWROb2Rlc0NoYW5nZSA9IG91dHB1dDxJVHJlZU5vZGU8VD5bXT4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF90cmVlU2VydmljZSA9IGluamVjdChQYXJhbVRyZWVTZXJ2aWNlPFQ+KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZHIgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlZmF1bHROb2RlT3BlbmVkU3RhdGUgPSB0b1NpZ25hbCh0aGlzLl90cmVlU2VydmljZS5kZWZhdWx0Tm9kZU9wZW5lZFN0YXRlJCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBvcGVuZWROb2Rlc1N0YXRlID0gdGhpcy5fdHJlZVNlcnZpY2Uub3BlbmVkTm9kZXNTdGF0ZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoZWNrZWROb2Rlc1N0YXRlID0gdGhpcy5fdHJlZVNlcnZpY2UuY2hlY2tlZE5vZGVzU3RhdGU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbGFzdENoZWNrZWROb2RlID0gdG9TaWduYWwodGhpcy5fdHJlZVNlcnZpY2UubGFzdENoZWNrZWROb2RlJCwge1xuICAgIGluaXRpYWxWYWx1ZTogbnVsbCxcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdXBkYXRlc0NoZWNrZWROb2RlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY2hlY2tlZE5vZGVzKCksIHtcbiAgICBlcXVhbDogKHByZXYsIGN1cnIpID0+IHVwZGF0ZXNDaGVja2VkTm9kZXNFcXVhbChwcmV2LCBjdXJyLCB0aGlzLl90cmVlU2VydmljZSksXG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB0cmVlTm9kZXMkID0gdGhpcy5fdHJlZVNlcnZpY2Uubm9kZXMkO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBUUkVFX0xPQURFUiA9IFRSRUVfTE9BRElOR19OT0RFO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hpbGRyZW5IYW5kbGVyOiBDaGlsZHJlbkhhbmRsZXJUeXBlPFQ+ID0gKG5vZGUpID0+XG4gICAgdGhpcy5fdHJlZVNlcnZpY2UuZ2V0Q2hpbGRyZW4obm9kZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy51cGRhdGVzQ2hlY2tlZE5vZGVzKCk7XG5cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmIChub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLmNoZWNrZWROb2Rlc1N0YXRlLnNldChuZXcgTWFwPElUcmVlTm9kZTxUPiwgYm9vbGVhbiB8IG51bGw+KCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3RyeVRvU2V0Tm9kZXNSZWN1cnNpdmUobm9kZXMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRWYWx1ZShcbiAgICBjdXJyZW50Tm9kZTogSVRyZWVOb2RlPFQ+LFxuICAgIHN0YXRlOiBNYXA8SVRyZWVOb2RlPFQ+LCBib29sZWFuIHwgbnVsbD5cbiAgKTogYm9vbGVhbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm11bHRpKClcbiAgICAgID8gdGhpcy5faXNTZWxlY3RlZE11bHRpKGN1cnJlbnROb2RlLCBzdGF0ZSlcbiAgICAgIDogdGhpcy5faXNTZWxlY3RlZFNpbmdsZShjdXJyZW50Tm9kZSwgc3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNTZWxlY3RlZE11bHRpKFxuICAgIGN1cnJlbnROb2RlOiBJVHJlZU5vZGU8VD4sXG4gICAgc3RhdGU6IE1hcDxJVHJlZU5vZGU8VD4sIGJvb2xlYW4gfCBudWxsPlxuICApOiBib29sZWFuIHwgbnVsbCB7XG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGZsYXR0ZW5Ob2RlcyA9IHRyZWVOb2Rlc0ZsYXR0ZW48VD4oY3VycmVudE5vZGUsIHRoaXMuX3RyZWVTZXJ2aWNlKTtcbiAgICBjb25zdCBmaXJzdE5vZGUgPSBmbGF0dGVuTm9kZXNbMF07XG5cbiAgICBpZiAoZmlyc3ROb2RlKSB7XG4gICAgICByZXN1bHQgPSAhIXN0YXRlLmdldChmaXJzdE5vZGUpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBmbGF0dGVuTm9kZXMpIHtcbiAgICAgIGlmIChyZXN1bHQgIT09ICEhc3RhdGUuZ2V0KG5vZGUpKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRMZXZlbE5vZGUgPSBmbGF0dGVuTm9kZXMuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUucGFyZW50ID09PSBub2RlLnBhcmVudCk7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnRMZXZlbE5vZGUuZXZlcnkoKHZhbHVlKSA9PiAhIXN0YXRlLmdldCh2YWx1ZSkpID8gdHJ1ZSA6IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgX2lzU2VsZWN0ZWRTaW5nbGUoXG4gICAgY3VycmVudE5vZGU6IElUcmVlTm9kZTxUPixcbiAgICBzdGF0ZTogTWFwPElUcmVlTm9kZTxUPiwgYm9vbGVhbiB8IG51bGw+XG4gICk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICBjb25zdCBsYXN0Tm9kZSA9IHRoaXMuX2xhc3RDaGVja2VkTm9kZSgpO1xuICAgIGNvbnN0IGZsYXR0ZW5Ob2RlcyA9IHRyZWVOb2Rlc0ZsYXR0ZW48VD4oY3VycmVudE5vZGUsIHRoaXMuX3RyZWVTZXJ2aWNlKTtcbiAgICBjb25zdCBpc0xpbmtlZE5vZGUgPSBmbGF0dGVuTm9kZXMuc29tZSgobm9kZSkgPT4gISFzdGF0ZS5nZXQobm9kZSkpO1xuXG4gICAgaWYgKCFpc0xpbmtlZE5vZGUgfHwgIWxhc3ROb2RlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3ROb2RlID09PSBjdXJyZW50Tm9kZSB8fFxuICAgICAgdGhpcy5faXNEZWVwUGFyZW50KGN1cnJlbnROb2RlLCBsYXN0Tm9kZSkgfHxcbiAgICAgIHRoaXMuX2lzRGVlcENoaWxkKGN1cnJlbnROb2RlLCBsYXN0Tm9kZSlcbiAgICAgID8gdHJ1ZVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNEZWVwUGFyZW50KHBhcmVudDogSVRyZWVOb2RlPFQ+LCBjaGlsZDogSVRyZWVOb2RlPFQ+KTogYm9vbGVhbiB7XG4gICAgaWYgKCFjaGlsZC5wYXJlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAocGFyZW50ID09PSBjaGlsZC5wYXJlbnQgJiYgcGFyZW50LmNoaWxkcmVuIS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjaGlsZC5wYXJlbnQuY2hpbGRyZW4gJiYgY2hpbGQucGFyZW50LmNoaWxkcmVuLmxlbmd0aCAhPT0gMSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9pc0RlZXBQYXJlbnQocGFyZW50LCBjaGlsZC5wYXJlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNEZWVwQ2hpbGQoY2hpbGQ6IElUcmVlTm9kZTxUPiwgcGFyZW50OiBJVHJlZU5vZGU8VD4pOiBib29sZWFuIHtcbiAgICBpZiAoIXBhcmVudC5jaGlsZHJlbiB8fCBwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBub2RlIG9mIHBhcmVudC5jaGlsZHJlbikge1xuICAgICAgaWYgKG5vZGUgPT09IGNoaWxkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5faXNEZWVwQ2hpbGQoY2hpbGQsIG5vZGUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblRvZ2dsZShjdXJyZW50Tm9kZTogSVRyZWVOb2RlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5fdHJlZVNlcnZpY2VcbiAgICAgIC5sb2FkQ2hpbGRyZW4oY3VycmVudE5vZGUpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZHIpKVxuICAgICAgLnN1YnNjcmliZSgoY2hpbGRyZW4pID0+IHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gY2hpbGRyZW4/LlswXT8ucGFyZW50O1xuXG4gICAgICAgIGlmIChwYXJlbnQgJiYgdGhpcy5jaGVja2VkTm9kZXNTdGF0ZSgpLmdldChwYXJlbnQpKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy5jaGVja2VkTm9kZXNTdGF0ZSgpLnNldChjaGlsZCwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNoZWNrZWQgPSAoY3VycmVudE5vZGU6IElUcmVlTm9kZTxUPiwgY2hlY2s6IGJvb2xlYW4pID0+IHtcbiAgICB0aGlzLl90cmVlU2VydmljZS5zZXRMYXN0Q2hlY2tlZE5vZGUoY2hlY2sgPyBjdXJyZW50Tm9kZSA6IG51bGwpO1xuICAgIGNvbnN0IGZsYXR0ZW5Ob2RlcyA9IHRyZWVOb2Rlc0ZsYXR0ZW48VD4oY3VycmVudE5vZGUsIHRoaXMuX3RyZWVTZXJ2aWNlKTtcblxuICAgIGlmICh0aGlzLm11bHRpKCkpIHtcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBmbGF0dGVuTm9kZXMpIHtcbiAgICAgICAgdGhpcy5jaGVja2VkTm9kZXNTdGF0ZSgpLnNldChub2RlLCBjaGVjayk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2hlY2tlZE5vZGVzU3RhdGUoKS5jbGVhcigpO1xuXG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgZmxhdHRlbk5vZGVzKSB7XG4gICAgICAgIHRoaXMuY2hlY2tlZE5vZGVzU3RhdGUoKS5zZXQobm9kZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlQ2hlY2tlZE5vZGVzKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQ2hlY2tlZE5vZGVzKG9wdGlvbnM/OiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KTogdm9pZCB7XG4gICAgY29uc3QgdG9wTGV2ZWxOb2RlcyA9IHRoaXMuX3RyZWVTZXJ2aWNlLmdldFRvcExldmVsTm9kZXMoKTtcbiAgICBjb25zdCBzdGF0ZSA9IG5ldyBNYXA8SVRyZWVOb2RlPFQ+LCBib29sZWFuIHwgbnVsbD4oKTtcbiAgICB0aGlzLl9jYWxjQ2hlY2tlZFN0YXRlTm9kZXModG9wTGV2ZWxOb2Rlcywgc3RhdGUpO1xuICAgIHRoaXMuY2hlY2tlZE5vZGVzU3RhdGUuc2V0KHN0YXRlKTtcblxuICAgIGlmIChvcHRpb25zPy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZXNDaGFuZ2UuZW1pdCh0aGlzLl9maW5kRnVsbHlTZWxlY3RlZE5vZGVzKHRvcExldmVsTm9kZXMpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9maW5kRnVsbHlTZWxlY3RlZE5vZGVzKG5vZGVzOiBJVHJlZU5vZGU8VD5bXSk6IElUcmVlTm9kZTxUPltdIHtcbiAgICBjb25zdCBmdWxseVNlbGVjdGVkTm9kZXM6IElUcmVlTm9kZTxUPltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgIGNvbnN0IGNoZWNrZWQgPSB0aGlzLmdldFZhbHVlKG5vZGUsIHRoaXMuY2hlY2tlZE5vZGVzU3RhdGUoKSk7XG5cbiAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgIGZ1bGx5U2VsZWN0ZWROb2Rlcy5wdXNoKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChjaGVja2VkID09PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5fdHJlZVNlcnZpY2UuZ2V0Q2hpbGRyZW4obm9kZSk7XG4gICAgICAgIGNvbnN0IGZ1bGx5U2VsZWN0ZWRDaGlsZHJlbiA9IHRoaXMuX2ZpbmRGdWxseVNlbGVjdGVkTm9kZXMoY2hpbGRyZW4pO1xuICAgICAgICBmdWxseVNlbGVjdGVkTm9kZXMucHVzaCguLi5mdWxseVNlbGVjdGVkQ2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmdWxseVNlbGVjdGVkTm9kZXM7XG4gIH1cblxuICBwcml2YXRlIF9jYWxjQ2hlY2tlZFN0YXRlTm9kZXMoXG4gICAgbm9kZXM6IElUcmVlTm9kZTxUPltdLFxuICAgIHN0YXRlOiBNYXA8SVRyZWVOb2RlPFQ+LCBib29sZWFuIHwgbnVsbD5cbiAgKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICBjb25zdCBjaGVja2VkID0gdGhpcy5nZXRWYWx1ZShub2RlLCB0aGlzLmNoZWNrZWROb2Rlc1N0YXRlKCkpO1xuXG4gICAgICBpZiAoY2hlY2tlZCAhPT0gZmFsc2UpIHtcbiAgICAgICAgc3RhdGUuc2V0KG5vZGUsIGNoZWNrZWQpO1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuX3RyZWVTZXJ2aWNlLmdldENoaWxkcmVuKG5vZGUpO1xuICAgICAgICB0aGlzLl9jYWxjQ2hlY2tlZFN0YXRlTm9kZXMoY2hpbGRyZW4sIHN0YXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF90cnlUb1NldE5vZGVzUmVjdXJzaXZlKG5ld05vZGVzOiBJVHJlZU5vZGU8VD5bXSk6IHZvaWQge1xuICAgIGNvbnN0IHRvcExldmVsTm9kZXMgPSB0aGlzLl90cmVlU2VydmljZS5nZXRUb3BMZXZlbE5vZGVzKCk7XG4gICAgY29uc3Qgc2VhcmNoTm9kZXNDb21wbGV0ZVN0YXRlID0gbmV3IE1hcChuZXdOb2Rlcy5tYXAoKG5ld05vZGUpID0+IFtuZXdOb2RlLCBmYWxzZV0pKTtcbiAgICBjb25zdCBhbGxDb21wbGV0ZSA9IChzdGF0ZTogTWFwPElUcmVlTm9kZTxUPiwgYm9vbGVhbj4pID0+IFsuLi5zdGF0ZS52YWx1ZXMoKV0uZXZlcnkoQm9vbGVhbik7XG4gICAgY29uc3QgYW5hbG9nTm9kZXM6IElUcmVlTm9kZTxUPltdID0gW107XG5cbiAgICBmcm9tKHRvcExldmVsTm9kZXMpXG4gICAgICAucGlwZShcbiAgICAgICAgZXhwYW5kKChub2RlKSA9PlxuICAgICAgICAgIHRoaXMuX3RyZWVTZXJ2aWNlLmhhc0NoaWxkcmVuKG5vZGUpXG4gICAgICAgICAgICA/IHRoaXMuX3RyZWVTZXJ2aWNlLmxvYWRDaGlsZHJlbihub2RlKS5waXBlKHN3aXRjaE1hcCgoY2hpbGRyZW4pID0+IGZyb20oY2hpbGRyZW4pKSlcbiAgICAgICAgICAgIDogRU1QVFlcbiAgICAgICAgKSxcbiAgICAgICAgdGFwKChub2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZm91bmROb2RlID0gbmV3Tm9kZXMuZmluZCgobmV3Tm9kZSkgPT4gdGhpcy5fdHJlZVNlcnZpY2UuZXF1YWxzKG5vZGUsIG5ld05vZGUpKTtcblxuICAgICAgICAgIGlmIChmb3VuZE5vZGUpIHtcbiAgICAgICAgICAgIHNlYXJjaE5vZGVzQ29tcGxldGVTdGF0ZS5zZXQoZm91bmROb2RlLCB0cnVlKTtcbiAgICAgICAgICAgIGFuYWxvZ05vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgZmlsdGVyKCgpID0+IGFsbENvbXBsZXRlKHNlYXJjaE5vZGVzQ29tcGxldGVTdGF0ZSkpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy9uby11bnNhZmUtdGFrZXVudGlsXG4gICAgICAgIHRha2VVbnRpbChvZihudWxsKS5waXBlKGZpbHRlcigoKSA9PiBhbGxDb21wbGV0ZShzZWFyY2hOb2Rlc0NvbXBsZXRlU3RhdGUpKSkpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZHIpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgYW5hbG9nTm9kZXMpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGVja2VkKG5vZGUsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidHJlZS1jdXN0b20tY2xhc3NfX2NvbnRhaW5lclwiPlxuICBAZm9yIChub2RlIG9mIHRyZWVOb2RlcyQgfCBhc3luYzsgdHJhY2sgbm9kZSkge1xuICAgIEBpZiAobm9kZSA9PT0gVFJFRV9MT0FERVIpIHtcbiAgICAgIDx0dWktbG9hZGVyIFtzaG93TG9hZGVyXT1cInRydWVcIiBbb3ZlcmxheV09XCJ0cnVlXCIgc2l6ZT1cInNcIj48L3R1aS1sb2FkZXI+XG4gICAgfSBAZWxzZSB7XG4gICAgICBAaWYgKGRlZmF1bHROb2RlT3BlbmVkU3RhdGUoKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIDx0dWktdHJlZVxuICAgICAgICAgIGNsYXNzPVwidHVpX3RyZWUtLW5vdC1jb2xsYXBzZWRcIlxuICAgICAgICAgIFt2YWx1ZV09XCJub2RlXCJcbiAgICAgICAgICBbY29udGVudF09XCJjb250ZW50VGVtcGxhdGVcIlxuICAgICAgICAgIFtjaGlsZHJlbkhhbmRsZXJdPVwiY2hpbGRyZW5IYW5kbGVyXCJcbiAgICAgICAgPlxuICAgICAgICA8L3R1aS10cmVlPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDx0dWktdHJlZVxuICAgICAgICAgIFt2YWx1ZV09XCJub2RlXCJcbiAgICAgICAgICBbY29udGVudF09XCJjb250ZW50VGVtcGxhdGVcIlxuICAgICAgICAgIFtjaGlsZHJlbkhhbmRsZXJdPVwiY2hpbGRyZW5IYW5kbGVyXCJcbiAgICAgICAgICBbdHVpVHJlZUNvbnRyb2xsZXJdPVwiISFkZWZhdWx0Tm9kZU9wZW5lZFN0YXRlKClcIlxuICAgICAgICAgIFttYXBdPVwib3BlbmVkTm9kZXNTdGF0ZSgpXCJcbiAgICAgICAgICAodG9nZ2xlZCk9XCJvblRvZ2dsZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L3R1aS10cmVlPlxuICAgICAgfVxuICAgIH1cbiAgfVxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudFRlbXBsYXRlIGxldC1ub2RlPlxuICBAbGV0IGlzQ2hlY2tlZCA9IGNoZWNrZWROb2Rlc1N0YXRlKCkuZ2V0KG5vZGUpO1xuXG4gIEBpZiAobm9kZSA9PT0gVFJFRV9MT0FERVIpIHtcbiAgICA8dHVpLWxvYWRlciBbc2hvd0xvYWRlcl09XCJ0cnVlXCIgW292ZXJsYXldPVwidHJ1ZVwiIHNpemU9XCJzXCI+PC90dWktbG9hZGVyPlxuICB9IEBlbHNlIGlmIChub2RlVGVtcGxhdGUoKSkge1xuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vZGVUZW1wbGF0ZSgpXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG5vZGUsIGlzQ2hlY2tlZCwgb25DaGVja2VkIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgfSBAZWxzZSB7XG4gICAgPGxhYmVsIHR1aUxhYmVsIGNsYXNzPVwidHJlZS1jdXN0b20tY2xhc3NfX2xhYmVsLWNoZWNrYm94LWNvbnRhaW5lclwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgdHVpQ2hlY2tib3hcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgW25nTW9kZWxdPVwiaXNDaGVja2VkXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGVja2VkKG5vZGUsICRldmVudClcIlxuICAgICAgLz5cbiAgICAgIDxzbWFsbD57eyBub2RlLm5hbWUgfX08L3NtYWxsPlxuICAgIDwvbGFiZWw+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,116 +0,0 @@
1
- import { DestroyRef, inject, Injectable, signal } from '@angular/core';
2
- import { BehaviorSubject, catchError, combineLatest, debounceTime, EMPTY, expand, filter, from, iif, map, mergeMap, of, Subject, switchMap, take, tap, } from 'rxjs';
3
- import { TUI_TREE_LOADING, TUI_TREE_START } from '@taiga-ui/kit';
4
- import { startWith } from 'rxjs/operators';
5
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
- import { TREE_LOADER } from '../tokens/param-tree.tokens';
7
- import { just } from '../../../../utils';
8
- import { DEBOUNCE_TIME_FOR_SYNC_NEXT_VALUES } from '../consts/param-tree.consts';
9
- import * as i0 from "@angular/core";
10
- export class ParamTreeService {
11
- constructor() {
12
- this._loading = inject(TUI_TREE_LOADING);
13
- this._start$ = inject(TUI_TREE_START, { optional: true });
14
- this._loader = inject(TREE_LOADER);
15
- this._destroyRef = inject(DestroyRef);
16
- this._loaderNode$ = new Subject();
17
- this._defaultNodeOpenedState$ = new BehaviorSubject(undefined);
18
- this._lastCheckedNode$ = new BehaviorSubject(null);
19
- this._load$ = new Subject();
20
- this._parentChildrenMap = new Map([
21
- [this._loading, []],
22
- ]);
23
- this._nodes$ = new BehaviorSubject([]);
24
- this._loadedChildren$ = new Subject();
25
- this.defaultNodeOpenedState$ = this._defaultNodeOpenedState$.asObservable();
26
- this.lastCheckedNode$ = this._lastCheckedNode$.asObservable();
27
- this.loaderNode$ = this._loaderNode$.asObservable();
28
- this.openedNodesState = signal(new Map());
29
- this.checkedNodesState = signal(new Map());
30
- this._firstLevelNodes = this._start$ ? [this._start$] : [];
31
- this._firstLevelNodesLoaded = false;
32
- this.nodes$ = this._nodes$.asObservable();
33
- this._load$
34
- .pipe(mergeMap((load) => this._load(load.node, !load.config?.initial).pipe(map((firstLevelNodes) => ({ load, firstLevelNodes })))), tap(({ load: { config }, firstLevelNodes }) => {
35
- if (config?.initial) {
36
- this._firstLevelNodes = firstLevelNodes ?? [];
37
- }
38
- }), mergeMap(({ load }) => iif(() => !!load.config?.opened, this._recursiveLoad(load.node), just())), map(() => this._firstLevelNodes), startWith([this._loading]), takeUntilDestroyed(this._destroyRef))
39
- .subscribe((nodes) => {
40
- this._nodes$.next(nodes);
41
- });
42
- combineLatest([this.loaderNode$, this.defaultNodeOpenedState$])
43
- .pipe(debounceTime(DEBOUNCE_TIME_FOR_SYNC_NEXT_VALUES), takeUntilDestroyed(this._destroyRef))
44
- .subscribe(([loader, opened]) => {
45
- this.loadFirstLevelNodes(loader, opened);
46
- });
47
- }
48
- _recursiveLoad(startedNode) {
49
- return of(startedNode).pipe(expand((node) => {
50
- if (this.hasChildren(node)) {
51
- return this._load(node).pipe(switchMap((children) => from(children)), catchError(() => EMPTY));
52
- }
53
- if (node.children) {
54
- return from(node.children);
55
- }
56
- return EMPTY;
57
- }));
58
- }
59
- loadFirstLevelNodes(node, opened = true) {
60
- if (!this._firstLevelNodesLoaded) {
61
- this._load$.next({ node, config: { initial: true, opened } });
62
- this._firstLevelNodesLoaded = true;
63
- }
64
- }
65
- _load(node, setChildren = true) {
66
- return this._loader.loadChildren(node).pipe(tap((children) => {
67
- if (setChildren) {
68
- for (const child of children) {
69
- child.parent = node;
70
- }
71
- node.children = children;
72
- this._parentChildrenMap.set(node, children);
73
- this._loadedChildren$.next(children);
74
- }
75
- const childfree = [node, ...children].filter((item) => !this.hasChildren(item));
76
- for (const item of childfree) {
77
- this._parentChildrenMap.set(item, []);
78
- }
79
- }));
80
- }
81
- loadChildren(node) {
82
- const result = this._loadedChildren$.asObservable().pipe(filter(([firstChild]) => firstChild?.parent === node), take(1));
83
- const children = this.getChildren(node);
84
- if (children && children[0] !== this._loading) {
85
- return of(children);
86
- }
87
- this._parentChildrenMap.set(node, [this._loading]);
88
- this._load$.next({ node });
89
- return result;
90
- }
91
- getChildren(node) {
92
- return this._parentChildrenMap.get(node) || [this._loading];
93
- }
94
- hasChildren(node) {
95
- return this._loader.hasChildren(node);
96
- }
97
- getTopLevelNodes() {
98
- return this._firstLevelNodes;
99
- }
100
- setLoaderNode(loaderNode, defaultNodeOpenedState) {
101
- this._loaderNode$.next(loaderNode);
102
- this._defaultNodeOpenedState$.next(defaultNodeOpenedState);
103
- }
104
- setLastCheckedNode(node) {
105
- this._lastCheckedNode$.next(node);
106
- }
107
- equals(node1, node2) {
108
- return this._loader.equals(node1, node2);
109
- }
110
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ParamTreeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
111
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ParamTreeService }); }
112
- }
113
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ParamTreeService, decorators: [{
114
- type: Injectable
115
- }], ctorParameters: () => [] });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0tdHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlZ2lzdGVyLWJhc2Uvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0cy9wYXJhbS10cmVlL3NlcnZpY2VzL3BhcmFtLXRyZWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsVUFBVSxFQUNWLGFBQWEsRUFDYixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sSUFBSSxFQUNKLEdBQUcsRUFDSCxHQUFHLEVBQ0gsUUFBUSxFQUVSLEVBQUUsRUFDRixPQUFPLEVBQ1AsU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUdqRixNQUFNLE9BQU8sZ0JBQWdCO0lBNEIzQjtRQTNCaUIsYUFBUSxHQUFHLE1BQU0sQ0FBZSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xELFlBQU8sR0FBRyxNQUFNLENBQWUsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkUs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SUFDcEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFtQixFQUFFLEtBQW1CO1FBQ3BELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7K0dBakpVLGdCQUFnQjttSEFBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgaW5qZWN0LCBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY2F0Y2hFcnJvcixcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVib3VuY2VUaW1lLFxuICBFTVBUWSxcbiAgZXhwYW5kLFxuICBmaWx0ZXIsXG4gIGZyb20sXG4gIGlpZixcbiAgbWFwLFxuICBtZXJnZU1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFN1YmplY3QsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRVSV9UUkVFX0xPQURJTkcsIFRVSV9UUkVFX1NUQVJUIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBJTG9hZENvbmZpZywgSVRyZWVOb2RlLCBTbWFUcmVlTG9hZGVyIH0gZnJvbSAnLi4vdHlwZXMvcGFyYW0tdHJlZS50eXBlcyc7XG5pbXBvcnQgeyBUUkVFX0xPQURFUiB9IGZyb20gJy4uL3Rva2Vucy9wYXJhbS10cmVlLnRva2Vucyc7XG5pbXBvcnQgeyBqdXN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgREVCT1VOQ0VfVElNRV9GT1JfU1lOQ19ORVhUX1ZBTFVFUyB9IGZyb20gJy4uL2NvbnN0cy9wYXJhbS10cmVlLmNvbnN0cyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQYXJhbVRyZWVTZXJ2aWNlPFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGluZyA9IGluamVjdDxJVHJlZU5vZGU8VD4+KFRVSV9UUkVFX0xPQURJTkcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGFydCQgPSBpbmplY3Q8SVRyZWVOb2RlPFQ+PihUVUlfVFJFRV9TVEFSVCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGVyID0gaW5qZWN0PFNtYVRyZWVMb2FkZXI8SVRyZWVOb2RlPFQ+Pj4oVFJFRV9MT0FERVIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWRlck5vZGUkID0gbmV3IFN1YmplY3Q8SVRyZWVOb2RlPFQ+PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZWZhdWx0Tm9kZU9wZW5lZFN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGFzdENoZWNrZWROb2RlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVRyZWVOb2RlPFQ+IHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWQkID0gbmV3IFN1YmplY3Q8SUxvYWRDb25maWc8VD4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhcmVudENoaWxkcmVuTWFwID0gbmV3IE1hcDxJVHJlZU5vZGU8VD4sIElUcmVlTm9kZTxUPltdPihbXG4gICAgW3RoaXMuX2xvYWRpbmcsIFtdXSxcbiAgXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX25vZGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVRyZWVOb2RlPFQ+W10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGVkQ2hpbGRyZW4kID0gbmV3IFN1YmplY3Q8SVRyZWVOb2RlPFQ+W10+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHROb2RlT3BlbmVkU3RhdGUkID0gdGhpcy5fZGVmYXVsdE5vZGVPcGVuZWRTdGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIHB1YmxpYyByZWFkb25seSBsYXN0Q2hlY2tlZE5vZGUkID0gdGhpcy5fbGFzdENoZWNrZWROb2RlJC5hc09ic2VydmFibGUoKTtcbiAgcHVibGljIHJlYWRvbmx5IGxvYWRlck5vZGUkID0gdGhpcy5fbG9hZGVyTm9kZSQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9wZW5lZE5vZGVzU3RhdGUgPSBzaWduYWwobmV3IE1hcDxJVHJlZU5vZGU8VD4sIGJvb2xlYW4+KCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgY2hlY2tlZE5vZGVzU3RhdGUgPSBzaWduYWwobmV3IE1hcDxJVHJlZU5vZGU8VD4sIGJvb2xlYW4gfCBudWxsPigpKTtcblxuICBwcml2YXRlIF9maXJzdExldmVsTm9kZXM6IElUcmVlTm9kZTxUPltdID0gdGhpcy5fc3RhcnQkID8gW3RoaXMuX3N0YXJ0JF0gOiBbXTtcbiAgcHJpdmF0ZSBfZmlyc3RMZXZlbE5vZGVzTG9hZGVkID0gZmFsc2U7XG5cbiAgcHVibGljIHJlYWRvbmx5IG5vZGVzJCA9IHRoaXMuX25vZGVzJC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9sb2FkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChsb2FkKSA9PlxuICAgICAgICAgIHRoaXMuX2xvYWQobG9hZC5ub2RlLCAhbG9hZC5jb25maWc/LmluaXRpYWwpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGZpcnN0TGV2ZWxOb2RlcykgPT4gKHsgbG9hZCwgZmlyc3RMZXZlbE5vZGVzIH0pKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgdGFwKCh7IGxvYWQ6IHsgY29uZmlnIH0sIGZpcnN0TGV2ZWxOb2RlcyB9KSA9PiB7XG4gICAgICAgICAgaWYgKGNvbmZpZz8uaW5pdGlhbCkge1xuICAgICAgICAgICAgdGhpcy5fZmlyc3RMZXZlbE5vZGVzID0gZmlyc3RMZXZlbE5vZGVzID8/IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIG1lcmdlTWFwKCh7IGxvYWQgfSkgPT5cbiAgICAgICAgICBpaWYoKCkgPT4gISFsb2FkLmNvbmZpZz8ub3BlbmVkLCB0aGlzLl9yZWN1cnNpdmVMb2FkKGxvYWQubm9kZSksIGp1c3QoKSlcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuX2ZpcnN0TGV2ZWxOb2RlcyksXG4gICAgICAgIHN0YXJ0V2l0aChbdGhpcy5fbG9hZGluZ10pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKG5vZGVzKSA9PiB7XG4gICAgICAgIHRoaXMuX25vZGVzJC5uZXh0KG5vZGVzKTtcbiAgICAgIH0pO1xuXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5sb2FkZXJOb2RlJCwgdGhpcy5kZWZhdWx0Tm9kZU9wZW5lZFN0YXRlJF0pXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoREVCT1VOQ0VfVElNRV9GT1JfU1lOQ19ORVhUX1ZBTFVFUyksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtsb2FkZXIsIG9wZW5lZF0pID0+IHtcbiAgICAgICAgdGhpcy5sb2FkRmlyc3RMZXZlbE5vZGVzKGxvYWRlciwgb3BlbmVkKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVjdXJzaXZlTG9hZChzdGFydGVkTm9kZTogSVRyZWVOb2RlPFQ+KSB7XG4gICAgcmV0dXJuIG9mKHN0YXJ0ZWROb2RlKS5waXBlKFxuICAgICAgZXhwYW5kKChub2RlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuKG5vZGUpKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWQobm9kZSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoY2hpbGRyZW4pID0+IGZyb20oY2hpbGRyZW4pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gRU1QVFkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgcmV0dXJuIGZyb20obm9kZS5jaGlsZHJlbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbG9hZEZpcnN0TGV2ZWxOb2Rlcyhub2RlOiBJVHJlZU5vZGU8VD4sIG9wZW5lZDogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2ZpcnN0TGV2ZWxOb2Rlc0xvYWRlZCkge1xuICAgICAgdGhpcy5fbG9hZCQubmV4dCh7IG5vZGUsIGNvbmZpZzogeyBpbml0aWFsOiB0cnVlLCBvcGVuZWQgfSB9KTtcbiAgICAgIHRoaXMuX2ZpcnN0TGV2ZWxOb2Rlc0xvYWRlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbG9hZChub2RlOiBJVHJlZU5vZGU8VD4sIHNldENoaWxkcmVuID0gdHJ1ZSk6IE9ic2VydmFibGU8SVRyZWVOb2RlPFQ+W10+IHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGVyLmxvYWRDaGlsZHJlbihub2RlKS5waXBlKFxuICAgICAgdGFwKChjaGlsZHJlbikgPT4ge1xuICAgICAgICBpZiAoc2V0Q2hpbGRyZW4pIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICAgICAgICBjaGlsZC5wYXJlbnQgPSBub2RlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBub2RlLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgICAgICAgdGhpcy5fcGFyZW50Q2hpbGRyZW5NYXAuc2V0KG5vZGUsIGNoaWxkcmVuKTtcbiAgICAgICAgICB0aGlzLl9sb2FkZWRDaGlsZHJlbiQubmV4dChjaGlsZHJlbik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjaGlsZGZyZWUgPSBbbm9kZSwgLi4uY2hpbGRyZW5dLmZpbHRlcigoaXRlbSkgPT4gIXRoaXMuaGFzQ2hpbGRyZW4oaXRlbSkpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY2hpbGRmcmVlKSB7XG4gICAgICAgICAgdGhpcy5fcGFyZW50Q2hpbGRyZW5NYXAuc2V0KGl0ZW0sIFtdKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGxvYWRDaGlsZHJlbihub2RlOiBJVHJlZU5vZGU8VD4pOiBPYnNlcnZhYmxlPElUcmVlTm9kZTxUPltdPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fbG9hZGVkQ2hpbGRyZW4kLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICBmaWx0ZXIoKFtmaXJzdENoaWxkXSkgPT4gZmlyc3RDaGlsZD8ucGFyZW50ID09PSBub2RlKSxcbiAgICAgIHRha2UoMSlcbiAgICApO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbihub2RlKTtcblxuICAgIGlmIChjaGlsZHJlbiAmJiBjaGlsZHJlblswXSAhPT0gdGhpcy5fbG9hZGluZykge1xuICAgICAgcmV0dXJuIG9mKGNoaWxkcmVuKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wYXJlbnRDaGlsZHJlbk1hcC5zZXQobm9kZSwgW3RoaXMuX2xvYWRpbmddKTtcbiAgICB0aGlzLl9sb2FkJC5uZXh0KHsgbm9kZSB9KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2hpbGRyZW4obm9kZTogSVRyZWVOb2RlPFQ+KTogSVRyZWVOb2RlPFQ+W10ge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnRDaGlsZHJlbk1hcC5nZXQobm9kZSkgfHwgW3RoaXMuX2xvYWRpbmddO1xuICB9XG5cbiAgcHVibGljIGhhc0NoaWxkcmVuKG5vZGU6IElUcmVlTm9kZTxUPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9sb2FkZXIuaGFzQ2hpbGRyZW4obm9kZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VG9wTGV2ZWxOb2RlcygpOiBJVHJlZU5vZGU8VD5bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpcnN0TGV2ZWxOb2RlcztcbiAgfVxuXG4gIHB1YmxpYyBzZXRMb2FkZXJOb2RlKGxvYWRlck5vZGU6IElUcmVlTm9kZTxUPiwgZGVmYXVsdE5vZGVPcGVuZWRTdGF0ZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9sb2FkZXJOb2RlJC5uZXh0KGxvYWRlck5vZGUpO1xuICAgIHRoaXMuX2RlZmF1bHROb2RlT3BlbmVkU3RhdGUkLm5leHQoZGVmYXVsdE5vZGVPcGVuZWRTdGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0TGFzdENoZWNrZWROb2RlKG5vZGU6IElUcmVlTm9kZTxUPiB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLl9sYXN0Q2hlY2tlZE5vZGUkLm5leHQobm9kZSk7XG4gIH1cblxuICBwdWJsaWMgZXF1YWxzKG5vZGUxOiBJVHJlZU5vZGU8VD4sIG5vZGUyOiBJVHJlZU5vZGU8VD4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGVyLmVxdWFscyhub2RlMSwgbm9kZTIpO1xuICB9XG59XG4iXX0=
@@ -1,20 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { of } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- export class SyncTreeLoaderService {
5
- loadChildren({ children }) {
6
- return of(children ?? []);
7
- }
8
- hasChildren({ haveChildren }) {
9
- return !!haveChildren;
10
- }
11
- equals(value1, value2) {
12
- return value1 === value2;
13
- }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SyncTreeLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
15
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SyncTreeLoaderService }); }
16
- }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SyncTreeLoaderService, decorators: [{
18
- type: Injectable
19
- }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy10cmVlLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlZ2lzdGVyLWJhc2Uvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0cy9wYXJhbS10cmVlL3NlcnZpY2VzL3N5bmMtdHJlZS1sb2FkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSXRDLE1BQU0sT0FBTyxxQkFBcUI7SUFDekIsWUFBWSxDQUFDLEVBQUUsUUFBUSxFQUFnQjtRQUM1QyxPQUFPLEVBQUUsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxFQUFFLFlBQVksRUFBZ0I7UUFDL0MsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBb0IsRUFBRSxNQUFvQjtRQUN0RCxPQUFPLE1BQU0sS0FBSyxNQUFNLENBQUM7SUFDM0IsQ0FBQzsrR0FYVSxxQkFBcUI7bUhBQXJCLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJVHJlZU5vZGUsIFNtYVRyZWVMb2FkZXIgfSBmcm9tICcuLi90eXBlcy9wYXJhbS10cmVlLnR5cGVzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN5bmNUcmVlTG9hZGVyU2VydmljZTxUPiBpbXBsZW1lbnRzIFNtYVRyZWVMb2FkZXI8SVRyZWVOb2RlPFQ+PiB7XG4gIHB1YmxpYyBsb2FkQ2hpbGRyZW4oeyBjaGlsZHJlbiB9OiBJVHJlZU5vZGU8VD4pOiBPYnNlcnZhYmxlPElUcmVlTm9kZTxUPltdPiB7XG4gICAgcmV0dXJuIG9mKGNoaWxkcmVuID8/IFtdKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNDaGlsZHJlbih7IGhhdmVDaGlsZHJlbiB9OiBJVHJlZU5vZGU8VD4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFoYXZlQ2hpbGRyZW47XG4gIH1cblxuICBwdWJsaWMgZXF1YWxzKHZhbHVlMTogSVRyZWVOb2RlPFQ+LCB2YWx1ZTI6IElUcmVlTm9kZTxUPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YWx1ZTEgPT09IHZhbHVlMjtcbiAgfVxufVxuIl19
@@ -1,3 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export const TREE_LOADER = new InjectionToken('SMA_TREE_LOADER');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0tdHJlZS50b2tlbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVnaXN0ZXItYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL3BhcmFtLXRyZWUvdG9rZW5zL3BhcmFtLXRyZWUudG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUF5QixpQkFBaUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNtYVRyZWVMb2FkZXIgfSBmcm9tICcuLi90eXBlcy9wYXJhbS10cmVlLnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IFRSRUVfTE9BREVSID0gbmV3IEluamVjdGlvblRva2VuPFNtYVRyZWVMb2FkZXI8dW5rbm93bj4+KCdTTUFfVFJFRV9MT0FERVInKTtcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0tdHJlZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dHMvcGFyYW0tdHJlZS90eXBlcy9wYXJhbS10cmVlLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUdWlIYW5kbGVyIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBUdWlUcmVlTG9hZGVyIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU21hVHJlZUxvYWRlcjxUPiBleHRlbmRzIFR1aVRyZWVMb2FkZXI8VD4ge1xuICBlcXVhbHModmFsdWUxOiBULCB2YWx1ZTI6IFQpOiBib29sZWFuO1xufVxuXG4vKiog0JrQvtC90YTQuNCzINC00LvRjyDQv9C+0LTQs9GA0YPQt9C60Lgg0LTQvtGH0LXRgNC90LjRhSDRg9C30LvQvtCyICovXG5leHBvcnQgaW50ZXJmYWNlIElMb2FkQ29uZmlnPFQ+IHtcbiAgLyoqINCj0LfQtdC7INC00LvRjyDQutC+0YLQvtGA0L7Qs9C+INC/0YDQvtC40YHRhdC+0LTQuNGCINC30LDQs9GA0YPQt9C60LAgKi9cbiAgbm9kZTogSVRyZWVOb2RlPFQ+O1xuICAvKiog0JTQvtC/0L7Qu9C90LjRgtC10LvRjNC90LDRjyDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y8g0LfQsNCz0YDRg9C30LrQuCAqL1xuICBjb25maWc/OiB7XG4gICAgLyoqINCv0LLQu9GP0LXRgtGB0Y8g0LvQuCDRgtC10LrRg9GJ0LDRjyDQt9Cw0LPRgNGD0LfQutCwINC90LDRh9Cw0LvRjNC90L7QuSAo0LTQu9GPINC40L3QuNGG0LjQsNC70LjQt9Cw0YbQuNC4INCy0LXRgNGF0L3QtdCz0L4g0YPRgNC+0LLQvdGPINGD0LfQu9C+0LIpICovXG4gICAgaW5pdGlhbD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICog0KDQtdC20LjQvCDQt9Cw0LPRgNGD0LfQutC4INC00L7Rh9C10YDQvdC40YUg0YPQt9C70L7Qsi5cbiAgICAgKiDQldGB0LvQuCB0cnVlIC0g0LTQvtGH0LXRgNC90LjQtSDRg9C30LvRiyDQt9Cw0LPRgNGD0LbQsNGO0YLRgdGPINGA0LXQutGD0YDRgdC40LLQvdC+INC00L4g0L/QvtGB0LvQtdC00L3QtdCz0L4g0YPRgNC+0LLQvdGPXG4gICAgICogKi9cbiAgICBvcGVuZWQ/OiBib29sZWFuO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUcmVlTm9kZTxUID0gYW55PiB7XG4gIC8qKiDQndCw0LfQstCw0L3QuNC1INGD0LfQu9CwICovXG4gIG5hbWU6IHN0cmluZztcbiAgcGFyZW50PzogSVRyZWVOb2RlPFQ+O1xuICAvKiog0JXRgdGC0Ywg0LTQvtGH0LXRgNC90LjQtSDRg9C30LvRiyDQutC+0YLQvtGA0YvQtSDQvNC+0LbQvdC+INC30LDQs9GA0YPQt9C40YLRjCAqL1xuICBoYXZlQ2hpbGRyZW4/OiBib29sZWFuO1xuICAvKiog0JTQvtGH0LXRgNC90LjQtSDQt9Cw0LPRgNGD0LbQtdC90L3Ri9C1INGD0LfQu9GLICovXG4gIGNoaWxkcmVuPzogSVRyZWVOb2RlPFQ+W107XG4gIC8qKiDQlNC+0L/QvtC70L3QuNGC0LXQu9GM0L3Ri9C1INGB0LLQvtC50YHRgtCy0LAg0YPQt9C70LAgKi9cbiAgZGF0YT86IFQ7XG59XG5cbmV4cG9ydCB0eXBlIENoaWxkcmVuSGFuZGxlclR5cGU8Tm9kZVR5cGU+ID0gVHVpSGFuZGxlcjxcbiAgSVRyZWVOb2RlPE5vZGVUeXBlPixcbiAgcmVhZG9ubHkgSVRyZWVOb2RlPE5vZGVUeXBlPltdXG4+O1xuIl19
@@ -1,9 +0,0 @@
1
- export function transformItemToNode({ item, children, }) {
2
- return {
3
- name: item['name'],
4
- haveChildren: !!children,
5
- children: children || [],
6
- data: item,
7
- };
8
- }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0tdHJlZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dHMvcGFyYW0tdHJlZS91dGlscy9wYXJhbS10cmVlLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sVUFBVSxtQkFBbUIsQ0FBZ0MsRUFDakUsSUFBSSxFQUNKLFFBQVEsR0FDQztJQUNULE9BQU87UUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNsQixZQUFZLEVBQUUsQ0FBQyxDQUFDLFFBQVE7UUFDeEIsUUFBUSxFQUFFLFFBQVEsSUFBSSxFQUFFO1FBQ3hCLElBQUksRUFBRSxJQUFJO0tBQ1gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJVHJlZU5vZGUgfSBmcm9tICcuLi90eXBlcy9wYXJhbS10cmVlLnR5cGVzJztcblxuaW50ZXJmYWNlIElBcmdzPFQ+IHtcbiAgaXRlbTogVDtcbiAgY2hpbGRyZW4/OiBJVHJlZU5vZGU8VD5bXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUl0ZW1Ub05vZGU8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+KHtcbiAgaXRlbSxcbiAgY2hpbGRyZW4sXG59OiBJQXJnczxUPik6IElUcmVlTm9kZTxUPiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogaXRlbVsnbmFtZSddLFxuICAgIGhhdmVDaGlsZHJlbjogISFjaGlsZHJlbixcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4gfHwgW10sXG4gICAgZGF0YTogaXRlbSxcbiAgfTtcbn1cbiJdfQ==