ngx-register-base 1.3.1 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (479) hide show
  1. package/esm2022/lib/components/checkbox-selector/checkbox-selector.component.mjs +129 -0
  2. package/esm2022/lib/components/checkbox-selector/checkbox-selector.types.mjs +8 -0
  3. package/esm2022/lib/components/column-settings/column-settings.component.mjs +249 -0
  4. package/esm2022/lib/components/column-settings/components/column-settings-template/column-settings-template.component.mjs +80 -0
  5. package/esm2022/lib/components/column-settings/consts/column-settings.consts.mjs +10 -0
  6. package/esm2022/lib/components/column-settings/index.mjs +3 -0
  7. package/esm2022/lib/components/column-settings/types/column-settings.types.mjs +7 -0
  8. package/esm2022/lib/components/divider/divider.component.mjs +16 -0
  9. package/esm2022/lib/components/filter-button/filter-button.component.mjs +19 -0
  10. package/esm2022/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.mjs +31 -0
  11. package/esm2022/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.mjs +57 -0
  12. package/esm2022/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.mjs +110 -0
  13. package/esm2022/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.mjs +130 -0
  14. package/esm2022/lib/components/filters/components/filter-list/filter-list.service.mjs +89 -0
  15. package/esm2022/lib/components/filters/components/filter-list/filters-section/filters-section.component.mjs +41 -0
  16. package/esm2022/lib/components/filters/components/filter-list.module.mjs +45 -0
  17. package/esm2022/lib/components/filters/index.mjs +3 -0
  18. package/esm2022/lib/components/filters/register-table-filter.component.mjs +155 -0
  19. package/esm2022/lib/components/filters/register-table-filter.module.mjs +39 -0
  20. package/esm2022/lib/components/index.mjs +11 -0
  21. package/esm2022/lib/components/inputs/index.mjs +20 -0
  22. package/esm2022/lib/components/inputs/inputs.module.mjs +166 -0
  23. package/esm2022/lib/components/inputs/param-calendar-year/param-calendar-year.component.mjs +45 -0
  24. package/esm2022/lib/components/inputs/param-custom/param-custom.component.mjs +12 -0
  25. package/esm2022/lib/components/inputs/param-date/param-date.component.mjs +76 -0
  26. package/esm2022/lib/components/inputs/param-date-range/param-date-range.component.mjs +60 -0
  27. package/esm2022/lib/components/inputs/param-date-time/param-date-time.component.mjs +86 -0
  28. package/esm2022/lib/components/inputs/param-date-time-range/param-date-time-range.component.mjs +95 -0
  29. package/esm2022/lib/components/inputs/param-month/param-month.component.mjs +50 -0
  30. package/esm2022/lib/components/inputs/param-month-range/param-month-range.component.mjs +62 -0
  31. package/esm2022/lib/components/inputs/param-multi-select/param-multi-select.component.mjs +309 -0
  32. package/esm2022/lib/components/inputs/param-select/param-select.component.mjs +233 -0
  33. package/esm2022/lib/components/inputs/param-switcher/param-switcher.component.mjs +21 -0
  34. package/esm2022/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.mjs +28 -0
  35. package/esm2022/lib/components/inputs/param-switcher-date-time-range/index.mjs +3 -0
  36. package/esm2022/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.mjs +105 -0
  37. package/esm2022/lib/components/inputs/param-switcher-date-time-range/types/param-switcher-date-time-range.types.mjs +10 -0
  38. package/esm2022/lib/components/inputs/param-text/param-text.component.mjs +40 -0
  39. package/esm2022/lib/components/inputs/param-textarea/param-textarea.component.mjs +38 -0
  40. package/esm2022/lib/components/inputs/param-toggle/param-toggle.component.mjs +20 -0
  41. package/esm2022/lib/components/inputs/param-tree/consts/param-tree.consts.mjs +37 -0
  42. package/esm2022/lib/components/inputs/param-tree/index.mjs +8 -0
  43. package/esm2022/lib/components/inputs/param-tree/param-tree.component.mjs +207 -0
  44. package/esm2022/lib/components/inputs/param-tree/services/param-tree.service.mjs +116 -0
  45. package/esm2022/lib/components/inputs/param-tree/services/sync-tree-loader.service.mjs +20 -0
  46. package/esm2022/lib/components/inputs/param-tree/tokens/param-tree.tokens.mjs +3 -0
  47. package/esm2022/lib/components/inputs/param-tree/types/param-tree.types.mjs +2 -0
  48. package/esm2022/lib/components/inputs/param-tree/utils/param-tree.utils.mjs +9 -0
  49. package/esm2022/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.mjs +80 -0
  50. package/esm2022/lib/components/inputs/param-tree-select/param-tree-select.component.mjs +85 -0
  51. package/esm2022/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.mjs +15 -0
  52. package/esm2022/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.mjs +12 -0
  53. package/esm2022/lib/components/menu-constructor/index.mjs +5 -0
  54. package/esm2022/lib/components/menu-constructor/sproc-menu-constructor.component.mjs +559 -0
  55. package/esm2022/lib/components/menu-constructor/store/sproc-abstract-menu-constructor.store.mjs +3 -0
  56. package/esm2022/lib/components/menu-constructor/store/sproc-menu-constructor.consts.mjs +5 -0
  57. package/esm2022/lib/components/menu-constructor/store/sproc-menu.tokens.mjs +3 -0
  58. package/esm2022/lib/components/page-menu/index.mjs +6 -0
  59. package/esm2022/lib/components/page-menu/schema/sproc-page-menu.consts.mjs +9 -0
  60. package/esm2022/lib/components/page-menu/schema/sproc-page-menu.schema.mjs +2 -0
  61. package/esm2022/lib/components/page-menu/schema/sproc-page-menu.tokens.mjs +4 -0
  62. package/esm2022/lib/components/page-menu/schema/sproc-page-menu.types.mjs +3 -0
  63. package/esm2022/lib/components/page-menu/sproc-page-menu.component.mjs +275 -0
  64. package/esm2022/lib/components/paginator/paginator.component.mjs +159 -0
  65. package/esm2022/lib/components/paginator/types/paginator.types.mjs +2 -0
  66. package/esm2022/lib/components/register-table/consts/register-table.consts.mjs +4 -0
  67. package/esm2022/lib/components/register-table/directives/cell-template.directive.mjs +19 -0
  68. package/esm2022/lib/components/register-table/directives/header-template.directive.mjs +18 -0
  69. package/esm2022/lib/components/register-table/index.mjs +4 -0
  70. package/esm2022/lib/components/register-table/model/schema.mjs +10 -0
  71. package/esm2022/lib/components/register-table/pipes/class-by-type.pipe.mjs +33 -0
  72. package/esm2022/lib/components/register-table/pipes/sticky-column.pipe.mjs +17 -0
  73. package/esm2022/lib/components/register-table/register-table.component.mjs +544 -0
  74. package/esm2022/lib/components/reset-settings-form/reset-settings-form.component.mjs +18 -0
  75. package/esm2022/lib/components/search-input/search-input.component.mjs +28 -0
  76. package/esm2022/lib/components/sliding-panel/sliding-panel.component.mjs +48 -0
  77. package/esm2022/lib/components/sliding-panel/sliding-panel.module.mjs +19 -0
  78. package/esm2022/lib/consts/date-time.consts.mjs +2 -0
  79. package/esm2022/lib/consts/index.mjs +4 -0
  80. package/esm2022/lib/consts/inputs.consts.mjs +4 -0
  81. package/esm2022/lib/consts/month.consts.mjs +77 -0
  82. package/esm2022/lib/consts/params.consts.mjs +2 -0
  83. package/esm2022/lib/consts/register-base.consts.mjs +26 -0
  84. package/esm2022/lib/core/form-group-wrapper/errors-consts.mjs +8 -0
  85. package/esm2022/lib/core/form-group-wrapper/form-group-wrapper.mjs +81 -0
  86. package/esm2022/lib/core/form-group-wrapper/index.mjs +2 -0
  87. package/esm2022/lib/core/index.mjs +5 -0
  88. package/esm2022/lib/core/input-control/index.mjs +2 -0
  89. package/esm2022/lib/core/input-control/input-control.mjs +11 -0
  90. package/esm2022/lib/core/param/index.mjs +6 -0
  91. package/esm2022/lib/core/param/param-base.mjs +215 -0
  92. package/esm2022/lib/core/param/param-date-base.mjs +26 -0
  93. package/esm2022/lib/core/param/param-select-base.mjs +114 -0
  94. package/esm2022/lib/core/param/param-text-base.mjs +25 -0
  95. package/esm2022/lib/core/param/param.tokens.mjs +4 -0
  96. package/esm2022/lib/core/register-base/index.mjs +3 -0
  97. package/esm2022/lib/core/register-base/register-base.mjs +575 -0
  98. package/esm2022/lib/core/register-base/register-base.store.mjs +43 -0
  99. package/esm2022/lib/directives/date/date-time.types.mjs +34 -0
  100. package/esm2022/lib/directives/date/format-date.pipe.mjs +33 -0
  101. package/esm2022/lib/directives/index.mjs +3 -0
  102. package/esm2022/lib/directives/number/number-only.directive.mjs +41 -0
  103. package/esm2022/lib/directives/sticky/index.mjs +3 -0
  104. package/esm2022/lib/directives/sticky/sticky-relative.directive.mjs +32 -0
  105. package/esm2022/lib/directives/sticky/sticky-relative.service.mjs +32 -0
  106. package/esm2022/lib/directives/sticky/sticky.directive.mjs +169 -0
  107. package/esm2022/lib/services/date-time.service.mjs +314 -0
  108. package/esm2022/lib/services/dialog/dialog.service.mjs +53 -0
  109. package/esm2022/lib/services/dialog/dialog.types.mjs +2 -0
  110. package/esm2022/lib/services/dialog/index.mjs +3 -0
  111. package/esm2022/lib/services/dom-intersection.service.mjs +22 -0
  112. package/esm2022/lib/services/filter/filters-state.service.mjs +65 -0
  113. package/esm2022/lib/services/filter/filters-transmit.service.mjs +82 -0
  114. package/esm2022/lib/services/filter/filters.service.mjs +23 -0
  115. package/esm2022/lib/services/index.mjs +8 -0
  116. package/esm2022/lib/services/inputs-state.service.mjs +130 -0
  117. package/esm2022/lib/services/inputs.service.mjs +88 -0
  118. package/esm2022/lib/services/key-pressed.service.mjs +37 -0
  119. package/esm2022/lib/services/resize-window-observer.service.mjs +33 -0
  120. package/esm2022/lib/services/selected-objects-state.service.mjs +123 -0
  121. package/esm2022/lib/store/fast-query-store.service.mjs +110 -0
  122. package/esm2022/lib/store/index.mjs +2 -0
  123. package/esm2022/lib/types/event.types.mjs +2 -0
  124. package/esm2022/lib/types/hasura.types.mjs +2 -0
  125. package/esm2022/lib/types/index.mjs +7 -0
  126. package/esm2022/lib/types/inputs.types.mjs +19 -0
  127. package/esm2022/lib/types/params.types.mjs +2 -0
  128. package/esm2022/lib/types/register-base.types.mjs +6 -0
  129. package/esm2022/lib/types/sub-types.mjs +2 -0
  130. package/esm2022/lib/types/user-profile.types.mjs +2 -0
  131. package/esm2022/lib/utils/functions.mjs +10 -0
  132. package/esm2022/lib/utils/get-url-segment.mjs +35 -0
  133. package/esm2022/lib/utils/index.mjs +5 -0
  134. package/esm2022/lib/utils/prizm.shared.module.mjs +284 -0
  135. package/esm2022/lib/utils/rxjs.mjs +28 -0
  136. package/esm2022/lib/utils/select-all-utils.mjs +11 -0
  137. package/esm2022/ngx-register-base.mjs +5 -0
  138. package/esm2022/public-api.mjs +9 -0
  139. package/fesm2022/ngx-register-base.mjs +7487 -0
  140. package/fesm2022/ngx-register-base.mjs.map +1 -0
  141. package/index.d.ts +5 -0
  142. package/lib/components/checkbox-selector/checkbox-selector.component.d.ts +33 -0
  143. package/lib/components/checkbox-selector/checkbox-selector.types.d.ts +7 -0
  144. package/lib/components/column-settings/column-settings.component.d.ts +80 -0
  145. package/lib/components/column-settings/components/column-settings-template/column-settings-template.component.d.ts +24 -0
  146. package/lib/components/column-settings/consts/column-settings.consts.d.ts +8 -0
  147. package/lib/components/column-settings/types/column-settings.types.d.ts +22 -0
  148. package/lib/components/divider/divider.component.d.ts +6 -0
  149. package/lib/components/filter-button/filter-button.component.d.ts +8 -0
  150. package/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.d.ts +14 -0
  151. package/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.d.ts +25 -0
  152. package/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.d.ts +39 -0
  153. package/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.d.ts +41 -0
  154. package/lib/components/filters/components/filter-list/filter-list.service.d.ts +20 -0
  155. package/lib/components/filters/components/filter-list/filters-section/filters-section.component.d.ts +15 -0
  156. package/lib/components/filters/components/filter-list.module.d.ts +15 -0
  157. package/lib/components/filters/register-table-filter.component.d.ts +40 -0
  158. package/lib/components/filters/register-table-filter.module.d.ts +13 -0
  159. package/lib/components/inputs/inputs.module.d.ts +31 -0
  160. package/lib/components/inputs/param-calendar-year/param-calendar-year.component.d.ts +19 -0
  161. package/lib/components/inputs/param-custom/param-custom.component.d.ts +6 -0
  162. package/lib/components/inputs/param-date/param-date.component.d.ts +20 -0
  163. package/lib/components/inputs/param-date-range/param-date-range.component.d.ts +26 -0
  164. package/lib/components/inputs/param-date-time/param-date-time.component.d.ts +25 -0
  165. package/lib/components/inputs/param-date-time-range/param-date-time-range.component.d.ts +28 -0
  166. package/lib/components/inputs/param-month/param-month.component.d.ts +18 -0
  167. package/lib/components/inputs/param-month-range/param-month-range.component.d.ts +21 -0
  168. package/lib/components/inputs/param-multi-select/param-multi-select.component.d.ts +46 -0
  169. package/lib/components/inputs/param-select/param-select.component.d.ts +34 -0
  170. package/lib/components/inputs/param-switcher/param-switcher.component.d.ts +8 -0
  171. package/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.d.ts +2 -0
  172. package/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.d.ts +19 -0
  173. package/lib/components/inputs/param-switcher-date-time-range/types/param-switcher-date-time-range.types.d.ts +8 -0
  174. package/lib/components/inputs/param-text/param-text.component.d.ts +10 -0
  175. package/lib/components/inputs/param-textarea/param-textarea.component.d.ts +10 -0
  176. package/lib/components/inputs/param-toggle/param-toggle.component.d.ts +9 -0
  177. package/lib/components/inputs/param-tree/consts/param-tree.consts.d.ts +7 -0
  178. package/lib/components/inputs/param-tree/param-tree.component.d.ts +41 -0
  179. package/lib/components/inputs/param-tree/services/param-tree.service.d.ts +37 -0
  180. package/lib/components/inputs/param-tree/services/sync-tree-loader.service.d.ts +10 -0
  181. package/{src/lib/components/inputs/param-tree/tokens/param-tree.tokens.ts → lib/components/inputs/param-tree/tokens/param-tree.tokens.d.ts} +1 -2
  182. package/lib/components/inputs/param-tree/types/param-tree.types.d.ts +32 -0
  183. package/lib/components/inputs/param-tree/utils/param-tree.utils.d.ts +7 -0
  184. package/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.d.ts +31 -0
  185. package/lib/components/inputs/param-tree-select/param-tree-select.component.d.ts +30 -0
  186. package/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.d.ts +6 -0
  187. package/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.d.ts +5 -0
  188. package/lib/components/menu-constructor/sproc-menu-constructor.component.d.ts +113 -0
  189. package/lib/components/menu-constructor/store/sproc-abstract-menu-constructor.store.d.ts +24 -0
  190. package/lib/components/menu-constructor/store/sproc-menu-constructor.consts.d.ts +36 -0
  191. package/{src/lib/components/menu-constructor/store/sproc-menu.tokens.ts → lib/components/menu-constructor/store/sproc-menu.tokens.d.ts} +1 -4
  192. package/lib/components/page-menu/schema/sproc-page-menu.consts.d.ts +7 -0
  193. package/lib/components/page-menu/schema/sproc-page-menu.schema.d.ts +30 -0
  194. package/lib/components/page-menu/schema/sproc-page-menu.tokens.d.ts +3 -0
  195. package/lib/components/page-menu/schema/sproc-page-menu.types.d.ts +36 -0
  196. package/lib/components/page-menu/sproc-page-menu.component.d.ts +48 -0
  197. package/lib/components/paginator/paginator.component.d.ts +52 -0
  198. package/lib/components/paginator/types/paginator.types.d.ts +15 -0
  199. package/lib/components/register-table/consts/register-table.consts.d.ts +3 -0
  200. package/lib/components/register-table/directives/cell-template.directive.d.ts +9 -0
  201. package/lib/components/register-table/directives/header-template.directive.d.ts +9 -0
  202. package/lib/components/register-table/model/schema.d.ts +52 -0
  203. package/lib/components/register-table/pipes/class-by-type.pipe.d.ts +8 -0
  204. package/lib/components/register-table/pipes/sticky-column.pipe.d.ts +7 -0
  205. package/lib/components/register-table/register-table.component.d.ts +165 -0
  206. package/lib/components/reset-settings-form/reset-settings-form.component.d.ts +9 -0
  207. package/lib/components/search-input/search-input.component.d.ts +11 -0
  208. package/lib/components/sliding-panel/sliding-panel.component.d.ts +14 -0
  209. package/lib/components/sliding-panel/sliding-panel.module.d.ts +9 -0
  210. package/lib/consts/date-time.consts.d.ts +1 -0
  211. package/lib/consts/index.d.ts +3 -0
  212. package/lib/consts/inputs.consts.d.ts +4 -0
  213. package/lib/consts/month.consts.d.ts +49 -0
  214. package/lib/consts/params.consts.d.ts +1 -0
  215. package/lib/consts/register-base.consts.d.ts +19 -0
  216. package/lib/core/form-group-wrapper/errors-consts.d.ts +5 -0
  217. package/lib/core/form-group-wrapper/form-group-wrapper.d.ts +15 -0
  218. package/lib/core/input-control/input-control.d.ts +11 -0
  219. package/lib/core/param/param-base.d.ts +68 -0
  220. package/lib/core/param/param-date-base.d.ts +18 -0
  221. package/lib/core/param/param-select-base.d.ts +42 -0
  222. package/lib/core/param/param-text-base.d.ts +15 -0
  223. package/{src/lib/core/param/param.tokens.ts → lib/core/param/param.tokens.d.ts} +1 -2
  224. package/lib/core/register-base/register-base.d.ts +168 -0
  225. package/lib/core/register-base/register-base.store.d.ts +35 -0
  226. package/lib/directives/date/date-time.types.d.ts +32 -0
  227. package/lib/directives/date/format-date.pipe.d.ts +10 -0
  228. package/lib/directives/number/number-only.directive.d.ts +10 -0
  229. package/lib/directives/sticky/sticky-relative.directive.d.ts +13 -0
  230. package/lib/directives/sticky/sticky-relative.service.d.ts +15 -0
  231. package/lib/directives/sticky/sticky.directive.d.ts +27 -0
  232. package/lib/services/date-time.service.d.ts +80 -0
  233. package/lib/services/dialog/dialog.service.d.ts +22 -0
  234. package/{src/lib/services/dialog/dialog.types.ts → lib/services/dialog/dialog.types.d.ts} +4 -8
  235. package/lib/services/dom-intersection.service.d.ts +8 -0
  236. package/lib/services/filter/filters-state.service.d.ts +21 -0
  237. package/lib/services/filter/filters-transmit.service.d.ts +28 -0
  238. package/lib/services/filter/filters.service.d.ts +12 -0
  239. package/lib/services/inputs-state.service.d.ts +57 -0
  240. package/lib/services/inputs.service.d.ts +28 -0
  241. package/lib/services/key-pressed.service.d.ts +15 -0
  242. package/lib/services/resize-window-observer.service.d.ts +11 -0
  243. package/lib/services/selected-objects-state.service.d.ts +47 -0
  244. package/lib/store/fast-query-store.service.d.ts +19 -0
  245. package/{src/lib/types/event.types.ts → lib/types/event.types.d.ts} +1 -1
  246. package/lib/types/hasura.types.d.ts +35 -0
  247. package/lib/types/inputs.types.d.ts +41 -0
  248. package/lib/types/params.types.d.ts +27 -0
  249. package/lib/types/register-base.types.d.ts +123 -0
  250. package/lib/types/sub-types.d.ts +8 -0
  251. package/lib/types/user-profile.types.d.ts +17 -0
  252. package/lib/utils/functions.d.ts +3 -0
  253. package/lib/utils/get-url-segment.d.ts +7 -0
  254. package/lib/utils/prizm.shared.module.d.ts +14 -0
  255. package/lib/utils/rxjs.d.ts +10 -0
  256. package/lib/utils/select-all-utils.d.ts +8 -0
  257. package/package.json +15 -12
  258. package/schematics/ng-update/replace-menu-state-token/index.d.ts +2 -0
  259. package/schematics/ng-update/replace-menu-state-token/index.js +29 -0
  260. package/schematics/ng-update/replace-menu-state-token/index.js.map +1 -0
  261. package/schematics/ng-update/update-prefix/index.d.ts +2 -0
  262. package/schematics/ng-update/update-prefix/index.js +33 -0
  263. package/schematics/ng-update/update-prefix/index.js.map +1 -0
  264. package/schematics/utils/{utils.ts → utils.d.ts} +2 -9
  265. package/schematics/utils/utils.js +25 -0
  266. package/schematics/utils/utils.js.map +1 -0
  267. package/ng-package.json +0 -15
  268. package/schematics/ng-update/replace-menu-state-token/index.ts +0 -33
  269. package/schematics/ng-update/update-prefix/index.ts +0 -38
  270. package/src/lib/components/checkbox-selector/checkbox-selector.component.html +0 -91
  271. package/src/lib/components/checkbox-selector/checkbox-selector.component.less +0 -67
  272. package/src/lib/components/checkbox-selector/checkbox-selector.component.ts +0 -176
  273. package/src/lib/components/checkbox-selector/checkbox-selector.types.ts +0 -8
  274. package/src/lib/components/column-settings/column-settings.component.html +0 -160
  275. package/src/lib/components/column-settings/column-settings.component.less +0 -131
  276. package/src/lib/components/column-settings/column-settings.component.ts +0 -352
  277. package/src/lib/components/column-settings/components/column-settings-template/column-settings-template.component.html +0 -65
  278. package/src/lib/components/column-settings/components/column-settings-template/column-settings-template.component.less +0 -79
  279. package/src/lib/components/column-settings/components/column-settings-template/column-settings-template.component.ts +0 -114
  280. package/src/lib/components/column-settings/consts/column-settings.consts.ts +0 -9
  281. package/src/lib/components/column-settings/types/column-settings.types.ts +0 -26
  282. package/src/lib/components/divider/divider.component.html +0 -4
  283. package/src/lib/components/divider/divider.component.less +0 -10
  284. package/src/lib/components/divider/divider.component.ts +0 -12
  285. package/src/lib/components/filter-button/filter-button.component.html +0 -20
  286. package/src/lib/components/filter-button/filter-button.component.less +0 -41
  287. package/src/lib/components/filter-button/filter-button.component.ts +0 -18
  288. package/src/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.html +0 -22
  289. package/src/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.less +0 -23
  290. package/src/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.ts +0 -31
  291. package/src/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.html +0 -49
  292. package/src/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.less +0 -37
  293. package/src/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.ts +0 -66
  294. package/src/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.html +0 -147
  295. package/src/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.less +0 -45
  296. package/src/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.ts +0 -114
  297. package/src/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.html +0 -44
  298. package/src/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.less +0 -49
  299. package/src/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.ts +0 -167
  300. package/src/lib/components/filters/components/filter-list/filter-list.service.ts +0 -97
  301. package/src/lib/components/filters/components/filter-list/filters-section/filters-section.component.html +0 -18
  302. package/src/lib/components/filters/components/filter-list/filters-section/filters-section.component.less +0 -55
  303. package/src/lib/components/filters/components/filter-list/filters-section/filters-section.component.ts +0 -69
  304. package/src/lib/components/filters/components/filter-list.module.ts +0 -29
  305. package/src/lib/components/filters/register-table-filter.component.html +0 -53
  306. package/src/lib/components/filters/register-table-filter.component.less +0 -17
  307. package/src/lib/components/filters/register-table-filter.component.ts +0 -167
  308. package/src/lib/components/filters/register-table-filter.module.ts +0 -22
  309. package/src/lib/components/inputs/inputs.module.ts +0 -104
  310. package/src/lib/components/inputs/param-calendar-year/param-calendar-year.component.html +0 -49
  311. package/src/lib/components/inputs/param-calendar-year/param-calendar-year.component.less +0 -70
  312. package/src/lib/components/inputs/param-calendar-year/param-calendar-year.component.ts +0 -52
  313. package/src/lib/components/inputs/param-custom/param-custom.component.html +0 -1
  314. package/src/lib/components/inputs/param-custom/param-custom.component.ts +0 -9
  315. package/src/lib/components/inputs/param-date/param-date.component.html +0 -55
  316. package/src/lib/components/inputs/param-date/param-date.component.less +0 -67
  317. package/src/lib/components/inputs/param-date/param-date.component.ts +0 -77
  318. package/src/lib/components/inputs/param-date-range/param-date-range.component.html +0 -45
  319. package/src/lib/components/inputs/param-date-range/param-date-range.component.less +0 -75
  320. package/src/lib/components/inputs/param-date-range/param-date-range.component.ts +0 -67
  321. package/src/lib/components/inputs/param-date-time/param-date-time.component.html +0 -70
  322. package/src/lib/components/inputs/param-date-time/param-date-time.component.less +0 -72
  323. package/src/lib/components/inputs/param-date-time/param-date-time.component.ts +0 -101
  324. package/src/lib/components/inputs/param-date-time-range/param-date-time-range.component.html +0 -67
  325. package/src/lib/components/inputs/param-date-time-range/param-date-time-range.component.less +0 -103
  326. package/src/lib/components/inputs/param-date-time-range/param-date-time-range.component.ts +0 -128
  327. package/src/lib/components/inputs/param-month/param-month.component.html +0 -46
  328. package/src/lib/components/inputs/param-month/param-month.component.less +0 -72
  329. package/src/lib/components/inputs/param-month/param-month.component.ts +0 -55
  330. package/src/lib/components/inputs/param-month-range/param-month-range.component.html +0 -39
  331. package/src/lib/components/inputs/param-month-range/param-month-range.component.less +0 -71
  332. package/src/lib/components/inputs/param-month-range/param-month-range.component.ts +0 -76
  333. package/src/lib/components/inputs/param-multi-select/param-multi-select.component.html +0 -84
  334. package/src/lib/components/inputs/param-multi-select/param-multi-select.component.less +0 -108
  335. package/src/lib/components/inputs/param-multi-select/param-multi-select.component.ts +0 -448
  336. package/src/lib/components/inputs/param-select/param-select.component.html +0 -106
  337. package/src/lib/components/inputs/param-select/param-select.component.less +0 -26
  338. package/src/lib/components/inputs/param-select/param-select.component.ts +0 -318
  339. package/src/lib/components/inputs/param-switcher/param-switcher.component.html +0 -8
  340. package/src/lib/components/inputs/param-switcher/param-switcher.component.less +0 -53
  341. package/src/lib/components/inputs/param-switcher/param-switcher.component.ts +0 -13
  342. package/src/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.ts +0 -29
  343. package/src/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.html +0 -19
  344. package/src/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.less +0 -76
  345. package/src/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.ts +0 -134
  346. package/src/lib/components/inputs/param-switcher-date-time-range/types/param-switcher-date-time-range.types.ts +0 -8
  347. package/src/lib/components/inputs/param-text/param-text.component.html +0 -59
  348. package/src/lib/components/inputs/param-text/param-text.component.less +0 -33
  349. package/src/lib/components/inputs/param-text/param-text.component.ts +0 -36
  350. package/src/lib/components/inputs/param-textarea/param-textarea.component.html +0 -61
  351. package/src/lib/components/inputs/param-textarea/param-textarea.component.less +0 -21
  352. package/src/lib/components/inputs/param-textarea/param-textarea.component.ts +0 -33
  353. package/src/lib/components/inputs/param-toggle/param-toggle.component.html +0 -40
  354. package/src/lib/components/inputs/param-toggle/param-toggle.component.less +0 -69
  355. package/src/lib/components/inputs/param-toggle/param-toggle.component.ts +0 -14
  356. package/src/lib/components/inputs/param-tree/consts/param-tree.consts.ts +0 -59
  357. package/src/lib/components/inputs/param-tree/param-tree.component.html +0 -51
  358. package/src/lib/components/inputs/param-tree/param-tree.component.less +0 -3
  359. package/src/lib/components/inputs/param-tree/param-tree.component.ts +0 -282
  360. package/src/lib/components/inputs/param-tree/services/param-tree.service.ts +0 -176
  361. package/src/lib/components/inputs/param-tree/services/sync-tree-loader.service.ts +0 -18
  362. package/src/lib/components/inputs/param-tree/types/param-tree.types.ts +0 -39
  363. package/src/lib/components/inputs/param-tree/utils/param-tree.utils.ts +0 -18
  364. package/src/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.html +0 -78
  365. package/src/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.less +0 -109
  366. package/src/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.ts +0 -89
  367. package/src/lib/components/inputs/param-tree-select/param-tree-select.component.html +0 -54
  368. package/src/lib/components/inputs/param-tree-select/param-tree-select.component.less +0 -56
  369. package/src/lib/components/inputs/param-tree-select/param-tree-select.component.ts +0 -91
  370. package/src/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.html +0 -5
  371. package/src/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.ts +0 -13
  372. package/src/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.html +0 -4
  373. package/src/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.ts +0 -11
  374. package/src/lib/components/menu-constructor/sproc-menu-constructor.component.html +0 -95
  375. package/src/lib/components/menu-constructor/sproc-menu-constructor.component.less +0 -183
  376. package/src/lib/components/menu-constructor/sproc-menu-constructor.component.ts +0 -687
  377. package/src/lib/components/menu-constructor/store/sproc-abstract-menu-constructor.store.ts +0 -32
  378. package/src/lib/components/menu-constructor/store/sproc-menu-constructor.consts.ts +0 -46
  379. package/src/lib/components/page-menu/README.md +0 -60
  380. package/src/lib/components/page-menu/schema/sproc-page-menu.consts.ts +0 -8
  381. package/src/lib/components/page-menu/schema/sproc-page-menu.schema.ts +0 -35
  382. package/src/lib/components/page-menu/schema/sproc-page-menu.tokens.ts +0 -5
  383. package/src/lib/components/page-menu/schema/sproc-page-menu.types.ts +0 -42
  384. package/src/lib/components/page-menu/sproc-page-menu.component.html +0 -166
  385. package/src/lib/components/page-menu/sproc-page-menu.component.less +0 -228
  386. package/src/lib/components/page-menu/sproc-page-menu.component.ts +0 -337
  387. package/src/lib/components/paginator/paginator.component.html +0 -97
  388. package/src/lib/components/paginator/paginator.component.less +0 -101
  389. package/src/lib/components/paginator/paginator.component.ts +0 -192
  390. package/src/lib/components/paginator/types/paginator.types.ts +0 -16
  391. package/src/lib/components/register-table/consts/register-table.consts.ts +0 -3
  392. package/src/lib/components/register-table/directives/cell-template.directive.ts +0 -11
  393. package/src/lib/components/register-table/directives/header-template.directive.ts +0 -11
  394. package/src/lib/components/register-table/model/schema.ts +0 -62
  395. package/src/lib/components/register-table/pipes/class-by-type.pipe.ts +0 -28
  396. package/src/lib/components/register-table/pipes/sticky-column.pipe.ts +0 -11
  397. package/src/lib/components/register-table/register-table.component.html +0 -257
  398. package/src/lib/components/register-table/register-table.component.less +0 -151
  399. package/src/lib/components/register-table/register-table.component.ts +0 -743
  400. package/src/lib/components/reset-settings-form/reset-settings-form.component.html +0 -14
  401. package/src/lib/components/reset-settings-form/reset-settings-form.component.less +0 -26
  402. package/src/lib/components/reset-settings-form/reset-settings-form.component.ts +0 -15
  403. package/src/lib/components/search-input/search-input.component.html +0 -6
  404. package/src/lib/components/search-input/search-input.component.less +0 -17
  405. package/src/lib/components/search-input/search-input.component.ts +0 -31
  406. package/src/lib/components/sliding-panel/sliding-panel.component.html +0 -13
  407. package/src/lib/components/sliding-panel/sliding-panel.component.less +0 -112
  408. package/src/lib/components/sliding-panel/sliding-panel.component.ts +0 -36
  409. package/src/lib/components/sliding-panel/sliding-panel.module.ts +0 -11
  410. package/src/lib/consts/date-time.consts.ts +0 -1
  411. package/src/lib/consts/index.ts +0 -8
  412. package/src/lib/consts/inputs.consts.ts +0 -9
  413. package/src/lib/consts/month.consts.ts +0 -82
  414. package/src/lib/consts/params.consts.ts +0 -1
  415. package/src/lib/consts/register-base.consts.ts +0 -40
  416. package/src/lib/core/form-group-wrapper/errors-consts.ts +0 -6
  417. package/src/lib/core/form-group-wrapper/form-group-wrapper.ts +0 -109
  418. package/src/lib/core/input-control/input-control.ts +0 -30
  419. package/src/lib/core/param/param-base.ts +0 -262
  420. package/src/lib/core/param/param-date-base.ts +0 -30
  421. package/src/lib/core/param/param-select-base.ts +0 -118
  422. package/src/lib/core/param/param-text-base.ts +0 -23
  423. package/src/lib/core/register-base/register-base.store.ts +0 -84
  424. package/src/lib/core/register-base/register-base.ts +0 -854
  425. package/src/lib/directives/date/date-time.types.ts +0 -36
  426. package/src/lib/directives/date/format-date.pipe.ts +0 -28
  427. package/src/lib/directives/number/number-only.directive.ts +0 -36
  428. package/src/lib/directives/sticky/sticky-relative.directive.ts +0 -30
  429. package/src/lib/directives/sticky/sticky-relative.service.ts +0 -34
  430. package/src/lib/directives/sticky/sticky.directive.ts +0 -189
  431. package/src/lib/services/date-time.service.ts +0 -399
  432. package/src/lib/services/dialog/dialog.service.ts +0 -62
  433. package/src/lib/services/dom-intersection.service.ts +0 -23
  434. package/src/lib/services/filter/filters-state.service.ts +0 -83
  435. package/src/lib/services/filter/filters-transmit.service.ts +0 -105
  436. package/src/lib/services/filter/filters.service.ts +0 -21
  437. package/src/lib/services/inputs-state.service.ts +0 -157
  438. package/src/lib/services/inputs.service.ts +0 -114
  439. package/src/lib/services/key-pressed.service.ts +0 -40
  440. package/src/lib/services/resize-window-observer.service.ts +0 -37
  441. package/src/lib/services/selected-objects-state.service.ts +0 -159
  442. package/src/lib/store/fast-query-store.service.ts +0 -132
  443. package/src/lib/types/hasura.types.ts +0 -41
  444. package/src/lib/types/inputs.types.ts +0 -63
  445. package/src/lib/types/params.types.ts +0 -42
  446. package/src/lib/types/register-base.types.ts +0 -161
  447. package/src/lib/types/sub-types.ts +0 -15
  448. package/src/lib/types/user-profile.types.ts +0 -18
  449. package/src/lib/utils/functions.ts +0 -11
  450. package/src/lib/utils/get-url-segment.ts +0 -46
  451. package/src/lib/utils/prizm.shared.module.ts +0 -176
  452. package/src/lib/utils/rxjs.ts +0 -33
  453. package/src/lib/utils/select-all-utils.ts +0 -16
  454. package/tsconfig.lib.json +0 -16
  455. package/tsconfig.lib.prod.json +0 -11
  456. package/tsconfig.schematics.json +0 -26
  457. package/tsconfig.spec.json +0 -15
  458. /package/{src/lib/components/column-settings/index.ts → lib/components/column-settings/index.d.ts} +0 -0
  459. /package/{src/lib/components/filters/index.ts → lib/components/filters/index.d.ts} +0 -0
  460. /package/{src/lib/components/index.ts → lib/components/index.d.ts} +0 -0
  461. /package/{src/lib/components/inputs/index.ts → lib/components/inputs/index.d.ts} +0 -0
  462. /package/{src/lib/components/inputs/param-switcher-date-time-range/index.ts → lib/components/inputs/param-switcher-date-time-range/index.d.ts} +0 -0
  463. /package/{src/lib/components/inputs/param-tree/index.ts → lib/components/inputs/param-tree/index.d.ts} +0 -0
  464. /package/{src/lib/components/menu-constructor/index.ts → lib/components/menu-constructor/index.d.ts} +0 -0
  465. /package/{src/lib/components/page-menu/index.ts → lib/components/page-menu/index.d.ts} +0 -0
  466. /package/{src/lib/components/register-table/index.ts → lib/components/register-table/index.d.ts} +0 -0
  467. /package/{src/lib/core/form-group-wrapper/index.ts → lib/core/form-group-wrapper/index.d.ts} +0 -0
  468. /package/{src/lib/core/index.ts → lib/core/index.d.ts} +0 -0
  469. /package/{src/lib/core/input-control/index.ts → lib/core/input-control/index.d.ts} +0 -0
  470. /package/{src/lib/core/param/index.ts → lib/core/param/index.d.ts} +0 -0
  471. /package/{src/lib/core/register-base/index.ts → lib/core/register-base/index.d.ts} +0 -0
  472. /package/{src/lib/directives/index.ts → lib/directives/index.d.ts} +0 -0
  473. /package/{src/lib/directives/sticky/index.ts → lib/directives/sticky/index.d.ts} +0 -0
  474. /package/{src/lib/services/dialog/index.ts → lib/services/dialog/index.d.ts} +0 -0
  475. /package/{src/lib/services/index.ts → lib/services/index.d.ts} +0 -0
  476. /package/{src/lib/store/index.ts → lib/store/index.d.ts} +0 -0
  477. /package/{src/lib/types/index.ts → lib/types/index.d.ts} +0 -0
  478. /package/{src/lib/utils/index.ts → lib/utils/index.d.ts} +0 -0
  479. /package/{src/public-api.ts → public-api.d.ts} +0 -0
@@ -0,0 +1,207 @@
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=
@@ -0,0 +1,116 @@
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=
@@ -0,0 +1,20 @@
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
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const TREE_LOADER = new InjectionToken('SMA_TREE_LOADER');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0tdHJlZS50b2tlbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVnaXN0ZXItYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL3BhcmFtLXRyZWUvdG9rZW5zL3BhcmFtLXRyZWUudG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUF5QixpQkFBaUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNtYVRyZWVMb2FkZXIgfSBmcm9tICcuLi90eXBlcy9wYXJhbS10cmVlLnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IFRSRUVfTE9BREVSID0gbmV3IEluamVjdGlvblRva2VuPFNtYVRyZWVMb2FkZXI8dW5rbm93bj4+KCdTTUFfVFJFRV9MT0FERVInKTtcbiJdfQ==
@@ -0,0 +1,2 @@
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
@@ -0,0 +1,9 @@
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==