@mediusinc/mng-commons 2.6.0 → 3.0.0-rc.0

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 (283) hide show
  1. package/README.md +15 -4
  2. package/dev-scripts/version-info.js +1 -0
  3. package/esm2022/lib/api/models/filter-param.model.mjs +33 -0
  4. package/esm2022/lib/api/models/query-param.model.mjs +68 -0
  5. package/esm2022/lib/api/models/query-result.model.mjs +24 -0
  6. package/esm2022/lib/api/utils/medius-rest.util.mjs +255 -0
  7. package/esm2022/lib/api/utils/object-serializer.util.mjs +258 -0
  8. package/esm2022/lib/components/action/action.component.mjs +304 -0
  9. package/esm2022/lib/components/action/editor/action-editor.component.mjs +386 -0
  10. package/esm2022/lib/components/action/localization/data-language-dropdown.component.mjs +54 -0
  11. package/{esm2020 → esm2022}/lib/components/action/models/action-execution.model.mjs +1 -1
  12. package/esm2022/lib/components/action/models/tableview-action-default-categories.model.mjs +11 -0
  13. package/{esm2020 → esm2022}/lib/components/action/route/action-route.component.mjs +4 -4
  14. package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +300 -0
  15. package/{esm2020 → esm2022}/lib/components/form/date-range/date-range.component.mjs +5 -5
  16. package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +212 -0
  17. package/esm2022/lib/components/form/editor/form-editor.component.mjs +288 -0
  18. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.mjs +4 -4
  19. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +5 -5
  20. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.mjs +4 -4
  21. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.mjs +6 -6
  22. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +4 -4
  23. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +4 -4
  24. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +5 -5
  25. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +4 -4
  26. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +7 -7
  27. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +4 -4
  28. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +4 -4
  29. package/esm2022/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +19 -0
  30. package/{esm2020 → esm2022}/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +4 -4
  31. package/{esm2020 → esm2022}/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +4 -4
  32. package/esm2022/lib/components/form/models/form-editor.event.mjs +49 -0
  33. package/esm2022/lib/components/layout/breadcrumb.component.mjs +34 -0
  34. package/{esm2020 → esm2022}/lib/components/layout/footer.component.mjs +4 -4
  35. package/{esm2020 → esm2022}/lib/components/layout/main-layout.component.mjs +4 -4
  36. package/esm2022/lib/components/layout/menu-item.component.mjs +297 -0
  37. package/{esm2020 → esm2022}/lib/components/layout/menu.component.mjs +4 -4
  38. package/{esm2020 → esm2022}/lib/components/layout/services/main-layout.component.service.mjs +4 -4
  39. package/{esm2020 → esm2022}/lib/components/layout/topbar-user.component.mjs +4 -4
  40. package/{esm2020 → esm2022}/lib/components/layout/topbar.component.mjs +4 -4
  41. package/{esm2020 → esm2022}/lib/components/layout/version.component.mjs +4 -4
  42. package/{esm2020 → esm2022}/lib/components/pages/error/error-page.component.mjs +4 -4
  43. package/{esm2020 → esm2022}/lib/components/pages/not-found/not-found-page.component.mjs +4 -4
  44. package/{esm2020 → esm2022}/lib/components/tableview/models/table.event.mjs +1 -1
  45. package/{esm2020 → esm2022}/lib/components/tableview/route/tableview-route.abstract.component.mjs +5 -5
  46. package/{esm2020 → esm2022}/lib/components/tableview/route/tableview-route.component.mjs +4 -4
  47. package/esm2022/lib/components/tableview/table/column-filter/column-filter.component.mjs +124 -0
  48. package/esm2022/lib/components/tableview/table/column-value/column-value.component.mjs +110 -0
  49. package/esm2022/lib/components/tableview/table/table.component.mjs +747 -0
  50. package/esm2022/lib/components/tableview/tableview.component.mjs +147 -0
  51. package/esm2022/lib/descriptors/action/action.descriptor.mjs +634 -0
  52. package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +304 -0
  53. package/esm2022/lib/descriptors/table/table.descriptor.mjs +542 -0
  54. package/esm2022/lib/descriptors/tableview/tableview.descriptor.mjs +352 -0
  55. package/{esm2020 → esm2022}/lib/descriptors/types/table.type.mjs +1 -5
  56. package/{esm2020 → esm2022}/lib/directives/component.directive.mjs +5 -5
  57. package/{esm2020 → esm2022}/lib/directives/template.directive.mjs +5 -5
  58. package/esm2022/lib/mng-commons.module.mjs +465 -0
  59. package/{esm2020 → esm2022}/lib/pipes/boolean.pipe.mjs +4 -4
  60. package/{esm2020 → esm2022}/lib/pipes/class-map.pipe.mjs +4 -4
  61. package/{esm2020 → esm2022}/lib/pipes/enum.pipe.mjs +4 -4
  62. package/{esm2020 → esm2022}/lib/pipes/enumerate-async.pipe.mjs +4 -4
  63. package/{esm2020 → esm2022}/lib/pipes/enumerate.pipe.mjs +4 -4
  64. package/{esm2020 → esm2022}/lib/pipes/getter.pipe.mjs +4 -4
  65. package/{esm2020 → esm2022}/lib/pipes/i18n-property.pipe.mjs +4 -4
  66. package/{esm2020 → esm2022}/lib/pipes/json-path.pipe.mjs +4 -4
  67. package/{esm2020 → esm2022}/lib/pipes/locale-default-row-class.pipe.mjs +4 -4
  68. package/{esm2020 → esm2022}/lib/pipes/parametrize.pipe.mjs +4 -4
  69. package/{esm2020 → esm2022}/lib/pipes/template.pipe.mjs +4 -4
  70. package/esm2022/lib/router/route-builder.mjs +308 -0
  71. package/esm2022/lib/router/routes-builder.mjs +61 -0
  72. package/esm2022/lib/security/authorization.guard.mjs +15 -0
  73. package/{esm2020 → esm2022}/lib/security/authorization.service.mjs +4 -4
  74. package/esm2022/lib/services/action-executor.service.mjs +703 -0
  75. package/{esm2020 → esm2022}/lib/services/commons.service.mjs +4 -4
  76. package/esm2022/lib/services/configuration.service.mjs +150 -0
  77. package/{esm2020 → esm2022}/lib/services/internal/commons-init.service.mjs +4 -4
  78. package/{esm2020 → esm2022}/lib/services/mng-localstorage-config.service.mjs +4 -4
  79. package/{esm2020 → esm2022}/lib/services/navigation.service.mjs +4 -4
  80. package/{esm2020 → esm2022}/lib/services/router.service.mjs +4 -4
  81. package/{esm2020 → esm2022}/lib/services/version.service.mjs +4 -4
  82. package/{esm2020 → esm2022}/lib/services/view-container.component.service.mjs +4 -4
  83. package/esm2022/lib/styles/styles.util.mjs +42 -0
  84. package/esm2022/lib/types/type.model.mjs +2 -0
  85. package/esm2022/lib/utils/date.util.mjs +120 -0
  86. package/esm2022/lib/utils/tableview.util.mjs +193 -0
  87. package/esm2022/lib/utils/type.util.mjs +94 -0
  88. package/{fesm2020 → fesm2022}/mediusinc-mng-commons.mjs +930 -908
  89. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -0
  90. package/lib/api/utils/medius-rest.util.d.ts +4 -3
  91. package/lib/components/action/action.component.d.ts +1 -1
  92. package/lib/components/action/editor/action-editor.component.d.ts +6 -9
  93. package/lib/components/action/localization/data-language-dropdown.component.d.ts +1 -1
  94. package/lib/components/form/autocomplete/autocomplete.component.d.ts +4 -4
  95. package/lib/components/form/date-range/date-range.component.d.ts +1 -1
  96. package/lib/components/form/dropdown/dropdown.component.d.ts +3 -3
  97. package/lib/components/form/editor/form-editor.component.d.ts +1 -1
  98. package/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.d.ts +1 -1
  99. package/lib/components/layout/breadcrumb.component.d.ts +5 -0
  100. package/lib/components/layout/menu-item.component.d.ts +1 -1
  101. package/lib/components/layout/version.component.d.ts +1 -1
  102. package/lib/components/tableview/models/table.event.d.ts +2 -2
  103. package/lib/components/tableview/route/tableview-route.component.d.ts +1 -1
  104. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +2 -2
  105. package/lib/components/tableview/table/column-value/column-value.component.d.ts +1 -1
  106. package/lib/components/tableview/table/table.component.d.ts +6 -7
  107. package/lib/components/tableview/tableview.component.d.ts +7 -11
  108. package/lib/descriptors/editor/editor.descriptor.d.ts +1 -1
  109. package/lib/descriptors/table/table.descriptor.d.ts +7 -1
  110. package/lib/descriptors/tableview/tableview.descriptor.d.ts +4 -4
  111. package/lib/descriptors/types/table.type.d.ts +1 -5
  112. package/lib/directives/component.directive.d.ts +1 -1
  113. package/lib/directives/template.directive.d.ts +1 -1
  114. package/lib/router/route-builder.d.ts +6 -10
  115. package/lib/router/routes-builder.d.ts +0 -5
  116. package/lib/security/authorization.guard.d.ts +2 -11
  117. package/lib/services/action-executor.service.d.ts +1 -15
  118. package/lib/utils/route.util.d.ts +8 -19
  119. package/lib/utils/tableview.util.d.ts +5 -0
  120. package/package.json +12 -19
  121. package/esm2020/lib/api/models/filter-param.model.mjs +0 -33
  122. package/esm2020/lib/api/models/query-param.model.mjs +0 -68
  123. package/esm2020/lib/api/models/query-result.model.mjs +0 -24
  124. package/esm2020/lib/api/utils/medius-rest.util.mjs +0 -246
  125. package/esm2020/lib/api/utils/object-serializer.util.mjs +0 -258
  126. package/esm2020/lib/components/action/action.component.mjs +0 -303
  127. package/esm2020/lib/components/action/editor/action-editor.component.mjs +0 -390
  128. package/esm2020/lib/components/action/localization/data-language-dropdown.component.mjs +0 -47
  129. package/esm2020/lib/components/action/models/tableview-action-default-categories.model.mjs +0 -11
  130. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +0 -303
  131. package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +0 -214
  132. package/esm2020/lib/components/form/editor/form-editor.component.mjs +0 -288
  133. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +0 -19
  134. package/esm2020/lib/components/form/models/form-editor.event.mjs +0 -49
  135. package/esm2020/lib/components/layout/breadcrumb.component.mjs +0 -19
  136. package/esm2020/lib/components/layout/menu-item.component.mjs +0 -294
  137. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +0 -126
  138. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +0 -108
  139. package/esm2020/lib/components/tableview/table/table.component.mjs +0 -749
  140. package/esm2020/lib/components/tableview/tableview.component.mjs +0 -146
  141. package/esm2020/lib/descriptors/action/action.descriptor.mjs +0 -634
  142. package/esm2020/lib/descriptors/editor/editor.descriptor.mjs +0 -304
  143. package/esm2020/lib/descriptors/table/table.descriptor.mjs +0 -521
  144. package/esm2020/lib/descriptors/tableview/tableview.descriptor.mjs +0 -347
  145. package/esm2020/lib/mng-commons.module.mjs +0 -469
  146. package/esm2020/lib/router/route-builder.mjs +0 -312
  147. package/esm2020/lib/router/routes-builder.mjs +0 -68
  148. package/esm2020/lib/security/authorization.guard.mjs +0 -30
  149. package/esm2020/lib/services/action-executor.service.mjs +0 -722
  150. package/esm2020/lib/services/configuration.service.mjs +0 -150
  151. package/esm2020/lib/styles/styles.util.mjs +0 -42
  152. package/esm2020/lib/types/type.model.mjs +0 -2
  153. package/esm2020/lib/utils/date.util.mjs +0 -120
  154. package/esm2020/lib/utils/tableview.util.mjs +0 -171
  155. package/esm2020/lib/utils/type.util.mjs +0 -94
  156. package/fesm2015/mediusinc-mng-commons.mjs +0 -15900
  157. package/fesm2015/mediusinc-mng-commons.mjs.map +0 -1
  158. package/fesm2020/mediusinc-mng-commons.mjs.map +0 -1
  159. /package/{esm2020 → esm2022}/index.mjs +0 -0
  160. /package/{esm2020 → esm2022}/lib/api/models/builders/query-param.builder.mjs +0 -0
  161. /package/{esm2020 → esm2022}/lib/api/models/filter-match-type.model.mjs +0 -0
  162. /package/{esm2020 → esm2022}/lib/api/models/index.mjs +0 -0
  163. /package/{esm2020 → esm2022}/lib/api/models/mappers.mjs +0 -0
  164. /package/{esm2020 → esm2022}/lib/api/models/query-mode.model.mjs +0 -0
  165. /package/{esm2020 → esm2022}/lib/api/models/serialization.model.mjs +0 -0
  166. /package/{esm2020 → esm2022}/lib/api/services/api.abstract.service.mjs +0 -0
  167. /package/{esm2020 → esm2022}/lib/api/services/crud-api.abstract.service.mjs +0 -0
  168. /package/{esm2020 → esm2022}/lib/api/services/get-all-api.abstract.service.mjs +0 -0
  169. /package/{esm2020 → esm2022}/lib/api/services/index.mjs +0 -0
  170. /package/{esm2020 → esm2022}/lib/api/utils/index.mjs +0 -0
  171. /package/{esm2020 → esm2022}/lib/components/action/index.mjs +0 -0
  172. /package/{esm2020 → esm2022}/lib/components/action/models/action-component.model.mjs +0 -0
  173. /package/{esm2020 → esm2022}/lib/components/action/models/action-confirmation-service.model.mjs +0 -0
  174. /package/{esm2020 → esm2022}/lib/components/action/models/index.mjs +0 -0
  175. /package/{esm2020 → esm2022}/lib/components/form/formly/fields/index.mjs +0 -0
  176. /package/{esm2020 → esm2022}/lib/components/form/formly/formly.config.mjs +0 -0
  177. /package/{esm2020 → esm2022}/lib/components/form/formly/index.mjs +0 -0
  178. /package/{esm2020 → esm2022}/lib/components/form/formly/models/formly-config.model.mjs +0 -0
  179. /package/{esm2020 → esm2022}/lib/components/form/formly/models/formly-field.model.mjs +0 -0
  180. /package/{esm2020 → esm2022}/lib/components/form/formly/models/index.mjs +0 -0
  181. /package/{esm2020 → esm2022}/lib/components/form/formly/wrappers/index.mjs +0 -0
  182. /package/{esm2020 → esm2022}/lib/components/form/index.mjs +0 -0
  183. /package/{esm2020 → esm2022}/lib/components/form/models/field-action-context.model.mjs +0 -0
  184. /package/{esm2020 → esm2022}/lib/components/form/models/form-editor.interface.mjs +0 -0
  185. /package/{esm2020 → esm2022}/lib/components/form/models/index.mjs +0 -0
  186. /package/{esm2020 → esm2022}/lib/components/layout/index.mjs +0 -0
  187. /package/{esm2020 → esm2022}/lib/components/layout/services/index.mjs +0 -0
  188. /package/{esm2020 → esm2022}/lib/components/pages/index.mjs +0 -0
  189. /package/{esm2020 → esm2022}/lib/components/tableview/index.mjs +0 -0
  190. /package/{esm2020 → esm2022}/lib/components/tableview/models/index.mjs +0 -0
  191. /package/{esm2020 → esm2022}/lib/components/tableview/table/models/index.mjs +0 -0
  192. /package/{esm2020 → esm2022}/lib/components/tableview/table/models/table.interface.mjs +0 -0
  193. /package/{esm2020 → esm2022}/lib/data-providers/base.data-provider.mjs +0 -0
  194. /package/{esm2020 → esm2022}/lib/data-providers/editor.data-provider.mjs +0 -0
  195. /package/{esm2020 → esm2022}/lib/data-providers/index.mjs +0 -0
  196. /package/{esm2020 → esm2022}/lib/data-providers/lookup.data-provider.mjs +0 -0
  197. /package/{esm2020 → esm2022}/lib/data-providers/table.data-provider.mjs +0 -0
  198. /package/{esm2020 → esm2022}/lib/data-providers/tableview-crud.data-provider.mjs +0 -0
  199. /package/{esm2020 → esm2022}/lib/data-providers/tableview.data-provider.mjs +0 -0
  200. /package/{esm2020 → esm2022}/lib/descriptors/action/action-button.descriptor.mjs +0 -0
  201. /package/{esm2020 → esm2022}/lib/descriptors/action/action-confirmation.descriptor.mjs +0 -0
  202. /package/{esm2020 → esm2022}/lib/descriptors/action/index.mjs +0 -0
  203. /package/{esm2020 → esm2022}/lib/descriptors/editor/field-validation.descriptor.mjs +0 -0
  204. /package/{esm2020 → esm2022}/lib/descriptors/editor/field.descriptor.mjs +0 -0
  205. /package/{esm2020 → esm2022}/lib/descriptors/editor/index.mjs +0 -0
  206. /package/{esm2020 → esm2022}/lib/descriptors/filter/filter.descriptor.mjs +0 -0
  207. /package/{esm2020 → esm2022}/lib/descriptors/filter/index.mjs +0 -0
  208. /package/{esm2020 → esm2022}/lib/descriptors/index.mjs +0 -0
  209. /package/{esm2020 → esm2022}/lib/descriptors/interfaces/field-config.interface.mjs +0 -0
  210. /package/{esm2020 → esm2022}/lib/descriptors/interfaces/index.mjs +0 -0
  211. /package/{esm2020 → esm2022}/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +0 -0
  212. /package/{esm2020 → esm2022}/lib/descriptors/model.descriptor.mjs +0 -0
  213. /package/{esm2020 → esm2022}/lib/descriptors/table/column.descriptor.mjs +0 -0
  214. /package/{esm2020 → esm2022}/lib/descriptors/table/index.mjs +0 -0
  215. /package/{esm2020 → esm2022}/lib/descriptors/tableview/index.mjs +0 -0
  216. /package/{esm2020 → esm2022}/lib/descriptors/types/action.type.mjs +0 -0
  217. /package/{esm2020 → esm2022}/lib/descriptors/types/column.type.mjs +0 -0
  218. /package/{esm2020 → esm2022}/lib/descriptors/types/editor.type.mjs +0 -0
  219. /package/{esm2020 → esm2022}/lib/descriptors/types/field.type.mjs +0 -0
  220. /package/{esm2020 → esm2022}/lib/descriptors/types/filter.type.mjs +0 -0
  221. /package/{esm2020 → esm2022}/lib/descriptors/types/index.mjs +0 -0
  222. /package/{esm2020 → esm2022}/lib/directives/index.mjs +0 -0
  223. /package/{esm2020 → esm2022}/lib/models/column-value.model.mjs +0 -0
  224. /package/{esm2020 → esm2022}/lib/models/config.model.mjs +0 -0
  225. /package/{esm2020 → esm2022}/lib/models/enum.model.mjs +0 -0
  226. /package/{esm2020 → esm2022}/lib/models/error-internal.model.mjs +0 -0
  227. /package/{esm2020 → esm2022}/lib/models/error.model.mjs +0 -0
  228. /package/{esm2020 → esm2022}/lib/models/index.mjs +0 -0
  229. /package/{esm2020 → esm2022}/lib/models/menu.model.mjs +0 -0
  230. /package/{esm2020 → esm2022}/lib/models/tableview-attr.model.mjs +0 -0
  231. /package/{esm2020 → esm2022}/lib/models/user.model.mjs +0 -0
  232. /package/{esm2020 → esm2022}/lib/models/version.model.mjs +0 -0
  233. /package/{esm2020 → esm2022}/lib/models/view-container.model.mjs +0 -0
  234. /package/{esm2020 → esm2022}/lib/pipes/index.mjs +0 -0
  235. /package/{esm2020 → esm2022}/lib/pipes/models/internal/enumrate-pipe-i18n.model.mjs +0 -0
  236. /package/{esm2020 → esm2022}/lib/pipes/models/internal/index.mjs +0 -0
  237. /package/{esm2020 → esm2022}/lib/provide-commons.mjs +0 -0
  238. /package/{esm2020 → esm2022}/lib/router/index.mjs +0 -0
  239. /package/{esm2020 → esm2022}/lib/router/models/index.mjs +0 -0
  240. /package/{esm2020 → esm2022}/lib/router/models/router.model.mjs +0 -0
  241. /package/{esm2020 → esm2022}/lib/router/tableview-route-builder.mjs +0 -0
  242. /package/{esm2020 → esm2022}/lib/security/authorization.util.mjs +0 -0
  243. /package/{esm2020 → esm2022}/lib/security/index.mjs +0 -0
  244. /package/{esm2020 → esm2022}/lib/security/model/authorization.type.mjs +0 -0
  245. /package/{esm2020 → esm2022}/lib/security/model/index.mjs +0 -0
  246. /package/{esm2020 → esm2022}/lib/security/model/permission-service.interface.mjs +0 -0
  247. /package/{esm2020 → esm2022}/lib/security/model/permissions.model.mjs +0 -0
  248. /package/{esm2020 → esm2022}/lib/services/error-mapper.service.mjs +0 -0
  249. /package/{esm2020 → esm2022}/lib/services/index.mjs +0 -0
  250. /package/{esm2020 → esm2022}/lib/services/internal/commons-init.provider.mjs +0 -0
  251. /package/{esm2020 → esm2022}/lib/services/internal/index.mjs +0 -0
  252. /package/{esm2020 → esm2022}/lib/services/providers/config-service.provider.mjs +0 -0
  253. /package/{esm2020 → esm2022}/lib/services/providers/formly-config.provider.mjs +0 -0
  254. /package/{esm2020 → esm2022}/lib/services/providers/index.mjs +0 -0
  255. /package/{esm2020 → esm2022}/lib/services/tokens/browser-storage.token.mjs +0 -0
  256. /package/{esm2020 → esm2022}/lib/services/tokens/commons-init.token.mjs +0 -0
  257. /package/{esm2020 → esm2022}/lib/services/tokens/default-setting.token.mjs +0 -0
  258. /package/{esm2020 → esm2022}/lib/services/tokens/index.mjs +0 -0
  259. /package/{esm2020 → esm2022}/lib/services/tokens/module-config.token.mjs +0 -0
  260. /package/{esm2020 → esm2022}/lib/styles/button-style.builder.mjs +0 -0
  261. /package/{esm2020 → esm2022}/lib/styles/index.mjs +0 -0
  262. /package/{esm2020 → esm2022}/lib/styles/models/index.mjs +0 -0
  263. /package/{esm2020 → esm2022}/lib/styles/models/style-level.enum.mjs +0 -0
  264. /package/{esm2020 → esm2022}/lib/styles/models/style-size.enum.mjs +0 -0
  265. /package/{esm2020 → esm2022}/lib/types/i18n.type.mjs +0 -0
  266. /package/{esm2020 → esm2022}/lib/types/index.mjs +0 -0
  267. /package/{esm2020 → esm2022}/lib/types/mng-localstorage-config-value.type.mjs +0 -0
  268. /package/{esm2020 → esm2022}/lib/types/type.decorator.mjs +0 -0
  269. /package/{esm2020 → esm2022}/lib/utils/action-data-provider.util.mjs +0 -0
  270. /package/{esm2020 → esm2022}/lib/utils/editor-formly.util.mjs +0 -0
  271. /package/{esm2020 → esm2022}/lib/utils/enum.util.mjs +0 -0
  272. /package/{esm2020 → esm2022}/lib/utils/export.util.mjs +0 -0
  273. /package/{esm2020 → esm2022}/lib/utils/file.util.mjs +0 -0
  274. /package/{esm2020 → esm2022}/lib/utils/i18n.util.mjs +0 -0
  275. /package/{esm2020 → esm2022}/lib/utils/index.mjs +0 -0
  276. /package/{esm2020 → esm2022}/lib/utils/model.util.mjs +0 -0
  277. /package/{esm2020 → esm2022}/lib/utils/notification.util.mjs +0 -0
  278. /package/{esm2020 → esm2022}/lib/utils/object.util.mjs +0 -0
  279. /package/{esm2020 → esm2022}/lib/utils/route.util.mjs +0 -0
  280. /package/{esm2020 → esm2022}/lib/utils/string.util.mjs +0 -0
  281. /package/{esm2020 → esm2022}/lib/validators/field.validator.mjs +0 -0
  282. /package/{esm2020 → esm2022}/lib/validators/index.mjs +0 -0
  283. /package/{esm2020 → esm2022}/mediusinc-mng-commons.mjs +0 -0
@@ -1,19 +0,0 @@
1
- import { NgForOf } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { FieldType, FormlyModule } from '@ngx-formly/core';
4
- import { TranslateModule } from '@ngx-translate/core';
5
- import { TabViewModule } from 'primeng/tabview';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "primeng/tabview";
8
- import * as i2 from "primeng/api";
9
- import * as i3 from "@ngx-translate/core";
10
- import * as i4 from "@ngx-formly/core";
11
- export class MngFormlyFieldTabsComponent extends FieldType {
12
- }
13
- MngFormlyFieldTabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: MngFormlyFieldTabsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
14
- MngFormlyFieldTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: MngFormlyFieldTabsComponent, isStandalone: true, selector: "mng-formly-field-tabs", usesInheritance: true, ngImport: i0, template: "<p-tabView>\n <p-tabPanel\n *ngFor=\"let tab of field.fieldGroup; let i = index; let last = last\"\n [header]=\"tab.props?.label! | translate\"\n [headerStyleClass]=\"$any(formControl!.valid ? 'p-tabview-title' : null)\">\n <ng-template pTemplate=\"header\">\n <span class=\"p-tabview-title\" [class.p-tabview-title-error]=\"formState.submittedOn && formState['tab_' + (tab.id ? tab.id : tab.props?.label!) + '_invalid']\">{{\n tab.props?.label! | translate\n }}</span>\n </ng-template>\n <formly-field [field]=\"tab\"></formly-field>\n </p-tabPanel>\n</p-tabView>\n", dependencies: [{ kind: "ngmodule", type: TabViewModule }, { kind: "component", type: i1.TabView, selector: "p-tabView", inputs: ["orientation", "style", "styleClass", "controlClose", "scrollable", "activeIndex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i1.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i4.FormlyField, selector: "formly-field", inputs: ["field"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: MngFormlyFieldTabsComponent, decorators: [{
16
- type: Component,
17
- args: [{ standalone: true, selector: 'mng-formly-field-tabs', imports: [TabViewModule, NgForOf, TranslateModule, FormlyModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<p-tabView>\n <p-tabPanel\n *ngFor=\"let tab of field.fieldGroup; let i = index; let last = last\"\n [header]=\"tab.props?.label! | translate\"\n [headerStyleClass]=\"$any(formControl!.valid ? 'p-tabview-title' : null)\">\n <ng-template pTemplate=\"header\">\n <span class=\"p-tabview-title\" [class.p-tabview-title-error]=\"formState.submittedOn && formState['tab_' + (tab.id ? tab.id : tab.props?.label!) + '_invalid']\">{{\n tab.props?.label! | translate\n }}</span>\n </ng-template>\n <formly-field [field]=\"tab\"></formly-field>\n </p-tabPanel>\n</p-tabView>\n" }]
18
- }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtdGFicy9mb3JtbHktZmllbGQtdGFicy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC10YWJzL2Zvcm1seS1maWVsZC10YWJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDekQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBVzlDLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxTQUErQjs7d0hBQW5FLDJCQUEyQjs0R0FBM0IsMkJBQTJCLHdHQ2hCeEMsNm9CQWFBLDJDREFjLGFBQWEsb21CQUFFLE9BQU8sa0hBQUUsZUFBZSwyRkFBRSxZQUFZOzJGQUd0RCwyQkFBMkI7a0JBUHZDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLHVCQUF1QixXQUV4QixDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksQ0FBQyxtQkFDL0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdGb3JPZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7RmllbGRUeXBlLCBGb3JtbHlNb2R1bGV9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtUYWJWaWV3TW9kdWxlfSBmcm9tICdwcmltZW5nL3RhYnZpZXcnO1xuXG5pbXBvcnQge01uZ0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWZvcm1seS1maWVsZC10YWJzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybWx5LWZpZWxkLXRhYnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtUYWJWaWV3TW9kdWxlLCBOZ0Zvck9mLCBUcmFuc2xhdGVNb2R1bGUsIEZvcm1seU1vZHVsZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW5nRm9ybWx5RmllbGRUYWJzQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPE1uZ0Zvcm1seUZpZWxkQ29uZmlnPiB7fVxuIiwiPHAtdGFiVmlldz5cbiAgICA8cC10YWJQYW5lbFxuICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIGZpZWxkLmZpZWxkR3JvdXA7IGxldCBpID0gaW5kZXg7IGxldCBsYXN0ID0gbGFzdFwiXG4gICAgICAgIFtoZWFkZXJdPVwidGFiLnByb3BzPy5sYWJlbCEgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaGVhZGVyU3R5bGVDbGFzc109XCIkYW55KGZvcm1Db250cm9sIS52YWxpZCA/ICdwLXRhYnZpZXctdGl0bGUnIDogbnVsbClcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXRhYnZpZXctdGl0bGVcIiBbY2xhc3MucC10YWJ2aWV3LXRpdGxlLWVycm9yXT1cImZvcm1TdGF0ZS5zdWJtaXR0ZWRPbiAmJiBmb3JtU3RhdGVbJ3RhYl8nICsgKHRhYi5pZCA/IHRhYi5pZCA6IHRhYi5wcm9wcz8ubGFiZWwhKSArICdfaW52YWxpZCddXCI+e3tcbiAgICAgICAgICAgICAgICB0YWIucHJvcHM/LmxhYmVsISB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxmb3JtbHktZmllbGQgW2ZpZWxkXT1cInRhYlwiPjwvZm9ybWx5LWZpZWxkPlxuICAgIDwvcC10YWJQYW5lbD5cbjwvcC10YWJWaWV3PlxuIl19
@@ -1,49 +0,0 @@
1
- export class MngFormEditorSubmitEvent {
2
- constructor(formItem) {
3
- this.formItem = formItem;
4
- this.success = true;
5
- }
6
- }
7
- export var MngFormFieldEventTypeEnum;
8
- (function (MngFormFieldEventTypeEnum) {
9
- MngFormFieldEventTypeEnum["ComponentLifecycle"] = "ComponentLifecycle";
10
- MngFormFieldEventTypeEnum["ValueChange"] = "ValueChange";
11
- MngFormFieldEventTypeEnum["DataProvider"] = "DataProvider";
12
- MngFormFieldEventTypeEnum["DialogLifecycle"] = "DialogLifecycle";
13
- MngFormFieldEventTypeEnum["Other"] = "Other";
14
- })(MngFormFieldEventTypeEnum || (MngFormFieldEventTypeEnum = {}));
15
- export var MngFormEventTypeEnum;
16
- (function (MngFormEventTypeEnum) {
17
- MngFormEventTypeEnum["ComponentLifecycle"] = "ComponentLifecycle";
18
- MngFormEventTypeEnum["ValueChange"] = "ValueChange";
19
- MngFormEventTypeEnum["Submit"] = "Submit";
20
- MngFormEventTypeEnum["Other"] = "Other";
21
- })(MngFormEventTypeEnum || (MngFormEventTypeEnum = {}));
22
- export class MngFormFieldEventComponentSubtype {
23
- }
24
- MngFormFieldEventComponentSubtype.ON_INIT = 'Component.OnInit';
25
- MngFormFieldEventComponentSubtype.ON_VIEW_INIT = 'Component.OnViewInit';
26
- MngFormFieldEventComponentSubtype.ON_CONTENT_INIT = 'Component.OnContentInit';
27
- MngFormFieldEventComponentSubtype.ON_DESTROY = 'Component.OnDestroy';
28
- export class MngFormFieldEventDialogSubtype {
29
- }
30
- MngFormFieldEventDialogSubtype.VISIBILITY = 'Dialog.Visibility';
31
- MngFormFieldEventDialogSubtype.TABLE_CAPTION_COMPONENT_INSTANCE = 'Dialog.MngTable.CaptionComponentInstance';
32
- MngFormFieldEventDialogSubtype.TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE = 'Dialog.MngTable.ColumnActionsComponentInstance';
33
- export class MngFormFieldEvent {
34
- constructor(type, componentType, componentInstance, data = {}) {
35
- this.type = type;
36
- this.componentType = componentType;
37
- this.componentInstance = componentInstance;
38
- this.data = data;
39
- }
40
- }
41
- export class MngFormEvent {
42
- constructor(type, componentType, componentInstance, data = {}) {
43
- this.type = type;
44
- this.componentType = componentType;
45
- this.componentInstance = componentInstance;
46
- this.data = data;
47
- }
48
- }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lZGl0b3IuZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9tb2RlbHMvZm9ybS1lZGl0b3IuZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLHdCQUF3QjtJQUdqQyxZQUE0QixRQUFXO1FBQVgsYUFBUSxHQUFSLFFBQVEsQ0FBRztRQUZoQyxZQUFPLEdBQUcsSUFBSSxDQUFDO0lBRW9CLENBQUM7Q0FDOUM7QUFFRCxNQUFNLENBQU4sSUFBWSx5QkFNWDtBQU5ELFdBQVkseUJBQXlCO0lBQ2pDLHNFQUF5QyxDQUFBO0lBQ3pDLHdEQUEyQixDQUFBO0lBQzNCLDBEQUE2QixDQUFBO0lBQzdCLGdFQUFtQyxDQUFBO0lBQ25DLDRDQUFlLENBQUE7QUFDbkIsQ0FBQyxFQU5XLHlCQUF5QixLQUF6Qix5QkFBeUIsUUFNcEM7QUFFRCxNQUFNLENBQU4sSUFBWSxvQkFLWDtBQUxELFdBQVksb0JBQW9CO0lBQzVCLGlFQUF5QyxDQUFBO0lBQ3pDLG1EQUEyQixDQUFBO0lBQzNCLHlDQUFpQixDQUFBO0lBQ2pCLHVDQUFlLENBQUE7QUFDbkIsQ0FBQyxFQUxXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFLL0I7QUFFRCxNQUFNLE9BQU8saUNBQWlDOztBQUNuQix5Q0FBTyxHQUFHLGtCQUFrQixDQUFDO0FBQzdCLDhDQUFZLEdBQUcsc0JBQXNCLENBQUM7QUFDdEMsaURBQWUsR0FBRyx5QkFBeUIsQ0FBQztBQUM1Qyw0Q0FBVSxHQUFHLHFCQUFxQixDQUFDO0FBRzlELE1BQU0sT0FBTyw4QkFBOEI7O0FBQ2hCLHlDQUFVLEdBQUcsbUJBQW1CLENBQUM7QUFDakMsK0RBQWdDLEdBQUcsMENBQTBDLENBQUM7QUFDOUUsc0VBQXVDLEdBQUcsZ0RBQWdELENBQUM7QUFtQnRILE1BQU0sT0FBTyxpQkFBaUI7SUFDMUIsWUFDb0IsSUFBK0IsRUFDL0IsYUFBd0IsRUFDeEIsaUJBQXNCLEVBQ3RCLE9BQXFDLEVBQUU7UUFIdkMsU0FBSSxHQUFKLElBQUksQ0FBMkI7UUFDL0Isa0JBQWEsR0FBYixhQUFhLENBQVc7UUFDeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFLO1FBQ3RCLFNBQUksR0FBSixJQUFJLENBQW1DO0lBQ3hELENBQUM7Q0FDUDtBQUVELE1BQU0sT0FBTyxZQUFZO0lBQ3JCLFlBQ29CLElBQTBCLEVBQzFCLGFBQXdCLEVBQ3hCLGlCQUFzQixFQUN0QixPQUE4QixFQUFFO1FBSGhDLFNBQUksR0FBSixJQUFJLENBQXNCO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFXO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBSztRQUN0QixTQUFJLEdBQUosSUFBSSxDQUE0QjtJQUNqRCxDQUFDO0NBQ1AiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgTW5nRm9ybUVkaXRvclN1Ym1pdEV2ZW50PFQ+IHtcbiAgICBwdWJsaWMgc3VjY2VzcyA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgZm9ybUl0ZW06IFQpIHt9XG59XG5cbmV4cG9ydCBlbnVtIE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0ge1xuICAgIENvbXBvbmVudExpZmVjeWNsZSA9ICdDb21wb25lbnRMaWZlY3ljbGUnLFxuICAgIFZhbHVlQ2hhbmdlID0gJ1ZhbHVlQ2hhbmdlJyxcbiAgICBEYXRhUHJvdmlkZXIgPSAnRGF0YVByb3ZpZGVyJyxcbiAgICBEaWFsb2dMaWZlY3ljbGUgPSAnRGlhbG9nTGlmZWN5Y2xlJyxcbiAgICBPdGhlciA9ICdPdGhlcidcbn1cblxuZXhwb3J0IGVudW0gTW5nRm9ybUV2ZW50VHlwZUVudW0ge1xuICAgIENvbXBvbmVudExpZmVjeWNsZSA9ICdDb21wb25lbnRMaWZlY3ljbGUnLFxuICAgIFZhbHVlQ2hhbmdlID0gJ1ZhbHVlQ2hhbmdlJyxcbiAgICBTdWJtaXQgPSAnU3VibWl0JyxcbiAgICBPdGhlciA9ICdPdGhlcidcbn1cblxuZXhwb3J0IGNsYXNzIE1uZ0Zvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZSB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBPTl9JTklUID0gJ0NvbXBvbmVudC5PbkluaXQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT05fVklFV19JTklUID0gJ0NvbXBvbmVudC5PblZpZXdJbml0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9OX0NPTlRFTlRfSU5JVCA9ICdDb21wb25lbnQuT25Db250ZW50SW5pdCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBPTl9ERVNUUk9ZID0gJ0NvbXBvbmVudC5PbkRlc3Ryb3knO1xufVxuXG5leHBvcnQgY2xhc3MgTW5nRm9ybUZpZWxkRXZlbnREaWFsb2dTdWJ0eXBlIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFZJU0lCSUxJVFkgPSAnRGlhbG9nLlZpc2liaWxpdHknO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVEFCTEVfQ0FQVElPTl9DT01QT05FTlRfSU5TVEFOQ0UgPSAnRGlhbG9nLk1uZ1RhYmxlLkNhcHRpb25Db21wb25lbnRJbnN0YW5jZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBUQUJMRV9DT0xVTU5fQUNUSU9OU19DT01QT05FTlRfSU5TVEFOQ0UgPSAnRGlhbG9nLk1uZ1RhYmxlLkNvbHVtbkFjdGlvbnNDb21wb25lbnRJbnN0YW5jZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW5nRm9ybUZpZWxkRXZlbnREYXRhPFQsIEVUPiB7XG4gICAgZXZlbnRTdWJ0eXBlPzogc3RyaW5nO1xuICAgIHZhbHVlPzogVDtcbiAgICBmb3JtVmFsdWU/OiBFVDtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW5nRmllbGRFdmVudERhdGE8RVQ+IHtcbiAgICBldmVudFN1YnR5cGU/OiBzdHJpbmc7XG4gICAgdmFsdWU/OiBhbnk7IC8vIGRpcmVjdCB2YWx1ZSBmcm9tIGZvcm0udmFsdWVDaGFuZ2VzLCBkaXNhYmxlZCBmaWVsZCB2YWx1ZXMgYW5kIHNldHRlcnMgYXJlIG5vdCBpbmNsdWRlZFxuICAgIGZvcm1WYWx1ZT86ICgpID0+IEVUOyAvLyBmdW5jdGlvbiB0aGF0IHJldHVybnMgY2FsY3VsYXRlZCBmb3JtIHZhbHVlXG4gICAgc3VibWl0VmFsaWQ/OiBib29sZWFuOyAvLyB0cnVlIGlmIGZvcm0gaXMgdmFsaWRcbiAgICBzdWJtaXRWYWx1ZT86IEVUOyAvLyB2YWx1ZSBvbiBzdWJtaXRcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBjbGFzcyBNbmdGb3JtRmllbGRFdmVudDxULCBFVD4ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bSxcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGNvbXBvbmVudFR5cGU6IFR5cGU8YW55PixcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGNvbXBvbmVudEluc3RhbmNlOiBhbnksXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBkYXRhOiBNbmdGb3JtRmllbGRFdmVudERhdGE8VCwgRVQ+ID0ge31cbiAgICApIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBNbmdGb3JtRXZlbnQ8RVQ+IHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHR5cGU6IE1uZ0Zvcm1FdmVudFR5cGVFbnVtLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgY29tcG9uZW50VHlwZTogVHlwZTxhbnk+LFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgY29tcG9uZW50SW5zdGFuY2U6IGFueSxcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGRhdGE6IE1uZ0ZpZWxkRXZlbnREYXRhPEVUPiA9IHt9XG4gICAgKSB7fVxufVxuIl19
@@ -1,19 +0,0 @@
1
- import { AsyncPipe } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { BreadcrumbModule } from 'primeng/breadcrumb';
4
- import { MngCommonsService } from '../../services';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../../services";
7
- import * as i2 from "primeng/breadcrumb";
8
- export class MngBreadcrumbComponent {
9
- constructor(mngCommons) {
10
- this.mngCommons = mngCommons;
11
- }
12
- }
13
- MngBreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: MngBreadcrumbComponent, deps: [{ token: i1.MngCommonsService }], target: i0.ɵɵFactoryTarget.Component });
14
- MngBreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: MngBreadcrumbComponent, isStandalone: true, selector: "mng-breadcrumb", ngImport: i0, template: "<div class=\"layout-breadcrumb-container\">\n <div class=\"layout-breadcrumb\">\n <p-breadcrumb [home]=\"$any(mngCommons.breadcrumbHome$ | async)\" [model]=\"$any(mngCommons.breadcrumbs$ | async)\" styleClass=\"layout-breadcrumb py-2\"></p-breadcrumb>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: BreadcrumbModule }, { kind: "component", type: i2.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: MngBreadcrumbComponent, decorators: [{
16
- type: Component,
17
- args: [{ standalone: true, selector: 'mng-breadcrumb', imports: [BreadcrumbModule, AsyncPipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-breadcrumb-container\">\n <div class=\"layout-breadcrumb\">\n <p-breadcrumb [home]=\"$any(mngCommons.breadcrumbHome$ | async)\" [model]=\"$any(mngCommons.breadcrumbs$ | async)\" styleClass=\"layout-breadcrumb py-2\"></p-breadcrumb>\n </div>\n</div>\n" }]
18
- }], ctorParameters: function () { return [{ type: i1.MngCommonsService }]; } });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbGF5b3V0L2JyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2xheW91dC9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7O0FBU2pELE1BQU0sT0FBTyxzQkFBc0I7SUFDL0IsWUFBbUIsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7SUFBRyxDQUFDOzttSEFEM0Msc0JBQXNCO3VHQUF0QixzQkFBc0IsMEVDZG5DLDZSQUtBLDJDRE1jLGdCQUFnQiw2TEFBRSxTQUFTOzJGQUc1QixzQkFBc0I7a0JBUGxDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLGdCQUFnQixXQUVqQixDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxtQkFDckIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtCcmVhZGNydW1iTW9kdWxlfSBmcm9tICdwcmltZW5nL2JyZWFkY3J1bWInO1xuXG5pbXBvcnQge01uZ0NvbW1vbnNTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctYnJlYWRjcnVtYicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtCcmVhZGNydW1iTW9kdWxlLCBBc3luY1BpcGVdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0JyZWFkY3J1bWJDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBtbmdDb21tb25zOiBNbmdDb21tb25zU2VydmljZSkge31cbn1cbiIsIjxkaXYgY2xhc3M9XCJsYXlvdXQtYnJlYWRjcnVtYi1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LWJyZWFkY3J1bWJcIj5cbiAgICAgICAgPHAtYnJlYWRjcnVtYiBbaG9tZV09XCIkYW55KG1uZ0NvbW1vbnMuYnJlYWRjcnVtYkhvbWUkIHwgYXN5bmMpXCIgW21vZGVsXT1cIiRhbnkobW5nQ29tbW9ucy5icmVhZGNydW1icyQgfCBhc3luYylcIiBzdHlsZUNsYXNzPVwibGF5b3V0LWJyZWFkY3J1bWIgcHktMlwiPjwvcC1icmVhZGNydW1iPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,294 +0,0 @@
1
- import { animate, state, style, transition, trigger } from '@angular/animations';
2
- import { AsyncPipe, NgClass, NgForOf, NgIf } from '@angular/common';
3
- import { Component, EventEmitter, HostBinding, Injector, Input, Output } from '@angular/core';
4
- import { ActivatedRoute, GuardsCheckEnd, NavigationEnd, Router, RouterLink, RouterLinkActive } from '@angular/router';
5
- import { TranslateModule } from '@ngx-translate/core';
6
- import { RippleModule } from 'primeng/ripple';
7
- import { BehaviorSubject, Observable, combineLatest, distinctUntilChanged, from, of } from 'rxjs';
8
- import { first, map } from 'rxjs/operators';
9
- import { MngAuthorizationService } from '../../security';
10
- import { MngCommonsService, MngRouterService } from '../../services';
11
- import { RouteUtil } from '../../utils/route.util';
12
- import { MngMainLayoutComponentService } from './services';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "@angular/router";
15
- import * as i2 from "../../services";
16
- import * as i3 from "../../security";
17
- import * as i4 from "./services";
18
- import * as i5 from "@ngx-translate/core";
19
- import * as i6 from "primeng/ripple";
20
- export class MngMenuItemComponent {
21
- constructor(injector, router, route, mngRouter, authorization, mngCommons, mainLayoutService) {
22
- this.injector = injector;
23
- this.router = router;
24
- this.route = route;
25
- this.mngRouter = mngRouter;
26
- this.authorization = authorization;
27
- this.mngCommons = mngCommons;
28
- this.mainLayoutService = mainLayoutService;
29
- this.index = 0;
30
- this.root = false;
31
- this.parentKey = null;
32
- this.visibleChangeEventEmitter = new EventEmitter();
33
- this.hostClassNoPadding = false;
34
- this.hostClassChildrenHidden = false;
35
- this.key = '';
36
- this.active = false;
37
- this.hover = false;
38
- this.guardsIsAllowedSubject = new BehaviorSubject(true);
39
- this.isPermittedSubject = new BehaviorSubject(true);
40
- this.isVisibleSubject = new BehaviorSubject(true);
41
- this.childrenVisibilitySubject = [];
42
- this.guardsIsAllowed$ = this.guardsIsAllowedSubject.asObservable().pipe(distinctUntilChanged());
43
- this.isPermitted$ = this.isPermittedSubject.asObservable().pipe(distinctUntilChanged());
44
- this.isVisible$ = this.isVisibleSubject.asObservable().pipe(distinctUntilChanged());
45
- }
46
- ngOnInit() {
47
- this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);
48
- if (this.item.routerLink) {
49
- if (typeof this.item.routerLink === 'string') {
50
- this.itemUrl = this.item.routerLink;
51
- }
52
- else {
53
- this.itemUrl = this.router.parseUrl(this.item.routerLink.join('/'));
54
- }
55
- }
56
- if (!this.mngCommons.menuModeIsSlim && this.item.routerLink) {
57
- this.updateActiveStateFromRoute();
58
- }
59
- this.menuSourceSubscription = this.mngCommons.menuActiveKey$.subscribe(key => {
60
- // deactivate current active menu
61
- if (this.active && this.key !== key && key.indexOf(this.key) !== 0) {
62
- this.active = false;
63
- }
64
- });
65
- this.menuResetSubscription = this.mngCommons.menuReset$.subscribe(() => {
66
- this.active = false;
67
- });
68
- if (this.item.lazyChildren) {
69
- this.routeLoadedChildrenSubscription = this.mngRouter.getRouteLoadedChildren$(this.item.routerLink ?? '/').subscribe({
70
- next: routes => {
71
- let menuItems = routes.filter(r => Array.isArray(r.data?.menuItems)).flatMap(r => r.data.menuItems);
72
- menuItems = RouteUtil.adjustMenuLazyChildrenRouterLinks(this.item, menuItems);
73
- this.item.items = menuItems;
74
- this.item.lazyChildren = false;
75
- this.processItemChildrenVisibility();
76
- }
77
- });
78
- }
79
- this.routerEventsSubscription = this.router.events.subscribe(next => {
80
- if (next instanceof GuardsCheckEnd && next.shouldActivate) {
81
- this.checkIfMenuItemIsAllowedFromGuard(next.state);
82
- }
83
- else if (next instanceof NavigationEnd) {
84
- if (this.mngCommons.menuModeIsSlim && !this.mainLayoutService.isMobile()) {
85
- this.active = false;
86
- }
87
- else {
88
- this.updateActiveStateFromRoute();
89
- }
90
- }
91
- });
92
- if (this.item.permissions) {
93
- this.isPermittedSubscription = this.authorization.isPermitted(this.item.permissions).subscribe({
94
- next: isPermitted => {
95
- this.isPermittedSubject.next(isPermitted);
96
- }
97
- });
98
- }
99
- this.checkIfMenuItemIsAllowedFromGuard(this.router.routerState.snapshot);
100
- this.isVisibleCombinedSubscription = combineLatest([of(this.item.visible !== false), this.isPermitted$, this.guardsIsAllowed$]).subscribe({
101
- next: res => {
102
- const isVisible = res.every(r => r === true);
103
- this.hostClassNoPadding = !isVisible;
104
- this.isVisibleSubject.next(isVisible);
105
- }
106
- });
107
- this.isVisibleSubscription = this.isVisible$.subscribe(v => {
108
- this.visibleChangeEventEmitter.emit(v);
109
- });
110
- this.processItemChildrenVisibility();
111
- }
112
- updateActiveStateFromRoute() {
113
- if (this.itemUrl) {
114
- this.active = this.router.isActive(this.itemUrl, {
115
- matrixParams: 'ignored',
116
- queryParams: 'ignored',
117
- paths: this.item.items ? 'subset' : 'exact',
118
- fragment: 'ignored'
119
- });
120
- }
121
- else {
122
- this.active = false;
123
- }
124
- }
125
- itemClick(event) {
126
- // avoid processing disabled items
127
- if (this.item.disabled) {
128
- event.preventDefault();
129
- return;
130
- }
131
- // navigate with hover in horizontal mode
132
- if (this.root) {
133
- this.mainLayoutService.menuHoverActive = !this.mainLayoutService.menuHoverActive;
134
- }
135
- // notify other items
136
- this.mngCommons.menuChangeActiveKey(this.key);
137
- // toggle active state
138
- if (this.item.items) {
139
- this.active = !this.active;
140
- }
141
- else {
142
- // activate item
143
- this.active = true;
144
- if (this.mainLayoutService.isMobile()) {
145
- this.mainLayoutService.staticMenuMobileActive = false;
146
- }
147
- if (this.mngCommons.menuModeIsOverlay) {
148
- this.mainLayoutService.overlayMenuActive = false;
149
- }
150
- // reset horizontal menu
151
- if (this.mngCommons.menuModeIsSlim && !this.mainLayoutService.isMobile()) {
152
- this.mngCommons.menuReset();
153
- this.mainLayoutService.menuHoverActive = false;
154
- }
155
- }
156
- }
157
- onMouseEnter() {
158
- // activate item on hover
159
- if (this.root && this.mainLayoutService.menuHoverActive && this.mngCommons.menuModeIsSlim && this.mainLayoutService.isDesktop()) {
160
- this.mngCommons.menuChangeActiveKey(this.key);
161
- this.active = true;
162
- }
163
- }
164
- ngOnDestroy() {
165
- this.menuSourceSubscription?.unsubscribe();
166
- this.menuResetSubscription?.unsubscribe();
167
- this.routerEventsSubscription?.unsubscribe();
168
- this.guardsIsAllowedSubscription?.unsubscribe();
169
- this.isPermittedSubscription?.unsubscribe();
170
- this.isVisibleSubscription?.unsubscribe();
171
- this.isVisibleCombinedSubscription?.unsubscribe();
172
- this.areChildrenVisibleSubscription?.unsubscribe();
173
- this.routeLoadedChildrenSubscription?.unsubscribe();
174
- }
175
- onChildVisibleChange(visible, item, idx) {
176
- this.childrenVisibilitySubject[idx].next(visible);
177
- }
178
- checkIfMenuItemIsAllowedFromGuard(routerState) {
179
- this.guardsIsAllowedSubscription?.unsubscribe();
180
- if (this.item.guards?.length) {
181
- const obs = [];
182
- for (const guard of this.item.guards) {
183
- const tokenInjectedInstance = this.injector.get(guard);
184
- if (tokenInjectedInstance && 'canActivate' in tokenInjectedInstance) {
185
- const guardInstance = tokenInjectedInstance;
186
- const canActivateRes = guardInstance.canActivate(this.route.snapshot, routerState);
187
- let canActivateObs;
188
- if (canActivateRes instanceof Observable) {
189
- canActivateObs = canActivateRes;
190
- }
191
- else if (canActivateRes instanceof Promise) {
192
- canActivateObs = from(canActivateRes);
193
- }
194
- else {
195
- canActivateObs = of(canActivateRes);
196
- }
197
- obs.push(canActivateObs.pipe(first(), map(res => res === true) // if url tree is present, that means redirect and implies not allowed
198
- ));
199
- }
200
- }
201
- this.guardsIsAllowedSubscription = combineLatest(obs)
202
- .pipe(first())
203
- .subscribe(next => {
204
- const result = next.every(n => n === true);
205
- this.guardsIsAllowedSubject.next(result);
206
- });
207
- }
208
- else {
209
- this.guardsIsAllowedSubject.next(true);
210
- }
211
- }
212
- processItemChildrenVisibility() {
213
- if (this.item.items) {
214
- this.childrenVisibilitySubject = this.item.items.map(() => new BehaviorSubject(true));
215
- this.areChildrenVisibleSubscription = combineLatest(this.childrenVisibilitySubject.map(s => s.asObservable().pipe(distinctUntilChanged()))).subscribe(visible => {
216
- const anyChildVisible = visible.some(v => v === true);
217
- this.hostClassChildrenHidden = !anyChildVisible;
218
- });
219
- }
220
- }
221
- }
222
- MngMenuItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: MngMenuItemComponent, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.MngRouterService }, { token: i3.MngAuthorizationService }, { token: i2.MngCommonsService }, { token: i4.MngMainLayoutComponentService }], target: i0.ɵɵFactoryTarget.Component });
223
- MngMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: MngMenuItemComponent, isStandalone: true, selector: "[mng-menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey" }, outputs: { visibleChangeEventEmitter: "visibleChange" }, host: { properties: { "class.layout-root-menuitem": "root", "class.active-menuitem": "active", "class.py-0": "this.hostClassNoPadding", "class.hidden": "this.hostClassChildrenHidden" } }, ngImport: i0, template: "<ng-container *ngIf=\"isVisible$ | async\">\n <div *ngIf=\"root\" class=\"layout-menuitem-root-text\">\n {{ item.label! | translate }}\n </div>\n <a\n *ngIf=\"!item.routerLink || item.items\"\n [attr.href]=\"item.href\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (keydown.enter)=\"itemClick($event)\"\n [routerLink]=\"item.routerLink\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items || item.lazyChildren\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{ item.badge }}</span>\n </a>\n <a\n *ngIf=\"item.routerLink && !item.items\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"hover = true\"\n (mouseleave)=\"hover = false\"\n [routerLink]=\"item.routerLink\"\n routerLinkActive=\"active-menuitem-routerlink\"\n [routerLinkActiveOptions]=\"{paths: 'exact', matrixParams: 'ignored', queryParams: 'ignored', fragment: 'ignored'}\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items || item.lazyChildren\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{ item.badge }}</span>\n </a>\n <ul\n *ngIf=\"item.items || (item.items && (mngCommons.menuModeIsStatic$ | async) && root)\"\n [@children]=\"\n (mngCommons.menuModeIsSlim$ | async) && (mainLayoutService.isMobile$ | async) === false && root\n ? active\n ? 'visible'\n : 'hidden'\n : (mngCommons.menuModeIsStatic$ | async) && root && (mainLayoutService.isMobile$ | async) === false\n ? 'visible'\n : active\n ? 'visibleAnimated'\n : 'hiddenAnimated'\n \">\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\n <li mng-menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeClassName\" (visibleChange)=\"onChildVisibleChange($event, item, i)\"></li>\n </ng-template>\n </ul>\n</ng-container>\n", dependencies: [{ kind: "component", type: MngMenuItemComponent, selector: "[mng-menuitem]", inputs: ["item", "index", "root", "parentKey"], outputs: ["visibleChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i6.Ripple, selector: "[pRipple]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], animations: [
224
- trigger('children', [
225
- state('void', style({
226
- height: '0px'
227
- })),
228
- state('hiddenAnimated', style({
229
- height: '0px'
230
- })),
231
- state('visibleAnimated', style({
232
- height: '*'
233
- })),
234
- state('visible', style({
235
- height: '*',
236
- 'z-index': 100
237
- })),
238
- state('hidden', style({
239
- height: '0px',
240
- 'z-index': '*'
241
- })),
242
- transition('visibleAnimated => hiddenAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
243
- transition('hiddenAnimated => visibleAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
244
- transition('void => visibleAnimated, visibleAnimated => void', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
245
- ])
246
- ] });
247
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: MngMenuItemComponent, decorators: [{
248
- type: Component,
249
- args: [{ standalone: true, selector: '[mng-menuitem]', host: {
250
- '[class.layout-root-menuitem]': 'root',
251
- '[class.active-menuitem]': 'active'
252
- }, imports: [AsyncPipe, TranslateModule, NgClass, NgForOf, NgIf, RippleModule, RouterLink, RouterLinkActive], animations: [
253
- trigger('children', [
254
- state('void', style({
255
- height: '0px'
256
- })),
257
- state('hiddenAnimated', style({
258
- height: '0px'
259
- })),
260
- state('visibleAnimated', style({
261
- height: '*'
262
- })),
263
- state('visible', style({
264
- height: '*',
265
- 'z-index': 100
266
- })),
267
- state('hidden', style({
268
- height: '0px',
269
- 'z-index': '*'
270
- })),
271
- transition('visibleAnimated => hiddenAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
272
- transition('hiddenAnimated => visibleAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
273
- transition('void => visibleAnimated, visibleAnimated => void', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
274
- ])
275
- ], template: "<ng-container *ngIf=\"isVisible$ | async\">\n <div *ngIf=\"root\" class=\"layout-menuitem-root-text\">\n {{ item.label! | translate }}\n </div>\n <a\n *ngIf=\"!item.routerLink || item.items\"\n [attr.href]=\"item.href\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (keydown.enter)=\"itemClick($event)\"\n [routerLink]=\"item.routerLink\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items || item.lazyChildren\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{ item.badge }}</span>\n </a>\n <a\n *ngIf=\"item.routerLink && !item.items\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"hover = true\"\n (mouseleave)=\"hover = false\"\n [routerLink]=\"item.routerLink\"\n routerLinkActive=\"active-menuitem-routerlink\"\n [routerLinkActiveOptions]=\"{paths: 'exact', matrixParams: 'ignored', queryParams: 'ignored', fragment: 'ignored'}\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items || item.lazyChildren\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{ item.badge }}</span>\n </a>\n <ul\n *ngIf=\"item.items || (item.items && (mngCommons.menuModeIsStatic$ | async) && root)\"\n [@children]=\"\n (mngCommons.menuModeIsSlim$ | async) && (mainLayoutService.isMobile$ | async) === false && root\n ? active\n ? 'visible'\n : 'hidden'\n : (mngCommons.menuModeIsStatic$ | async) && root && (mainLayoutService.isMobile$ | async) === false\n ? 'visible'\n : active\n ? 'visibleAnimated'\n : 'hiddenAnimated'\n \">\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\n <li mng-menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeClassName\" (visibleChange)=\"onChildVisibleChange($event, item, i)\"></li>\n </ng-template>\n </ul>\n</ng-container>\n" }]
276
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.MngRouterService }, { type: i3.MngAuthorizationService }, { type: i2.MngCommonsService }, { type: i4.MngMainLayoutComponentService }]; }, propDecorators: { item: [{
277
- type: Input
278
- }], index: [{
279
- type: Input
280
- }], root: [{
281
- type: Input
282
- }], parentKey: [{
283
- type: Input
284
- }], visibleChangeEventEmitter: [{
285
- type: Output,
286
- args: ['visibleChange']
287
- }], hostClassNoPadding: [{
288
- type: HostBinding,
289
- args: ['class.py-0']
290
- }], hostClassChildrenHidden: [{
291
- type: HostBinding,
292
- args: ['class.hidden']
293
- }] } });
294
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9sYXlvdXQvbWVudS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9sYXlvdXQvbWVudS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDL0UsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUNILGNBQWMsRUFFZCxjQUFjLEVBRWQsYUFBYSxFQUNiLE1BQU0sRUFDTixVQUFVLEVBQ1YsZ0JBQWdCLEVBR25CLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsZUFBZSxFQUFFLFVBQVUsRUFBZ0IsYUFBYSxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUcsT0FBTyxFQUFDLEtBQUssRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUkxQyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxnQkFB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QUNMOzRCQUNELEtBQUssQ0FDRCxTQUFTLEVBQ1QsS0FBSyxDQUFDO2dDQUNGLE1BQU0sRUFBRSxHQUFHO2dDQUNYLFNBQVMsRUFBRSxHQUFHOzZCQUNqQixDQUFDLENBQ0w7NEJBQ0QsS0FBSyxDQUNELFFBQVEsRUFDUixLQUFLLENBQUM7Z0NBQ0YsTUFBTSxFQUFFLEtBQUs7Z0NBQ2IsU0FBUyxFQUFFLEdBQUc7NkJBQ2pCLENBQUMsQ0FDTDs0QkFDRCxVQUFVLENBQUMsbUNBQW1DLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7NEJBQ2hHLFVBQVUsQ0FBQyxtQ0FBbUMsRUFBRSxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQzs0QkFDaEcsVUFBVSxDQUFDLGtEQUFrRCxFQUFFLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO3lCQUNsSCxDQUFDO3FCQUNMO2tTQUlRLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRW1CLHlCQUF5QjtzQkFBakQsTUFBTTt1QkFBQyxlQUFlO2dCQUVZLGtCQUFrQjtzQkFBcEQsV0FBVzt1QkFBQyxZQUFZO2dCQUNZLHVCQUF1QjtzQkFBM0QsV0FBVzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtBc3luY1BpcGUsIE5nQ2xhc3MsIE5nRm9yT2YsIE5nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWN0aXZhdGVkUm91dGUsXG4gICAgQ2FuQWN0aXZhdGUsXG4gICAgR3VhcmRzQ2hlY2tFbmQsXG4gICAgSXNBY3RpdmVNYXRjaE9wdGlvbnMsXG4gICAgTmF2aWdhdGlvbkVuZCxcbiAgICBSb3V0ZXIsXG4gICAgUm91dGVyTGluayxcbiAgICBSb3V0ZXJMaW5rQWN0aXZlLFxuICAgIFJvdXRlclN0YXRlU25hcHNob3QsXG4gICAgVXJsVHJlZVxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1JpcHBsZU1vZHVsZX0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgY29tYmluZUxhdGVzdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZyb20sIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Zmlyc3QsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge01uZ01lbnVJdGVtfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdSb3V0ZXJEYXRhfSBmcm9tICcuLi8uLi9yb3V0ZXIvbW9kZWxzJztcbmltcG9ydCB7TW5nQXV0aG9yaXphdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlY3VyaXR5JztcbmltcG9ydCB7TW5nQ29tbW9uc1NlcnZpY2UsIE1uZ1JvdXRlclNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7Um91dGVVdGlsfSBmcm9tICcuLi8uLi91dGlscy9yb3V0ZS51dGlsJztcbmltcG9ydCB7TW5nTWFpbkxheW91dENvbXBvbmVudFNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbbW5nLW1lbnVpdGVtXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21lbnUtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLmxheW91dC1yb290LW1lbnVpdGVtXSc6ICdyb290JyxcbiAgICAgICAgJ1tjbGFzcy5hY3RpdmUtbWVudWl0ZW1dJzogJ2FjdGl2ZSdcbiAgICB9LFxuICAgIGltcG9ydHM6IFtBc3luY1BpcGUsIFRyYW5zbGF0ZU1vZHVsZSwgTmdDbGFzcywgTmdGb3JPZiwgTmdJZiwgUmlwcGxlTW9kdWxlLCBSb3V0ZXJMaW5rLCBSb3V0ZXJMaW5rQWN0aXZlXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2NoaWxkcmVuJywgW1xuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ3ZvaWQnLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMHB4J1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ2hpZGRlbkFuaW1hdGVkJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzBweCdcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICd2aXNpYmxlQW5pbWF0ZWQnLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnKidcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICd2aXNpYmxlJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJyonLFxuICAgICAgICAgICAgICAgICAgICAnei1pbmRleCc6IDEwMFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcwcHgnLFxuICAgICAgICAgICAgICAgICAgICAnei1pbmRleCc6ICcqJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndmlzaWJsZUFuaW1hdGVkID0+IGhpZGRlbkFuaW1hdGVkJywgYW5pbWF0ZSgnNDAwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpJykpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignaGlkZGVuQW5pbWF0ZWQgPT4gdmlzaWJsZUFuaW1hdGVkJywgYW5pbWF0ZSgnNDAwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpJykpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiB2aXNpYmxlQW5pbWF0ZWQsIHZpc2libGVBbmltYXRlZCA9PiB2b2lkJywgYW5pbWF0ZSgnNDAwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpJykpXG4gICAgICAgIF0pXG4gICAgXVxuICAgIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1uZ01lbnVJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGl0ZW0hOiBNbmdNZW51SXRlbTtcbiAgICBASW5wdXQoKSBpbmRleCA9IDA7XG4gICAgQElucHV0KCkgcm9vdCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHBhcmVudEtleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBAT3V0cHV0KCd2aXNpYmxlQ2hhbmdlJykgdmlzaWJsZUNoYW5nZUV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MucHktMCcpIHByaXZhdGUgaG9zdENsYXNzTm9QYWRkaW5nID0gZmFsc2U7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oaWRkZW4nKSBwcml2YXRlIGhvc3RDbGFzc0NoaWxkcmVuSGlkZGVuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMga2V5ID0gJyc7XG4gICAgcHVibGljIGFjdGl2ZSA9IGZhbHNlO1xuICAgIHB1YmxpYyBob3ZlciA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBndWFyZHNJc0FsbG93ZWRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcbiAgICBwcml2YXRlIGd1YXJkc0lzQWxsb3dlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgcHJpdmF0ZSBpc1Blcm1pdHRlZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xuICAgIHByaXZhdGUgaXNQZXJtaXR0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIHByaXZhdGUgaXNWaXNpYmxlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gICAgcHVibGljIGlzVmlzaWJsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBwcml2YXRlIGNoaWxkcmVuVmlzaWJpbGl0eVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPltdID0gW107XG5cbiAgICBwcml2YXRlIGl0ZW1Vcmw/OiBzdHJpbmcgfCBVcmxUcmVlO1xuICAgIHByaXZhdGUgbWVudVNvdXJjZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIG1lbnVSZXNldFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIHJvdXRlckV2ZW50c1N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIGd1YXJkc0lzQWxsb3dlZFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIGlzUGVybWl0dGVkU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgaXNWaXNpYmxlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgaXNWaXNpYmxlQ29tYmluZWRTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBhcmVDaGlsZHJlblZpc2libGVTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSByb3V0ZUxvYWRlZENoaWxkcmVuU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSBtbmdSb3V0ZXI6IE1uZ1JvdXRlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXV0aG9yaXphdGlvbjogTW5nQXV0aG9yaXphdGlvblNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBtbmdDb21tb25zOiBNbmdDb21tb25zU2VydmljZSxcbiAgICAgICAgcHVibGljIG1haW5MYXlvdXRTZXJ2aWNlOiBNbmdNYWluTGF5b3V0Q29tcG9uZW50U2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmd1YXJkc0lzQWxsb3dlZCQgPSB0aGlzLmd1YXJkc0lzQWxsb3dlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICAgICAgdGhpcy5pc1Blcm1pdHRlZCQgPSB0aGlzLmlzUGVybWl0dGVkU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgICAgICB0aGlzLmlzVmlzaWJsZSQgPSB0aGlzLmlzVmlzaWJsZVN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5rZXkgPSB0aGlzLnBhcmVudEtleSA/IHRoaXMucGFyZW50S2V5ICsgJy0nICsgdGhpcy5pbmRleCA6IFN0cmluZyh0aGlzLmluZGV4KTtcbiAgICAgICAgaWYgKHRoaXMuaXRlbS5yb3V0ZXJMaW5rKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuaXRlbS5yb3V0ZXJMaW5rID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbVVybCA9IHRoaXMuaXRlbS5yb3V0ZXJMaW5rO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1VcmwgPSB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLml0ZW0ucm91dGVyTGluay5qb2luKCcvJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm1uZ0NvbW1vbnMubWVudU1vZGVJc1NsaW0gJiYgdGhpcy5pdGVtLnJvdXRlckxpbmspIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aXZlU3RhdGVGcm9tUm91dGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubWVudVNvdXJjZVN1YnNjcmlwdGlvbiA9IHRoaXMubW5nQ29tbW9ucy5tZW51QWN0aXZlS2V5JC5zdWJzY3JpYmUoa2V5ID0+IHtcbiAgICAgICAgICAgIC8vIGRlYWN0aXZhdGUgY3VycmVudCBhY3RpdmUgbWVudVxuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlICYmIHRoaXMua2V5ICE9PSBrZXkgJiYga2V5LmluZGV4T2YodGhpcy5rZXkpICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5tZW51UmVzZXRTdWJzY3JpcHRpb24gPSB0aGlzLm1uZ0NvbW1vbnMubWVudVJlc2V0JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXRlbS5sYXp5Q2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVMb2FkZWRDaGlsZHJlblN1YnNjcmlwdGlvbiA9IHRoaXMubW5nUm91dGVyLmdldFJvdXRlTG9hZGVkQ2hpbGRyZW4kKHRoaXMuaXRlbS5yb3V0ZXJMaW5rID8/ICcvJykuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiByb3V0ZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbWVudUl0ZW1zID0gcm91dGVzLmZpbHRlcihyID0+IEFycmF5LmlzQXJyYXkoKHIuZGF0YSBhcyBNbmdSb3V0ZXJEYXRhIHwgdW5kZWZpbmVkKT8ubWVudUl0ZW1zKSkuZmxhdE1hcChyID0+IChyLmRhdGEgYXMgTW5nUm91dGVyRGF0YSkubWVudUl0ZW1zISk7XG4gICAgICAgICAgICAgICAgICAgIG1lbnVJdGVtcyA9IFJvdXRlVXRpbC5hZGp1c3RNZW51TGF6eUNoaWxkcmVuUm91dGVyTGlua3ModGhpcy5pdGVtLCBtZW51SXRlbXMpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbS5pdGVtcyA9IG1lbnVJdGVtcztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtLmxhenlDaGlsZHJlbiA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0l0ZW1DaGlsZHJlblZpc2liaWxpdHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShuZXh0ID0+IHtcbiAgICAgICAgICAgIGlmIChuZXh0IGluc3RhbmNlb2YgR3VhcmRzQ2hlY2tFbmQgJiYgbmV4dC5zaG91bGRBY3RpdmF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tJZk1lbnVJdGVtSXNBbGxvd2VkRnJvbUd1YXJkKG5leHQuc3RhdGUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChuZXh0IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1uZ0NvbW1vbnMubWVudU1vZGVJc1NsaW0gJiYgIXRoaXMubWFpbkxheW91dFNlcnZpY2UuaXNNb2JpbGUoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aXZlU3RhdGVGcm9tUm91dGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLml0ZW0ucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuaXNQZXJtaXR0ZWRTdWJzY3JpcHRpb24gPSB0aGlzLmF1dGhvcml6YXRpb24uaXNQZXJtaXR0ZWQodGhpcy5pdGVtLnBlcm1pc3Npb25zKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IGlzUGVybWl0dGVkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1Blcm1pdHRlZFN1YmplY3QubmV4dChpc1Blcm1pdHRlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoZWNrSWZNZW51SXRlbUlzQWxsb3dlZEZyb21HdWFyZCh0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdCk7XG5cbiAgICAgICAgdGhpcy5pc1Zpc2libGVDb21iaW5lZFN1YnNjcmlwdGlvbiA9IGNvbWJpbmVMYXRlc3QoW29mKHRoaXMuaXRlbS52aXNpYmxlICE9PSBmYWxzZSksIHRoaXMuaXNQZXJtaXR0ZWQkLCB0aGlzLmd1YXJkc0lzQWxsb3dlZCRdKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogcmVzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1Zpc2libGUgPSByZXMuZXZlcnkociA9PiByID09PSB0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhvc3RDbGFzc05vUGFkZGluZyA9ICFpc1Zpc2libGU7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1Zpc2libGVTdWJqZWN0Lm5leHQoaXNWaXNpYmxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlU3Vic2NyaXB0aW9uID0gdGhpcy5pc1Zpc2libGUkLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZUNoYW5nZUV2ZW50RW1pdHRlci5lbWl0KHYpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnByb2Nlc3NJdGVtQ2hpbGRyZW5WaXNpYmlsaXR5KCk7XG4gICAgfVxuXG4gICAgdXBkYXRlQWN0aXZlU3RhdGVGcm9tUm91dGUoKSB7XG4gICAgICAgIGlmICh0aGlzLml0ZW1VcmwpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5yb3V0ZXIuaXNBY3RpdmUodGhpcy5pdGVtVXJsLCA8SXNBY3RpdmVNYXRjaE9wdGlvbnM+e1xuICAgICAgICAgICAgICAgIG1hdHJpeFBhcmFtczogJ2lnbm9yZWQnLFxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiAnaWdub3JlZCcsXG4gICAgICAgICAgICAgICAgcGF0aHM6IHRoaXMuaXRlbS5pdGVtcyA/ICdzdWJzZXQnIDogJ2V4YWN0JyxcbiAgICAgICAgICAgICAgICBmcmFnbWVudDogJ2lnbm9yZWQnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpdGVtQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIGF2b2lkIHByb2Nlc3NpbmcgZGlzYWJsZWQgaXRlbXNcbiAgICAgICAgaWYgKHRoaXMuaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG5hdmlnYXRlIHdpdGggaG92ZXIgaW4gaG9yaXpvbnRhbCBtb2RlXG4gICAgICAgIGlmICh0aGlzLnJvb3QpIHtcbiAgICAgICAgICAgIHRoaXMubWFpbkxheW91dFNlcnZpY2UubWVudUhvdmVyQWN0aXZlID0gIXRoaXMubWFpbkxheW91dFNlcnZpY2UubWVudUhvdmVyQWN0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbm90aWZ5IG90aGVyIGl0ZW1zXG4gICAgICAgIHRoaXMubW5nQ29tbW9ucy5tZW51Q2hhbmdlQWN0aXZlS2V5KHRoaXMua2V5KTtcblxuICAgICAgICAvLyB0b2dnbGUgYWN0aXZlIHN0YXRlXG4gICAgICAgIGlmICh0aGlzLml0ZW0uaXRlbXMpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gIXRoaXMuYWN0aXZlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gYWN0aXZhdGUgaXRlbVxuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5tYWluTGF5b3V0U2VydmljZS5pc01vYmlsZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYWluTGF5b3V0U2VydmljZS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm1uZ0NvbW1vbnMubWVudU1vZGVJc092ZXJsYXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1haW5MYXlvdXRTZXJ2aWNlLm92ZXJsYXlNZW51QWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHJlc2V0IGhvcml6b250YWwgbWVudVxuICAgICAgICAgICAgaWYgKHRoaXMubW5nQ29tbW9ucy5tZW51TW9kZUlzU2xpbSAmJiAhdGhpcy5tYWluTGF5b3V0U2VydmljZS5pc01vYmlsZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tbmdDb21tb25zLm1lbnVSZXNldCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWFpbkxheW91dFNlcnZpY2UubWVudUhvdmVyQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vdXNlRW50ZXIoKSB7XG4gICAgICAgIC8vIGFjdGl2YXRlIGl0ZW0gb24gaG92ZXJcbiAgICAgICAgaWYgKHRoaXMucm9vdCAmJiB0aGlzLm1haW5MYXlvdXRTZXJ2aWNlLm1lbnVIb3ZlckFjdGl2ZSAmJiB0aGlzLm1uZ0NvbW1vbnMubWVudU1vZGVJc1NsaW0gJiYgdGhpcy5tYWluTGF5b3V0U2VydmljZS5pc0Rlc2t0b3AoKSkge1xuICAgICAgICAgICAgdGhpcy5tbmdDb21tb25zLm1lbnVDaGFuZ2VBY3RpdmVLZXkodGhpcy5rZXkpO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubWVudVNvdXJjZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5tZW51UmVzZXRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMucm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmd1YXJkc0lzQWxsb3dlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5pc1Blcm1pdHRlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5pc1Zpc2libGVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlQ29tYmluZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuYXJlQ2hpbGRyZW5WaXNpYmxlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnJvdXRlTG9hZGVkQ2hpbGRyZW5TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgb25DaGlsZFZpc2libGVDaGFuZ2UodmlzaWJsZTogYm9vbGVhbiwgaXRlbTogTW5nTWVudUl0ZW0sIGlkeDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuY2hpbGRyZW5WaXNpYmlsaXR5U3ViamVjdFtpZHhdLm5leHQodmlzaWJsZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0lmTWVudUl0ZW1Jc0FsbG93ZWRGcm9tR3VhcmQocm91dGVyU3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpIHtcbiAgICAgICAgdGhpcy5ndWFyZHNJc0FsbG93ZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGlmICh0aGlzLml0ZW0uZ3VhcmRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IG9icyA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBndWFyZCBvZiB0aGlzLml0ZW0uZ3VhcmRzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9rZW5JbmplY3RlZEluc3RhbmNlID0gdGhpcy5pbmplY3Rvci5nZXQoZ3VhcmQpO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbkluamVjdGVkSW5zdGFuY2UgJiYgJ2NhbkFjdGl2YXRlJyBpbiB0b2tlbkluamVjdGVkSW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3VhcmRJbnN0YW5jZSA9IHRva2VuSW5qZWN0ZWRJbnN0YW5jZSBhcyBDYW5BY3RpdmF0ZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FuQWN0aXZhdGVSZXMgPSBndWFyZEluc3RhbmNlLmNhbkFjdGl2YXRlKHRoaXMucm91dGUuc25hcHNob3QsIHJvdXRlclN0YXRlKTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgY2FuQWN0aXZhdGVPYnM6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+O1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FuQWN0aXZhdGVSZXMgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5BY3RpdmF0ZU9icyA9IGNhbkFjdGl2YXRlUmVzO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhbkFjdGl2YXRlUmVzIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuQWN0aXZhdGVPYnMgPSBmcm9tKGNhbkFjdGl2YXRlUmVzKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbkFjdGl2YXRlT2JzID0gb2YoY2FuQWN0aXZhdGVSZXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG9icy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FuQWN0aXZhdGVPYnMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcChyZXMgPT4gcmVzID09PSB0cnVlKSAvLyBpZiB1cmwgdHJlZSBpcyBwcmVzZW50LCB0aGF0IG1lYW5zIHJlZGlyZWN0IGFuZCBpbXBsaWVzIG5vdCBhbGxvd2VkXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5ndWFyZHNJc0FsbG93ZWRTdWJzY3JpcHRpb24gPSBjb21iaW5lTGF0ZXN0KG9icylcbiAgICAgICAgICAgICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUobmV4dCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG5leHQuZXZlcnkobiA9PiBuID09PSB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ndWFyZHNJc0FsbG93ZWRTdWJqZWN0Lm5leHQocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZ3VhcmRzSXNBbGxvd2VkU3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzSXRlbUNoaWxkcmVuVmlzaWJpbGl0eSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXRlbS5pdGVtcykge1xuICAgICAgICAgICAgdGhpcy5jaGlsZHJlblZpc2liaWxpdHlTdWJqZWN0ID0gdGhpcy5pdGVtLml0ZW1zLm1hcCgoKSA9PiBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpKTtcblxuICAgICAgICAgICAgdGhpcy5hcmVDaGlsZHJlblZpc2libGVTdWJzY3JpcHRpb24gPSBjb21iaW5lTGF0ZXN0KHRoaXMuY2hpbGRyZW5WaXNpYmlsaXR5U3ViamVjdC5tYXAocyA9PiBzLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSkpKS5zdWJzY3JpYmUodmlzaWJsZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYW55Q2hpbGRWaXNpYmxlID0gdmlzaWJsZS5zb21lKHYgPT4gdiA9PT0gdHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0Q2xhc3NDaGlsZHJlbkhpZGRlbiA9ICFhbnlDaGlsZFZpc2libGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJpc1Zpc2libGUkIHwgYXN5bmNcIj5cbiAgICA8ZGl2ICpuZ0lmPVwicm9vdFwiIGNsYXNzPVwibGF5b3V0LW1lbnVpdGVtLXJvb3QtdGV4dFwiPlxuICAgICAgICB7eyBpdGVtLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICAgIDxhXG4gICAgICAgICpuZ0lmPVwiIWl0ZW0ucm91dGVyTGluayB8fCBpdGVtLml0ZW1zXCJcbiAgICAgICAgW2F0dHIuaHJlZl09XCJpdGVtLmhyZWZcIlxuICAgICAgICAoY2xpY2spPVwiaXRlbUNsaWNrKCRldmVudClcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXIoKVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cIml0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwiaXRlbS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgW2F0dHIudGFyZ2V0XT1cIml0ZW0udGFyZ2V0XCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiMFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3NOYW1lID8/ICcnXCJcbiAgICAgICAgcFJpcHBsZT5cbiAgICAgICAgPGkgW25nQ2xhc3NdPVwiaXRlbS5pY29uID8/ICcnXCIgY2xhc3M9XCJsYXlvdXQtbWVudWl0ZW0taWNvblwiPjwvaT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYXlvdXQtbWVudWl0ZW0tdGV4dFwiPnt7IGl0ZW0ubGFiZWwhIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLWFuZ2xlLWRvd24gbGF5b3V0LXN1Ym1lbnUtdG9nZ2xlclwiICpuZ0lmPVwiaXRlbS5pdGVtcyB8fCBpdGVtLmxhenlDaGlsZHJlblwiPjwvaT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51aXRlbS1iYWRnZVwiICpuZ0lmPVwiaXRlbS5iYWRnZVwiPnt7IGl0ZW0uYmFkZ2UgfX08L3NwYW4+XG4gICAgPC9hPlxuICAgIDxhXG4gICAgICAgICpuZ0lmPVwiaXRlbS5yb3V0ZXJMaW5rICYmICFpdGVtLml0ZW1zXCJcbiAgICAgICAgKGNsaWNrKT1cIml0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwiaG92ZXIgPSB0cnVlXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwiaG92ZXIgPSBmYWxzZVwiXG4gICAgICAgIFtyb3V0ZXJMaW5rXT1cIml0ZW0ucm91dGVyTGlua1wiXG4gICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmUtbWVudWl0ZW0tcm91dGVybGlua1wiXG4gICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ7cGF0aHM6ICdleGFjdCcsIG1hdHJpeFBhcmFtczogJ2lnbm9yZWQnLCBxdWVyeVBhcmFtczogJ2lnbm9yZWQnLCBmcmFnbWVudDogJ2lnbm9yZWQnfVwiXG4gICAgICAgIFthdHRyLnRhcmdldF09XCJpdGVtLnRhcmdldFwiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICAgICAgICBbbmdDbGFzc109XCJpdGVtLmNsYXNzTmFtZSA/PyAnJ1wiXG4gICAgICAgIHBSaXBwbGU+XG4gICAgICAgIDxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvbiA/PyAnJ1wiIGNsYXNzPVwibGF5b3V0LW1lbnVpdGVtLWljb25cIj48L2k+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGF5b3V0LW1lbnVpdGVtLXRleHRcIj57eyBpdGVtLmxhYmVsISB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1mdyBwaS1hbmdsZS1kb3duIGxheW91dC1zdWJtZW51LXRvZ2dsZXJcIiAqbmdJZj1cIml0ZW0uaXRlbXMgfHwgaXRlbS5sYXp5Q2hpbGRyZW5cIj48L2k+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWVudWl0ZW0tYmFkZ2VcIiAqbmdJZj1cIml0ZW0uYmFkZ2VcIj57eyBpdGVtLmJhZGdlIH19PC9zcGFuPlxuICAgIDwvYT5cbiAgICA8dWxcbiAgICAgICAgKm5nSWY9XCJpdGVtLml0ZW1zIHx8IChpdGVtLml0ZW1zICYmIChtbmdDb21tb25zLm1lbnVNb2RlSXNTdGF0aWMkIHwgYXN5bmMpICYmIHJvb3QpXCJcbiAgICAgICAgW0BjaGlsZHJlbl09XCJcbiAgICAgICAgICAgIChtbmdDb21tb25zLm1lbnVNb2RlSXNTbGltJCB8IGFzeW5jKSAmJiAobWFpbkxheW91dFNlcnZpY2UuaXNNb2JpbGUkIHwgYXN5bmMpID09PSBmYWxzZSAmJiByb290XG4gICAgICAgICAgICAgICAgPyBhY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgPyAndmlzaWJsZSdcbiAgICAgICAgICAgICAgICAgICAgOiAnaGlkZGVuJ1xuICAgICAgICAgICAgICAgIDogKG1uZ0NvbW1vbnMubWVudU1vZGVJc1N0YXRpYyQgfCBhc3luYykgJiYgcm9vdCAmJiAobWFpbkxheW91dFNlcnZpY2UuaXNNb2JpbGUkIHwgYXN5bmMpID09PSBmYWxzZVxuICAgICAgICAgICAgICAgID8gJ3Zpc2libGUnXG4gICAgICAgICAgICAgICAgOiBhY3RpdmVcbiAgICAgICAgICAgICAgICA/ICd2aXNpYmxlQW5pbWF0ZWQnXG4gICAgICAgICAgICAgICAgOiAnaGlkZGVuQW5pbWF0ZWQnXG4gICAgICAgIFwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWNoaWxkIGxldC1pPVwiaW5kZXhcIiBbbmdGb3JPZl09XCJpdGVtLml0ZW1zXCI+XG4gICAgICAgICAgICA8bGkgbW5nLW1lbnVpdGVtIFtpdGVtXT1cImNoaWxkXCIgW2luZGV4XT1cImlcIiBbcGFyZW50S2V5XT1cImtleVwiIFtjbGFzc109XCJjaGlsZC5iYWRnZUNsYXNzTmFtZVwiICh2aXNpYmxlQ2hhbmdlKT1cIm9uQ2hpbGRWaXNpYmxlQ2hhbmdlKCRldmVudCwgaXRlbSwgaSlcIj48L2xpPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdWw+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==