aril 1.1.73 → 1.1.74

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 (1349) hide show
  1. package/README.md +62 -62
  2. package/boot/config/api/src/api.service.d.ts +12 -0
  3. package/boot/config/api/src/interfaces.d.ts +39 -0
  4. package/boot/config/api.sample.json +8 -0
  5. package/boot/config/apps/src/apps.service.d.ts +13 -0
  6. package/boot/config/apps/src/auth.guard.d.ts +9 -0
  7. package/boot/config/apps/src/interfaces.d.ts +50 -0
  8. package/boot/config/apps/src/reuse-strategy.d.ts +4 -0
  9. package/boot/config/apps/src/showdowDOMWrapper.d.ts +10 -0
  10. package/boot/config/plugins/src/getNgZone.d.ts +5 -0
  11. package/boot/config/plugins/src/interfaces.d.ts +55 -0
  12. package/boot/config/plugins/src/plugins.service.d.ts +5 -0
  13. package/boot/config/translate/constants.d.ts +4 -0
  14. package/boot/config/translate/primeng/i18n/tr.d.ts +46 -0
  15. package/boot/host/src/app.component.d.ts +10 -0
  16. package/boot/host/src/bootstrap.d.ts +4 -0
  17. package/boot/index.d.ts +1 -0
  18. package/boot/mfe/src/app.component.d.ts +17 -0
  19. package/boot/mfe/src/appComponentLoader.d.ts +1 -0
  20. package/boot/mfe/src/bootstrap.d.ts +5 -0
  21. package/boot/mfe/src/loadStyles.d.ts +3 -0
  22. package/boot/mfe/src/monaco.config.d.ts +7 -0
  23. package/esm2022/aril.mjs +5 -0
  24. package/esm2022/boot/aril-boot.mjs +5 -0
  25. package/esm2022/boot/config/api/aril-boot-config-api.mjs +5 -0
  26. package/esm2022/boot/config/api/index.mjs +2 -0
  27. package/esm2022/boot/config/api/src/api.service.mjs +59 -0
  28. package/esm2022/boot/config/api/src/interfaces.mjs +61 -0
  29. package/esm2022/boot/config/apps/aril-boot-config-apps.mjs +5 -0
  30. package/esm2022/boot/config/apps/index.mjs +4 -0
  31. package/esm2022/boot/config/apps/src/apps.service.mjs +53 -0
  32. package/esm2022/boot/config/apps/src/auth.guard.mjs +22 -0
  33. package/esm2022/boot/config/apps/src/interfaces.mjs +21 -0
  34. package/esm2022/boot/config/apps/src/reuse-strategy.mjs +9 -0
  35. package/esm2022/boot/config/apps/src/showdowDOMWrapper.mjs +35 -0
  36. package/esm2022/boot/config/plugins/aril-boot-config-plugins.mjs +5 -0
  37. package/esm2022/boot/config/plugins/index.mjs +3 -0
  38. package/esm2022/boot/config/plugins/src/getNgZone.mjs +9 -0
  39. package/esm2022/boot/config/plugins/src/interfaces.mjs +62 -0
  40. package/esm2022/boot/config/plugins/src/plugins.service.mjs +84 -0
  41. package/esm2022/boot/config/translate/aril-boot-config-translate.mjs +5 -0
  42. package/esm2022/boot/config/translate/constants.mjs +6 -0
  43. package/esm2022/boot/config/translate/index.mjs +3 -0
  44. package/esm2022/boot/config/translate/primeng/i18n/tr.mjs +60 -0
  45. package/esm2022/boot/host/aril-boot-host.mjs +5 -0
  46. package/esm2022/boot/host/index.mjs +2 -0
  47. package/esm2022/boot/host/src/app.component.mjs +49 -0
  48. package/esm2022/boot/host/src/bootstrap.mjs +55 -0
  49. package/esm2022/boot/index.mjs +2 -0
  50. package/esm2022/boot/mfe/aril-boot-mfe.mjs +5 -0
  51. package/esm2022/boot/mfe/index.mjs +2 -0
  52. package/esm2022/boot/mfe/src/app.component.mjs +63 -0
  53. package/esm2022/boot/mfe/src/appComponentLoader.mjs +5 -0
  54. package/esm2022/boot/mfe/src/bootstrap.mjs +76 -0
  55. package/esm2022/boot/mfe/src/loadStyles.mjs +37 -0
  56. package/esm2022/boot/mfe/src/monaco.config.mjs +247 -0
  57. package/esm2022/http/aril-http.mjs +5 -0
  58. package/esm2022/http/index.mjs +12 -0
  59. package/esm2022/http/lib/enums.mjs +35 -0
  60. package/esm2022/http/lib/interfaces.mjs +16 -0
  61. package/esm2022/http/src/httpBackend.mjs +17 -0
  62. package/esm2022/http/src/httpClient.mjs +16 -0
  63. package/esm2022/http/src/interceptor/accept-language.interceptor.mjs +21 -0
  64. package/esm2022/http/src/serviceBase.mjs +140 -0
  65. package/esm2022/http/src/serviceMockBase.mjs +4 -0
  66. package/esm2022/http/src/serviceRequest.mjs +23 -0
  67. package/esm2022/http/src/serviceStateMethods.mjs +167 -0
  68. package/esm2022/i18n/aril-i18n.mjs +5 -0
  69. package/esm2022/i18n/index.mjs +6 -0
  70. package/esm2022/i18n/src/folder-name-token.mjs +3 -0
  71. package/esm2022/i18n/src/i18n.module.mjs +17 -0
  72. package/esm2022/i18n/src/loader.mjs +18 -0
  73. package/esm2022/i18n/src/provideI18n.mjs +16 -0
  74. package/esm2022/i18n/src/provideScope.mjs +18 -0
  75. package/esm2022/keycloak/aril-keycloak.mjs +5 -0
  76. package/esm2022/keycloak/index.mjs +2 -0
  77. package/esm2022/keycloak/src/auth.interceptor.mjs +92 -0
  78. package/esm2022/provider/aril-provider.mjs +5 -0
  79. package/esm2022/provider/index.mjs +2 -0
  80. package/esm2022/provider/src/index.mjs +5 -0
  81. package/esm2022/provider/src/prodiveHost.mjs +9 -0
  82. package/esm2022/provider/src/prodiveHostRouter.mjs +12 -0
  83. package/esm2022/provider/src/provideHostKeycloak.mjs +28 -0
  84. package/esm2022/provider/src/provideLocaleId.mjs +20 -0
  85. package/esm2022/public-api.mjs +3 -0
  86. package/esm2022/theme/aril-theme.mjs +5 -0
  87. package/esm2022/theme/index.mjs +2 -0
  88. package/esm2022/theme/layout/app/breadcrumb/app.breadcrumb.component.mjs +106 -0
  89. package/esm2022/theme/layout/app/chatbot/app.chatbot.component.mjs +140 -0
  90. package/esm2022/theme/layout/app/expandableMenu/expandable-menu.component.mjs +250 -0
  91. package/esm2022/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.mjs +217 -0
  92. package/esm2022/theme/layout/app/favorite-pages/favorite-pages.service.mjs +60 -0
  93. package/esm2022/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.mjs +129 -0
  94. package/esm2022/theme/layout/app/general-search/general-search.component.mjs +75 -0
  95. package/esm2022/theme/layout/app/general-search/helpers.mjs +92 -0
  96. package/esm2022/theme/layout/app/general-search/models.mjs +50 -0
  97. package/esm2022/theme/layout/app/history/history-sidebar.component.mjs +133 -0
  98. package/esm2022/theme/layout/app/history/history.service.mjs +131 -0
  99. package/esm2022/theme/layout/app/layout/app.layout.component.mjs +160 -0
  100. package/esm2022/theme/layout/app/layout/mfe.layout.component.mjs +64 -0
  101. package/esm2022/theme/layout/app/notifications/notifications-sidebar.component.mjs +191 -0
  102. package/esm2022/theme/layout/app/profileSidebar/app.profilesidebar.component.mjs +122 -0
  103. package/esm2022/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.mjs +142 -0
  104. package/esm2022/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.mjs +202 -0
  105. package/esm2022/theme/layout/app/profileSidebar/profile.service.mjs +66 -0
  106. package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +166 -0
  107. package/esm2022/theme/layout/app/static-sidebar/static-sidebar.component.mjs +228 -0
  108. package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +155 -0
  109. package/esm2022/theme/layout/aril-theme-layout.mjs +5 -0
  110. package/esm2022/theme/layout/index.mjs +8 -0
  111. package/esm2022/theme/layout/service/app.layout.service.mjs +231 -0
  112. package/esm2022/theme/layout/service/app.menu.service.mjs +46 -0
  113. package/esm2022/theme/layout/service/breadcrumb.service.mjs +20 -0
  114. package/esm2022/theme/layout/service/interfaces/enum.mjs +16 -0
  115. package/esm2022/theme/layout/service/interfaces/interfaces.mjs +2 -0
  116. package/esm2022/theme/layout/service/menuchangeevent.mjs +2 -0
  117. package/esm2022/theme/layout/service/notifications.service.mjs +30 -0
  118. package/esm2022/theme/layout/service/search.service.mjs +25 -0
  119. package/esm2022/theme/layout/service/selection-group.service.mjs +65 -0
  120. package/esm2022/ui/aril-ui.mjs +5 -0
  121. package/esm2022/ui/autoComplete/aril-ui-autoComplete.mjs +5 -0
  122. package/esm2022/ui/autoComplete/index.mjs +2 -0
  123. package/esm2022/ui/autoComplete/src/auto-complete.component.mjs +109 -0
  124. package/esm2022/ui/autoComplete/src/interfaces.mjs +2 -0
  125. package/esm2022/ui/badge/aril-ui-badge.mjs +5 -0
  126. package/esm2022/ui/badge/index.mjs +2 -0
  127. package/esm2022/ui/badge/src/badge.component.mjs +59 -0
  128. package/esm2022/ui/button/aril-ui-button.mjs +5 -0
  129. package/esm2022/ui/button/index.mjs +3 -0
  130. package/esm2022/ui/button/src/button.component.mjs +40 -0
  131. package/esm2022/ui/button/src/split-button.component.mjs +18 -0
  132. package/esm2022/ui/calendar/aril-ui-calendar.mjs +5 -0
  133. package/esm2022/ui/calendar/index.mjs +2 -0
  134. package/esm2022/ui/calendar/src/calendar.component.mjs +224 -0
  135. package/esm2022/ui/charts/aril-ui-charts.mjs +5 -0
  136. package/esm2022/ui/charts/index.mjs +13 -0
  137. package/esm2022/ui/charts/src/amCharts/column/column-chart.component.mjs +124 -0
  138. package/esm2022/ui/charts/src/amCharts/line/line-chart.component.mjs +164 -0
  139. package/esm2022/ui/charts/src/amCharts/pie/pie-chart.component.mjs +116 -0
  140. package/esm2022/ui/charts/src/highCharts/area/area-chart.component.mjs +114 -0
  141. package/esm2022/ui/charts/src/highCharts/bar/bar-chart.component.mjs +100 -0
  142. package/esm2022/ui/charts/src/highCharts/column/column-chart.component.mjs +117 -0
  143. package/esm2022/ui/charts/src/highCharts/gauge/solid-gauge.component.mjs +180 -0
  144. package/esm2022/ui/charts/src/highCharts/heatmap/heatMap-chart.component.mjs +252 -0
  145. package/esm2022/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.mjs +187 -0
  146. package/esm2022/ui/charts/src/highCharts/line/line-chart-series.component.mjs +89 -0
  147. package/esm2022/ui/charts/src/highCharts/line/line-chart.component.mjs +82 -0
  148. package/esm2022/ui/charts/src/highCharts/pie/pie-chart.component.mjs +137 -0
  149. package/esm2022/ui/charts/src/theme/theme.mjs +54 -0
  150. package/esm2022/ui/checkbox/aril-ui-checkbox.mjs +5 -0
  151. package/esm2022/ui/checkbox/index.mjs +3 -0
  152. package/esm2022/ui/checkbox/src/check-box.component.mjs +27 -0
  153. package/esm2022/ui/checkbox/src/tri-state-checkbox.component.mjs +24 -0
  154. package/esm2022/ui/chip/aril-ui-chip.mjs +5 -0
  155. package/esm2022/ui/chip/index.mjs +2 -0
  156. package/esm2022/ui/chip/src/chip.component.mjs +129 -0
  157. package/esm2022/ui/collapse-reorder-list/aril-ui-collapse-reorder-list.mjs +5 -0
  158. package/esm2022/ui/collapse-reorder-list/index.mjs +2 -0
  159. package/esm2022/ui/collapse-reorder-list/src/collapse-reorder-list.component.mjs +53 -0
  160. package/esm2022/ui/dxEditor/aril-ui-dxEditor.mjs +5 -0
  161. package/esm2022/ui/dxEditor/index.mjs +2 -0
  162. package/esm2022/ui/dxEditor/src/dx-editor.component.mjs +26 -0
  163. package/esm2022/ui/dxField/aril-ui-dxField.mjs +5 -0
  164. package/esm2022/ui/dxField/index.mjs +2 -0
  165. package/esm2022/ui/dxField/src/dx-field.component.mjs +19 -0
  166. package/esm2022/ui/editor/aril-ui-editor.mjs +5 -0
  167. package/esm2022/ui/editor/index.mjs +3 -0
  168. package/esm2022/ui/editor/src/aril-editor.component.mjs +171 -0
  169. package/esm2022/ui/editor/src/types.mjs +26 -0
  170. package/esm2022/ui/field/aril-ui-field.mjs +5 -0
  171. package/esm2022/ui/field/index.mjs +2 -0
  172. package/esm2022/ui/field/src/field.component.mjs +45 -0
  173. package/esm2022/ui/fileUpload/aril-ui-fileUpload.mjs +5 -0
  174. package/esm2022/ui/fileUpload/index.mjs +2 -0
  175. package/esm2022/ui/fileUpload/src/file-upload.component.mjs +73 -0
  176. package/esm2022/ui/form/aril-ui-form.mjs +5 -0
  177. package/esm2022/ui/form/index.mjs +22 -0
  178. package/esm2022/ui/form/src/form-submit-button.component.mjs +40 -0
  179. package/esm2022/ui/form/src/form.component.mjs +27 -0
  180. package/esm2022/ui/img-viewer/aril-ui-img-viewer.mjs +5 -0
  181. package/esm2022/ui/img-viewer/index.mjs +2 -0
  182. package/esm2022/ui/img-viewer/src/img-viewer.component.mjs +57 -0
  183. package/esm2022/ui/index.mjs +2 -0
  184. package/esm2022/ui/json-diff-comparison/aril-ui-json-diff-comparison.mjs +5 -0
  185. package/esm2022/ui/json-diff-comparison/index.mjs +2 -0
  186. package/esm2022/ui/json-diff-comparison/src/json-diff.component.mjs +49 -0
  187. package/esm2022/ui/lib/aril-ui-lib.mjs +5 -0
  188. package/esm2022/ui/lib/index.mjs +16 -0
  189. package/esm2022/ui/lib/src/form/form-error-message.component.mjs +33 -0
  190. package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +34 -0
  191. package/esm2022/ui/lib/src/form/form-field-builder.mjs +23 -0
  192. package/esm2022/ui/lib/src/form/form-validation.mjs +14 -0
  193. package/esm2022/ui/lib/src/grid/enum-color-picker.pipe.mjs +35 -0
  194. package/esm2022/ui/lib/src/grid/flex-grid.directive.mjs +21 -0
  195. package/esm2022/ui/lib/src/input/baseInput.mjs +24 -0
  196. package/esm2022/ui/lib/src/input/common-input-validators.service.mjs +49 -0
  197. package/esm2022/ui/lib/src/input/dx-input-error-message.pipe.mjs +22 -0
  198. package/esm2022/ui/lib/src/input/input-disabled.directive.mjs +25 -0
  199. package/esm2022/ui/lib/src/input/input-error-message.pipe.mjs +63 -0
  200. package/esm2022/ui/lib/src/input/input-transforms.mjs +8 -0
  201. package/esm2022/ui/lib/src/input/value-accessor.directive.mjs +38 -0
  202. package/esm2022/ui/loader/aril-ui-loader.mjs +5 -0
  203. package/esm2022/ui/loader/index.mjs +2 -0
  204. package/esm2022/ui/loader/src/loader.component.mjs +14 -0
  205. package/esm2022/ui/mask/aril-ui-mask.mjs +5 -0
  206. package/esm2022/ui/mask/index.mjs +2 -0
  207. package/esm2022/ui/mask/src/mask.component.mjs +35 -0
  208. package/esm2022/ui/multiSelect/aril-ui-multiSelect.mjs +5 -0
  209. package/esm2022/ui/multiSelect/index.mjs +2 -0
  210. package/esm2022/ui/multiSelect/src/interfaces.mjs +2 -0
  211. package/esm2022/ui/multiSelect/src/multi-select.component.mjs +57 -0
  212. package/esm2022/ui/number/aril-ui-number.mjs +5 -0
  213. package/esm2022/ui/number/index.mjs +2 -0
  214. package/esm2022/ui/number/src/number.component.mjs +38 -0
  215. package/esm2022/ui/operation-types-dialog/aril-ui-operation-types-dialog.mjs +5 -0
  216. package/esm2022/ui/operation-types-dialog/index.mjs +2 -0
  217. package/esm2022/ui/operation-types-dialog/src/operation-types-dialog.component.mjs +91 -0
  218. package/esm2022/ui/overlayPanel/aril-ui-overlayPanel.mjs +5 -0
  219. package/esm2022/ui/overlayPanel/index.mjs +2 -0
  220. package/esm2022/ui/overlayPanel/src/overlay-panel.component.mjs +20 -0
  221. package/esm2022/ui/panel/aril-ui-panel.mjs +5 -0
  222. package/esm2022/ui/panel/index.mjs +2 -0
  223. package/esm2022/ui/panel/src/panel.component.mjs +33 -0
  224. package/esm2022/ui/password/aril-ui-password.mjs +5 -0
  225. package/esm2022/ui/password/index.mjs +2 -0
  226. package/esm2022/ui/password/src/password.component.mjs +29 -0
  227. package/esm2022/ui/pdf-viewer/aril-ui-pdf-viewer.mjs +5 -0
  228. package/esm2022/ui/pdf-viewer/index.mjs +2 -0
  229. package/esm2022/ui/pdf-viewer/src/pdf-viewer.component.mjs +27 -0
  230. package/esm2022/ui/progressbar/aril-ui-progressbar.mjs +5 -0
  231. package/esm2022/ui/progressbar/index.mjs +2 -0
  232. package/esm2022/ui/progressbar/src/progressbar.component.mjs +18 -0
  233. package/esm2022/ui/radioButton/aril-ui-radioButton.mjs +5 -0
  234. package/esm2022/ui/radioButton/index.mjs +2 -0
  235. package/esm2022/ui/radioButton/src/radio-button.component.mjs +30 -0
  236. package/esm2022/ui/relativeDateSelector/aril-ui-relativeDateSelector.mjs +5 -0
  237. package/esm2022/ui/relativeDateSelector/index.mjs +2 -0
  238. package/esm2022/ui/relativeDateSelector/src/enum.mjs +31 -0
  239. package/esm2022/ui/relativeDateSelector/src/relative-date-selector.component.mjs +248 -0
  240. package/esm2022/ui/selectBox/aril-ui-selectBox.mjs +5 -0
  241. package/esm2022/ui/selectBox/index.mjs +2 -0
  242. package/esm2022/ui/selectBox/src/interfaces.mjs +2 -0
  243. package/esm2022/ui/selectBox/src/select-box.component.mjs +67 -0
  244. package/esm2022/ui/switch/aril-ui-switch.mjs +5 -0
  245. package/esm2022/ui/switch/index.mjs +2 -0
  246. package/esm2022/ui/switch/src/switch.component.mjs +23 -0
  247. package/esm2022/ui/table/aril-ui-table.mjs +5 -0
  248. package/esm2022/ui/table/index.mjs +131 -0
  249. package/esm2022/ui/table/src/export-overlay-panel.component.mjs +321 -0
  250. package/esm2022/ui/table/src/interfaces.mjs +44 -0
  251. package/esm2022/ui/table/src/table-column.component.mjs +31 -0
  252. package/esm2022/ui/table/src/table.component.mjs +334 -0
  253. package/esm2022/ui/table-expand/aril-ui-table-expand.mjs +5 -0
  254. package/esm2022/ui/table-expand/index.mjs +61 -0
  255. package/esm2022/ui/table-expand/src/table-column.component.mjs +25 -0
  256. package/esm2022/ui/table-expand/src/table-expand-area.component.mjs +17 -0
  257. package/esm2022/ui/table-expand/src/table.component.mjs +99 -0
  258. package/esm2022/ui/tag/aril-ui-tag.mjs +5 -0
  259. package/esm2022/ui/tag/index.mjs +2 -0
  260. package/esm2022/ui/tag/src/interface.mjs +2 -0
  261. package/esm2022/ui/tag/src/tag.component.mjs +20 -0
  262. package/esm2022/ui/tagBox/aril-ui-tagBox.mjs +5 -0
  263. package/esm2022/ui/tagBox/index.mjs +2 -0
  264. package/esm2022/ui/tagBox/src/tag-box.component.mjs +55 -0
  265. package/esm2022/ui/text/aril-ui-text.mjs +5 -0
  266. package/esm2022/ui/text/index.mjs +2 -0
  267. package/esm2022/ui/text/src/text.component.mjs +47 -0
  268. package/esm2022/ui/textArea/aril-ui-textArea.mjs +5 -0
  269. package/esm2022/ui/textArea/index.mjs +2 -0
  270. package/esm2022/ui/textArea/src/text-area.component.mjs +27 -0
  271. package/esm2022/ui/toggle-button/aril-ui-toggle-button.mjs +5 -0
  272. package/esm2022/ui/toggle-button/index.mjs +2 -0
  273. package/esm2022/ui/toggle-button/src/toggle-button.component.mjs +25 -0
  274. package/esm2022/ui/tooltip/aril-ui-tooltip.mjs +5 -0
  275. package/esm2022/ui/tooltip/index.mjs +2 -0
  276. package/esm2022/ui/tooltip/src/tooltip-component.mjs +23 -0
  277. package/esm2022/ui/translate-input/aril-ui-translate-input.mjs +5 -0
  278. package/esm2022/ui/translate-input/index.mjs +2 -0
  279. package/esm2022/ui/translate-input/src/aril-lang-modal/aril-lang-modal.component.mjs +64 -0
  280. package/esm2022/ui/translate-input/src/aril-lang-modal/constants.mjs +15 -0
  281. package/esm2022/ui/translate-input/src/aril-translate-input.component.mjs +128 -0
  282. package/esm2022/ui/translate-input/src/interface.mjs +2 -0
  283. package/esm2022/ui/tree/aril-ui-tree.mjs +5 -0
  284. package/esm2022/ui/tree/index.mjs +2 -0
  285. package/esm2022/ui/tree/src/tree.component.mjs +53 -0
  286. package/esm2022/ui/treeSelect/aril-ui-treeSelect.mjs +5 -0
  287. package/esm2022/ui/treeSelect/index.mjs +2 -0
  288. package/esm2022/ui/treeSelect/src/treeSelect.component.mjs +41 -0
  289. package/esm2022/ui/treeTable/aril-ui-treeTable.mjs +5 -0
  290. package/esm2022/ui/treeTable/index.mjs +2 -0
  291. package/esm2022/ui/treeTable/src/tree-table.component.mjs +55 -0
  292. package/esm2022/ui/value/aril-ui-value.mjs +5 -0
  293. package/esm2022/ui/value/index.mjs +2 -0
  294. package/esm2022/ui/value/src/value.component.mjs +207 -0
  295. package/esm2022/ui-business/aril-ui-business.mjs +5 -0
  296. package/esm2022/ui-business/assetPicker/aril-ui-business-assetPicker.mjs +5 -0
  297. package/esm2022/ui-business/assetPicker/index.mjs +2 -0
  298. package/esm2022/ui-business/assetPicker/src/asset-picker.component.mjs +182 -0
  299. package/esm2022/ui-business/assetPicker/src/interface.mjs +2 -0
  300. package/esm2022/ui-business/detailed-overlay-panel/aril-ui-business-detailed-overlay-panel.mjs +5 -0
  301. package/esm2022/ui-business/detailed-overlay-panel/index.mjs +2 -0
  302. package/esm2022/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.mjs +61 -0
  303. package/esm2022/ui-business/detailed-overlay-panel/src/interface.mjs +19 -0
  304. package/esm2022/ui-business/enumPicker/aril-ui-business-enumPicker.mjs +5 -0
  305. package/esm2022/ui-business/enumPicker/index.mjs +2 -0
  306. package/esm2022/ui-business/enumPicker/src/enum-picker.component.mjs +124 -0
  307. package/esm2022/ui-business/enumPicker/src/interface.mjs +2 -0
  308. package/esm2022/ui-business/image-viewer/aril-ui-business-image-viewer.mjs +5 -0
  309. package/esm2022/ui-business/image-viewer/index.mjs +2 -0
  310. package/esm2022/ui-business/image-viewer/src/aril-image-viewer.component.mjs +111 -0
  311. package/esm2022/ui-business/index.mjs +2 -0
  312. package/esm2022/ui-business/multiple-ref-value/aril-ui-business-multiple-ref-value.mjs +5 -0
  313. package/esm2022/ui-business/multiple-ref-value/index.mjs +2 -0
  314. package/esm2022/ui-business/multiple-ref-value/src/multiple-ref-value.component.mjs +23 -0
  315. package/esm2022/ui-business/notification-templates-dialog/aril-ui-business-notification-templates-dialog.mjs +5 -0
  316. package/esm2022/ui-business/notification-templates-dialog/index.mjs +2 -0
  317. package/esm2022/ui-business/notification-templates-dialog/src/interface.mjs +8 -0
  318. package/esm2022/ui-business/notification-templates-dialog/src/notification-templates-dialog.component.mjs +56 -0
  319. package/esm2022/ui-business/operation-types-dialog/aril-ui-business-operation-types-dialog.mjs +5 -0
  320. package/esm2022/ui-business/operation-types-dialog/index.mjs +2 -0
  321. package/esm2022/ui-business/operation-types-dialog/src/operation-types-dialog.component.mjs +76 -0
  322. package/esm2022/ui-business/ref-value/aril-ui-business-ref-value.mjs +5 -0
  323. package/esm2022/ui-business/ref-value/index.mjs +2 -0
  324. package/esm2022/ui-business/ref-value/src/ref-value.component.mjs +39 -0
  325. package/esm2022/ui-business/rolePicker/aril-ui-business-rolePicker.mjs +5 -0
  326. package/esm2022/ui-business/rolePicker/index.mjs +2 -0
  327. package/esm2022/ui-business/rolePicker/src/interface.mjs +2 -0
  328. package/esm2022/ui-business/rolePicker/src/role-picker.component.mjs +71 -0
  329. package/esm2022/ui-business/userPicker/aril-ui-business-userPicker.mjs +5 -0
  330. package/esm2022/ui-business/userPicker/index.mjs +2 -0
  331. package/esm2022/ui-business/userPicker/src/interface.mjs +2 -0
  332. package/esm2022/ui-business/userPicker/src/user-picker.component.mjs +43 -0
  333. package/esm2022/util/aril-util.mjs +5 -0
  334. package/esm2022/util/block/aril-util-block.mjs +5 -0
  335. package/esm2022/util/block/index.mjs +2 -0
  336. package/esm2022/util/block/src/block.mjs +64 -0
  337. package/esm2022/util/custom_pages/aril-util-custom_pages.mjs +5 -0
  338. package/esm2022/util/custom_pages/index.mjs +2 -0
  339. package/esm2022/util/custom_pages/src/notFound.component.mjs +65 -0
  340. package/esm2022/util/directives/aril-util-directives.mjs +5 -0
  341. package/esm2022/util/directives/index.mjs +4 -0
  342. package/esm2022/util/directives/src/detail-page-customization/detail-page-customization.directive.mjs +298 -0
  343. package/esm2022/util/directives/src/detail-page-customization/index.mjs +3 -0
  344. package/esm2022/util/directives/src/detail-page-customization/models.mjs +4 -0
  345. package/esm2022/util/directives/src/dialog-component/plugin-dialog.component.mjs +26 -0
  346. package/esm2022/util/directives/src/dialog-service/plugin-dialog.service.mjs +16 -0
  347. package/esm2022/util/index.mjs +2 -0
  348. package/esm2022/util/lib/aril-util-lib.mjs +5 -0
  349. package/esm2022/util/lib/index.mjs +5 -0
  350. package/esm2022/util/lib/src/interfaces.mjs +4 -0
  351. package/esm2022/util/lib/src/module-router.mjs +16 -0
  352. package/esm2022/util/lib/src/types.mjs +6 -0
  353. package/esm2022/util/lib/src/validators/iban.validator.mjs +189 -0
  354. package/esm2022/util/lib/src/validators/index.mjs +5 -0
  355. package/esm2022/util/lib/src/validators/max-array-length.validator.mjs +16 -0
  356. package/esm2022/util/lib/src/validators/min-array-length.validator.mjs +16 -0
  357. package/esm2022/util/lib/src/validators/tckn.validator.mjs +39 -0
  358. package/esm2022/util/lib/src/validators/validators.mjs +16 -0
  359. package/esm2022/util/loaders/aril-util-loaders.mjs +5 -0
  360. package/esm2022/util/loaders/index.mjs +2 -0
  361. package/esm2022/util/loaders/style/style.loader.service.mjs +61 -0
  362. package/esm2022/util/pipes/aril-util-pipes.mjs +5 -0
  363. package/esm2022/util/pipes/index.mjs +7 -0
  364. package/esm2022/util/pipes/src/distance-to-now.pipe.mjs +38 -0
  365. package/esm2022/util/pipes/src/get-column-by-field.pipe.mjs +17 -0
  366. package/esm2022/util/pipes/src/parse.pipe.mjs +22 -0
  367. package/esm2022/util/pipes/src/round-number.pipe.mjs +65 -0
  368. package/esm2022/util/pipes/src/safe.pipe.mjs +34 -0
  369. package/esm2022/util/pipes/src/translate-json/index.mjs +2 -0
  370. package/esm2022/util/pipes/src/translate-json/translate-json.pipe.mjs +41 -0
  371. package/esm2022/util/primitive-extensions/aril-util-primitive-extensions.mjs +5 -0
  372. package/esm2022/util/primitive-extensions/index.mjs +5 -0
  373. package/esm2022/util/primitive-extensions/src/boolean.extensions.mjs +2 -0
  374. package/esm2022/util/primitive-extensions/src/date.extensions.mjs +116 -0
  375. package/esm2022/util/primitive-extensions/src/number.extensions.mjs +39 -0
  376. package/esm2022/util/primitive-extensions/src/string.extensions.mjs +23 -0
  377. package/esm2022/util/pub-sub/aril-util-pub-sub.mjs +5 -0
  378. package/esm2022/util/pub-sub/index.mjs +2 -0
  379. package/esm2022/util/pub-sub/src/pub-sub.service.mjs +30 -0
  380. package/esm2022/util/sync-active-tab-route/aril-util-sync-active-tab-route.mjs +5 -0
  381. package/esm2022/util/sync-active-tab-route/index.mjs +2 -0
  382. package/esm2022/util/sync-active-tab-route/src/sync-active-tab-route.directive.mjs +45 -0
  383. package/esm2022/util/unwrap/aril-util-unwrap.mjs +5 -0
  384. package/esm2022/util/unwrap/index.mjs +2 -0
  385. package/esm2022/util/unwrap/src/unwrap-tag.directive.mjs +24 -0
  386. package/fesm2022/aril-app.component-hxaLgwmC.mjs +81 -0
  387. package/fesm2022/aril-app.component-hxaLgwmC.mjs.map +1 -0
  388. package/fesm2022/aril-boot-config-api.mjs +126 -0
  389. package/fesm2022/aril-boot-config-api.mjs.map +1 -0
  390. package/fesm2022/aril-boot-config-apps.mjs +138 -0
  391. package/fesm2022/aril-boot-config-apps.mjs.map +1 -0
  392. package/fesm2022/aril-boot-config-plugins.mjs +159 -0
  393. package/fesm2022/aril-boot-config-plugins.mjs.map +1 -0
  394. package/fesm2022/aril-boot-config-translate.mjs +72 -0
  395. package/fesm2022/aril-boot-config-translate.mjs.map +1 -0
  396. package/fesm2022/aril-boot-host.mjs +108 -0
  397. package/fesm2022/aril-boot-host.mjs.map +1 -0
  398. package/fesm2022/aril-boot-mfe-app.component-s1a-tkOD.mjs +80 -0
  399. package/fesm2022/aril-boot-mfe-app.component-s1a-tkOD.mjs.map +1 -0
  400. package/fesm2022/aril-boot-mfe-aril-boot-mfe-wLTqwDtz.mjs +369 -0
  401. package/fesm2022/aril-boot-mfe-aril-boot-mfe-wLTqwDtz.mjs.map +1 -0
  402. package/fesm2022/aril-boot-mfe.mjs +19 -0
  403. package/fesm2022/aril-boot-mfe.mjs.map +1 -0
  404. package/fesm2022/aril-boot.mjs +8 -0
  405. package/fesm2022/aril-boot.mjs.map +1 -0
  406. package/fesm2022/aril-http.mjs +437 -0
  407. package/fesm2022/aril-http.mjs.map +1 -0
  408. package/fesm2022/aril-i18n.mjs +71 -0
  409. package/fesm2022/aril-i18n.mjs.map +1 -0
  410. package/fesm2022/aril-keycloak.mjs +99 -0
  411. package/fesm2022/aril-keycloak.mjs.map +1 -0
  412. package/fesm2022/aril-provider.mjs +74 -0
  413. package/fesm2022/aril-provider.mjs.map +1 -0
  414. package/fesm2022/aril-theme-layout.mjs +3015 -0
  415. package/fesm2022/aril-theme-layout.mjs.map +1 -0
  416. package/fesm2022/aril-theme.mjs +8 -0
  417. package/fesm2022/aril-theme.mjs.map +1 -0
  418. package/fesm2022/aril-ui-autoComplete.mjs +116 -0
  419. package/fesm2022/aril-ui-autoComplete.mjs.map +1 -0
  420. package/fesm2022/aril-ui-badge.mjs +66 -0
  421. package/fesm2022/aril-ui-badge.mjs.map +1 -0
  422. package/fesm2022/aril-ui-business-assetPicker.mjs +189 -0
  423. package/fesm2022/aril-ui-business-assetPicker.mjs.map +1 -0
  424. package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs +68 -0
  425. package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs.map +1 -0
  426. package/fesm2022/aril-ui-business-enumPicker.mjs +131 -0
  427. package/fesm2022/aril-ui-business-enumPicker.mjs.map +1 -0
  428. package/fesm2022/aril-ui-business-image-viewer.mjs +118 -0
  429. package/fesm2022/aril-ui-business-image-viewer.mjs.map +1 -0
  430. package/fesm2022/aril-ui-business-multiple-ref-value.mjs +30 -0
  431. package/fesm2022/aril-ui-business-multiple-ref-value.mjs.map +1 -0
  432. package/fesm2022/aril-ui-business-notification-templates-dialog.mjs +70 -0
  433. package/fesm2022/aril-ui-business-notification-templates-dialog.mjs.map +1 -0
  434. package/fesm2022/aril-ui-business-operation-types-dialog.mjs +83 -0
  435. package/fesm2022/aril-ui-business-operation-types-dialog.mjs.map +1 -0
  436. package/fesm2022/aril-ui-business-ref-value.mjs +46 -0
  437. package/fesm2022/aril-ui-business-ref-value.mjs.map +1 -0
  438. package/fesm2022/aril-ui-business-rolePicker.mjs +78 -0
  439. package/fesm2022/aril-ui-business-rolePicker.mjs.map +1 -0
  440. package/fesm2022/aril-ui-business-userPicker.mjs +50 -0
  441. package/fesm2022/aril-ui-business-userPicker.mjs.map +1 -0
  442. package/fesm2022/aril-ui-business.mjs +8 -0
  443. package/fesm2022/aril-ui-business.mjs.map +1 -0
  444. package/fesm2022/aril-ui-button.mjs +62 -0
  445. package/fesm2022/aril-ui-button.mjs.map +1 -0
  446. package/fesm2022/aril-ui-calendar.mjs +231 -0
  447. package/fesm2022/aril-ui-calendar.mjs.map +1 -0
  448. package/fesm2022/aril-ui-charts.mjs +1666 -0
  449. package/fesm2022/aril-ui-charts.mjs.map +1 -0
  450. package/fesm2022/aril-ui-checkbox.mjs +50 -0
  451. package/fesm2022/aril-ui-checkbox.mjs.map +1 -0
  452. package/fesm2022/aril-ui-chip.mjs +136 -0
  453. package/fesm2022/aril-ui-chip.mjs.map +1 -0
  454. package/fesm2022/aril-ui-collapse-reorder-list.mjs +60 -0
  455. package/fesm2022/aril-ui-collapse-reorder-list.mjs.map +1 -0
  456. package/fesm2022/aril-ui-dxEditor.mjs +33 -0
  457. package/fesm2022/aril-ui-dxEditor.mjs.map +1 -0
  458. package/fesm2022/aril-ui-dxField.mjs +26 -0
  459. package/fesm2022/aril-ui-dxField.mjs.map +1 -0
  460. package/fesm2022/aril-ui-editor.mjs +203 -0
  461. package/fesm2022/aril-ui-editor.mjs.map +1 -0
  462. package/fesm2022/aril-ui-field.mjs +52 -0
  463. package/fesm2022/aril-ui-field.mjs.map +1 -0
  464. package/fesm2022/aril-ui-fileUpload.mjs +80 -0
  465. package/fesm2022/aril-ui-fileUpload.mjs.map +1 -0
  466. package/fesm2022/aril-ui-form.mjs +86 -0
  467. package/fesm2022/aril-ui-form.mjs.map +1 -0
  468. package/fesm2022/aril-ui-img-viewer.mjs +64 -0
  469. package/fesm2022/aril-ui-img-viewer.mjs.map +1 -0
  470. package/fesm2022/aril-ui-json-diff-comparison.mjs +56 -0
  471. package/fesm2022/aril-ui-json-diff-comparison.mjs.map +1 -0
  472. package/fesm2022/aril-ui-lib.mjs +376 -0
  473. package/fesm2022/aril-ui-lib.mjs.map +1 -0
  474. package/fesm2022/aril-ui-loader.mjs +21 -0
  475. package/fesm2022/aril-ui-loader.mjs.map +1 -0
  476. package/fesm2022/aril-ui-mask.mjs +42 -0
  477. package/fesm2022/aril-ui-mask.mjs.map +1 -0
  478. package/fesm2022/aril-ui-multiSelect.mjs +64 -0
  479. package/fesm2022/aril-ui-multiSelect.mjs.map +1 -0
  480. package/fesm2022/aril-ui-number.mjs +45 -0
  481. package/fesm2022/aril-ui-number.mjs.map +1 -0
  482. package/fesm2022/aril-ui-operation-types-dialog.mjs +98 -0
  483. package/fesm2022/aril-ui-operation-types-dialog.mjs.map +1 -0
  484. package/fesm2022/aril-ui-overlayPanel.mjs +27 -0
  485. package/fesm2022/aril-ui-overlayPanel.mjs.map +1 -0
  486. package/fesm2022/aril-ui-panel.mjs +40 -0
  487. package/fesm2022/aril-ui-panel.mjs.map +1 -0
  488. package/fesm2022/aril-ui-password.mjs +36 -0
  489. package/fesm2022/aril-ui-password.mjs.map +1 -0
  490. package/fesm2022/aril-ui-pdf-viewer.mjs +34 -0
  491. package/fesm2022/aril-ui-pdf-viewer.mjs.map +1 -0
  492. package/fesm2022/aril-ui-progressbar.mjs +25 -0
  493. package/fesm2022/aril-ui-progressbar.mjs.map +1 -0
  494. package/fesm2022/aril-ui-radioButton.mjs +37 -0
  495. package/fesm2022/aril-ui-radioButton.mjs.map +1 -0
  496. package/fesm2022/aril-ui-relativeDateSelector.mjs +285 -0
  497. package/fesm2022/aril-ui-relativeDateSelector.mjs.map +1 -0
  498. package/fesm2022/aril-ui-selectBox.mjs +74 -0
  499. package/fesm2022/aril-ui-selectBox.mjs.map +1 -0
  500. package/fesm2022/aril-ui-switch.mjs +30 -0
  501. package/fesm2022/aril-ui-switch.mjs.map +1 -0
  502. package/fesm2022/aril-ui-table-expand.mjs +194 -0
  503. package/fesm2022/aril-ui-table-expand.mjs.map +1 -0
  504. package/fesm2022/aril-ui-table.mjs +833 -0
  505. package/fesm2022/aril-ui-table.mjs.map +1 -0
  506. package/fesm2022/aril-ui-tag.mjs +27 -0
  507. package/fesm2022/aril-ui-tag.mjs.map +1 -0
  508. package/fesm2022/aril-ui-tagBox.mjs +62 -0
  509. package/fesm2022/aril-ui-tagBox.mjs.map +1 -0
  510. package/fesm2022/aril-ui-text.mjs +54 -0
  511. package/fesm2022/aril-ui-text.mjs.map +1 -0
  512. package/fesm2022/aril-ui-textArea.mjs +34 -0
  513. package/fesm2022/aril-ui-textArea.mjs.map +1 -0
  514. package/fesm2022/aril-ui-toggle-button.mjs +32 -0
  515. package/fesm2022/aril-ui-toggle-button.mjs.map +1 -0
  516. package/fesm2022/aril-ui-tooltip.mjs +30 -0
  517. package/fesm2022/aril-ui-tooltip.mjs.map +1 -0
  518. package/fesm2022/aril-ui-translate-input.mjs +207 -0
  519. package/fesm2022/aril-ui-translate-input.mjs.map +1 -0
  520. package/fesm2022/aril-ui-tree.mjs +60 -0
  521. package/fesm2022/aril-ui-tree.mjs.map +1 -0
  522. package/fesm2022/aril-ui-treeSelect.mjs +48 -0
  523. package/fesm2022/aril-ui-treeSelect.mjs.map +1 -0
  524. package/fesm2022/aril-ui-treeTable.mjs +62 -0
  525. package/fesm2022/aril-ui-treeTable.mjs.map +1 -0
  526. package/fesm2022/aril-ui-value.mjs +214 -0
  527. package/fesm2022/aril-ui-value.mjs.map +1 -0
  528. package/fesm2022/aril-ui.mjs +8 -0
  529. package/fesm2022/aril-ui.mjs.map +1 -0
  530. package/fesm2022/aril-util-block.mjs +71 -0
  531. package/fesm2022/aril-util-block.mjs.map +1 -0
  532. package/fesm2022/aril-util-custom_pages.mjs +72 -0
  533. package/fesm2022/aril-util-custom_pages.mjs.map +1 -0
  534. package/fesm2022/aril-util-directives.mjs +344 -0
  535. package/fesm2022/aril-util-directives.mjs.map +1 -0
  536. package/fesm2022/aril-util-lib.mjs +307 -0
  537. package/fesm2022/aril-util-lib.mjs.map +1 -0
  538. package/fesm2022/aril-util-loaders.mjs +68 -0
  539. package/fesm2022/aril-util-loaders.mjs.map +1 -0
  540. package/fesm2022/aril-util-pipes.mjs +213 -0
  541. package/fesm2022/aril-util-pipes.mjs.map +1 -0
  542. package/fesm2022/aril-util-primitive-extensions.mjs +179 -0
  543. package/fesm2022/aril-util-primitive-extensions.mjs.map +1 -0
  544. package/fesm2022/aril-util-pub-sub.mjs +37 -0
  545. package/fesm2022/aril-util-pub-sub.mjs.map +1 -0
  546. package/fesm2022/aril-util-sync-active-tab-route.mjs +52 -0
  547. package/fesm2022/aril-util-sync-active-tab-route.mjs.map +1 -0
  548. package/fesm2022/aril-util-unwrap.mjs +31 -0
  549. package/fesm2022/aril-util-unwrap.mjs.map +1 -0
  550. package/fesm2022/aril-util.mjs +8 -0
  551. package/fesm2022/aril-util.mjs.map +1 -0
  552. package/fesm2022/aril.mjs +456 -0
  553. package/fesm2022/aril.mjs.map +1 -0
  554. package/http/index.d.ts +8 -0
  555. package/http/lib/enums.d.ts +31 -0
  556. package/http/lib/interfaces.d.ts +27 -0
  557. package/http/src/httpBackend.d.ts +8 -0
  558. package/http/src/httpClient.d.ts +9 -0
  559. package/http/src/interceptor/accept-language.interceptor.d.ts +2 -0
  560. package/http/src/serviceBase.d.ts +8 -0
  561. package/http/src/serviceMockBase.d.ts +6 -0
  562. package/http/src/serviceRequest.d.ts +4 -0
  563. package/http/src/serviceStateMethods.d.ts +17 -0
  564. package/i18n/src/folder-name-token.d.ts +2 -0
  565. package/i18n/src/i18n.module.d.ts +7 -0
  566. package/i18n/src/loader.d.ts +8 -0
  567. package/i18n/src/provideI18n.d.ts +2 -0
  568. package/i18n/src/provideScope.d.ts +5 -0
  569. package/index.d.ts +5 -0
  570. package/keycloak/index.d.ts +1 -0
  571. package/keycloak/src/auth.interceptor.d.ts +3 -0
  572. package/package.json +528 -43
  573. package/provider/src/index.d.ts +4 -0
  574. package/provider/src/prodiveHost.d.ts +3 -0
  575. package/provider/src/prodiveHostRouter.d.ts +2 -0
  576. package/provider/src/provideHostKeycloak.d.ts +5 -0
  577. package/provider/src/provideLocaleId.d.ts +2 -0
  578. package/scripts/util/blockui.min.js +7 -0
  579. package/styles/ui/ui.common.scss +42 -0
  580. package/styles/util/blockui.css +56 -0
  581. package/theme/index.d.ts +1 -0
  582. package/theme/index.ts +1 -1
  583. package/theme/layout/app/breadcrumb/app.breadcrumb.component.d.ts +25 -0
  584. package/theme/layout/app/breadcrumb/app.breadcrumb.component.html +8 -8
  585. package/theme/layout/app/breadcrumb/app.breadcrumb.component.ts +126 -126
  586. package/theme/layout/app/chatbot/app.chatbot.component.d.ts +35 -0
  587. package/theme/layout/app/chatbot/app.chatbot.component.html +108 -108
  588. package/theme/layout/app/chatbot/app.chatbot.component.scss +34 -34
  589. package/theme/layout/app/chatbot/app.chatbot.component.ts +151 -151
  590. package/theme/layout/app/config/app.config.component.html +146 -146
  591. package/theme/layout/app/config/app.config.component.ts +143 -143
  592. package/theme/layout/app/expandableMenu/expandable-menu.component.d.ts +72 -0
  593. package/theme/layout/app/expandableMenu/expandable-menu.component.html +89 -89
  594. package/theme/layout/app/expandableMenu/expandable-menu.component.ts +295 -295
  595. package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.d.ts +2031 -0
  596. package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.html +110 -110
  597. package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.scss +181 -181
  598. package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.ts +260 -260
  599. package/theme/layout/app/favorite-pages/favorite-pages.service.d.ts +56 -0
  600. package/theme/layout/app/favorite-pages/favorite-pages.service.ts +95 -95
  601. package/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.d.ts +36 -0
  602. package/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.html +27 -27
  603. package/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.ts +165 -165
  604. package/theme/layout/app/general-search/general-search.component.d.ts +22 -0
  605. package/theme/layout/app/general-search/general-search.component.html +57 -57
  606. package/theme/layout/app/general-search/general-search.component.scss +27 -27
  607. package/theme/layout/app/general-search/general-search.component.ts +93 -93
  608. package/theme/layout/app/general-search/helpers.d.ts +7 -0
  609. package/theme/layout/app/general-search/helpers.spec.ts +527 -527
  610. package/theme/layout/app/general-search/helpers.ts +106 -106
  611. package/theme/layout/app/general-search/models.d.ts +131 -0
  612. package/theme/layout/app/general-search/models.ts +142 -142
  613. package/theme/layout/app/history/history-sidebar.component.d.ts +2018 -0
  614. package/theme/layout/app/history/history-sidebar.component.html +87 -87
  615. package/theme/layout/app/history/history-sidebar.component.scss +182 -182
  616. package/theme/layout/app/history/history-sidebar.component.ts +143 -143
  617. package/theme/layout/app/history/history.service.d.ts +36 -0
  618. package/theme/layout/app/history/history.service.ts +154 -154
  619. package/theme/layout/app/layout/app.layout.component.d.ts +47 -0
  620. package/theme/layout/app/layout/app.layout.component.html +27 -27
  621. package/theme/layout/app/layout/app.layout.component.ts +171 -171
  622. package/theme/layout/app/layout/mfe.layout.component.d.ts +10 -0
  623. package/theme/layout/app/layout/mfe.layout.component.ts +59 -59
  624. package/theme/layout/app/notifications/notifications-sidebar.component.d.ts +2306 -0
  625. package/theme/layout/app/notifications/notifications-sidebar.component.html +104 -104
  626. package/theme/layout/app/notifications/notifications-sidebar.component.scss +237 -237
  627. package/theme/layout/app/notifications/notifications-sidebar.component.ts +221 -221
  628. package/theme/layout/app/profileSidebar/app.profilesidebar.component.d.ts +29 -0
  629. package/theme/layout/app/profileSidebar/app.profilesidebar.component.html +122 -122
  630. package/theme/layout/app/profileSidebar/app.profilesidebar.component.scss +151 -151
  631. package/theme/layout/app/profileSidebar/app.profilesidebar.component.ts +141 -141
  632. package/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.d.ts +30 -0
  633. package/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.html +48 -48
  634. package/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.scss +27 -27
  635. package/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.ts +178 -178
  636. package/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.d.ts +52 -0
  637. package/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.html +71 -71
  638. package/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.ts +251 -251
  639. package/theme/layout/app/profileSidebar/profile.service.d.ts +72 -0
  640. package/theme/layout/app/profileSidebar/profile.service.ts +116 -116
  641. package/theme/layout/app/site-map/site-map-sidebar.component.d.ts +2025 -0
  642. package/theme/layout/app/site-map/site-map-sidebar.component.html +121 -121
  643. package/theme/layout/app/site-map/site-map-sidebar.component.scss +178 -178
  644. package/theme/layout/app/site-map/site-map-sidebar.component.ts +193 -193
  645. package/theme/layout/app/static-sidebar/static-sidebar.component.d.ts +57 -0
  646. package/theme/layout/app/static-sidebar/static-sidebar.component.html +123 -123
  647. package/theme/layout/app/static-sidebar/static-sidebar.component.scss +411 -411
  648. package/theme/layout/app/static-sidebar/static-sidebar.component.ts +276 -276
  649. package/theme/layout/app/topbar/app.topbar.component.d.ts +35 -0
  650. package/theme/layout/app/topbar/app.topbar.component.html +85 -85
  651. package/theme/layout/app/topbar/app.topbar.component.scss +193 -193
  652. package/theme/layout/app/topbar/app.topbar.component.ts +172 -172
  653. package/theme/layout/index.d.ts +7 -0
  654. package/theme/layout/index.ts +7 -7
  655. package/theme/layout/ng-package.json +6 -6
  656. package/theme/layout/service/app.layout.service.d.ts +69 -0
  657. package/theme/layout/service/app.layout.service.ts +307 -307
  658. package/theme/layout/service/app.menu.service.d.ts +22 -0
  659. package/theme/layout/service/app.menu.service.ts +53 -53
  660. package/theme/layout/service/breadcrumb.service.d.ts +10 -0
  661. package/theme/layout/service/breadcrumb.service.ts +14 -14
  662. package/theme/layout/service/interfaces/enum.d.ts +12 -0
  663. package/theme/layout/service/interfaces/enum.ts +13 -13
  664. package/theme/layout/service/interfaces/interfaces.d.ts +131 -0
  665. package/theme/layout/service/interfaces/interfaces.ts +150 -150
  666. package/theme/layout/service/menuchangeevent.d.ts +4 -0
  667. package/theme/layout/service/menuchangeevent.ts +4 -4
  668. package/theme/layout/service/notifications.service.d.ts +12 -0
  669. package/theme/layout/service/notifications.service.ts +26 -26
  670. package/theme/layout/service/search.service.d.ts +11 -0
  671. package/theme/layout/service/search.service.ts +22 -22
  672. package/theme/layout/service/selection-group.service.d.ts +17 -0
  673. package/theme/layout/service/selection-group.service.ts +73 -73
  674. package/theme/ng-package.json +6 -6
  675. package/theme/styles/layout/_animation.scss +53 -53
  676. package/theme/styles/layout/_breadcrumb.scss +31 -31
  677. package/theme/styles/layout/_config.scss +42 -42
  678. package/theme/styles/layout/_content.scss +61 -61
  679. package/theme/styles/layout/_expanded_sidebar.scss +486 -486
  680. package/theme/styles/layout/_fonts.scss +93 -93
  681. package/theme/styles/layout/_layout_dark.scss +5 -5
  682. package/theme/styles/layout/_layout_dim.scss +5 -5
  683. package/theme/styles/layout/_layout_light.scss +5 -5
  684. package/theme/styles/layout/_main.scss +28 -28
  685. package/theme/styles/layout/_profile.scss +10 -10
  686. package/theme/styles/layout/_responsive.scss +153 -153
  687. package/theme/styles/layout/_sidebar_drawer.scss +234 -234
  688. package/theme/styles/layout/_sidebar_horizontal.scss +163 -163
  689. package/theme/styles/layout/_sidebar_reveal.scss +201 -201
  690. package/theme/styles/layout/_sidebar_slim.scss +144 -144
  691. package/theme/styles/layout/_sidebar_slim_plus.scss +168 -168
  692. package/theme/styles/layout/_sidebar_vertical.scss +156 -156
  693. package/theme/styles/layout/_topbar.scss +140 -140
  694. package/theme/styles/layout/_typography.scss +68 -68
  695. package/theme/styles/layout/_utils.scss +24 -24
  696. package/theme/styles/layout/layout.scss +25 -25
  697. package/theme/styles/layout/menutheme/_colorscheme.scss +11 -11
  698. package/theme/styles/layout/menutheme/_menutheme.scss +3 -3
  699. package/theme/styles/layout/menutheme/_primarycolor.scss +16 -16
  700. package/theme/styles/layout/menutheme/_transparent.scss +26 -26
  701. package/theme/styles/layout/preloading.scss +84 -84
  702. package/theme/styles/theme/base/_colors.scss +17 -17
  703. package/theme/styles/theme/base/_common.scss +89 -89
  704. package/theme/styles/theme/base/_components.scss +108 -108
  705. package/theme/styles/theme/base/_mixins.scss +337 -337
  706. package/theme/styles/theme/base/components/button/_button.scss +576 -576
  707. package/theme/styles/theme/base/components/button/_speeddial.scss +96 -96
  708. package/theme/styles/theme/base/components/button/_splitbutton.scss +348 -348
  709. package/theme/styles/theme/base/components/data/_carousel.scss +37 -37
  710. package/theme/styles/theme/base/components/data/_datatable.scss +338 -338
  711. package/theme/styles/theme/base/components/data/_dataview.scss +46 -46
  712. package/theme/styles/theme/base/components/data/_filter.scss +137 -137
  713. package/theme/styles/theme/base/components/data/_orderlist.scss +114 -114
  714. package/theme/styles/theme/base/components/data/_organizationchart.scss +50 -50
  715. package/theme/styles/theme/base/components/data/_paginator.scss +92 -92
  716. package/theme/styles/theme/base/components/data/_picklist.scss +114 -114
  717. package/theme/styles/theme/base/components/data/_table.scss +16 -16
  718. package/theme/styles/theme/base/components/data/_timeline.scss +35 -35
  719. package/theme/styles/theme/base/components/data/_tree.scss +150 -150
  720. package/theme/styles/theme/base/components/data/_treetable.scss +255 -255
  721. package/theme/styles/theme/base/components/data/_virtualscroller.scss +28 -28
  722. package/theme/styles/theme/base/components/file/_fileupload.scss +64 -64
  723. package/theme/styles/theme/base/components/input/_autocomplete.scss +141 -141
  724. package/theme/styles/theme/base/components/input/_calendar.scss +267 -267
  725. package/theme/styles/theme/base/components/input/_cascadeselect.scss +135 -135
  726. package/theme/styles/theme/base/components/input/_checkbox.scss +99 -99
  727. package/theme/styles/theme/base/components/input/_chips.scss +67 -67
  728. package/theme/styles/theme/base/components/input/_colorpicker.scss +19 -19
  729. package/theme/styles/theme/base/components/input/_dropdown.scss +151 -151
  730. package/theme/styles/theme/base/components/input/_editor.scss +122 -122
  731. package/theme/styles/theme/base/components/input/_inputgroup.scss +75 -75
  732. package/theme/styles/theme/base/components/input/_inputmask.scss +16 -16
  733. package/theme/styles/theme/base/components/input/_inputnumber.scss +28 -28
  734. package/theme/styles/theme/base/components/input/_inputswitch.scss +60 -60
  735. package/theme/styles/theme/base/components/input/_inputtext.scss +100 -100
  736. package/theme/styles/theme/base/components/input/_listbox.scss +97 -97
  737. package/theme/styles/theme/base/components/input/_multiselect.scss +177 -177
  738. package/theme/styles/theme/base/components/input/_password.scss +52 -52
  739. package/theme/styles/theme/base/components/input/_radiobutton.scss +78 -78
  740. package/theme/styles/theme/base/components/input/_rating.scss +60 -60
  741. package/theme/styles/theme/base/components/input/_selectbutton.scss +50 -50
  742. package/theme/styles/theme/base/components/input/_slider.scss +75 -75
  743. package/theme/styles/theme/base/components/input/_togglebutton.scss +48 -48
  744. package/theme/styles/theme/base/components/input/_treeselect.scss +139 -139
  745. package/theme/styles/theme/base/components/menu/_breadcrumb.scss +43 -43
  746. package/theme/styles/theme/base/components/menu/_contextmenu.scss +39 -39
  747. package/theme/styles/theme/base/components/menu/_dock.scss +95 -95
  748. package/theme/styles/theme/base/components/menu/_megamenu.scss +55 -55
  749. package/theme/styles/theme/base/components/menu/_menu.scss +37 -37
  750. package/theme/styles/theme/base/components/menu/_menubar.scss +140 -140
  751. package/theme/styles/theme/base/components/menu/_panelmenu.scss +153 -153
  752. package/theme/styles/theme/base/components/menu/_slidemenu.scss +59 -59
  753. package/theme/styles/theme/base/components/menu/_steps.scss +56 -56
  754. package/theme/styles/theme/base/components/menu/_tabmenu.scss +73 -73
  755. package/theme/styles/theme/base/components/menu/_tieredmenu.scss +43 -43
  756. package/theme/styles/theme/base/components/messages/_inlinemessage.scss +69 -69
  757. package/theme/styles/theme/base/components/messages/_message.scss +107 -107
  758. package/theme/styles/theme/base/components/messages/_toast.scss +99 -99
  759. package/theme/styles/theme/base/components/misc/_avatar.scss +30 -30
  760. package/theme/styles/theme/base/components/misc/_badge.scss +48 -48
  761. package/theme/styles/theme/base/components/misc/_chip.scss +42 -42
  762. package/theme/styles/theme/base/components/misc/_inplace.scss +16 -16
  763. package/theme/styles/theme/base/components/misc/_progressbar.scss +17 -17
  764. package/theme/styles/theme/base/components/misc/_scrolltop.scss +25 -25
  765. package/theme/styles/theme/base/components/misc/_skeleton.scss +8 -8
  766. package/theme/styles/theme/base/components/misc/_tag.scss +45 -45
  767. package/theme/styles/theme/base/components/misc/_terminal.scss +12 -12
  768. package/theme/styles/theme/base/components/multimedia/_galleria.scss +155 -155
  769. package/theme/styles/theme/base/components/multimedia/_image.scss +49 -49
  770. package/theme/styles/theme/base/components/overlay/_confirmpopup.scss +70 -70
  771. package/theme/styles/theme/base/components/overlay/_dialog.scss +69 -69
  772. package/theme/styles/theme/base/components/overlay/_overlaypanel.scss +62 -62
  773. package/theme/styles/theme/base/components/overlay/_sidebar.scss +28 -28
  774. package/theme/styles/theme/base/components/overlay/_tooltip.scss +33 -33
  775. package/theme/styles/theme/base/components/panel/_accordion.scss +119 -119
  776. package/theme/styles/theme/base/components/panel/_card.scss +30 -30
  777. package/theme/styles/theme/base/components/panel/_divider.scss +31 -31
  778. package/theme/styles/theme/base/components/panel/_fieldset.scss +47 -47
  779. package/theme/styles/theme/base/components/panel/_panel.scss +77 -77
  780. package/theme/styles/theme/base/components/panel/_scrollpanel.scss +6 -6
  781. package/theme/styles/theme/base/components/panel/_splitter.scss +19 -19
  782. package/theme/styles/theme/base/components/panel/_stepper.scss +200 -200
  783. package/theme/styles/theme/base/components/panel/_tabview.scss +91 -91
  784. package/theme/styles/theme/base/components/panel/_toolbar.scss +11 -11
  785. package/theme/styles/theme/dark/_extensions.scss +134 -134
  786. package/theme/styles/theme/dark/_variables.scss +933 -933
  787. package/theme/styles/theme/dark/indigo/theme.scss +14 -14
  788. package/theme/styles/theme/light/_extensions.scss +116 -116
  789. package/theme/styles/theme/light/_variables.scss +940 -940
  790. package/theme/styles/theme/light/custom/theme.scss +16 -16
  791. package/theme/styles/theme/light/indigo/theme.scss +14 -14
  792. package/ui/autoComplete/src/auto-complete.component.d.ts +31 -0
  793. package/ui/autoComplete/src/interfaces.d.ts +28 -0
  794. package/ui/badge/src/badge.component.d.ts +32 -0
  795. package/ui/button/src/button.component.d.ts +28 -0
  796. package/ui/button/src/split-button.component.d.ts +8 -0
  797. package/ui/calendar/src/calendar.component.d.ts +63 -0
  798. package/ui/charts/index.d.ts +12 -0
  799. package/ui/charts/src/amCharts/column/column-chart.component.d.ts +25 -0
  800. package/ui/charts/src/amCharts/line/line-chart.component.d.ts +26 -0
  801. package/ui/charts/src/amCharts/pie/pie-chart.component.d.ts +24 -0
  802. package/ui/charts/src/highCharts/area/area-chart.component.d.ts +20 -0
  803. package/ui/charts/src/highCharts/bar/bar-chart.component.d.ts +26 -0
  804. package/ui/charts/src/highCharts/column/column-chart.component.d.ts +28 -0
  805. package/ui/charts/src/highCharts/gauge/solid-gauge.component.d.ts +38 -0
  806. package/ui/charts/src/highCharts/heatmap/heatMap-chart.component.d.ts +32 -0
  807. package/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.d.ts +24 -0
  808. package/ui/charts/src/highCharts/line/line-chart-series.component.d.ts +21 -0
  809. package/ui/charts/src/highCharts/line/line-chart.component.d.ts +21 -0
  810. package/ui/charts/src/highCharts/pie/pie-chart.component.d.ts +27 -0
  811. package/ui/charts/src/theme/theme.d.ts +5 -0
  812. package/ui/checkbox/src/check-box.component.d.ts +12 -0
  813. package/ui/checkbox/src/tri-state-checkbox.component.d.ts +9 -0
  814. package/ui/chip/index.d.ts +1 -0
  815. package/ui/chip/src/chip.component.d.ts +34 -0
  816. package/ui/collapse-reorder-list/index.d.ts +1 -0
  817. package/ui/collapse-reorder-list/src/collapse-reorder-list.component.d.ts +21 -0
  818. package/ui/dxEditor/src/dx-editor.component.d.ts +11 -0
  819. package/ui/dxField/src/dx-field.component.d.ts +10 -0
  820. package/ui/editor/src/aril-editor.component.d.ts +28 -0
  821. package/ui/editor/src/types.d.ts +23 -0
  822. package/ui/field/src/field.component.d.ts +30 -0
  823. package/ui/fileUpload/src/file-upload.component.d.ts +49 -0
  824. package/ui/form/index.d.ts +11 -0
  825. package/ui/form/src/form-submit-button.component.d.ts +14 -0
  826. package/ui/form/src/form.component.d.ts +8 -0
  827. package/ui/img-viewer/index.d.ts +1 -0
  828. package/ui/img-viewer/src/img-viewer.component.d.ts +13 -0
  829. package/ui/index.d.ts +1 -0
  830. package/ui/json-diff-comparison/src/json-diff.component.d.ts +13 -0
  831. package/ui/lib/index.d.ts +12 -0
  832. package/ui/lib/src/form/form-error-message.component.d.ts +9 -0
  833. package/ui/lib/src/form/form-error-message.directive.d.ts +14 -0
  834. package/ui/lib/src/form/form-field-builder.d.ts +8 -0
  835. package/ui/lib/src/form/form-validation.d.ts +2 -0
  836. package/ui/lib/src/grid/enum-color-picker.pipe.d.ts +9 -0
  837. package/ui/lib/src/grid/flex-grid.directive.d.ts +6 -0
  838. package/ui/lib/src/input/baseInput.d.ts +7 -0
  839. package/ui/lib/src/input/common-input-validators.service.d.ts +20 -0
  840. package/ui/lib/src/input/dx-input-error-message.pipe.d.ts +11 -0
  841. package/ui/lib/src/input/input-disabled.directive.d.ts +9 -0
  842. package/ui/lib/src/input/input-error-message.pipe.d.ts +10 -0
  843. package/ui/lib/src/input/input-transforms.d.ts +5 -0
  844. package/ui/lib/src/input/value-accessor.directive.d.ts +9 -0
  845. package/ui/loader/src/loader.component.d.ts +5 -0
  846. package/ui/mask/src/mask.component.d.ts +21 -0
  847. package/ui/multiSelect/src/interfaces.d.ts +32 -0
  848. package/ui/multiSelect/src/multi-select.component.d.ts +28 -0
  849. package/ui/number/src/number.component.d.ts +29 -0
  850. package/ui/operation-types-dialog/src/operation-types-dialog.component.d.ts +33 -0
  851. package/ui/overlayPanel/src/overlay-panel.component.d.ts +8 -0
  852. package/ui/panel/src/panel.component.d.ts +14 -0
  853. package/ui/password/src/password.component.d.ts +11 -0
  854. package/ui/pdf-viewer/src/pdf-viewer.component.d.ts +19 -0
  855. package/ui/progressbar/src/progressbar.component.d.ts +8 -0
  856. package/ui/radioButton/src/radio-button.component.d.ts +22 -0
  857. package/ui/relativeDateSelector/index.d.ts +1 -0
  858. package/ui/relativeDateSelector/src/enum.d.ts +26 -0
  859. package/ui/relativeDateSelector/src/relative-date-selector.component.d.ts +61 -0
  860. package/ui/selectBox/src/interfaces.d.ts +32 -0
  861. package/ui/selectBox/src/select-box.component.d.ts +30 -0
  862. package/ui/switch/src/switch.component.d.ts +8 -0
  863. package/ui/table/index.d.ts +35 -0
  864. package/ui/table/src/export-overlay-panel.component.d.ts +39 -0
  865. package/ui/table/src/interfaces.d.ts +145 -0
  866. package/ui/table/src/table-column.component.d.ts +19 -0
  867. package/ui/table/src/table.component.d.ts +107 -0
  868. package/ui/table-expand/index.d.ts +20 -0
  869. package/ui/table-expand/src/table-column.component.d.ts +28 -0
  870. package/ui/table-expand/src/table-expand-area.component.d.ts +14 -0
  871. package/ui/table-expand/src/table.component.d.ts +47 -0
  872. package/ui/tag/index.d.ts +1 -0
  873. package/ui/tag/src/interface.d.ts +1 -0
  874. package/ui/tag/src/tag.component.d.ts +15 -0
  875. package/ui/tagBox/src/tag-box.component.d.ts +17 -0
  876. package/ui/text/src/text.component.d.ts +18 -0
  877. package/ui/textArea/src/text-area.component.d.ts +12 -0
  878. package/ui/toggle-button/index.d.ts +1 -0
  879. package/ui/toggle-button/src/toggle-button.component.d.ts +10 -0
  880. package/ui/tooltip/src/tooltip-component.d.ts +14 -0
  881. package/ui/translate-input/src/aril-lang-modal/aril-lang-modal.component.d.ts +21 -0
  882. package/ui/translate-input/src/aril-lang-modal/constants.d.ts +2 -0
  883. package/ui/translate-input/src/aril-translate-input.component.d.ts +26 -0
  884. package/ui/translate-input/src/interface.d.ts +12 -0
  885. package/ui/tree/src/tree.component.d.ts +23 -0
  886. package/ui/treeSelect/src/treeSelect.component.d.ts +23 -0
  887. package/ui/treeTable/src/tree-table.component.d.ts +21 -0
  888. package/ui/value/src/value.component.d.ts +43 -0
  889. package/ui-business/assetPicker/index.d.ts +1 -0
  890. package/ui-business/assetPicker/src/asset-picker.component.d.ts +48 -0
  891. package/ui-business/assetPicker/src/interface.d.ts +74 -0
  892. package/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.d.ts +31 -0
  893. package/ui-business/detailed-overlay-panel/src/interface.d.ts +54 -0
  894. package/ui-business/enumPicker/index.d.ts +1 -0
  895. package/ui-business/enumPicker/src/enum-picker.component.d.ts +47 -0
  896. package/ui-business/enumPicker/src/interface.d.ts +34 -0
  897. package/ui-business/image-viewer/index.d.ts +1 -0
  898. package/ui-business/image-viewer/src/aril-image-viewer.component.d.ts +20 -0
  899. package/ui-business/index.d.ts +1 -0
  900. package/ui-business/multiple-ref-value/src/multiple-ref-value.component.d.ts +16 -0
  901. package/ui-business/notification-templates-dialog/src/interface.d.ts +17 -0
  902. package/ui-business/notification-templates-dialog/src/notification-templates-dialog.component.d.ts +18 -0
  903. package/ui-business/operation-types-dialog/src/operation-types-dialog.component.d.ts +28 -0
  904. package/ui-business/ref-value/src/ref-value.component.d.ts +20 -0
  905. package/ui-business/rolePicker/src/interface.d.ts +44 -0
  906. package/ui-business/rolePicker/src/role-picker.component.d.ts +25 -0
  907. package/ui-business/userPicker/index.d.ts +1 -0
  908. package/ui-business/userPicker/src/interface.d.ts +25 -0
  909. package/ui-business/userPicker/src/user-picker.component.d.ts +18 -0
  910. package/util/block/src/block.d.ts +28 -0
  911. package/util/custom_pages/src/notFound.component.d.ts +5 -0
  912. package/util/directives/src/detail-page-customization/detail-page-customization.directive.d.ts +26 -0
  913. package/util/directives/src/detail-page-customization/index.d.ts +2 -0
  914. package/util/directives/src/detail-page-customization/models.d.ts +53 -0
  915. package/util/directives/src/dialog-component/plugin-dialog.component.d.ts +11 -0
  916. package/util/directives/src/dialog-service/plugin-dialog.service.d.ts +7 -0
  917. package/util/index.d.ts +1 -0
  918. package/util/lib/src/interfaces.d.ts +41 -0
  919. package/util/lib/src/module-router.d.ts +5 -0
  920. package/util/lib/src/types.d.ts +2290 -0
  921. package/util/lib/src/validators/iban.validator.d.ts +7 -0
  922. package/util/lib/src/validators/max-array-length.validator.d.ts +7 -0
  923. package/util/lib/src/validators/min-array-length.validator.d.ts +7 -0
  924. package/util/lib/src/validators/tckn.validator.d.ts +7 -0
  925. package/util/lib/src/validators/validators.d.ts +7 -0
  926. package/util/loaders/index.d.ts +1 -0
  927. package/util/loaders/style/style.loader.service.d.ts +13 -0
  928. package/util/pipes/src/distance-to-now.pipe.d.ts +11 -0
  929. package/util/pipes/src/get-column-by-field.pipe.d.ts +11 -0
  930. package/util/pipes/src/parse.pipe.d.ts +7 -0
  931. package/util/pipes/src/round-number.pipe.d.ts +11 -0
  932. package/util/pipes/src/safe.pipe.d.ts +10 -0
  933. package/util/pipes/src/translate-json/index.d.ts +1 -0
  934. package/util/pipes/src/translate-json/translate-json.pipe.d.ts +10 -0
  935. package/util/primitive-extensions/src/date.extensions.d.ts +8 -0
  936. package/util/primitive-extensions/src/number.extensions.d.ts +12 -0
  937. package/util/primitive-extensions/src/string.extensions.d.ts +11 -0
  938. package/util/pub-sub/src/pub-sub.service.d.ts +21 -0
  939. package/util/sync-active-tab-route/src/sync-active-tab-route.directive.d.ts +17 -0
  940. package/util/unwrap/src/unwrap-tag.directive.d.ts +9 -0
  941. package/.eslintrc.json +0 -41
  942. package/boot/config/api/ng-package.json +0 -6
  943. package/boot/config/api/src/api.sample.json +0 -8
  944. package/boot/config/api/src/api.service.ts +0 -91
  945. package/boot/config/api/src/interfaces.ts +0 -65
  946. package/boot/config/apps/ng-package.json +0 -6
  947. package/boot/config/apps/src/apps.service.ts +0 -62
  948. package/boot/config/apps/src/auth.guard.ts +0 -22
  949. package/boot/config/apps/src/interfaces.ts +0 -58
  950. package/boot/config/apps/src/reuse-strategy.ts +0 -10
  951. package/boot/config/apps/src/showdowDOMWrapper.ts +0 -28
  952. package/boot/config/plugins/ng-package.json +0 -6
  953. package/boot/config/plugins/src/getNgZone.ts +0 -7
  954. package/boot/config/plugins/src/interfaces.ts +0 -75
  955. package/boot/config/plugins/src/plugins.service.ts +0 -110
  956. package/boot/config/translate/constants.ts +0 -4
  957. package/boot/config/translate/ng-package.json +0 -6
  958. package/boot/config/translate/primeng/i18n/tr.ts +0 -59
  959. package/boot/host/ng-package.json +0 -6
  960. package/boot/host/src/app.component.ts +0 -51
  961. package/boot/host/src/bootstrap.ts +0 -87
  962. package/boot/index.ts +0 -1
  963. package/boot/mfe/ng-package.json +0 -6
  964. package/boot/mfe/src/app.component.ts +0 -63
  965. package/boot/mfe/src/appComponentLoader.ts +0 -4
  966. package/boot/mfe/src/bootstrap.ts +0 -97
  967. package/boot/mfe/src/loadStyles.ts +0 -42
  968. package/boot/mfe/src/monaco.config.ts +0 -266
  969. package/boot/ng-package.json +0 -6
  970. package/http/index.ts +0 -13
  971. package/http/lib/enums.ts +0 -31
  972. package/http/lib/interfaces.ts +0 -46
  973. package/http/ng-package.json +0 -6
  974. package/http/src/httpBackend.ts +0 -12
  975. package/http/src/httpClient.ts +0 -20
  976. package/http/src/interceptor/accept-language.interceptor.ts +0 -32
  977. package/http/src/serviceBase.ts +0 -175
  978. package/http/src/serviceMockBase.ts +0 -12
  979. package/http/src/serviceRequest.ts +0 -28
  980. package/http/src/serviceStateMethods.ts +0 -211
  981. package/i18n/ng-package.json +0 -6
  982. package/i18n/src/folder-name-token.ts +0 -3
  983. package/i18n/src/i18n.module.ts +0 -11
  984. package/i18n/src/loader.ts +0 -13
  985. package/i18n/src/provideI18n.ts +0 -18
  986. package/i18n/src/provideScope.ts +0 -20
  987. package/keycloak/index.ts +0 -1
  988. package/keycloak/ng-package.json +0 -6
  989. package/keycloak/src/auth.interceptor.ts +0 -103
  990. package/ng-package.json +0 -16
  991. package/project.json +0 -39
  992. package/provider/ng-package.json +0 -6
  993. package/provider/src/index.ts +0 -5
  994. package/provider/src/prodiveHost.ts +0 -15
  995. package/provider/src/prodiveHostRouter.ts +0 -21
  996. package/provider/src/provideHostKeycloak.ts +0 -34
  997. package/provider/src/provideLocaleId.ts +0 -22
  998. package/tsconfig.lib.json +0 -12
  999. package/tsconfig.lib.prod.json +0 -10
  1000. package/tsconfig.spec.json +0 -9
  1001. package/ui/autoComplete/ng-package.json +0 -6
  1002. package/ui/autoComplete/src/auto-complete.component.html +0 -14
  1003. package/ui/autoComplete/src/auto-complete.component.ts +0 -130
  1004. package/ui/autoComplete/src/interfaces.ts +0 -35
  1005. package/ui/badge/ng-package.json +0 -6
  1006. package/ui/badge/src/badge.component.html +0 -11
  1007. package/ui/badge/src/badge.component.ts +0 -63
  1008. package/ui/button/ng-package.json +0 -6
  1009. package/ui/button/src/button.component.html +0 -12
  1010. package/ui/button/src/button.component.ts +0 -47
  1011. package/ui/button/src/split-button.component.html +0 -2
  1012. package/ui/button/src/split-button.component.ts +0 -17
  1013. package/ui/calendar/ng-package.json +0 -6
  1014. package/ui/calendar/src/calendar.component.html +0 -48
  1015. package/ui/calendar/src/calendar.component.ts +0 -257
  1016. package/ui/charts/index.ts +0 -13
  1017. package/ui/charts/ng-package.json +0 -6
  1018. package/ui/charts/src/amCharts/column/column-chart.component.ts +0 -144
  1019. package/ui/charts/src/amCharts/line/line-chart.component.ts +0 -194
  1020. package/ui/charts/src/amCharts/pie/pie-chart.component.ts +0 -132
  1021. package/ui/charts/src/highCharts/area/area-chart.component.ts +0 -112
  1022. package/ui/charts/src/highCharts/bar/bar-chart.component.ts +0 -100
  1023. package/ui/charts/src/highCharts/bar/bar-chart.components.scss +0 -50
  1024. package/ui/charts/src/highCharts/column/column-chart.component copy.ts +0 -50
  1025. package/ui/charts/src/highCharts/column/column-chart.component.ts +0 -125
  1026. package/ui/charts/src/highCharts/column/column-chart.components.scss +0 -50
  1027. package/ui/charts/src/highCharts/gauge/solid-gauge.component.ts +0 -199
  1028. package/ui/charts/src/highCharts/heatmap/heatMap-chart.component.ts +0 -279
  1029. package/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.ts +0 -185
  1030. package/ui/charts/src/highCharts/line/line-chart-series.component.ts +0 -92
  1031. package/ui/charts/src/highCharts/line/line-chart.component.ts +0 -85
  1032. package/ui/charts/src/highCharts/pie/pie-chart.component.ts +0 -139
  1033. package/ui/charts/src/theme/theme.ts +0 -55
  1034. package/ui/checkbox/ng-package.json +0 -6
  1035. package/ui/checkbox/src/check-box.component.html +0 -15
  1036. package/ui/checkbox/src/check-box.component.ts +0 -24
  1037. package/ui/checkbox/src/tri-state-checkbox.component.html +0 -7
  1038. package/ui/checkbox/src/tri-state-checkbox.component.ts +0 -20
  1039. package/ui/chip/index.ts +0 -1
  1040. package/ui/chip/ng-package.json +0 -6
  1041. package/ui/chip/src/chip.component.html +0 -33
  1042. package/ui/chip/src/chip.component.ts +0 -144
  1043. package/ui/collapse-reorder-list/index.ts +0 -1
  1044. package/ui/collapse-reorder-list/ng-package.json +0 -6
  1045. package/ui/collapse-reorder-list/src/collapse-reorder-list.component.html +0 -42
  1046. package/ui/collapse-reorder-list/src/collapse-reorder-list.component.scss +0 -24
  1047. package/ui/collapse-reorder-list/src/collapse-reorder-list.component.ts +0 -56
  1048. package/ui/dxEditor/ng-package.json +0 -6
  1049. package/ui/dxEditor/src/dx-editor.component.html +0 -67
  1050. package/ui/dxEditor/src/dx-editor.component.ts +0 -19
  1051. package/ui/dxField/ng-package.json +0 -6
  1052. package/ui/dxField/src/dx-field.component.html +0 -15
  1053. package/ui/dxField/src/dx-field.component.ts +0 -17
  1054. package/ui/editor/ng-package.json +0 -6
  1055. package/ui/editor/src/aril-editor.component.html +0 -16
  1056. package/ui/editor/src/aril-editor.component.scss +0 -18
  1057. package/ui/editor/src/aril-editor.component.ts +0 -176
  1058. package/ui/editor/src/types.ts +0 -24
  1059. package/ui/field/ng-package.json +0 -6
  1060. package/ui/field/src/field.component.html +0 -27
  1061. package/ui/field/src/field.component.ts +0 -53
  1062. package/ui/fileUpload/ng-package.json +0 -6
  1063. package/ui/fileUpload/src/file-upload.component.html +0 -76
  1064. package/ui/fileUpload/src/file-upload.component.ts +0 -90
  1065. package/ui/form/index.ts +0 -18
  1066. package/ui/form/ng-package.json +0 -6
  1067. package/ui/form/src/form-submit-button.component.html +0 -12
  1068. package/ui/form/src/form-submit-button.component.ts +0 -36
  1069. package/ui/form/src/form.component.ts +0 -20
  1070. package/ui/img-viewer/index.ts +0 -2
  1071. package/ui/img-viewer/ng-package.json +0 -6
  1072. package/ui/img-viewer/src/img-viewer.component.html +0 -12
  1073. package/ui/img-viewer/src/img-viewer.component.scss +0 -8
  1074. package/ui/img-viewer/src/img-viewer.component.ts +0 -59
  1075. package/ui/index.ts +0 -1
  1076. package/ui/json-diff-comparison/ng-package.json +0 -6
  1077. package/ui/json-diff-comparison/src/json-diff.component.html +0 -5
  1078. package/ui/json-diff-comparison/src/json-diff.component.ts +0 -45
  1079. package/ui/lib/index.ts +0 -17
  1080. package/ui/lib/ng-package.json +0 -6
  1081. package/ui/lib/src/form/form-error-message.component.ts +0 -25
  1082. package/ui/lib/src/form/form-error-message.directive.ts +0 -32
  1083. package/ui/lib/src/form/form-field-builder.ts +0 -31
  1084. package/ui/lib/src/form/form-validation.ts +0 -14
  1085. package/ui/lib/src/grid/enum-color-picker.pipe.ts +0 -33
  1086. package/ui/lib/src/grid/flex-grid.directive.ts +0 -10
  1087. package/ui/lib/src/input/baseInput.ts +0 -30
  1088. package/ui/lib/src/input/common-input-validators.service.ts +0 -57
  1089. package/ui/lib/src/input/dx-input-error-message.pipe.ts +0 -16
  1090. package/ui/lib/src/input/input-disabled.directive.ts +0 -15
  1091. package/ui/lib/src/input/input-error-message.pipe.ts +0 -71
  1092. package/ui/lib/src/input/input-transforms.ts +0 -11
  1093. package/ui/lib/src/input/value-accessor.directive.ts +0 -31
  1094. package/ui/loader/ng-package.json +0 -6
  1095. package/ui/loader/src/loader.component.html +0 -7
  1096. package/ui/loader/src/loader.component.scss +0 -6
  1097. package/ui/loader/src/loader.component.ts +0 -14
  1098. package/ui/mask/ng-package.json +0 -6
  1099. package/ui/mask/src/mask.component.css +0 -23
  1100. package/ui/mask/src/mask.component.html +0 -17
  1101. package/ui/mask/src/mask.component.ts +0 -34
  1102. package/ui/multiSelect/ng-package.json +0 -6
  1103. package/ui/multiSelect/src/interfaces.ts +0 -41
  1104. package/ui/multiSelect/src/multi-select.component.html +0 -14
  1105. package/ui/multiSelect/src/multi-select.component.ts +0 -66
  1106. package/ui/ng-package.json +0 -6
  1107. package/ui/number/ng-package.json +0 -6
  1108. package/ui/number/src/number.component.html +0 -26
  1109. package/ui/number/src/number.component.ts +0 -36
  1110. package/ui/operation-types-dialog/ng-package.json +0 -6
  1111. package/ui/operation-types-dialog/src/operation-types-dialog.component.ts +0 -98
  1112. package/ui/overlayPanel/ng-package.json +0 -6
  1113. package/ui/overlayPanel/src/overlay-panel.component.html +0 -5
  1114. package/ui/overlayPanel/src/overlay-panel.component.ts +0 -16
  1115. package/ui/panel/ng-package.json +0 -6
  1116. package/ui/panel/src/panel.component.css +0 -38
  1117. package/ui/panel/src/panel.component.html +0 -44
  1118. package/ui/panel/src/panel.component.ts +0 -31
  1119. package/ui/password/ng-package.json +0 -6
  1120. package/ui/password/src/password.component.html +0 -25
  1121. package/ui/password/src/password.component.ts +0 -22
  1122. package/ui/pdf-viewer/ng-package.json +0 -6
  1123. package/ui/pdf-viewer/src/pdf-viewer.component.html +0 -16
  1124. package/ui/pdf-viewer/src/pdf-viewer.component.scss +0 -8
  1125. package/ui/pdf-viewer/src/pdf-viewer.component.ts +0 -28
  1126. package/ui/progressbar/dist/index.js +0 -13
  1127. package/ui/progressbar/ng-package.json +0 -6
  1128. package/ui/progressbar/src/dist/progressbar.component.js +0 -28
  1129. package/ui/progressbar/src/progressbar.component.html +0 -1
  1130. package/ui/progressbar/src/progressbar.component.ts +0 -18
  1131. package/ui/radioButton/ng-package.json +0 -6
  1132. package/ui/radioButton/src/radio-button.component.html +0 -23
  1133. package/ui/radioButton/src/radio-button.component.scss +0 -17
  1134. package/ui/radioButton/src/radio-button.component.ts +0 -39
  1135. package/ui/relativeDateSelector/index.ts +0 -1
  1136. package/ui/relativeDateSelector/ng-package.json +0 -6
  1137. package/ui/relativeDateSelector/src/enum.ts +0 -29
  1138. package/ui/relativeDateSelector/src/relative-date-selector.component.html +0 -118
  1139. package/ui/relativeDateSelector/src/relative-date-selector.component.scss +0 -154
  1140. package/ui/relativeDateSelector/src/relative-date-selector.component.ts +0 -291
  1141. package/ui/selectBox/ng-package.json +0 -6
  1142. package/ui/selectBox/src/interfaces.ts +0 -41
  1143. package/ui/selectBox/src/select-box.component.html +0 -19
  1144. package/ui/selectBox/src/select-box.component.ts +0 -79
  1145. package/ui/styles/ui.common.scss +0 -42
  1146. package/ui/switch/ng-package.json +0 -6
  1147. package/ui/switch/src/switch.component.html +0 -7
  1148. package/ui/switch/src/switch.component.ts +0 -18
  1149. package/ui/table/index.ts +0 -76
  1150. package/ui/table/ng-package.json +0 -6
  1151. package/ui/table/src/export-overlay-panel.component.ts +0 -330
  1152. package/ui/table/src/interfaces.ts +0 -162
  1153. package/ui/table/src/table-column.component.ts +0 -22
  1154. package/ui/table/src/table.component.html +0 -404
  1155. package/ui/table/src/table.component.scss +0 -15
  1156. package/ui/table/src/table.component.ts +0 -368
  1157. package/ui/table-expand/index.ts +0 -41
  1158. package/ui/table-expand/ng-package.json +0 -6
  1159. package/ui/table-expand/src/table-column.component.ts +0 -32
  1160. package/ui/table-expand/src/table-expand-area.component.ts +0 -18
  1161. package/ui/table-expand/src/table.component.html +0 -101
  1162. package/ui/table-expand/src/table.component.ts +0 -92
  1163. package/ui/tag/index.ts +0 -1
  1164. package/ui/tag/ng-package.json +0 -6
  1165. package/ui/tag/src/interface.ts +0 -1
  1166. package/ui/tag/src/tag.component.html +0 -9
  1167. package/ui/tag/src/tag.component.ts +0 -17
  1168. package/ui/tagBox/ng-package.json +0 -6
  1169. package/ui/tagBox/src/tag-box.component.html +0 -26
  1170. package/ui/tagBox/src/tag-box.component.ts +0 -56
  1171. package/ui/text/ng-package.json +0 -6
  1172. package/ui/text/src/text.component.html +0 -21
  1173. package/ui/text/src/text.component.ts +0 -55
  1174. package/ui/textArea/ng-package.json +0 -6
  1175. package/ui/textArea/src/text-area.component.html +0 -12
  1176. package/ui/textArea/src/text-area.component.ts +0 -22
  1177. package/ui/toggle-button/index.ts +0 -1
  1178. package/ui/toggle-button/ng-package.json +0 -6
  1179. package/ui/toggle-button/src/toggle-button.component.html +0 -13
  1180. package/ui/toggle-button/src/toggle-button.component.scss +0 -19
  1181. package/ui/toggle-button/src/toggle-button.component.ts +0 -22
  1182. package/ui/tooltip/ng-package.json +0 -6
  1183. package/ui/tooltip/src/tooltip-component.html +0 -10
  1184. package/ui/tooltip/src/tooltip-component.ts +0 -20
  1185. package/ui/translate-input/ng-package.json +0 -6
  1186. package/ui/translate-input/src/aril-lang-modal/aril-lang-modal.component.html +0 -46
  1187. package/ui/translate-input/src/aril-lang-modal/aril-lang-modal.component.scss +0 -9
  1188. package/ui/translate-input/src/aril-lang-modal/aril-lang-modal.component.ts +0 -74
  1189. package/ui/translate-input/src/aril-lang-modal/constants.ts +0 -16
  1190. package/ui/translate-input/src/aril-translate-input.component.ts +0 -152
  1191. package/ui/translate-input/src/interface.ts +0 -14
  1192. package/ui/tree/ng-package.json +0 -6
  1193. package/ui/tree/src/tree.component.html +0 -17
  1194. package/ui/tree/src/tree.component.ts +0 -65
  1195. package/ui/treeSelect/ng-package.json +0 -6
  1196. package/ui/treeSelect/src/treeSelect.component.html +0 -18
  1197. package/ui/treeSelect/src/treeSelect.component.ts +0 -43
  1198. package/ui/treeTable/ng-package.json +0 -6
  1199. package/ui/treeTable/src/tree-table.component.html +0 -88
  1200. package/ui/treeTable/src/tree-table.component.ts +0 -57
  1201. package/ui/value/ng-package.json +0 -6
  1202. package/ui/value/src/value.component.html +0 -94
  1203. package/ui/value/src/value.component.scss +0 -6
  1204. package/ui/value/src/value.component.ts +0 -268
  1205. package/ui-business/assetPicker/index.ts +0 -1
  1206. package/ui-business/assetPicker/ng-package.json +0 -6
  1207. package/ui-business/assetPicker/src/asset-picker.component.html +0 -29
  1208. package/ui-business/assetPicker/src/asset-picker.component.ts +0 -259
  1209. package/ui-business/assetPicker/src/interface.ts +0 -83
  1210. package/ui-business/detailed-overlay-panel/ng-package.json +0 -6
  1211. package/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.html +0 -52
  1212. package/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.scss +0 -19
  1213. package/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.ts +0 -66
  1214. package/ui-business/detailed-overlay-panel/src/interface.ts +0 -62
  1215. package/ui-business/enumPicker/index.ts +0 -1
  1216. package/ui-business/enumPicker/ng-package.json +0 -6
  1217. package/ui-business/enumPicker/src/enum-picker.component.html +0 -39
  1218. package/ui-business/enumPicker/src/enum-picker.component.ts +0 -147
  1219. package/ui-business/enumPicker/src/interface.ts +0 -44
  1220. package/ui-business/image-viewer/index.ts +0 -1
  1221. package/ui-business/image-viewer/ng-package.json +0 -6
  1222. package/ui-business/image-viewer/src/aril-image-viewer.component.ts +0 -92
  1223. package/ui-business/index.ts +0 -1
  1224. package/ui-business/multiple-ref-value/ng-package.json +0 -6
  1225. package/ui-business/multiple-ref-value/src/multiple-ref-value.component.html +0 -26
  1226. package/ui-business/multiple-ref-value/src/multiple-ref-value.component.ts +0 -21
  1227. package/ui-business/ng-package.json +0 -6
  1228. package/ui-business/notification-templates-dialog/ng-package.json +0 -6
  1229. package/ui-business/notification-templates-dialog/src/interface.ts +0 -18
  1230. package/ui-business/notification-templates-dialog/src/notification-templates-dialog.component.html +0 -31
  1231. package/ui-business/notification-templates-dialog/src/notification-templates-dialog.component.ts +0 -69
  1232. package/ui-business/operation-types-dialog/ng-package.json +0 -6
  1233. package/ui-business/operation-types-dialog/src/operation-types-dialog.component.ts +0 -78
  1234. package/ui-business/ref-value/ng-package.json +0 -6
  1235. package/ui-business/ref-value/src/ref-value.component.html +0 -29
  1236. package/ui-business/ref-value/src/ref-value.component.ts +0 -41
  1237. package/ui-business/rolePicker/ng-package.json +0 -6
  1238. package/ui-business/rolePicker/src/interface.ts +0 -56
  1239. package/ui-business/rolePicker/src/role-picker.component.html +0 -21
  1240. package/ui-business/rolePicker/src/role-picker.component.ts +0 -88
  1241. package/ui-business/userPicker/index.ts +0 -1
  1242. package/ui-business/userPicker/ng-package.json +0 -6
  1243. package/ui-business/userPicker/src/interface.ts +0 -27
  1244. package/ui-business/userPicker/src/user-picker.component.html +0 -20
  1245. package/ui-business/userPicker/src/user-picker.component.ts +0 -52
  1246. package/util/block/ng-package.json +0 -6
  1247. package/util/block/src/block.ts +0 -65
  1248. package/util/block/src/blockui.css +0 -56
  1249. package/util/block/src/blockui.min.js +0 -7
  1250. package/util/custom_pages/ng-package.json +0 -6
  1251. package/util/custom_pages/src/notFound.component.ts +0 -34
  1252. package/util/directives/ng-package.json +0 -6
  1253. package/util/directives/src/detail-page-customization/detail-page-customization.directive.md +0 -199
  1254. package/util/directives/src/detail-page-customization/detail-page-customization.directive.ts +0 -343
  1255. package/util/directives/src/detail-page-customization/index.ts +0 -2
  1256. package/util/directives/src/detail-page-customization/models.ts +0 -61
  1257. package/util/directives/src/dialog-component/plugin-dialog.component.ts +0 -22
  1258. package/util/directives/src/dialog-service/plugin-dialog.service.ts +0 -12
  1259. package/util/index.ts +0 -1
  1260. package/util/lib/ng-package.json +0 -6
  1261. package/util/lib/src/interfaces.ts +0 -44
  1262. package/util/lib/src/module-router.ts +0 -9
  1263. package/util/lib/src/types.ts +0 -61
  1264. package/util/lib/src/validators/iban.validator.ts +0 -202
  1265. package/util/lib/src/validators/max-array-length.validator.ts +0 -18
  1266. package/util/lib/src/validators/min-array-length.validator.ts +0 -18
  1267. package/util/lib/src/validators/tckn.validator.ts +0 -55
  1268. package/util/lib/src/validators/validators.ts +0 -21
  1269. package/util/loaders/index.ts +0 -1
  1270. package/util/loaders/ng-package.json +0 -6
  1271. package/util/loaders/style/style.loader.service.ts +0 -69
  1272. package/util/ng-package.json +0 -6
  1273. package/util/pipes/ng-package.json +0 -6
  1274. package/util/pipes/src/distance-to-now.pipe.ts +0 -37
  1275. package/util/pipes/src/get-column-by-field.pipe.ts +0 -11
  1276. package/util/pipes/src/parse.pipe.ts +0 -15
  1277. package/util/pipes/src/round-number.pipe.ts +0 -75
  1278. package/util/pipes/src/safe.pipe.ts +0 -27
  1279. package/util/pipes/src/translate-json/index.ts +0 -1
  1280. package/util/pipes/src/translate-json/translate-json.pipe.ts +0 -34
  1281. package/util/primitive-extensions/ng-package.json +0 -6
  1282. package/util/primitive-extensions/src/date.extensions.ts +0 -135
  1283. package/util/primitive-extensions/src/number.extensions.ts +0 -57
  1284. package/util/primitive-extensions/src/string.extensions.ts +0 -39
  1285. package/util/pub-sub/ng-package.json +0 -6
  1286. package/util/pub-sub/src/pub-sub.service.ts +0 -35
  1287. package/util/sync-active-tab-route/ng-package.json +0 -6
  1288. package/util/sync-active-tab-route/src/sync-active-tab-route.directive.ts +0 -47
  1289. package/util/unwrap/ng-package.json +0 -6
  1290. package/util/unwrap/src/unwrap-tag.directive.ts +0 -18
  1291. /package/boot/config/api/{index.ts → index.d.ts} +0 -0
  1292. /package/boot/config/apps/{index.ts → index.d.ts} +0 -0
  1293. /package/boot/config/plugins/{index.ts → index.d.ts} +0 -0
  1294. /package/boot/config/translate/{index.ts → index.d.ts} +0 -0
  1295. /package/boot/host/{index.ts → index.d.ts} +0 -0
  1296. /package/boot/mfe/{index.ts → index.d.ts} +0 -0
  1297. /package/i18n/{index.ts → index.d.ts} +0 -0
  1298. /package/provider/{index.ts → index.d.ts} +0 -0
  1299. /package/{public-api.ts → public-api.d.ts} +0 -0
  1300. /package/ui/autoComplete/{index.ts → index.d.ts} +0 -0
  1301. /package/ui/badge/{index.ts → index.d.ts} +0 -0
  1302. /package/ui/button/{index.ts → index.d.ts} +0 -0
  1303. /package/ui/calendar/{index.ts → index.d.ts} +0 -0
  1304. /package/ui/checkbox/{index.ts → index.d.ts} +0 -0
  1305. /package/ui/dxEditor/{index.ts → index.d.ts} +0 -0
  1306. /package/ui/dxField/{index.ts → index.d.ts} +0 -0
  1307. /package/ui/editor/{index.ts → index.d.ts} +0 -0
  1308. /package/ui/field/{index.ts → index.d.ts} +0 -0
  1309. /package/ui/fileUpload/{index.ts → index.d.ts} +0 -0
  1310. /package/ui/json-diff-comparison/{index.ts → index.d.ts} +0 -0
  1311. /package/ui/loader/{index.ts → index.d.ts} +0 -0
  1312. /package/ui/mask/{index.ts → index.d.ts} +0 -0
  1313. /package/ui/multiSelect/{index.ts → index.d.ts} +0 -0
  1314. /package/ui/number/{index.ts → index.d.ts} +0 -0
  1315. /package/ui/operation-types-dialog/{index.ts → index.d.ts} +0 -0
  1316. /package/ui/overlayPanel/{index.ts → index.d.ts} +0 -0
  1317. /package/ui/panel/{index.ts → index.d.ts} +0 -0
  1318. /package/ui/password/{index.ts → index.d.ts} +0 -0
  1319. /package/ui/pdf-viewer/{index.ts → index.d.ts} +0 -0
  1320. /package/ui/progressbar/{index.ts → index.d.ts} +0 -0
  1321. /package/ui/radioButton/{index.ts → index.d.ts} +0 -0
  1322. /package/ui/selectBox/{index.ts → index.d.ts} +0 -0
  1323. /package/ui/switch/{index.ts → index.d.ts} +0 -0
  1324. /package/ui/tagBox/{index.ts → index.d.ts} +0 -0
  1325. /package/ui/text/{index.ts → index.d.ts} +0 -0
  1326. /package/ui/textArea/{index.ts → index.d.ts} +0 -0
  1327. /package/ui/tooltip/{index.ts → index.d.ts} +0 -0
  1328. /package/ui/translate-input/{index.ts → index.d.ts} +0 -0
  1329. /package/ui/tree/{index.ts → index.d.ts} +0 -0
  1330. /package/ui/treeSelect/{index.ts → index.d.ts} +0 -0
  1331. /package/ui/treeTable/{index.ts → index.d.ts} +0 -0
  1332. /package/ui/value/{index.ts → index.d.ts} +0 -0
  1333. /package/ui-business/detailed-overlay-panel/{index.ts → index.d.ts} +0 -0
  1334. /package/ui-business/multiple-ref-value/{index.ts → index.d.ts} +0 -0
  1335. /package/ui-business/notification-templates-dialog/{index.ts → index.d.ts} +0 -0
  1336. /package/ui-business/operation-types-dialog/{index.ts → index.d.ts} +0 -0
  1337. /package/ui-business/ref-value/{index.ts → index.d.ts} +0 -0
  1338. /package/ui-business/rolePicker/{index.ts → index.d.ts} +0 -0
  1339. /package/util/block/{index.ts → index.d.ts} +0 -0
  1340. /package/util/custom_pages/{index.ts → index.d.ts} +0 -0
  1341. /package/util/directives/{index.ts → index.d.ts} +0 -0
  1342. /package/util/lib/{index.ts → index.d.ts} +0 -0
  1343. /package/util/lib/src/validators/{index.ts → index.d.ts} +0 -0
  1344. /package/util/pipes/{index.ts → index.d.ts} +0 -0
  1345. /package/util/primitive-extensions/{index.ts → index.d.ts} +0 -0
  1346. /package/util/primitive-extensions/src/{boolean.extensions.ts → boolean.extensions.d.ts} +0 -0
  1347. /package/util/pub-sub/{index.ts → index.d.ts} +0 -0
  1348. /package/util/sync-active-tab-route/{index.ts → index.d.ts} +0 -0
  1349. /package/util/unwrap/{index.ts → index.d.ts} +0 -0
@@ -0,0 +1,166 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, signal } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { RouterModule } from '@angular/router';
5
+ import { ScrollPanelModule } from 'primeng/scrollpanel';
6
+ import { SidebarModule } from 'primeng/sidebar';
7
+ import { TooltipModule } from 'primeng/tooltip';
8
+ import { TranslocoModule } from '@ngneat/transloco';
9
+ import { ButtonComponent } from 'aril/ui/button';
10
+ import { TextComponent } from 'aril/ui/text';
11
+ import { TranslateJsonPipe } from 'aril/util/pipes';
12
+ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
13
+ import { solidIcons } from 'aril/util/lib';
14
+ import * as i0 from "@angular/core";
15
+ import * as i1 from "../../service/app.layout.service";
16
+ import * as i2 from "@ngneat/transloco";
17
+ import * as i3 from "@angular/common";
18
+ import * as i4 from "@angular/forms";
19
+ import * as i5 from "@angular/router";
20
+ import * as i6 from "primeng/sidebar";
21
+ import * as i7 from "primeng/api";
22
+ import * as i8 from "primeng/scrollpanel";
23
+ import * as i9 from "primeng/tooltip";
24
+ import * as i10 from "@fortawesome/angular-fontawesome";
25
+ export class SiteMapSidebarComponent {
26
+ constructor(layoutService, translocoService) {
27
+ this.layoutService = layoutService;
28
+ this.translocoService = translocoService;
29
+ this.siteMapNodes = signal([]);
30
+ this.filteredNodes = signal([]);
31
+ this.searchTerm = signal('');
32
+ this.totalPages = signal(0);
33
+ this.solidIcons = solidIcons;
34
+ }
35
+ ngOnInit() {
36
+ this.loadSiteMap();
37
+ }
38
+ get visible() {
39
+ return this.layoutService.state.siteMapSidebarVisible;
40
+ }
41
+ set visible(value) {
42
+ this.layoutService.state.siteMapSidebarVisible = value;
43
+ }
44
+ loadSiteMap() {
45
+ const menuItems = globalThis.hostMenuItems?.() || [];
46
+ const nodes = this.buildSiteMapNodes(menuItems);
47
+ const totalCount = this.countTotalPages(nodes);
48
+ this.siteMapNodes.set(nodes);
49
+ this.filteredNodes.set(nodes);
50
+ this.totalPages.set(totalCount);
51
+ }
52
+ buildSiteMapNodes(items, parentKey = '') {
53
+ return items
54
+ .filter((item) => {
55
+ // Keep the home page route ("/") and any non-empty routes
56
+ return !item.routerLink || item.routerLink === '/' || item.routerLink.trim() !== '';
57
+ })
58
+ .map((item, index) => {
59
+ const key = parentKey ? `${parentKey}-${index}` : `${index}`;
60
+ let label;
61
+ if (item.routerLink === '/') {
62
+ label = { tr: 'Anasayfa', en: 'Home' };
63
+ }
64
+ else {
65
+ label = item.label || { tr: 'Bilinmeyen', en: 'Unknown' };
66
+ }
67
+ const node = {
68
+ key,
69
+ label,
70
+ icon: item.icon,
71
+ routerLink: item.routerLink,
72
+ expanded: false
73
+ };
74
+ if (item.items && item.items.length > 0) {
75
+ node.children = this.buildSiteMapNodes(item.items, key);
76
+ }
77
+ return node;
78
+ });
79
+ }
80
+ countTotalPages(nodes) {
81
+ let count = 0;
82
+ for (const node of nodes) {
83
+ if (node.routerLink) {
84
+ count++;
85
+ }
86
+ if (node.children) {
87
+ count += this.countTotalPages(node.children);
88
+ }
89
+ }
90
+ return count;
91
+ }
92
+ onSearchChange() {
93
+ const searchTerm = this.searchTerm()?.toLowerCase()?.trim();
94
+ if (!searchTerm) {
95
+ this.filteredNodes.set(this.siteMapNodes());
96
+ }
97
+ else {
98
+ const filtered = this.filterNodes(this.siteMapNodes(), searchTerm);
99
+ this.filteredNodes.set(filtered);
100
+ }
101
+ }
102
+ filterNodes(nodes, searchTerm) {
103
+ const filtered = [];
104
+ const currentLang = this.translocoService.getActiveLang();
105
+ for (const node of nodes) {
106
+ // Convert label to string for search based on active language
107
+ const labelText = typeof node.label === 'string' ?
108
+ node.label
109
+ : node.label?.[currentLang] || node.label?.tr || node.label?.en || '';
110
+ const matches = labelText.toLowerCase().includes(searchTerm);
111
+ let filteredChildren = [];
112
+ if (node.children) {
113
+ filteredChildren = this.filterNodes(node.children, searchTerm);
114
+ }
115
+ if (matches || filteredChildren.length > 0) {
116
+ filtered.push({
117
+ ...node,
118
+ children: filteredChildren.length > 0 ? filteredChildren : node.children,
119
+ expanded: filteredChildren.length > 0
120
+ });
121
+ }
122
+ }
123
+ return filtered;
124
+ }
125
+ expandAll() {
126
+ const expanded = this.expandNodes(this.filteredNodes(), true);
127
+ this.filteredNodes.set([...expanded]);
128
+ }
129
+ collapseAll() {
130
+ const collapsed = this.expandNodes(this.filteredNodes(), false);
131
+ this.filteredNodes.set([...collapsed]);
132
+ }
133
+ expandNodes(nodes, expanded) {
134
+ return nodes.map((node) => ({
135
+ ...node,
136
+ expanded,
137
+ children: node.children ? this.expandNodes(node.children, expanded) : undefined
138
+ }));
139
+ }
140
+ toggleNode(node) {
141
+ node.expanded = !node.expanded;
142
+ this.filteredNodes.set([...this.filteredNodes()]);
143
+ }
144
+ trackByKey(index, node) {
145
+ return node.key || `${index}`;
146
+ }
147
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SiteMapSidebarComponent, deps: [{ token: i1.LayoutService }, { token: i2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
148
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: SiteMapSidebarComponent, isStandalone: true, selector: "app-site-map-sidebar", ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'siteMap'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\r\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"sitemap-content\">\r\n\t\t<div class=\"search-section grid p-fluid m-0\">\r\n\t\t\t<aril-text\r\n\t\t\t\t[placeholder]=\"t('searchPages')\"\r\n\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\tclass=\"col-10 m-0\">\r\n\t\t\t</aril-text>\r\n\t\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\r\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"expandAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"collapseAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t<!-- Site Map Tree -->\r\n\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"sitemap-tree\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\r\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\r\n\t\t\t\t\t</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t@if (searchTerm()) {\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\r\n\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<!-- Recursive Tree Node Template -->\r\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\r\n\r\n\t\t\t\t\t\t@if (node.routerLink) {\r\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<!-- Recursive Children -->\r\n\t\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</div>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-sitemap-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header .total-pages{background:#fff3;color:#ffffffe6;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.sitemap-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.sitemap-tree{flex:1;overflow:hidden}.tree-container{padding:.5rem 0}.tree-node .node-item{display:flex;align-items:center;padding:.5rem 1rem;border-radius:6px;margin:.1rem .5rem;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.tree-node .node-item:hover{background:var(--surface-hover);border-color:var(--surface-border)}.tree-node .node-item.is-page:hover{background:var(--primary-50);border-color:var(--primary-200)}.tree-node .node-item.is-page:hover .external-icon{opacity:1}.tree-node .node-item.has-children{font-weight:500}.tree-node .node-content{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.tree-node .toggle-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;border-radius:4px;color:var(--text-color-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.tree-node .toggle-btn:hover{background:var(--surface-hover);color:var(--primary-color)}.tree-node .toggle-btn i{font-size:.7rem}.tree-node .node-icon{color:var(--primary-color);font-size:.9rem;flex-shrink:0}.tree-node .node-label{flex:1;font-size:.9rem;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node .external-icon{color:var(--text-color-secondary);font-size:.7rem;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i8.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i9.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "pipe", type: TranslateJsonPipe, name: "translateJson" }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i10.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] }); }
149
+ }
150
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SiteMapSidebarComponent, decorators: [{
151
+ type: Component,
152
+ args: [{ standalone: true, selector: 'app-site-map-sidebar', imports: [
153
+ CommonModule,
154
+ FormsModule,
155
+ RouterModule,
156
+ SidebarModule,
157
+ ScrollPanelModule,
158
+ TooltipModule,
159
+ ButtonComponent,
160
+ TextComponent,
161
+ TranslocoModule,
162
+ TranslateJsonPipe,
163
+ FontAwesomeModule
164
+ ], template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'siteMap'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\r\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"sitemap-content\">\r\n\t\t<div class=\"search-section grid p-fluid m-0\">\r\n\t\t\t<aril-text\r\n\t\t\t\t[placeholder]=\"t('searchPages')\"\r\n\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\tclass=\"col-10 m-0\">\r\n\t\t\t</aril-text>\r\n\t\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\r\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"expandAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"collapseAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t<!-- Site Map Tree -->\r\n\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"sitemap-tree\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\r\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\r\n\t\t\t\t\t</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t@if (searchTerm()) {\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\r\n\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<!-- Recursive Tree Node Template -->\r\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\r\n\r\n\t\t\t\t\t\t@if (node.routerLink) {\r\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<!-- Recursive Children -->\r\n\t\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</div>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-sitemap-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header .total-pages{background:#fff3;color:#ffffffe6;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.sitemap-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.sitemap-tree{flex:1;overflow:hidden}.tree-container{padding:.5rem 0}.tree-node .node-item{display:flex;align-items:center;padding:.5rem 1rem;border-radius:6px;margin:.1rem .5rem;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.tree-node .node-item:hover{background:var(--surface-hover);border-color:var(--surface-border)}.tree-node .node-item.is-page:hover{background:var(--primary-50);border-color:var(--primary-200)}.tree-node .node-item.is-page:hover .external-icon{opacity:1}.tree-node .node-item.has-children{font-weight:500}.tree-node .node-content{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.tree-node .toggle-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;border-radius:4px;color:var(--text-color-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.tree-node .toggle-btn:hover{background:var(--surface-hover);color:var(--primary-color)}.tree-node .toggle-btn i{font-size:.7rem}.tree-node .node-icon{color:var(--primary-color);font-size:.9rem;flex-shrink:0}.tree-node .node-label{flex:1;font-size:.9rem;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node .external-icon{color:var(--text-color-secondary);font-size:.7rem;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"] }]
165
+ }], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.TranslocoService }] });
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvc2l0ZS1tYXAvc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvc2l0ZS1tYXAvc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFFdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBOEIzQyxNQUFNLE9BQU8sdUJBQXVCO0lBT25DLFlBQ1Es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LFdBQ3ZCO3dCQUNSLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsaUJBQWlCO3FCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBTY3JvbGxQYW5lbE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2Nyb2xscGFuZWwnO1xyXG5pbXBvcnQgeyBTaWRlYmFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zaWRlYmFyJztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUsIFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcblxyXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdhcmlsL3VpL2J1dHRvbic7XHJcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICdhcmlsL3VpL3RleHQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVKc29uUGlwZSB9IGZyb20gJ2FyaWwvdXRpbC9waXBlcyc7XHJcblxyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb250QXdlc29tZU1vZHVsZSB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcclxuaW1wb3J0IHsgc29saWRJY29ucyB9IGZyb20gJ2FyaWwvdXRpbC9saWInO1xyXG5cclxuaW50ZXJmYWNlIE1lbnVOb2RlIHtcclxuXHRrZXk6IHN0cmluZztcclxuXHRsYWJlbDogc3RyaW5nIHwgb2JqZWN0O1xyXG5cdGljb24/OiBzdHJpbmc7XHJcblx0cm91dGVyTGluaz86IHN0cmluZztcclxuXHRjaGlsZHJlbj86IE1lbnVOb2RlW107XHJcblx0ZXhwYW5kZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnYXBwLXNpdGUtbWFwLXNpZGViYXInLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdENvbW1vbk1vZHVsZSxcclxuXHRcdEZvcm1zTW9kdWxlLFxyXG5cdFx0Um91dGVyTW9kdWxlLFxyXG5cdFx0U2lkZWJhck1vZHVsZSxcclxuXHRcdFNjcm9sbFBhbmVsTW9kdWxlLFxyXG5cdFx0VG9vbHRpcE1vZHVsZSxcclxuXHRcdEJ1dHRvbkNvbXBvbmVudCxcclxuXHRcdFRleHRDb21wb25lbnQsXHJcblx0XHRUcmFuc2xvY29Nb2R1bGUsXHJcblx0XHRUcmFuc2xhdGVKc29uUGlwZSxcclxuXHRcdEZvbnRBd2Vzb21lTW9kdWxlXHJcblx0XSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaXRlTWFwU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0c2l0ZU1hcE5vZGVzID0gc2lnbmFsPE1lbnVOb2RlW10+KFtdKTtcclxuXHRmaWx0ZXJlZE5vZGVzID0gc2lnbmFsPE1lbnVOb2RlW10+KFtdKTtcclxuXHRzZWFyY2hUZXJtID0gc2lnbmFsPHN0cmluZz4oJycpO1xyXG5cdHRvdGFsUGFnZXMgPSBzaWduYWw8bnVtYmVyPigwKTtcclxuICBzb2xpZEljb25zID0gc29saWRJY29ucztcclxuXHRcclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlXHJcblx0KSB7fVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMubG9hZFNpdGVNYXAoKTtcclxuXHR9XHJcblxyXG5cdGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zaXRlTWFwU2lkZWJhclZpc2libGU7XHJcblx0fVxyXG5cclxuXHRzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnNpdGVNYXBTaWRlYmFyVmlzaWJsZSA9IHZhbHVlO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBsb2FkU2l0ZU1hcCgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IG1lbnVJdGVtcyA9ICg8YW55Pmdsb2JhbFRoaXMpLmhvc3RNZW51SXRlbXM/LigpIHx8IFtdO1xyXG5cdFx0Y29uc3Qgbm9kZXMgPSB0aGlzLmJ1aWxkU2l0ZU1hcE5vZGVzKG1lbnVJdGVtcyk7XHJcblx0XHRjb25zdCB0b3RhbENvdW50ID0gdGhpcy5jb3VudFRvdGFsUGFnZXMobm9kZXMpO1xyXG5cclxuXHRcdHRoaXMuc2l0ZU1hcE5vZGVzLnNldChub2Rlcyk7XHJcblx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KG5vZGVzKTtcclxuXHRcdHRoaXMudG90YWxQYWdlcy5zZXQodG90YWxDb3VudCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGJ1aWxkU2l0ZU1hcE5vZGVzKGl0ZW1zOiBhbnlbXSwgcGFyZW50S2V5ID0gJycpOiBNZW51Tm9kZVtdIHtcclxuXHRcdHJldHVybiBpdGVtc1xyXG5cdFx0XHQuZmlsdGVyKChpdGVtKSA9PiB7XHJcblx0XHRcdFx0Ly8gS2VlcCB0aGUgaG9tZSBwYWdlIHJvdXRlIChcIi9cIikgYW5kIGFueSBub24tZW1wdHkgcm91dGVzXHJcblx0XHRcdFx0cmV0dXJuICFpdGVtLnJvdXRlckxpbmsgfHwgaXRlbS5yb3V0ZXJMaW5rID09PSAnLycgfHwgaXRlbS5yb3V0ZXJMaW5rLnRyaW0oKSAhPT0gJyc7XHJcblx0XHRcdH0pXHJcblx0XHRcdC5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qga2V5ID0gcGFyZW50S2V5ID8gYCR7cGFyZW50S2V5fS0ke2luZGV4fWAgOiBgJHtpbmRleH1gO1xyXG5cclxuXHRcdFx0XHRsZXQgbGFiZWw6IHN0cmluZyB8IG9iamVjdDtcclxuXHRcdFx0XHRpZiAoaXRlbS5yb3V0ZXJMaW5rID09PSAnLycpIHtcclxuXHRcdFx0XHRcdGxhYmVsID0geyB0cjogJ0FuYXNheWZhJywgZW46ICdIb21lJyB9O1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRsYWJlbCA9IGl0ZW0ubGFiZWwgfHwgeyB0cjogJ0JpbGlubWV5ZW4nLCBlbjogJ1Vua25vd24nIH07XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRjb25zdCBub2RlOiBNZW51Tm9kZSA9IHtcclxuXHRcdFx0XHRcdGtleSxcclxuXHRcdFx0XHRcdGxhYmVsLFxyXG5cdFx0XHRcdFx0aWNvbjogaXRlbS5pY29uLFxyXG5cdFx0XHRcdFx0cm91dGVyTGluazogaXRlbS5yb3V0ZXJMaW5rLFxyXG5cdFx0XHRcdFx0ZXhwYW5kZWQ6IGZhbHNlXHJcblx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0aWYgKGl0ZW0uaXRlbXMgJiYgaXRlbS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRub2RlLmNoaWxkcmVuID0gdGhpcy5idWlsZFNpdGVNYXBOb2RlcyhpdGVtLml0ZW1zLCBrZXkpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0cmV0dXJuIG5vZGU7XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBjb3VudFRvdGFsUGFnZXMobm9kZXM6IE1lbnVOb2RlW10pOiBudW1iZXIge1xyXG5cdFx0bGV0IGNvdW50ID0gMDtcclxuXHRcdGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xyXG5cdFx0XHRpZiAobm9kZS5yb3V0ZXJMaW5rKSB7XHJcblx0XHRcdFx0Y291bnQrKztcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAobm9kZS5jaGlsZHJlbikge1xyXG5cdFx0XHRcdGNvdW50ICs9IHRoaXMuY291bnRUb3RhbFBhZ2VzKG5vZGUuY2hpbGRyZW4pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY291bnQ7XHJcblx0fVxyXG5cclxuXHRvblNlYXJjaENoYW5nZSgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IHNlYXJjaFRlcm0gPSB0aGlzLnNlYXJjaFRlcm0oKT8udG9Mb3dlckNhc2UoKT8udHJpbSgpO1xyXG5cdFx0aWYgKCFzZWFyY2hUZXJtKSB7XHJcblx0XHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQodGhpcy5zaXRlTWFwTm9kZXMoKSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRjb25zdCBmaWx0ZXJlZCA9IHRoaXMuZmlsdGVyTm9kZXModGhpcy5zaXRlTWFwTm9kZXMoKSwgc2VhcmNoVGVybSk7XHJcblx0XHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoZmlsdGVyZWQpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBmaWx0ZXJOb2Rlcyhub2RlczogTWVudU5vZGVbXSwgc2VhcmNoVGVybTogc3RyaW5nKTogTWVudU5vZGVbXSB7XHJcblx0XHRjb25zdCBmaWx0ZXJlZDogTWVudU5vZGVbXSA9IFtdO1xyXG5cdFx0Y29uc3QgY3VycmVudExhbmcgPSB0aGlzLnRyYW5zbG9jb1NlcnZpY2UuZ2V0QWN0aXZlTGFuZygpO1xyXG5cclxuXHRcdGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xyXG5cdFx0XHQvLyBDb252ZXJ0IGxhYmVsIHRvIHN0cmluZyBmb3Igc2VhcmNoIGJhc2VkIG9uIGFjdGl2ZSBsYW5ndWFnZVxyXG5cdFx0XHRjb25zdCBsYWJlbFRleHQgPVxyXG5cdFx0XHRcdHR5cGVvZiBub2RlLmxhYmVsID09PSAnc3RyaW5nJyA/XHJcblx0XHRcdFx0XHRub2RlLmxhYmVsXHJcblx0XHRcdFx0Olx0KG5vZGUubGFiZWwgYXMgYW55KT8uW2N1cnJlbnRMYW5nXSB8fCAobm9kZS5sYWJlbCBhcyBhbnkpPy50ciB8fCAobm9kZS5sYWJlbCBhcyBhbnkpPy5lbiB8fCAnJztcclxuXHJcblx0XHRcdGNvbnN0IG1hdGNoZXMgPSBsYWJlbFRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKTtcclxuXHRcdFx0bGV0IGZpbHRlcmVkQ2hpbGRyZW46IE1lbnVOb2RlW10gPSBbXTtcclxuXHJcblx0XHRcdGlmIChub2RlLmNoaWxkcmVuKSB7XHJcblx0XHRcdFx0ZmlsdGVyZWRDaGlsZHJlbiA9IHRoaXMuZmlsdGVyTm9kZXMobm9kZS5jaGlsZHJlbiwgc2VhcmNoVGVybSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChtYXRjaGVzIHx8IGZpbHRlcmVkQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGZpbHRlcmVkLnB1c2goe1xyXG5cdFx0XHRcdFx0Li4ubm9kZSxcclxuXHRcdFx0XHRcdGNoaWxkcmVuOiBmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDAgPyBmaWx0ZXJlZENoaWxkcmVuIDogbm9kZS5jaGlsZHJlbixcclxuXHRcdFx0XHRcdGV4cGFuZGVkOiBmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDBcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBmaWx0ZXJlZDtcclxuXHR9XHJcblxyXG5cdGV4cGFuZEFsbCgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGV4cGFuZGVkID0gdGhpcy5leHBhbmROb2Rlcyh0aGlzLmZpbHRlcmVkTm9kZXMoKSwgdHJ1ZSk7XHJcblx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KFsuLi5leHBhbmRlZF0pO1xyXG5cdH1cclxuXHJcblx0Y29sbGFwc2VBbGwoKTogdm9pZCB7XHJcblx0XHRjb25zdCBjb2xsYXBzZWQgPSB0aGlzLmV4cGFuZE5vZGVzKHRoaXMuZmlsdGVyZWROb2RlcygpLCBmYWxzZSk7XHJcblx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KFsuLi5jb2xsYXBzZWRdKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZXhwYW5kTm9kZXMobm9kZXM6IE1lbnVOb2RlW10sIGV4cGFuZGVkOiBib29sZWFuKTogTWVudU5vZGVbXSB7XHJcblx0XHRyZXR1cm4gbm9kZXMubWFwKChub2RlKSA9PiAoe1xyXG5cdFx0XHQuLi5ub2RlLFxyXG5cdFx0XHRleHBhbmRlZCxcclxuXHRcdFx0Y2hpbGRyZW46IG5vZGUuY2hpbGRyZW4gPyB0aGlzLmV4cGFuZE5vZGVzKG5vZGUuY2hpbGRyZW4sIGV4cGFuZGVkKSA6IHVuZGVmaW5lZFxyXG5cdFx0fSkpO1xyXG5cdH1cclxuXHJcblx0dG9nZ2xlTm9kZShub2RlOiBNZW51Tm9kZSk6IHZvaWQge1xyXG5cdFx0bm9kZS5leHBhbmRlZCA9ICFub2RlLmV4cGFuZGVkO1xyXG5cdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChbLi4udGhpcy5maWx0ZXJlZE5vZGVzKCldKTtcclxuXHR9XHJcblxyXG5cdHRyYWNrQnlLZXkoaW5kZXg6IG51bWJlciwgbm9kZTogTWVudU5vZGUpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIG5vZGUua2V5IHx8IGAke2luZGV4fWA7XHJcblx0fVxyXG59XHJcbiIsIjxwLXNpZGViYXJcclxuXHRbKHZpc2libGUpXT1cInZpc2libGVcIlxyXG5cdHBvc2l0aW9uPVwicmlnaHRcIlxyXG5cdFt0cmFuc2l0aW9uT3B0aW9uc109XCInLjNzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJ1wiXHJcblx0c3R5bGVDbGFzcz1cImxheW91dC1zaXRlbWFwLXNpZGViYXIgdy1mdWxsIHNtOnctMzByZW1cIlxyXG5cdCp0cmFuc2xvY289XCJsZXQgdDsgcmVhZDogJ3NpdGVNYXAnXCI+XHJcblx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC0yIHctZnVsbFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuXHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLXNpdGVtYXAgdGV4dC1wcmltYXJ5IHRleHQteGxcIj48L2k+XHJcblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmb250LWJvbGQgdGV4dC1sZ1wiPnt7IHQoJ3NpdGVNYXAnKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRvdGFsLXBhZ2VzXCI+e3sgdG90YWxQYWdlcygpIH19IHt7IHQoJ3BhZ2VzJykgfX08L3NwYW4+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuXHJcblx0PGRpdiBjbGFzcz1cInNpdGVtYXAtY29udGVudFwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cInNlYXJjaC1zZWN0aW9uIGdyaWQgcC1mbHVpZCBtLTBcIj5cclxuXHRcdFx0PGFyaWwtdGV4dFxyXG5cdFx0XHRcdFtwbGFjZWhvbGRlcl09XCJ0KCdzZWFyY2hQYWdlcycpXCJcclxuXHRcdFx0XHRbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxyXG5cdFx0XHRcdChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoQ2hhbmdlKClcIlxyXG5cdFx0XHRcdGNsYXNzPVwiY29sLTEwIG0tMFwiPlxyXG5cdFx0XHQ8L2FyaWwtdGV4dD5cclxuXHRcdFx0QGlmIChmaWx0ZXJlZE5vZGVzKCkubGVuZ3RoID4gMCkge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLTIgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbS0wIHAtMFwiPlxyXG5cdFx0XHRcdFx0PGZhLWljb25cclxuXHRcdFx0XHRcdFx0W2ljb25dPVwic29saWRJY29ucy5mYUFuZ2xlc0Rvd25cIlxyXG5cdFx0XHRcdFx0XHRzaXplPVwieGxcIlxyXG5cdFx0XHRcdFx0XHRzdHlsZT1cImNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKVwiXHJcblx0XHRcdFx0XHRcdGNsYXNzPVwiY29sLTEgY3Vyc29yLXBvaW50ZXJcIlxyXG5cdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwidCgnZXhwYW5kQWxsJylcIlxyXG5cdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxyXG5cdFx0XHRcdFx0XHQoY2xpY2spPVwiZXhwYW5kQWxsKClcIj5cclxuXHRcdFx0XHRcdDwvZmEtaWNvbj5cclxuXHRcdFx0XHRcdDxmYS1pY29uXHJcblx0XHRcdFx0XHRcdFtpY29uXT1cInNvbGlkSWNvbnMuZmFBbmdsZXNVcFwiXHJcblx0XHRcdFx0XHRcdHNpemU9XCJ4bFwiXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwiY29sb3I6IHZhcigtLXJlZC01MDApXCJcclxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJjb2wtMSBtbC0zIGN1cnNvci1wb2ludGVyXCJcclxuXHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cInQoJ2NvbGxhcHNlQWxsJylcIlxyXG5cdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxyXG5cdFx0XHRcdFx0XHQoY2xpY2spPVwiY29sbGFwc2VBbGwoKVwiPlxyXG5cdFx0XHRcdFx0PC9mYS1pY29uPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHR9XHJcblx0XHQ8L2Rpdj5cclxuXHJcblx0XHQ8IS0tIFNpdGUgTWFwIFRyZWUgLS0+XHJcblx0XHRAaWYgKGZpbHRlcmVkTm9kZXMoKS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJzaXRlbWFwLXRyZWVcIj5cclxuXHRcdFx0XHQ8cC1zY3JvbGxQYW5lbCBbc3R5bGVdPVwieyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICcxMDAlJyB9XCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidHJlZS1jb250YWluZXJcIj5cclxuXHRcdFx0XHRcdFx0QGZvciAobm9kZSBvZiBmaWx0ZXJlZE5vZGVzKCk7IHRyYWNrIHRyYWNrQnlLZXkoJGluZGV4LCBub2RlKSkge1xyXG5cdFx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmVlTm9kZVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbm9kZSwgbGV2ZWw6IDAgfVwiPjwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L3Atc2Nyb2xsUGFuZWw+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0fSBAZWxzZSB7XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJlbXB0eS1jb250ZW50XCI+XHJcblx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLXNpdGVtYXAgZW1wdHktaWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdDxoMyBjbGFzcz1cImVtcHR5LXRpdGxlXCI+XHJcblx0XHRcdFx0XHRcdHt7IHNlYXJjaFRlcm0oKSA/IHQoJ25vU2VhcmNoUmVzdWx0cycpIDogdCgnbm9QYWdlcycpIH19XHJcblx0XHRcdFx0XHQ8L2gzPlxyXG5cdFx0XHRcdFx0PHAgY2xhc3M9XCJlbXB0eS1tZXNzYWdlXCI+XHJcblx0XHRcdFx0XHRcdHt7IHNlYXJjaFRlcm0oKSA/IHQoJ3RyeURpZmZlcmVudEtleXdvcmRzJykgOiAnJyB9fVxyXG5cdFx0XHRcdFx0PC9wPlxyXG5cdFx0XHRcdFx0QGlmIChzZWFyY2hUZXJtKCkpIHtcclxuXHRcdFx0XHRcdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0W2xhYmVsXT1cInQoJ2NsZWFyU2VhcmNoJylcIlxyXG5cdFx0XHRcdFx0XHRcdGljb249XCJUSU1FU1wiXHJcblx0XHRcdFx0XHRcdFx0Y29sb3I9XCJzZWNvbmRhcnlcIlxyXG5cdFx0XHRcdFx0XHRcdFtvdXRsaW5lZF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFx0XHRzaXplPVwic21cIlxyXG5cdFx0XHRcdFx0XHRcdChjbGlja0V2ZW50KT1cInNlYXJjaFRlcm0uc2V0KCcnKTsgb25TZWFyY2hDaGFuZ2UoKVwiPlxyXG5cdFx0XHRcdFx0XHQ8L2FyaWwtYnV0dG9uPlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH1cclxuXHJcblx0XHQ8IS0tIFJlY3Vyc2l2ZSBUcmVlIE5vZGUgVGVtcGxhdGUgLS0+XHJcblx0XHQ8bmctdGVtcGxhdGUgI3RyZWVOb2RlVGVtcGxhdGUgbGV0LW5vZGUgbGV0LWxldmVsPVwibGV2ZWxcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cInRyZWUtbm9kZVwiIFtzdHlsZS5tYXJnaW4tbGVmdC5weF09XCJsZXZlbCAqIDIwXCI+XHJcblx0XHRcdFx0PGRpdlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJub2RlLWl0ZW1cIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmhhcy1jaGlsZHJlbl09XCJub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMFwiXHJcblx0XHRcdFx0XHRbY2xhc3MuaXMtcGFnZV09XCJub2RlLnJvdXRlckxpbmtcIlxyXG5cdFx0XHRcdFx0W3JvdXRlckxpbmtdPVwibm9kZS5yb3V0ZXJMaW5rXCJcclxuXHRcdFx0XHRcdChjbGljayk9XCIhbm9kZS5yb3V0ZXJMaW5rID8gdG9nZ2xlTm9kZShub2RlKSA6ICh2aXNpYmxlID0gZmFsc2UpXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibm9kZS1jb250ZW50XCI+XHJcblx0XHRcdFx0XHRcdEBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidG9nZ2xlLWJ0blwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZU5vZGUobm9kZSlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGlcIiBbY2xhc3MucGktY2hldnJvbi1yaWdodF09XCIhbm9kZS5leHBhbmRlZFwiIFtjbGFzcy5waS1jaGV2cm9uLWRvd25dPVwibm9kZS5leHBhbmRlZFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0QGlmIChub2RlLmljb24pIHtcclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cIm5vZGUtaWNvblwiIFtjbGFzc109XCJub2RlLmljb25cIj48L2k+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJub2RlLWxhYmVsXCI+e3sgbm9kZS5sYWJlbCB8IHRyYW5zbGF0ZUpzb24gfX08L3NwYW4+XHJcblxyXG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUucm91dGVyTGluaykge1xyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiZXh0ZXJuYWwtaWNvbiBwaSBwaS1leHRlcm5hbC1saW5rXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHRcdFx0PCEtLSBSZWN1cnNpdmUgQ2hpbGRyZW4gLS0+XHJcblx0XHRcdFx0QGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuZXhwYW5kZWQpIHtcclxuXHRcdFx0XHRcdEBmb3IgKGNoaWxkIG9mIG5vZGUuY2hpbGRyZW47IHRyYWNrIHRyYWNrQnlLZXkoJGluZGV4LCBjaGlsZCkpIHtcclxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lclxyXG5cdFx0XHRcdFx0XHRcdCpuZ1RlbXBsYXRlT3V0bGV0PVwidHJlZU5vZGVUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNoaWxkLCBsZXZlbDogbGV2ZWwgKyAxIH1cIj48L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHQ8L2Rpdj5cclxuPC9wLXNpZGViYXI+XHJcbiJdfQ==
@@ -0,0 +1,228 @@
1
+ import { NgClass, NgTemplateOutlet } from '@angular/common';
2
+ import { Component, signal } from '@angular/core';
3
+ import { toSignal } from '@angular/core/rxjs-interop';
4
+ import { FormsModule } from '@angular/forms';
5
+ import { RouterLink } from '@angular/router';
6
+ import { NavigationEnd } from '@angular/router';
7
+ import { ScrollPanelModule } from 'primeng/scrollpanel';
8
+ import { TooltipModule } from 'primeng/tooltip';
9
+ import { TranslocoModule } from '@ngneat/transloco';
10
+ import { filter } from 'rxjs';
11
+ import { TranslateJsonPipe } from 'aril/util/pipes';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "../../service/app.menu.service";
14
+ import * as i2 from "@angular/router";
15
+ import * as i3 from "../../service/app.layout.service";
16
+ import * as i4 from "aril/util/pipes";
17
+ import * as i5 from "@ngneat/transloco";
18
+ import * as i6 from "primeng/scrollpanel";
19
+ import * as i7 from "primeng/tooltip";
20
+ import * as i8 from "@angular/forms";
21
+ export class StaticSidebarComponent {
22
+ constructor(menuService, router, layoutService, translateJsonPipe, translocoService) {
23
+ this.menuService = menuService;
24
+ this.router = router;
25
+ this.layoutService = layoutService;
26
+ this.translateJsonPipe = translateJsonPipe;
27
+ this.translocoService = translocoService;
28
+ this.menuNodes = signal([]);
29
+ this.filteredNodes = signal([]);
30
+ this.searchTerm = signal('');
31
+ this.routerSubscription = null;
32
+ this.MAX_LENGTH = { level0: 25, level1: 20, level2: 16, level3: 13 };
33
+ this.activeLang = toSignal(this.translocoService.langChanges$, { initialValue: 'tr' });
34
+ }
35
+ get isCollapsed() {
36
+ return this.layoutService.isStaticSidebarCollapsed();
37
+ }
38
+ get topLevelNodes() {
39
+ return this.menuNodes();
40
+ }
41
+ ngOnInit() {
42
+ this.buildMenuTree();
43
+ this.routerSubscription = this.router.events
44
+ .pipe(filter((event) => event instanceof NavigationEnd))
45
+ .subscribe(() => this.buildMenuTree());
46
+ }
47
+ ngOnDestroy() {
48
+ this.routerSubscription?.unsubscribe();
49
+ }
50
+ isTextTruncated(label, lang, level = 0) {
51
+ if (!label || !lang || !label[lang])
52
+ return false;
53
+ const text = label[lang];
54
+ const len = text.length;
55
+ const limits = [this.MAX_LENGTH.level0, this.MAX_LENGTH.level1, this.MAX_LENGTH.level2, this.MAX_LENGTH.level3];
56
+ return len > limits[Math.min(level, 3)];
57
+ }
58
+ isMobile() {
59
+ return this.layoutService.isMobile();
60
+ }
61
+ buildMenuTree() {
62
+ const menuItems = this.getMenuItems();
63
+ const nodes = this.convertToMenuNodes(menuItems);
64
+ this.menuNodes.set(nodes);
65
+ this.filteredNodes.set([...nodes]);
66
+ this.expandActiveMenu();
67
+ }
68
+ expandActiveMenu() {
69
+ const nodes = this.menuNodes();
70
+ this.findAndExpandActiveNode(nodes);
71
+ this.filteredNodes.set([...this.filteredNodes()]);
72
+ }
73
+ findAndExpandActiveNode(nodes) {
74
+ for (const node of nodes) {
75
+ if (this.isActiveRouteForNode(node)) {
76
+ return node;
77
+ }
78
+ if (node.children && node.children.length > 0) {
79
+ const activeChild = this.findAndExpandActiveNode(node.children);
80
+ if (activeChild) {
81
+ // we find active child and then opened its parent nodes
82
+ node.expanded = true;
83
+ return activeChild;
84
+ }
85
+ }
86
+ }
87
+ return null;
88
+ }
89
+ convertToMenuNodes(items, parentKey = '') {
90
+ return items
91
+ .filter((item) => !item.separator)
92
+ .map((item, index) => {
93
+ const key = parentKey ? `${parentKey}-${index}` : `${index}`;
94
+ const node = {
95
+ key,
96
+ label: item.label,
97
+ icon: item.icon,
98
+ routerLink: item.routerLink,
99
+ expanded: false
100
+ };
101
+ if (item.items && item.items.length > 0) {
102
+ node.children = this.convertToMenuNodes(item.items, key);
103
+ }
104
+ return node;
105
+ });
106
+ }
107
+ getMenuItems() {
108
+ const isHostMode = globalThis.isHostMode;
109
+ const hostMenuItems = globalThis.hostMenuItems;
110
+ return isHostMode ? hostMenuItems() : this.menuService.menuItems();
111
+ }
112
+ getLocalText(text) {
113
+ return this.translateJsonPipe.transform(text);
114
+ }
115
+ isActiveRouteForNode(node) {
116
+ if (!node.routerLink)
117
+ return false;
118
+ const currentUrl = this.router.url;
119
+ const hashUrl = currentUrl.indexOf('#') > -1 ? currentUrl.split('#')[1] : currentUrl;
120
+ if (hashUrl === node.routerLink || hashUrl === '/' + node.routerLink)
121
+ return true;
122
+ return (node.routerLink !== '/' &&
123
+ (hashUrl.startsWith(node.routerLink + '/') || hashUrl.startsWith('/' + node.routerLink + '/')));
124
+ }
125
+ // use on collapsed mode
126
+ isNodeOrChildActive(node) {
127
+ if (this.isActiveRouteForNode(node)) {
128
+ return true;
129
+ }
130
+ if (node.children && node.children.length > 0) {
131
+ return node.children.some(child => this.isNodeOrChildActive(child));
132
+ }
133
+ return false;
134
+ }
135
+ isTopLevelNodeActive(node) {
136
+ return this.isNodeOrChildActive(node);
137
+ }
138
+ isChildNodeActive(node) {
139
+ return this.isActiveRouteForNode(node);
140
+ }
141
+ toggleNode(node, level = 0) {
142
+ const wasExpanded = node.expanded;
143
+ if (level === 0) {
144
+ // Diğer ana menüleri kapat
145
+ this.closeOtherTopLevelNodes(node);
146
+ }
147
+ node.expanded = !wasExpanded;
148
+ this.filteredNodes.set([...this.filteredNodes()]);
149
+ }
150
+ closeOtherTopLevelNodes(exceptNode) {
151
+ const nodes = this.menuNodes();
152
+ nodes.forEach(node => {
153
+ if (node !== exceptNode) {
154
+ node.expanded = false;
155
+ this.closeAllChildNodes(node);
156
+ }
157
+ });
158
+ }
159
+ closeAllChildNodes(node) {
160
+ if (node.children) {
161
+ node.children.forEach(child => {
162
+ child.expanded = false;
163
+ this.closeAllChildNodes(child);
164
+ });
165
+ }
166
+ }
167
+ trackByKey(index, node) {
168
+ return node.key;
169
+ }
170
+ onMenuItemClick() {
171
+ if (this.isMobile()) {
172
+ this.layoutService.closeMobileMenu();
173
+ }
174
+ this.searchTerm.set('');
175
+ this.filteredNodes.set(this.menuNodes() || []);
176
+ }
177
+ onCollapsedItemClick(node) {
178
+ if (this.isCollapsed) {
179
+ this.layoutService.onMenuToggle();
180
+ }
181
+ this.closeOtherTopLevelNodes(node);
182
+ if (node.children && node.children.length > 0) {
183
+ node.expanded = true;
184
+ }
185
+ this.filteredNodes.set([...this.filteredNodes()]);
186
+ if (node.routerLink) {
187
+ this.onMenuItemClick();
188
+ }
189
+ }
190
+ onSearchChange() {
191
+ const currentSearchTerm = this.searchTerm()?.toLowerCase()?.trim();
192
+ if (!currentSearchTerm) {
193
+ this.filteredNodes.set(this.menuNodes() || []);
194
+ return;
195
+ }
196
+ this.filteredNodes.set(this.filterNodes(this.menuNodes(), currentSearchTerm));
197
+ }
198
+ filterNodes(nodes, searchTerm) {
199
+ const filtered = [];
200
+ const currentLang = this.translocoService.getActiveLang();
201
+ for (const node of nodes) {
202
+ // Convert label to string for search based on active language
203
+ const labelText = typeof node.label === 'string' ?
204
+ node.label
205
+ : node.label?.[currentLang] || node.label?.tr || node.label?.en || '';
206
+ const matches = labelText.toLowerCase().includes(searchTerm);
207
+ let filteredChildren = [];
208
+ if (node.children) {
209
+ filteredChildren = this.filterNodes(node.children, searchTerm);
210
+ }
211
+ if (matches || filteredChildren.length > 0) {
212
+ filtered.push({
213
+ ...node,
214
+ children: filteredChildren.length > 0 ? filteredChildren : node.children,
215
+ expanded: filteredChildren.length > 0
216
+ });
217
+ }
218
+ }
219
+ return filtered;
220
+ }
221
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: StaticSidebarComponent, deps: [{ token: i1.AppMenuService }, { token: i2.Router }, { token: i3.LayoutService }, { token: i4.TranslateJsonPipe }, { token: i5.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
222
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: StaticSidebarComponent, isStandalone: true, selector: "app-static-sidebar", providers: [TranslateJsonPipe], ngImport: i0, template: "<div class=\"static-sidebar\" [class.collapsed]=\"isCollapsed\">\r\n\t<div class=\"static-sidebar-content\">\r\n\t\t@if (!isCollapsed) {\r\n\t\t\t<div class=\"search-container\" *transloco=\"let t; read: ''\">\r\n\t\t\t\t<div class=\"search-wrapper\">\r\n\t\t\t\t\t<i class=\"pi pi-search search-icon\"></i>\r\n\t\t\t\t\t<input\r\n\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\tpInputText\r\n\t\t\t\t\t\tvariant=\"filled\"\r\n\t\t\t\t\t\t[placeholder]=\"t('search')\"\r\n\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\t\t\tclass=\"search-static-sidebar\" />\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: 'calc(100vh - 130px)' }\">\r\n\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\r\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</p-scrollPanel>\r\n\t\t} @else {\r\n\t\t\t<!-- Collapsed mode - only icons -->\r\n\t\t\t<div class=\"collapsed-container\">\r\n\t\t\t\t@for (node of topLevelNodes; track trackByKey($index, node)) {\r\n\t\t\t\t\t@if (node.routerLink && (!node.children || node.children.length === 0)) {\r\n\t\t\t\t\t\t<a \r\n\t\t\t\t\t\t\tclass=\"collapsed-item\" \r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\" \r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<div \r\n\t\t\t\t\t\t\tclass=\"collapsed-item\" \r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\" \r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<!-- Recursive Tree Node Template -->\r\n\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t<div class=\"tree-node\" [ngClass]=\"'level-' + level\">\r\n\t\t\t@if (node.routerLink) {\r\n\t\t\t\t<a\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"onMenuItemClick()\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\"\r\n\t\t\t\t\t\t\t\t(click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</a>\r\n\t\t\t} @else {\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"toggleNode(node, level)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\"\r\n\t\t\t\t\t\t\t\t(click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\r\n\t\t\t<!-- Recursive Children -->\r\n\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t<div class=\"children-container\" [attr.data-level]=\"level\">\r\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\t</ng-template>\r\n</div> ", styles: [".search-container{padding:12px 8px;margin:0}.search-wrapper{position:relative;width:100%}.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:#64748b;font-size:14px;z-index:10;pointer-events:none;transition:color .2s ease}.search-static-sidebar{background:#1e293b!important;border:1px solid rgba(148,163,184,.1)!important;height:36px!important;font-size:13px!important;font-weight:400;color:#cbd5e1!important;padding:0 12px 0 36px!important;border-radius:4px!important;width:100%!important;box-sizing:border-box!important;transition:all .25s ease!important}.search-static-sidebar::placeholder{font-size:12px!important}.search-static-sidebar:hover{background:#0f172ab3!important;border-color:#94a3b826!important}.search-static-sidebar:focus{outline:none!important;border:1px solid rgba(15,23,42,.8)!important;background:#0f172acc!important}.search-wrapper:focus-within .search-icon{color:#cbd5e1}.static-sidebar{width:260px;height:100vh;background:#1e293b;border-right:1px solid #0f172a;display:flex;flex-direction:column;position:fixed;left:0;top:55px;z-index:999;overflow-y:auto;overflow-x:hidden;transition:width .3s ease;box-shadow:2px 0 5px #0000000d}.static-sidebar.collapsed{width:64px;box-shadow:none}.static-sidebar .static-sidebar-content{flex:1;background:transparent;overflow:hidden}.static-sidebar .tree-container{padding:5px 0;overflow-x:hidden}.static-sidebar .tree-node{margin-bottom:4px;position:relative}.static-sidebar .tree-node .node-item{display:flex;align-items:center;padding:10px 12px;border-radius:4px;margin:0 5px;cursor:pointer;transition:all .25s ease;text-decoration:none;color:#cbd5e1!important;overflow:visible;position:relative;white-space:nowrap}.static-sidebar .tree-node .node-item:before{content:\"\";position:absolute;width:0;height:100%;top:0;left:0;background-color:var(--primary-color);opacity:.08;transition:width .25s ease-in-out}.static-sidebar .tree-node .node-item:hover{color:#e8e7e7!important}.static-sidebar .tree-node .node-item:hover:before{width:100%}.static-sidebar .tree-node .node-item:hover .node-label{color:#e8e7e7!important}.static-sidebar .tree-node .node-item:hover .node-icon{color:#e8e7e7!important;transform:translate(2px)}.static-sidebar .tree-node .node-item.is-page:hover{color:#e8e7e7!important}.static-sidebar .tree-node .node-item.is-page:hover:before{width:100%}.static-sidebar .tree-node .node-item.active{background-color:#495465!important;color:#e8e7e7!important;font-weight:500!important;box-shadow:0 2px 5px #0000001a!important}.static-sidebar .tree-node .node-item.active:before{display:none}.static-sidebar .tree-node .node-item.active .node-label,.static-sidebar .tree-node .node-item.active .node-icon,.static-sidebar .tree-node .node-item.active .toggle-btn i{color:#e8e7e7!important}.static-sidebar .tree-node .node-item.active:hover{background-color:var(--primary-color)}.static-sidebar .tree-node .node-content{display:flex;align-items:center;gap:8px;width:100%;min-width:0;position:relative;z-index:2;padding-left:24px}.static-sidebar .tree-node .toggle-btn{position:absolute;left:0;display:flex;align-items:center;justify-content:center;width:20px;height:16px;border:none;border-radius:3px;color:#cbd5e1;cursor:pointer;transition:all .25s ease;flex-shrink:0;z-index:3}.static-sidebar .tree-node .toggle-btn:hover{transform:scale(1.1)}.static-sidebar .tree-node .toggle-btn i{font-size:.7rem;transition:transform .2s ease}.static-sidebar .tree-node .node-icon{color:#cbd5e1;font-size:16px;flex-shrink:0;transition:transform .25s ease,color .25s ease;position:relative}.static-sidebar .tree-node .node-label{flex:1;font-size:13px;font-weight:500;color:#cbd5e1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .25s ease;position:relative}.static-sidebar .collapsed-container{padding:8px 0;display:flex;flex-direction:column;align-items:center;width:100%}.static-sidebar .collapsed-item{width:100%;display:flex;flex-direction:column;align-items:center;padding:12px 0;cursor:pointer;transition:all .25s ease;text-decoration:none;position:relative;overflow:hidden;margin-bottom:4px;color:#cbd5e1}.static-sidebar .collapsed-item:hover{color:#e8e7e7}.static-sidebar .collapsed-item:hover .collapsed-icon{transform:scale(1.15);color:#e8e7e7}.static-sidebar .collapsed-item:hover:after{content:\"\";position:absolute;left:0;top:0;width:3px;height:100%;background-color:#0f172a;opacity:.7}.static-sidebar .collapsed-item.active{background-color:#495465!important}.static-sidebar .collapsed-item.active:before{content:\"\";position:absolute;left:0;top:0;width:3px;height:100%;background-color:#0f172a}.static-sidebar .collapsed-item.active .collapsed-icon{color:#fff!important}.static-sidebar .collapsed-item .collapsed-icon{font-size:22px;color:#cbd5e1;transition:all .2s ease}.static-sidebar .children-container{position:relative}.static-sidebar .children-container:before{content:\"\";position:absolute;left:25px;top:0;bottom:0;width:1px;background-color:#4755694d;z-index:1}.static-sidebar .tree-node{position:relative}.static-sidebar .tree-node.level-0 .node-item{margin-right:20px;width:240px;max-width:240px}.static-sidebar .tree-node.level-0 .node-label{font-size:13px;font-weight:500;color:#cbd5e1}.static-sidebar .tree-node.level-0 .node-icon{font-size:16px}.static-sidebar .tree-node.level-1 .node-item{margin-left:36px;margin-right:20px;padding:8px 12px;width:204px;max-width:204px}.static-sidebar .tree-node.level-1 .node-label{font-size:12px;font-weight:400}.static-sidebar .tree-node.level-1 .node-icon{font-size:15px}.static-sidebar .tree-node.level-2 .node-item{margin-left:52px;margin-right:20px;width:188px;max-width:188px}.static-sidebar .tree-node.level-2 .node-label{font-size:11px;font-weight:400;color:#cbd5e1}.static-sidebar .tree-node.level-2 .node-icon{font-size:14px}.static-sidebar .tree-node.level-2.active .node-item{background-color:#495465!important}.static-sidebar .tree-node.level-2.active .node-item .node-label{color:#e8e7e7!important}.static-sidebar .tree-node.level-3 .node-item{margin-left:68px;margin-right:20px;padding:6px 12px;width:172px;max-width:172px}.static-sidebar .tree-node.level-3 .node-label{font-size:11px;font-weight:400;color:#cbd5e1}.static-sidebar .tree-node.level-3 .node-icon{font-size:13px}:host ::ng-deep .p-scrollpanel .p-scrollpanel-wrapper{border:none}:host ::ng-deep .p-scrollpanel .p-scrollpanel-content{padding-right:5px}:host ::ng-deep .p-scrollpanel-bar-y{background:#1e293b;width:4px;border-radius:4px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:#1e293b}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i6.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }] }); }
223
+ }
224
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: StaticSidebarComponent, decorators: [{
225
+ type: Component,
226
+ args: [{ standalone: true, selector: 'app-static-sidebar', imports: [RouterLink, NgClass, NgTemplateOutlet, ScrollPanelModule, TooltipModule, FormsModule, TranslocoModule], providers: [TranslateJsonPipe], template: "<div class=\"static-sidebar\" [class.collapsed]=\"isCollapsed\">\r\n\t<div class=\"static-sidebar-content\">\r\n\t\t@if (!isCollapsed) {\r\n\t\t\t<div class=\"search-container\" *transloco=\"let t; read: ''\">\r\n\t\t\t\t<div class=\"search-wrapper\">\r\n\t\t\t\t\t<i class=\"pi pi-search search-icon\"></i>\r\n\t\t\t\t\t<input\r\n\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\tpInputText\r\n\t\t\t\t\t\tvariant=\"filled\"\r\n\t\t\t\t\t\t[placeholder]=\"t('search')\"\r\n\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\t\t\tclass=\"search-static-sidebar\" />\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: 'calc(100vh - 130px)' }\">\r\n\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\r\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</p-scrollPanel>\r\n\t\t} @else {\r\n\t\t\t<!-- Collapsed mode - only icons -->\r\n\t\t\t<div class=\"collapsed-container\">\r\n\t\t\t\t@for (node of topLevelNodes; track trackByKey($index, node)) {\r\n\t\t\t\t\t@if (node.routerLink && (!node.children || node.children.length === 0)) {\r\n\t\t\t\t\t\t<a \r\n\t\t\t\t\t\t\tclass=\"collapsed-item\" \r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\" \r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<div \r\n\t\t\t\t\t\t\tclass=\"collapsed-item\" \r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\" \r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<!-- Recursive Tree Node Template -->\r\n\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t<div class=\"tree-node\" [ngClass]=\"'level-' + level\">\r\n\t\t\t@if (node.routerLink) {\r\n\t\t\t\t<a\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"onMenuItemClick()\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\"\r\n\t\t\t\t\t\t\t\t(click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</a>\r\n\t\t\t} @else {\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"toggleNode(node, level)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\"\r\n\t\t\t\t\t\t\t\t(click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\r\n\t\t\t<!-- Recursive Children -->\r\n\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t<div class=\"children-container\" [attr.data-level]=\"level\">\r\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\t</ng-template>\r\n</div> ", styles: [".search-container{padding:12px 8px;margin:0}.search-wrapper{position:relative;width:100%}.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:#64748b;font-size:14px;z-index:10;pointer-events:none;transition:color .2s ease}.search-static-sidebar{background:#1e293b!important;border:1px solid rgba(148,163,184,.1)!important;height:36px!important;font-size:13px!important;font-weight:400;color:#cbd5e1!important;padding:0 12px 0 36px!important;border-radius:4px!important;width:100%!important;box-sizing:border-box!important;transition:all .25s ease!important}.search-static-sidebar::placeholder{font-size:12px!important}.search-static-sidebar:hover{background:#0f172ab3!important;border-color:#94a3b826!important}.search-static-sidebar:focus{outline:none!important;border:1px solid rgba(15,23,42,.8)!important;background:#0f172acc!important}.search-wrapper:focus-within .search-icon{color:#cbd5e1}.static-sidebar{width:260px;height:100vh;background:#1e293b;border-right:1px solid #0f172a;display:flex;flex-direction:column;position:fixed;left:0;top:55px;z-index:999;overflow-y:auto;overflow-x:hidden;transition:width .3s ease;box-shadow:2px 0 5px #0000000d}.static-sidebar.collapsed{width:64px;box-shadow:none}.static-sidebar .static-sidebar-content{flex:1;background:transparent;overflow:hidden}.static-sidebar .tree-container{padding:5px 0;overflow-x:hidden}.static-sidebar .tree-node{margin-bottom:4px;position:relative}.static-sidebar .tree-node .node-item{display:flex;align-items:center;padding:10px 12px;border-radius:4px;margin:0 5px;cursor:pointer;transition:all .25s ease;text-decoration:none;color:#cbd5e1!important;overflow:visible;position:relative;white-space:nowrap}.static-sidebar .tree-node .node-item:before{content:\"\";position:absolute;width:0;height:100%;top:0;left:0;background-color:var(--primary-color);opacity:.08;transition:width .25s ease-in-out}.static-sidebar .tree-node .node-item:hover{color:#e8e7e7!important}.static-sidebar .tree-node .node-item:hover:before{width:100%}.static-sidebar .tree-node .node-item:hover .node-label{color:#e8e7e7!important}.static-sidebar .tree-node .node-item:hover .node-icon{color:#e8e7e7!important;transform:translate(2px)}.static-sidebar .tree-node .node-item.is-page:hover{color:#e8e7e7!important}.static-sidebar .tree-node .node-item.is-page:hover:before{width:100%}.static-sidebar .tree-node .node-item.active{background-color:#495465!important;color:#e8e7e7!important;font-weight:500!important;box-shadow:0 2px 5px #0000001a!important}.static-sidebar .tree-node .node-item.active:before{display:none}.static-sidebar .tree-node .node-item.active .node-label,.static-sidebar .tree-node .node-item.active .node-icon,.static-sidebar .tree-node .node-item.active .toggle-btn i{color:#e8e7e7!important}.static-sidebar .tree-node .node-item.active:hover{background-color:var(--primary-color)}.static-sidebar .tree-node .node-content{display:flex;align-items:center;gap:8px;width:100%;min-width:0;position:relative;z-index:2;padding-left:24px}.static-sidebar .tree-node .toggle-btn{position:absolute;left:0;display:flex;align-items:center;justify-content:center;width:20px;height:16px;border:none;border-radius:3px;color:#cbd5e1;cursor:pointer;transition:all .25s ease;flex-shrink:0;z-index:3}.static-sidebar .tree-node .toggle-btn:hover{transform:scale(1.1)}.static-sidebar .tree-node .toggle-btn i{font-size:.7rem;transition:transform .2s ease}.static-sidebar .tree-node .node-icon{color:#cbd5e1;font-size:16px;flex-shrink:0;transition:transform .25s ease,color .25s ease;position:relative}.static-sidebar .tree-node .node-label{flex:1;font-size:13px;font-weight:500;color:#cbd5e1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .25s ease;position:relative}.static-sidebar .collapsed-container{padding:8px 0;display:flex;flex-direction:column;align-items:center;width:100%}.static-sidebar .collapsed-item{width:100%;display:flex;flex-direction:column;align-items:center;padding:12px 0;cursor:pointer;transition:all .25s ease;text-decoration:none;position:relative;overflow:hidden;margin-bottom:4px;color:#cbd5e1}.static-sidebar .collapsed-item:hover{color:#e8e7e7}.static-sidebar .collapsed-item:hover .collapsed-icon{transform:scale(1.15);color:#e8e7e7}.static-sidebar .collapsed-item:hover:after{content:\"\";position:absolute;left:0;top:0;width:3px;height:100%;background-color:#0f172a;opacity:.7}.static-sidebar .collapsed-item.active{background-color:#495465!important}.static-sidebar .collapsed-item.active:before{content:\"\";position:absolute;left:0;top:0;width:3px;height:100%;background-color:#0f172a}.static-sidebar .collapsed-item.active .collapsed-icon{color:#fff!important}.static-sidebar .collapsed-item .collapsed-icon{font-size:22px;color:#cbd5e1;transition:all .2s ease}.static-sidebar .children-container{position:relative}.static-sidebar .children-container:before{content:\"\";position:absolute;left:25px;top:0;bottom:0;width:1px;background-color:#4755694d;z-index:1}.static-sidebar .tree-node{position:relative}.static-sidebar .tree-node.level-0 .node-item{margin-right:20px;width:240px;max-width:240px}.static-sidebar .tree-node.level-0 .node-label{font-size:13px;font-weight:500;color:#cbd5e1}.static-sidebar .tree-node.level-0 .node-icon{font-size:16px}.static-sidebar .tree-node.level-1 .node-item{margin-left:36px;margin-right:20px;padding:8px 12px;width:204px;max-width:204px}.static-sidebar .tree-node.level-1 .node-label{font-size:12px;font-weight:400}.static-sidebar .tree-node.level-1 .node-icon{font-size:15px}.static-sidebar .tree-node.level-2 .node-item{margin-left:52px;margin-right:20px;width:188px;max-width:188px}.static-sidebar .tree-node.level-2 .node-label{font-size:11px;font-weight:400;color:#cbd5e1}.static-sidebar .tree-node.level-2 .node-icon{font-size:14px}.static-sidebar .tree-node.level-2.active .node-item{background-color:#495465!important}.static-sidebar .tree-node.level-2.active .node-item .node-label{color:#e8e7e7!important}.static-sidebar .tree-node.level-3 .node-item{margin-left:68px;margin-right:20px;padding:6px 12px;width:172px;max-width:172px}.static-sidebar .tree-node.level-3 .node-label{font-size:11px;font-weight:400;color:#cbd5e1}.static-sidebar .tree-node.level-3 .node-icon{font-size:13px}:host ::ng-deep .p-scrollpanel .p-scrollpanel-wrapper{border:none}:host ::ng-deep .p-scrollpanel .p-scrollpanel-content{padding-right:5px}:host ::ng-deep .p-scrollpanel-bar-y{background:#1e293b;width:4px;border-radius:4px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:#1e293b}\n"] }]
227
+ }], ctorParameters: () => [{ type: i1.AppMenuService }, { type: i2.Router }, { type: i3.LayoutService }, { type: i4.TranslateJsonPipe }, { type: i5.TranslocoService }] });
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLXNpZGViYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL3N0YXRpYy1zaWRlYmFyL3N0YXRpYy1zaWRlYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9zdGF0aWMtc2lkZWJhci9zdGF0aWMtc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBNkIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGVBQWUsRUFBb0IsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RSxPQUFPLEVBQWdCLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7OztBQXNCcEQsTUFBTSxPQUFPLHNCQUFzQjtJQVVsQyxZQUNTLFdBQTJCLEVBQzNCLE1BQWMsRUFDZCxhQUE0QixFQUM1QixpQkFBb0MsRUFDcEMsZ0JBQWtDO1FBSmxDLGdCQUFXLEdB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akIsQ0FBQzs4R0E3T1csc0JBQXNCO2tHQUF0QixzQkFBc0IsaUVBRnZCLENBQUMsaUJBQWlCLENBQUMsMEJDbEMvQixxeUtBMkhPLCs5TUQ1RkksVUFBVSxvT0FBRSxPQUFPLG9GQUFFLGdCQUFnQixtSkFBRSxpQkFBaUIsK0lBQUUsYUFBYSxxWEFBRSxXQUFXLDhtQkFBRSxlQUFlOzsyRkFLbkcsc0JBQXNCO2tCQVJsQyxTQUFTO2lDQUNHLElBQUksWUFDTixvQkFBb0IsV0FDckIsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsZUFBZSxDQUFDLGFBR3JHLENBQUMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IFNjcm9sbFBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zY3JvbGxwYW5lbCc7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpbHRlciB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgUGx1Z2luTWVudUl0ZW0gfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVKc29uUGlwZSB9IGZyb20gJ2FyaWwvdXRpbC9waXBlcyc7XHJcblxyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBNZW51U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLm1lbnUuc2VydmljZSc7XHJcblxyXG5pbnRlcmZhY2UgTWVudU5vZGUge1xyXG5cdGtleTogc3RyaW5nO1xyXG5cdGxhYmVsOiBhbnk7XHJcblx0aWNvbj86IHN0cmluZztcclxuXHRyb3V0ZXJMaW5rPzogc3RyaW5nO1xyXG5cdGNoaWxkcmVuPzogTWVudU5vZGVbXTtcclxuXHRleHBhbmRlZDogYm9vbGVhbjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FwcC1zdGF0aWMtc2lkZWJhcicsXHJcblx0aW1wb3J0czogW1JvdXRlckxpbmssIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQsIFNjcm9sbFBhbmVsTW9kdWxlLCBUb29sdGlwTW9kdWxlLCBGb3Jtc01vZHVsZSwgVHJhbnNsb2NvTW9kdWxlXSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vc3RhdGljLXNpZGViYXIuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsOiAnLi9zdGF0aWMtc2lkZWJhci5jb21wb25lbnQuc2NzcycsXHJcblx0cHJvdmlkZXJzOiBbVHJhbnNsYXRlSnNvblBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdGF0aWNTaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cdGFjdGl2ZUxhbmc6IFNpZ25hbDxzdHJpbmc+O1xyXG5cdG1lbnVOb2RlcyA9IHNpZ25hbDxNZW51Tm9kZVtdPihbXSk7XHJcblx0ZmlsdGVyZWROb2RlcyA9IHNpZ25hbDxNZW51Tm9kZVtdPihbXSk7XHJcblx0c2VhcmNoVGVybSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcclxuXHJcblx0cHJpdmF0ZSByb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IE1BWF9MRU5HVEggPSB7IGxldmVsMDogMjUsIGxldmVsMTogMjAsIGxldmVsMjogMTYsIGxldmVsMzogMTMgfTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIG1lbnVTZXJ2aWNlOiBBcHBNZW51U2VydmljZSxcclxuXHRcdHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcblx0XHRwcml2YXRlIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHRyYW5zbGF0ZUpzb25QaXBlOiBUcmFuc2xhdGVKc29uUGlwZSxcclxuXHRcdHByaXZhdGUgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZVxyXG5cdCkge1xyXG5cdFx0dGhpcy5hY3RpdmVMYW5nID0gdG9TaWduYWwodGhpcy50cmFuc2xvY29TZXJ2aWNlLmxhbmdDaGFuZ2VzJCwgeyBpbml0aWFsVmFsdWU6ICd0cicgfSk7XHJcblx0fVxyXG5cclxuXHRnZXQgaXNDb2xsYXBzZWQoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLmlzU3RhdGljU2lkZWJhckNvbGxhcHNlZCgpO1xyXG5cdH1cclxuXHJcblx0Z2V0IHRvcExldmVsTm9kZXMoKTogTWVudU5vZGVbXSB7XHJcblx0XHRyZXR1cm4gdGhpcy5tZW51Tm9kZXMoKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy5idWlsZE1lbnVUcmVlKCk7XHJcblx0XHR0aGlzLnJvdXRlclN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50c1xyXG5cdFx0XHQucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG5cdFx0XHQuc3Vic2NyaWJlKCgpID0+IHRoaXMuYnVpbGRNZW51VHJlZSgpKTtcclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblx0fVxyXG5cclxuXHRpc1RleHRUcnVuY2F0ZWQobGFiZWw6IGFueSwgbGFuZzogc3RyaW5nIHwgbnVsbCwgbGV2ZWwgPSAwKTogYm9vbGVhbiB7XHJcblx0XHRpZiAoIWxhYmVsIHx8ICFsYW5nIHx8ICFsYWJlbFtsYW5nXSkgcmV0dXJuIGZhbHNlO1xyXG5cdFx0Y29uc3QgdGV4dCA9IGxhYmVsW2xhbmddO1xyXG5cdFx0Y29uc3QgbGVuID0gdGV4dC5sZW5ndGg7XHJcblx0XHRjb25zdCBsaW1pdHMgPSBbdGhpcy5NQVhfTEVOR1RILmxldmVsMCwgdGhpcy5NQVhfTEVOR1RILmxldmVsMSwgdGhpcy5NQVhfTEVOR1RILmxldmVsMiwgdGhpcy5NQVhfTEVOR1RILmxldmVsM107XHJcblx0XHRyZXR1cm4gbGVuID4gbGltaXRzW01hdGgubWluKGxldmVsLCAzKV07XHJcblx0fVxyXG5cclxuXHRpc01vYmlsZSgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2UuaXNNb2JpbGUoKTtcclxuXHR9XHJcblxyXG5cdGJ1aWxkTWVudVRyZWUoKSB7XHJcblx0XHRjb25zdCBtZW51SXRlbXMgPSB0aGlzLmdldE1lbnVJdGVtcygpO1xyXG5cdFx0Y29uc3Qgbm9kZXMgPSB0aGlzLmNvbnZlcnRUb01lbnVOb2RlcyhtZW51SXRlbXMpO1xyXG5cdFx0dGhpcy5tZW51Tm9kZXMuc2V0KG5vZGVzKTtcclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLm5vZGVzXSk7XHJcblx0XHR0aGlzLmV4cGFuZEFjdGl2ZU1lbnUoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZXhwYW5kQWN0aXZlTWVudSgpIHtcclxuXHRcdGNvbnN0IG5vZGVzID0gdGhpcy5tZW51Tm9kZXMoKTtcclxuXHRcdHRoaXMuZmluZEFuZEV4cGFuZEFjdGl2ZU5vZGUobm9kZXMpO1xyXG5cdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChbLi4udGhpcy5maWx0ZXJlZE5vZGVzKCldKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZmluZEFuZEV4cGFuZEFjdGl2ZU5vZGUobm9kZXM6IE1lbnVOb2RlW10pOiBNZW51Tm9kZSB8IG51bGwge1xyXG5cdFx0Zm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XHJcblx0XHRcdGlmICh0aGlzLmlzQWN0aXZlUm91dGVGb3JOb2RlKG5vZGUpKSB7XHJcblx0XHRcdFx0cmV0dXJuIG5vZGU7XHJcblx0XHRcdH1cclxuXHRcdFx0XHJcblx0XHRcdGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGNvbnN0IGFjdGl2ZUNoaWxkID0gdGhpcy5maW5kQW5kRXhwYW5kQWN0aXZlTm9kZShub2RlLmNoaWxkcmVuKTtcclxuXHRcdFx0XHRpZiAoYWN0aXZlQ2hpbGQpIHtcclxuXHRcdFx0XHRcdC8vIHdlIGZpbmQgYWN0aXZlIGNoaWxkIGFuZCB0aGVuIG9wZW5lZCBpdHMgcGFyZW50IG5vZGVzXHJcblx0XHRcdFx0XHRub2RlLmV4cGFuZGVkID0gdHJ1ZTtcclxuXHRcdFx0XHRcdHJldHVybiBhY3RpdmVDaGlsZDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxuXHJcblx0Y29udmVydFRvTWVudU5vZGVzKGl0ZW1zOiBQbHVnaW5NZW51SXRlbVtdLCBwYXJlbnRLZXkgPSAnJyk6IE1lbnVOb2RlW10ge1xyXG5cdFx0cmV0dXJuIGl0ZW1zXHJcblx0XHRcdC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLnNlcGFyYXRvcilcclxuXHRcdFx0Lm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCBrZXkgPSBwYXJlbnRLZXkgPyBgJHtwYXJlbnRLZXl9LSR7aW5kZXh9YCA6IGAke2luZGV4fWA7XHJcblx0XHRcdFx0Y29uc3Qgbm9kZTogTWVudU5vZGUgPSB7XHJcblx0XHRcdFx0XHRrZXksXHJcblx0XHRcdFx0XHRsYWJlbDogaXRlbS5sYWJlbCxcclxuXHRcdFx0XHRcdGljb246IGl0ZW0uaWNvbixcclxuXHRcdFx0XHRcdHJvdXRlckxpbms6IGl0ZW0ucm91dGVyTGluayxcclxuXHRcdFx0XHRcdGV4cGFuZGVkOiBmYWxzZVxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0aWYgKGl0ZW0uaXRlbXMgJiYgaXRlbS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRub2RlLmNoaWxkcmVuID0gdGhpcy5jb252ZXJ0VG9NZW51Tm9kZXMoaXRlbS5pdGVtcywga2V5KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuIG5vZGU7XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Z2V0TWVudUl0ZW1zKCk6IFBsdWdpbk1lbnVJdGVtW10ge1xyXG5cdFx0Y29uc3QgaXNIb3N0TW9kZSA9ICg8YW55Pmdsb2JhbFRoaXMpLmlzSG9zdE1vZGU7XHJcblx0XHRjb25zdCBob3N0TWVudUl0ZW1zID0gKDxhbnk+Z2xvYmFsVGhpcykuaG9zdE1lbnVJdGVtcztcclxuXHRcdHJldHVybiBpc0hvc3RNb2RlID8gaG9zdE1lbnVJdGVtcygpIDogdGhpcy5tZW51U2VydmljZS5tZW51SXRlbXMoKTtcclxuXHR9XHJcblxyXG5cdGdldExvY2FsVGV4dCh0ZXh0OiBhbnkpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMudHJhbnNsYXRlSnNvblBpcGUudHJhbnNmb3JtKHRleHQpO1xyXG5cdH1cclxuXHJcblx0aXNBY3RpdmVSb3V0ZUZvck5vZGUobm9kZTogTWVudU5vZGUpOiBib29sZWFuIHtcclxuXHRcdGlmICghbm9kZS5yb3V0ZXJMaW5rKSByZXR1cm4gZmFsc2U7XHJcblx0XHRjb25zdCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG5cdFx0Y29uc3QgaGFzaFVybCA9IGN1cnJlbnRVcmwuaW5kZXhPZignIycpID4gLTEgPyBjdXJyZW50VXJsLnNwbGl0KCcjJylbMV0gOiBjdXJyZW50VXJsO1xyXG5cdFx0aWYgKGhhc2hVcmwgPT09IG5vZGUucm91dGVyTGluayB8fCBoYXNoVXJsID09PSAnLycgKyBub2RlLnJvdXRlckxpbmspIHJldHVybiB0cnVlO1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0bm9kZS5yb3V0ZXJMaW5rICE9PSAnLycgJiZcclxuXHRcdFx0KGhhc2hVcmwuc3RhcnRzV2l0aChub2RlLnJvdXRlckxpbmsgKyAnLycpIHx8IGhhc2hVcmwuc3RhcnRzV2l0aCgnLycgKyBub2RlLnJvdXRlckxpbmsgKyAnLycpKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8vIHVzZSBvbiBjb2xsYXBzZWQgbW9kZVxyXG5cdGlzTm9kZU9yQ2hpbGRBY3RpdmUobm9kZTogTWVudU5vZGUpOiBib29sZWFuIHtcclxuXHRcdGlmICh0aGlzLmlzQWN0aXZlUm91dGVGb3JOb2RlKG5vZGUpKSB7XHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0aWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHJldHVybiBub2RlLmNoaWxkcmVuLnNvbWUoY2hpbGQgPT4gdGhpcy5pc05vZGVPckNoaWxkQWN0aXZlKGNoaWxkKSk7XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHR9XHJcblxyXG5cdGlzVG9wTGV2ZWxOb2RlQWN0aXZlKG5vZGU6IE1lbnVOb2RlKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5pc05vZGVPckNoaWxkQWN0aXZlKG5vZGUpO1xyXG5cdH1cclxuXHJcblx0aXNDaGlsZE5vZGVBY3RpdmUobm9kZTogTWVudU5vZGUpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmlzQWN0aXZlUm91dGVGb3JOb2RlKG5vZGUpO1xyXG5cdH1cclxuXHJcblx0dG9nZ2xlTm9kZShub2RlOiBNZW51Tm9kZSwgbGV2ZWwgPSAwKSB7XHJcblx0XHRjb25zdCB3YXNFeHBhbmRlZCA9IG5vZGUuZXhwYW5kZWQ7XHJcblx0XHRpZiAobGV2ZWwgPT09IDApIHtcclxuXHRcdFx0Ly8gRGnEn2VyIGFuYSBtZW7DvGxlcmkga2FwYXRcclxuXHRcdFx0dGhpcy5jbG9zZU90aGVyVG9wTGV2ZWxOb2Rlcyhub2RlKTtcclxuXHRcdH1cclxuXHRcdG5vZGUuZXhwYW5kZWQgPSAhd2FzRXhwYW5kZWQ7XHJcblx0XHRcclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLnRoaXMuZmlsdGVyZWROb2RlcygpXSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNsb3NlT3RoZXJUb3BMZXZlbE5vZGVzKGV4Y2VwdE5vZGU6IE1lbnVOb2RlKSB7XHJcblx0XHRjb25zdCBub2RlcyA9IHRoaXMubWVudU5vZGVzKCk7XHJcblx0XHRub2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xyXG5cdFx0XHRpZiAobm9kZSAhPT0gZXhjZXB0Tm9kZSkge1xyXG5cdFx0XHRcdG5vZGUuZXhwYW5kZWQgPSBmYWxzZTtcclxuXHRcdFx0XHR0aGlzLmNsb3NlQWxsQ2hpbGROb2Rlcyhub2RlKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNsb3NlQWxsQ2hpbGROb2Rlcyhub2RlOiBNZW51Tm9kZSkge1xyXG5cdFx0aWYgKG5vZGUuY2hpbGRyZW4pIHtcclxuXHRcdFx0bm9kZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcclxuXHRcdFx0XHRjaGlsZC5leHBhbmRlZCA9IGZhbHNlO1xyXG5cdFx0XHRcdHRoaXMuY2xvc2VBbGxDaGlsZE5vZGVzKGNoaWxkKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0cmFja0J5S2V5KGluZGV4OiBudW1iZXIsIG5vZGU6IE1lbnVOb2RlKTogYW55IHtcclxuXHRcdHJldHVybiBub2RlLmtleTtcclxuXHR9XHJcblxyXG5cdG9uTWVudUl0ZW1DbGljaygpIHtcclxuXHRcdGlmICh0aGlzLmlzTW9iaWxlKCkpIHtcclxuXHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLmNsb3NlTW9iaWxlTWVudSgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuc2VhcmNoVGVybS5zZXQoJycpO1xyXG5cdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldCh0aGlzLm1lbnVOb2RlcygpIHx8IFtdKTtcclxuXHR9XHJcblxyXG5cdG9uQ29sbGFwc2VkSXRlbUNsaWNrKG5vZGU6IE1lbnVOb2RlKSB7XHJcblx0XHRpZiAodGhpcy5pc0NvbGxhcHNlZCkge1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uub25NZW51VG9nZ2xlKCk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmNsb3NlT3RoZXJUb3BMZXZlbE5vZGVzKG5vZGUpO1xyXG5cdFx0aWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcblx0XHRcdG5vZGUuZXhwYW5kZWQgPSB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChbLi4udGhpcy5maWx0ZXJlZE5vZGVzKCldKTtcclxuXHRcdGlmIChub2RlLnJvdXRlckxpbmspIHtcclxuXHRcdFx0dGhpcy5vbk1lbnVJdGVtQ2xpY2soKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG9uU2VhcmNoQ2hhbmdlKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgY3VycmVudFNlYXJjaFRlcm0gPSB0aGlzLnNlYXJjaFRlcm0oKT8udG9Mb3dlckNhc2UoKT8udHJpbSgpO1xyXG5cdFx0aWYgKCFjdXJyZW50U2VhcmNoVGVybSkge1xyXG5cdFx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KHRoaXMubWVudU5vZGVzKCkgfHwgW10pO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KHRoaXMuZmlsdGVyTm9kZXModGhpcy5tZW51Tm9kZXMoKSwgY3VycmVudFNlYXJjaFRlcm0pKTtcclxuXHR9XHJcblxyXG5cdFx0cHJpdmF0ZSBmaWx0ZXJOb2Rlcyhub2RlczogTWVudU5vZGVbXSwgc2VhcmNoVGVybTogc3RyaW5nKTogTWVudU5vZGVbXSB7XHJcblx0XHRjb25zdCBmaWx0ZXJlZDogTWVudU5vZGVbXSA9IFtdO1xyXG5cdFx0Y29uc3QgY3VycmVudExhbmcgPSB0aGlzLnRyYW5zbG9jb1NlcnZpY2UuZ2V0QWN0aXZlTGFuZygpO1xyXG5cclxuXHRcdGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xyXG5cdFx0XHQvLyBDb252ZXJ0IGxhYmVsIHRvIHN0cmluZyBmb3Igc2VhcmNoIGJhc2VkIG9uIGFjdGl2ZSBsYW5ndWFnZVxyXG5cdFx0XHRjb25zdCBsYWJlbFRleHQgPVxyXG5cdFx0XHRcdHR5cGVvZiBub2RlLmxhYmVsID09PSAnc3RyaW5nJyA/XHJcblx0XHRcdFx0XHRub2RlLmxhYmVsXHJcblx0XHRcdFx0Olx0KG5vZGUubGFiZWwgYXMgYW55KT8uW2N1cnJlbnRMYW5nXSB8fCAobm9kZS5sYWJlbCBhcyBhbnkpPy50ciB8fCAobm9kZS5sYWJlbCBhcyBhbnkpPy5lbiB8fCAnJztcclxuXHJcblx0XHRcdGNvbnN0IG1hdGNoZXMgPSBsYWJlbFRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKTtcclxuXHRcdFx0bGV0IGZpbHRlcmVkQ2hpbGRyZW46IE1lbnVOb2RlW10gPSBbXTtcclxuXHJcblx0XHRcdGlmIChub2RlLmNoaWxkcmVuKSB7XHJcblx0XHRcdFx0ZmlsdGVyZWRDaGlsZHJlbiA9IHRoaXMuZmlsdGVyTm9kZXMobm9kZS5jaGlsZHJlbiwgc2VhcmNoVGVybSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChtYXRjaGVzIHx8IGZpbHRlcmVkQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGZpbHRlcmVkLnB1c2goe1xyXG5cdFx0XHRcdFx0Li4ubm9kZSxcclxuXHRcdFx0XHRcdGNoaWxkcmVuOiBmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDAgPyBmaWx0ZXJlZENoaWxkcmVuIDogbm9kZS5jaGlsZHJlbixcclxuXHRcdFx0XHRcdGV4cGFuZGVkOiBmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDBcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBmaWx0ZXJlZDtcclxuXHR9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzdGF0aWMtc2lkZWJhclwiIFtjbGFzcy5jb2xsYXBzZWRdPVwiaXNDb2xsYXBzZWRcIj5cclxuXHQ8ZGl2IGNsYXNzPVwic3RhdGljLXNpZGViYXItY29udGVudFwiPlxyXG5cdFx0QGlmICghaXNDb2xsYXBzZWQpIHtcclxuXHRcdFx0PGRpdiBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIiAqdHJhbnNsb2NvPVwibGV0IHQ7IHJlYWQ6ICcnXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInNlYXJjaC13cmFwcGVyXCI+XHJcblx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLXNlYXJjaCBzZWFyY2gtaWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdDxpbnB1dFxyXG5cdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXHJcblx0XHRcdFx0XHRcdHBJbnB1dFRleHRcclxuXHRcdFx0XHRcdFx0dmFyaWFudD1cImZpbGxlZFwiXHJcblx0XHRcdFx0XHRcdFtwbGFjZWhvbGRlcl09XCJ0KCdzZWFyY2gnKVwiXHJcblx0XHRcdFx0XHRcdFsobmdNb2RlbCldPVwic2VhcmNoVGVybVwiXHJcblx0XHRcdFx0XHRcdChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoQ2hhbmdlKClcIlxyXG5cdFx0XHRcdFx0XHRjbGFzcz1cInNlYXJjaC1zdGF0aWMtc2lkZWJhclwiIC8+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8cC1zY3JvbGxQYW5lbCBbc3R5bGVdPVwieyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICdjYWxjKDEwMHZoIC0gMTMwcHgpJyB9XCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInRyZWUtY29udGFpbmVyXCI+XHJcblx0XHRcdFx0XHRAZm9yIChub2RlIG9mIGZpbHRlcmVkTm9kZXMoKTsgdHJhY2sgdHJhY2tCeUtleSgkaW5kZXgsIG5vZGUpKSB7XHJcblx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmVlTm9kZVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbm9kZSwgbGV2ZWw6IDAgfVwiPjwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L3Atc2Nyb2xsUGFuZWw+XHJcblx0XHR9IEBlbHNlIHtcclxuXHRcdFx0PCEtLSBDb2xsYXBzZWQgbW9kZSAtIG9ubHkgaWNvbnMgLS0+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJjb2xsYXBzZWQtY29udGFpbmVyXCI+XHJcblx0XHRcdFx0QGZvciAobm9kZSBvZiB0b3BMZXZlbE5vZGVzOyB0cmFjayB0cmFja0J5S2V5KCRpbmRleCwgbm9kZSkpIHtcclxuXHRcdFx0XHRcdEBpZiAobm9kZS5yb3V0ZXJMaW5rICYmICghbm9kZS5jaGlsZHJlbiB8fCBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkpIHtcclxuXHRcdFx0XHRcdFx0PGEgXHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJjb2xsYXBzZWQtaXRlbVwiIFxyXG5cdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJnZXRMb2NhbFRleHQobm9kZS5sYWJlbClcIiBcclxuXHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiXHJcblx0XHRcdFx0XHRcdFx0W3JvdXRlckxpbmtdPVwibm9kZS5yb3V0ZXJMaW5rXCJcclxuXHRcdFx0XHRcdFx0XHRbY2xhc3MuYWN0aXZlXT1cImlzVG9wTGV2ZWxOb2RlQWN0aXZlKG5vZGUpXCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwib25Db2xsYXBzZWRJdGVtQ2xpY2sobm9kZSlcIj5cclxuXHRcdFx0XHRcdFx0XHRAaWYgKG5vZGUuaWNvbikge1xyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJjb2xsYXBzZWQtaWNvblwiIFtjbGFzc109XCJub2RlLmljb25cIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImNvbGxhcHNlZC1pY29uIHBpIHBpLWNpcmNsZVwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdDwvYT5cclxuXHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHQ8ZGl2IFxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiY29sbGFwc2VkLWl0ZW1cIiBcclxuXHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiZ2V0TG9jYWxUZXh0KG5vZGUubGFiZWwpXCIgXHJcblx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxyXG5cdFx0XHRcdFx0XHRcdFtjbGFzcy5hY3RpdmVdPVwiaXNUb3BMZXZlbE5vZGVBY3RpdmUobm9kZSlcIlxyXG5cdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbkNvbGxhcHNlZEl0ZW1DbGljayhub2RlKVwiPlxyXG5cdFx0XHRcdFx0XHRcdEBpZiAobm9kZS5pY29uKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImNvbGxhcHNlZC1pY29uXCIgW2NsYXNzXT1cIm5vZGUuaWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiY29sbGFwc2VkLWljb24gcGkgcGktY2lyY2xlXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH1cclxuXHQ8L2Rpdj5cclxuXHJcblx0PCEtLSBSZWN1cnNpdmUgVHJlZSBOb2RlIFRlbXBsYXRlIC0tPlxyXG5cdDxuZy10ZW1wbGF0ZSAjdHJlZU5vZGVUZW1wbGF0ZSBsZXQtbm9kZSBsZXQtbGV2ZWw9XCJsZXZlbFwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cInRyZWUtbm9kZVwiIFtuZ0NsYXNzXT1cIidsZXZlbC0nICsgbGV2ZWxcIj5cclxuXHRcdFx0QGlmIChub2RlLnJvdXRlckxpbmspIHtcclxuXHRcdFx0XHQ8YVxyXG5cdFx0XHRcdFx0W3JvdXRlckxpbmtdPVwibm9kZS5yb3V0ZXJMaW5rXCJcclxuXHRcdFx0XHRcdGNsYXNzPVwibm9kZS1pdGVtXCJcclxuXHRcdFx0XHRcdFtjbGFzcy5oYXMtY2hpbGRyZW5dPVwibm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDBcIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmlzLXBhZ2VdPVwibm9kZS5yb3V0ZXJMaW5rXCJcclxuXHRcdFx0XHRcdFtjbGFzcy5hY3RpdmVdPVwiaXNDaGlsZE5vZGVBY3RpdmUobm9kZSlcIlxyXG5cdFx0XHRcdFx0W3BUb29sdGlwXT1cIiFpc01vYmlsZSgpICYmIGlzVGV4dFRydW5jYXRlZChub2RlLmxhYmVsLCBhY3RpdmVMYW5nKCksIGxldmVsKSA/IGdldExvY2FsVGV4dChub2RlLmxhYmVsKSA6ICcnXCJcclxuXHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcclxuXHRcdFx0XHRcdChjbGljayk9XCJvbk1lbnVJdGVtQ2xpY2soKVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm5vZGUtY29udGVudFwiPlxyXG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRvZ2dsZS1idG5cIlxyXG5cdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlTm9kZShub2RlLCBsZXZlbClcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGlcIiBbY2xhc3MucGktY2hldnJvbi1yaWdodF09XCIhbm9kZS5leHBhbmRlZFwiIFtjbGFzcy5waS1jaGV2cm9uLWRvd25dPVwibm9kZS5leHBhbmRlZFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0QGlmIChub2RlLmljb24pIHtcclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cIm5vZGUtaWNvblwiIFtjbGFzc109XCJub2RlLmljb25cIj48L2k+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJub2RlLWxhYmVsXCI+e3sgZ2V0TG9jYWxUZXh0KG5vZGUubGFiZWwpIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9hPlxyXG5cdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRjbGFzcz1cIm5vZGUtaXRlbVwiXHJcblx0XHRcdFx0XHRbY2xhc3MuaGFzLWNoaWxkcmVuXT1cIm5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwXCJcclxuXHRcdFx0XHRcdFtjbGFzcy5pcy1wYWdlXT1cIm5vZGUucm91dGVyTGlua1wiXHJcblx0XHRcdFx0XHRbY2xhc3MuYWN0aXZlXT1cImlzQ2hpbGROb2RlQWN0aXZlKG5vZGUpXCJcclxuXHRcdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSAmJiBpc1RleHRUcnVuY2F0ZWQobm9kZS5sYWJlbCwgYWN0aXZlTGFuZygpLCBsZXZlbCkgPyBnZXRMb2NhbFRleHQobm9kZS5sYWJlbCkgOiAnJ1wiXHJcblx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwidG9nZ2xlTm9kZShub2RlLCBsZXZlbClcIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJub2RlLWNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdFx0QGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0b2dnbGUtYnRuXCJcclxuXHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZU5vZGUobm9kZSwgbGV2ZWwpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpXCIgW2NsYXNzLnBpLWNoZXZyb24tcmlnaHRdPVwiIW5vZGUuZXhwYW5kZWRcIiBbY2xhc3MucGktY2hldnJvbi1kb3duXT1cIm5vZGUuZXhwYW5kZWRcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdEBpZiAobm9kZS5pY29uKSB7XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJub2RlLWljb25cIiBbY2xhc3NdPVwibm9kZS5pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibm9kZS1sYWJlbFwiPnt7IGdldExvY2FsVGV4dChub2RlLmxhYmVsKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQ8IS0tIFJlY3Vyc2l2ZSBDaGlsZHJlbiAtLT5cclxuXHRcdFx0QGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuZXhwYW5kZWQpIHtcclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2hpbGRyZW4tY29udGFpbmVyXCIgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiPlxyXG5cdFx0XHRcdFx0QGZvciAoY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbjsgdHJhY2sgdHJhY2tCeUtleSgkaW5kZXgsIGNoaWxkKSkge1xyXG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyXHJcblx0XHRcdFx0XHRcdFx0Km5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmVlTm9kZVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY2hpbGQsIGxldmVsOiBsZXZlbCArIDEgfVwiPjwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHR9XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj4gIl19