@alfresco/adf-content-services 8.1.0-15902121227 → 8.1.0-15972188736

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 (408) hide show
  1. package/fesm2022/adf-content-services.mjs +808 -829
  2. package/fesm2022/adf-content-services.mjs.map +1 -1
  3. package/lib/new-version-uploader/new-version-uploader.dialog.scss +1 -1
  4. package/lib/upload/components/base-upload/upload-base.d.ts +1 -1
  5. package/package.json +4 -6
  6. package/esm2022/adf-content-services.mjs +0 -5
  7. package/esm2022/lib/agent/index.mjs +0 -18
  8. package/esm2022/lib/agent/public-api.mjs +0 -18
  9. package/esm2022/lib/agent/services/agent.service.mjs +0 -60
  10. package/esm2022/lib/alfresco-icon/alfresco-icon.component.mjs +0 -27
  11. package/esm2022/lib/api-factories/alfresco-api-no-auth.service.mjs +0 -42
  12. package/esm2022/lib/api-factories/alfresco-api-v2-loader.service.mjs +0 -77
  13. package/esm2022/lib/api-factories/index.mjs +0 -18
  14. package/esm2022/lib/api-factories/public-api.mjs +0 -19
  15. package/esm2022/lib/aspect-list/aspect-list-dialog-data.interface.mjs +0 -18
  16. package/esm2022/lib/aspect-list/aspect-list-dialog.component.mjs +0 -78
  17. package/esm2022/lib/aspect-list/aspect-list.component.mjs +0 -140
  18. package/esm2022/lib/aspect-list/aspect-list.module.mjs +0 -35
  19. package/esm2022/lib/aspect-list/index.mjs +0 -18
  20. package/esm2022/lib/aspect-list/public-api.mjs +0 -24
  21. package/esm2022/lib/aspect-list/services/aspect-list.service.mjs +0 -83
  22. package/esm2022/lib/aspect-list/services/dialog-aspect-list.service.mjs +0 -86
  23. package/esm2022/lib/aspect-list/services/node-aspect.service.mjs +0 -52
  24. package/esm2022/lib/auth-loader/content-auth-loader-factory.mjs +0 -26
  25. package/esm2022/lib/auth-loader/content-auth-loader.service.mjs +0 -42
  26. package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +0 -167
  27. package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +0 -35
  28. package/esm2022/lib/breadcrumb/dropdown-breadcrumb.component.mjs +0 -66
  29. package/esm2022/lib/breadcrumb/index.mjs +0 -18
  30. package/esm2022/lib/breadcrumb/public-api.mjs +0 -20
  31. package/esm2022/lib/category/categories-management/categories-management-mode.mjs +0 -22
  32. package/esm2022/lib/category/categories-management/categories-management.component.mjs +0 -309
  33. package/esm2022/lib/category/category.module.mjs +0 -33
  34. package/esm2022/lib/category/index.mjs +0 -18
  35. package/esm2022/lib/category/models/category-node.interface.mjs +0 -18
  36. package/esm2022/lib/category/public-api.mjs +0 -23
  37. package/esm2022/lib/category/services/category-tree-datasource.service.mjs +0 -80
  38. package/esm2022/lib/category/services/category.service.mjs +0 -159
  39. package/esm2022/lib/common/events/file.event.mjs +0 -46
  40. package/esm2022/lib/common/index.mjs +0 -18
  41. package/esm2022/lib/common/interfaces/saved-search.interface.mjs +0 -18
  42. package/esm2022/lib/common/interfaces/search-configuration.interface.mjs +0 -18
  43. package/esm2022/lib/common/mocks/ecm-user.service.mock.mjs +0 -37
  44. package/esm2022/lib/common/models/allowable-operations.enum.mjs +0 -30
  45. package/esm2022/lib/common/models/ecm-company.model.mjs +0 -19
  46. package/esm2022/lib/common/models/ecm-user.model.mjs +0 -45
  47. package/esm2022/lib/common/models/file.model.mjs +0 -53
  48. package/esm2022/lib/common/models/node-metadata.model.mjs +0 -23
  49. package/esm2022/lib/common/models/permissions.enum.mjs +0 -32
  50. package/esm2022/lib/common/public-api.mjs +0 -37
  51. package/esm2022/lib/common/services/card-view-content-update.service.mjs +0 -55
  52. package/esm2022/lib/common/services/content.service.mjs +0 -180
  53. package/esm2022/lib/common/services/discovery-api.service.mjs +0 -79
  54. package/esm2022/lib/common/services/favorites-api.service.mjs +0 -84
  55. package/esm2022/lib/common/services/nodes-api.service.mjs +0 -251
  56. package/esm2022/lib/common/services/people-content.service.mjs +0 -138
  57. package/esm2022/lib/common/services/rendition.service.mjs +0 -270
  58. package/esm2022/lib/common/services/saved-searches.service.mjs +0 -206
  59. package/esm2022/lib/common/services/sites.service.mjs +0 -243
  60. package/esm2022/lib/common/services/upload.service.mjs +0 -391
  61. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata-header.component.mjs +0 -55
  62. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata.component.mjs +0 -491
  63. package/esm2022/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.mjs +0 -129
  64. package/esm2022/lib/content-metadata/content-metadata.module.mjs +0 -36
  65. package/esm2022/lib/content-metadata/index.mjs +0 -18
  66. package/esm2022/lib/content-metadata/interfaces/aspect-oriented-config.interface.mjs +0 -18
  67. package/esm2022/lib/content-metadata/interfaces/card-view-group.interface.mjs +0 -18
  68. package/esm2022/lib/content-metadata/interfaces/content-metadata-config.interface.mjs +0 -18
  69. package/esm2022/lib/content-metadata/interfaces/content-metadata-custom-panel.interface.mjs +0 -18
  70. package/esm2022/lib/content-metadata/interfaces/content-metadata-panel.interface.mjs +0 -18
  71. package/esm2022/lib/content-metadata/interfaces/content-metadata.interfaces.mjs +0 -28
  72. package/esm2022/lib/content-metadata/interfaces/indifferent-config.interface.mjs +0 -18
  73. package/esm2022/lib/content-metadata/interfaces/layout-oriented-config.interface.mjs +0 -18
  74. package/esm2022/lib/content-metadata/interfaces/organised-property-group.interface.mjs +0 -18
  75. package/esm2022/lib/content-metadata/interfaces/preset-config.interface.mjs +0 -18
  76. package/esm2022/lib/content-metadata/interfaces/property-group.interface.mjs +0 -18
  77. package/esm2022/lib/content-metadata/interfaces/property.interface.mjs +0 -18
  78. package/esm2022/lib/content-metadata/public-api.mjs +0 -31
  79. package/esm2022/lib/content-metadata/services/basic-properties.service.mjs +0 -107
  80. package/esm2022/lib/content-metadata/services/config/aspect-oriented-config.service.mjs +0 -106
  81. package/esm2022/lib/content-metadata/services/config/content-metadata-config.factory.mjs +0 -76
  82. package/esm2022/lib/content-metadata/services/config/indifferent-config.service.mjs +0 -40
  83. package/esm2022/lib/content-metadata/services/config/layout-oriented-config.service.mjs +0 -108
  84. package/esm2022/lib/content-metadata/services/config/property-group-reader.mjs +0 -33
  85. package/esm2022/lib/content-metadata/services/content-metadata.service.mjs +0 -99
  86. package/esm2022/lib/content-metadata/services/content-type-property.service.mjs +0 -134
  87. package/esm2022/lib/content-metadata/services/property-descriptors.service.mjs +0 -52
  88. package/esm2022/lib/content-metadata/services/property-groups-translator.service.mjs +0 -169
  89. package/esm2022/lib/content-node-selector/content-node-dialog.service.mjs +0 -256
  90. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.component.mjs +0 -618
  91. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.service.mjs +0 -66
  92. package/esm2022/lib/content-node-selector/content-node-selector.component-data.interface.mjs +0 -18
  93. package/esm2022/lib/content-node-selector/content-node-selector.component.mjs +0 -206
  94. package/esm2022/lib/content-node-selector/content-node-selector.module.mjs +0 -50
  95. package/esm2022/lib/content-node-selector/index.mjs +0 -18
  96. package/esm2022/lib/content-node-selector/name-location-cell/name-location-cell.component.mjs +0 -48
  97. package/esm2022/lib/content-node-selector/public-api.mjs +0 -25
  98. package/esm2022/lib/content-node-selector/site-dropdown/sites-dropdown.component.mjs +0 -168
  99. package/esm2022/lib/content-node-share/content-node-share.dialog.mjs +0 -288
  100. package/esm2022/lib/content-node-share/content-node-share.directive.mjs +0 -102
  101. package/esm2022/lib/content-node-share/content-node-share.module.mjs +0 -35
  102. package/esm2022/lib/content-node-share/content-node-share.settings.mjs +0 -18
  103. package/esm2022/lib/content-node-share/index.mjs +0 -18
  104. package/esm2022/lib/content-node-share/public-api.mjs +0 -22
  105. package/esm2022/lib/content-node-share/services/shared-links-api.service.mjs +0 -83
  106. package/esm2022/lib/content-type/content-type-dialog.component.mjs +0 -58
  107. package/esm2022/lib/content-type/content-type-metadata.interface.mjs +0 -18
  108. package/esm2022/lib/content-type/content-type.service.mjs +0 -52
  109. package/esm2022/lib/content-type/index.mjs +0 -20
  110. package/esm2022/lib/content.module.mjs +0 -277
  111. package/esm2022/lib/dialogs/category-selector/category-selector.dialog.mjs +0 -52
  112. package/esm2022/lib/dialogs/dialog.module.mjs +0 -52
  113. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.mjs +0 -111
  114. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.module.mjs +0 -38
  115. package/esm2022/lib/dialogs/download-zip/services/download-zip.service.mjs +0 -66
  116. package/esm2022/lib/dialogs/folder/folder-name.validators.mjs +0 -44
  117. package/esm2022/lib/dialogs/folder/folder.dialog.mjs +0 -147
  118. package/esm2022/lib/dialogs/index.mjs +0 -18
  119. package/esm2022/lib/dialogs/library/library.dialog.mjs +0 -225
  120. package/esm2022/lib/dialogs/node-lock/node-lock.dialog.mjs +0 -116
  121. package/esm2022/lib/dialogs/public-api.mjs +0 -25
  122. package/esm2022/lib/directives/auto-focus.directive.mjs +0 -38
  123. package/esm2022/lib/directives/check-allowable-operation.directive.mjs +0 -126
  124. package/esm2022/lib/directives/content-directive.module.mjs +0 -75
  125. package/esm2022/lib/directives/index.mjs +0 -18
  126. package/esm2022/lib/directives/library-favorite.directive.mjs +0 -119
  127. package/esm2022/lib/directives/library-membership.directive.mjs +0 -202
  128. package/esm2022/lib/directives/node-counter.directive.mjs +0 -60
  129. package/esm2022/lib/directives/node-delete.directive.mjs +0 -177
  130. package/esm2022/lib/directives/node-download.directive.mjs +0 -138
  131. package/esm2022/lib/directives/node-favorite.directive.mjs +0 -193
  132. package/esm2022/lib/directives/node-lock.directive.mjs +0 -57
  133. package/esm2022/lib/directives/node-restore.directive.mjs +0 -218
  134. package/esm2022/lib/directives/public-api.mjs +0 -28
  135. package/esm2022/lib/document-list/components/content-action/content-action-list.component.mjs +0 -60
  136. package/esm2022/lib/document-list/components/content-action/content-action.component.mjs +0 -196
  137. package/esm2022/lib/document-list/components/document-list.component.mjs +0 -964
  138. package/esm2022/lib/document-list/components/document-list.token.mjs +0 -21
  139. package/esm2022/lib/document-list/components/file-auto-download/file-auto-download.component.mjs +0 -43
  140. package/esm2022/lib/document-list/components/filter-header/filter-header.component.mjs +0 -107
  141. package/esm2022/lib/document-list/components/library-name-column/library-name-column.component.mjs +0 -133
  142. package/esm2022/lib/document-list/components/library-role-column/library-role-column.component.mjs +0 -93
  143. package/esm2022/lib/document-list/components/library-status-column/library-status-column.component.mjs +0 -88
  144. package/esm2022/lib/document-list/components/name-column/name-column.component.mjs +0 -120
  145. package/esm2022/lib/document-list/components/node.event.mjs +0 -30
  146. package/esm2022/lib/document-list/components/trashcan-name-column/trashcan-name-column.component.mjs +0 -83
  147. package/esm2022/lib/document-list/data/image-resolver.model.mjs +0 -18
  148. package/esm2022/lib/document-list/data/row-filter.model.mjs +0 -18
  149. package/esm2022/lib/document-list/data/share-data-row.model.mjs +0 -102
  150. package/esm2022/lib/document-list/data/share-datatable-adapter.mjs +0 -258
  151. package/esm2022/lib/document-list/document-list.module.mjs +0 -79
  152. package/esm2022/lib/document-list/index.mjs +0 -18
  153. package/esm2022/lib/document-list/interfaces/document-list-loader.interface.mjs +0 -18
  154. package/esm2022/lib/document-list/models/content-action.model.mjs +0 -59
  155. package/esm2022/lib/document-list/models/document-folder.model.mjs +0 -23
  156. package/esm2022/lib/document-list/models/node-action.enum.mjs +0 -27
  157. package/esm2022/lib/document-list/models/permissions-style.model.mjs +0 -27
  158. package/esm2022/lib/document-list/models/permissions.model.mjs +0 -26
  159. package/esm2022/lib/document-list/models/preset.model.mjs +0 -257
  160. package/esm2022/lib/document-list/public-api.mjs +0 -47
  161. package/esm2022/lib/document-list/services/custom-resources.service.mjs +0 -378
  162. package/esm2022/lib/document-list/services/document-actions.service.mjs +0 -142
  163. package/esm2022/lib/document-list/services/document-list.service.mjs +0 -175
  164. package/esm2022/lib/document-list/services/folder-actions.service.mjs +0 -137
  165. package/esm2022/lib/document-list/services/lock.service.mjs +0 -72
  166. package/esm2022/lib/document-list/services/node-actions.service.mjs +0 -122
  167. package/esm2022/lib/group/index.mjs +0 -18
  168. package/esm2022/lib/group/public-api.mjs +0 -18
  169. package/esm2022/lib/group/services/group.service.mjs +0 -84
  170. package/esm2022/lib/infinite-scroll-datasource/index.mjs +0 -18
  171. package/esm2022/lib/infinite-scroll-datasource/infinite-scroll-datasource.mjs +0 -69
  172. package/esm2022/lib/infinite-scroll-datasource/public-api.mjs +0 -18
  173. package/esm2022/lib/interfaces/base-card-view-content-update.interface.mjs +0 -18
  174. package/esm2022/lib/interfaces/index.mjs +0 -18
  175. package/esm2022/lib/interfaces/library-entity.interface.mjs +0 -18
  176. package/esm2022/lib/interfaces/library-membership-error-event.interface.mjs +0 -18
  177. package/esm2022/lib/interfaces/library-membership-toggle-event.interface.mjs +0 -18
  178. package/esm2022/lib/interfaces/node-allowable-operation-subject.interface.mjs +0 -18
  179. package/esm2022/lib/interfaces/public-api.mjs +0 -23
  180. package/esm2022/lib/interfaces/restore-message-model.interface.mjs +0 -19
  181. package/esm2022/lib/legal-hold/index.mjs +0 -18
  182. package/esm2022/lib/legal-hold/public-api.mjs +0 -18
  183. package/esm2022/lib/legal-hold/services/legal-hold.service.mjs +0 -136
  184. package/esm2022/lib/material.module.mjs +0 -183
  185. package/esm2022/lib/mock/alfresco-api.service.mock.mjs +0 -43
  186. package/esm2022/lib/mock/date-range-search-filter.mock.mjs +0 -65
  187. package/esm2022/lib/mock/document-library.model.mock.mjs +0 -84
  188. package/esm2022/lib/mock/document-list.component.mock.mjs +0 -364
  189. package/esm2022/lib/mock/index.mjs +0 -18
  190. package/esm2022/lib/mock/new-version-uploader.service.mock.mjs +0 -161
  191. package/esm2022/lib/mock/public-api.mjs +0 -27
  192. package/esm2022/lib/mock/search-filter-mock.mjs +0 -637
  193. package/esm2022/lib/mock/search-query.mock.mjs +0 -40
  194. package/esm2022/lib/mock/search.component.mock.mjs +0 -165
  195. package/esm2022/lib/mock/search.service.mock.mjs +0 -61
  196. package/esm2022/lib/mock/sites-dropdown.component.mock.mjs +0 -281
  197. package/esm2022/lib/new-version-uploader/index.mjs +0 -18
  198. package/esm2022/lib/new-version-uploader/models/index.mjs +0 -18
  199. package/esm2022/lib/new-version-uploader/models/new-version-uploader.model.mjs +0 -24
  200. package/esm2022/lib/new-version-uploader/new-version-uploader.dialog.mjs +0 -75
  201. package/esm2022/lib/new-version-uploader/new-version-uploader.module.mjs +0 -33
  202. package/esm2022/lib/new-version-uploader/new-version-uploader.service.mjs +0 -103
  203. package/esm2022/lib/new-version-uploader/public-api.mjs +0 -21
  204. package/esm2022/lib/node-comments/index.mjs +0 -18
  205. package/esm2022/lib/node-comments/node-comments.component.mjs +0 -44
  206. package/esm2022/lib/node-comments/node-comments.module.mjs +0 -33
  207. package/esm2022/lib/node-comments/public-api.mjs +0 -20
  208. package/esm2022/lib/node-comments/services/node-comments.service.mjs +0 -85
  209. package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog-data.interface.mjs +0 -18
  210. package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog.component.mjs +0 -124
  211. package/esm2022/lib/permission-manager/components/add-permission/add-permission-panel.component.mjs +0 -103
  212. package/esm2022/lib/permission-manager/components/add-permission/add-permission.component.mjs +0 -70
  213. package/esm2022/lib/permission-manager/components/add-permission/search-config-permission.service.mjs +0 -45
  214. package/esm2022/lib/permission-manager/components/inherited-button.directive.mjs +0 -67
  215. package/esm2022/lib/permission-manager/components/node-path-column/node-path-column.component.mjs +0 -56
  216. package/esm2022/lib/permission-manager/components/permission-container/permission-container.component.mjs +0 -103
  217. package/esm2022/lib/permission-manager/components/permission-list/permission-list.component.mjs +0 -88
  218. package/esm2022/lib/permission-manager/components/permission-list/permission-list.service.mjs +0 -219
  219. package/esm2022/lib/permission-manager/components/pop-over.directive.mjs +0 -134
  220. package/esm2022/lib/permission-manager/components/user-icon-column/user-icon-column.component.mjs +0 -88
  221. package/esm2022/lib/permission-manager/components/user-name-column/user-name-column.component.mjs +0 -82
  222. package/esm2022/lib/permission-manager/components/user-role-column/user-role-column.component.mjs +0 -112
  223. package/esm2022/lib/permission-manager/index.mjs +0 -18
  224. package/esm2022/lib/permission-manager/models/member.model.mjs +0 -59
  225. package/esm2022/lib/permission-manager/models/permission.model.mjs +0 -29
  226. package/esm2022/lib/permission-manager/models/role.model.mjs +0 -18
  227. package/esm2022/lib/permission-manager/permission-manager.module.mjs +0 -84
  228. package/esm2022/lib/permission-manager/public-api.mjs +0 -36
  229. package/esm2022/lib/permission-manager/services/node-permission-dialog.service.mjs +0 -78
  230. package/esm2022/lib/permission-manager/services/node-permission.service.mjs +0 -299
  231. package/esm2022/lib/pipes/content-pipe.module.mjs +0 -37
  232. package/esm2022/lib/pipes/index.mjs +0 -18
  233. package/esm2022/lib/pipes/node-name-tooltip.pipe.mjs +0 -69
  234. package/esm2022/lib/pipes/public-api.mjs +0 -19
  235. package/esm2022/lib/prediction/index.mjs +0 -18
  236. package/esm2022/lib/prediction/public-api.mjs +0 -18
  237. package/esm2022/lib/prediction/services/index.mjs +0 -18
  238. package/esm2022/lib/prediction/services/prediction.service.mjs +0 -57
  239. package/esm2022/lib/search/components/empty-search-result.component.mjs +0 -27
  240. package/esm2022/lib/search/components/index.mjs +0 -43
  241. package/esm2022/lib/search/components/reset-search.directive.mjs +0 -41
  242. package/esm2022/lib/search/components/search-check-list/index.mjs +0 -18
  243. package/esm2022/lib/search/components/search-check-list/search-check-list.component.mjs +0 -159
  244. package/esm2022/lib/search/components/search-chip-autocomplete-input/index.mjs +0 -18
  245. package/esm2022/lib/search/components/search-chip-autocomplete-input/search-chip-autocomplete-input.component.mjs +0 -170
  246. package/esm2022/lib/search/components/search-chip-list/search-chip-list.component.mjs +0 -47
  247. package/esm2022/lib/search/components/search-control.component.mjs +0 -181
  248. package/esm2022/lib/search/components/search-date-range-tabbed/index.mjs +0 -22
  249. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/date-range-type.mjs +0 -23
  250. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/in-last-date-type.mjs +0 -23
  251. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.mjs +0 -197
  252. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.mjs +0 -18
  253. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range-tabbed.component.mjs +0 -201
  254. package/esm2022/lib/search/components/search-datetime-range/index.mjs +0 -18
  255. package/esm2022/lib/search/components/search-datetime-range/search-datetime-range.component.mjs +0 -224
  256. package/esm2022/lib/search/components/search-facet-field/index.mjs +0 -18
  257. package/esm2022/lib/search/components/search-facet-field/search-facet-field.component.mjs +0 -133
  258. package/esm2022/lib/search/components/search-filter/index.mjs +0 -19
  259. package/esm2022/lib/search/components/search-filter/search-filter-card/search-filter-card.component.mjs +0 -46
  260. package/esm2022/lib/search/components/search-filter/search-filter.component.mjs +0 -81
  261. package/esm2022/lib/search/components/search-filter-autocomplete-chips/index.mjs +0 -18
  262. package/esm2022/lib/search/components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component.mjs +0 -155
  263. package/esm2022/lib/search/components/search-filter-chips/index.mjs +0 -23
  264. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.mjs +0 -105
  265. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.mjs +0 -110
  266. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component.mjs +0 -129
  267. package/esm2022/lib/search/components/search-filter-chips/search-filter-chips.component.mjs +0 -64
  268. package/esm2022/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.mjs +0 -44
  269. package/esm2022/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.mjs +0 -110
  270. package/esm2022/lib/search/components/search-filter-container/index.mjs +0 -18
  271. package/esm2022/lib/search/components/search-filter-container/search-filter-container.component.mjs +0 -123
  272. package/esm2022/lib/search/components/search-filter-tabbed/index.mjs +0 -19
  273. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tab.directive.mjs +0 -36
  274. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tabbed.component.mjs +0 -64
  275. package/esm2022/lib/search/components/search-form/index.mjs +0 -18
  276. package/esm2022/lib/search/components/search-form/search-form.component.mjs +0 -53
  277. package/esm2022/lib/search/components/search-input/index.mjs +0 -18
  278. package/esm2022/lib/search/components/search-input/search-input.component.mjs +0 -109
  279. package/esm2022/lib/search/components/search-logical-filter/index.mjs +0 -18
  280. package/esm2022/lib/search/components/search-logical-filter/search-logical-filter.component.mjs +0 -164
  281. package/esm2022/lib/search/components/search-number-range/index.mjs +0 -18
  282. package/esm2022/lib/search/components/search-number-range/search-number-range.component.mjs +0 -155
  283. package/esm2022/lib/search/components/search-panel/index.mjs +0 -18
  284. package/esm2022/lib/search/components/search-panel/search-panel.component.mjs +0 -44
  285. package/esm2022/lib/search/components/search-properties/file-size-condition.mjs +0 -18
  286. package/esm2022/lib/search/components/search-properties/file-size-operator.enum.mjs +0 -23
  287. package/esm2022/lib/search/components/search-properties/file-size-unit.enum.mjs +0 -26
  288. package/esm2022/lib/search/components/search-properties/index.mjs +0 -22
  289. package/esm2022/lib/search/components/search-properties/search-properties.component.mjs +0 -244
  290. package/esm2022/lib/search/components/search-properties/search-properties.mjs +0 -18
  291. package/esm2022/lib/search/components/search-radio/index.mjs +0 -18
  292. package/esm2022/lib/search/components/search-radio/search-radio.component.mjs +0 -146
  293. package/esm2022/lib/search/components/search-slider/index.mjs +0 -18
  294. package/esm2022/lib/search/components/search-slider/search-slider.component.mjs +0 -120
  295. package/esm2022/lib/search/components/search-sorting-picker/index.mjs +0 -18
  296. package/esm2022/lib/search/components/search-sorting-picker/search-sorting-picker.component.mjs +0 -77
  297. package/esm2022/lib/search/components/search-text/index.mjs +0 -18
  298. package/esm2022/lib/search/components/search-text/search-text.component.mjs +0 -135
  299. package/esm2022/lib/search/components/search-widget-container/index.mjs +0 -18
  300. package/esm2022/lib/search/components/search-widget-container/search-widget-container.component.mjs +0 -113
  301. package/esm2022/lib/search/components/search.component.mjs +0 -153
  302. package/esm2022/lib/search/forms/index.mjs +0 -19
  303. package/esm2022/lib/search/forms/live-error-state-matcher.mjs +0 -23
  304. package/esm2022/lib/search/forms/search-term-validator.mjs +0 -26
  305. package/esm2022/lib/search/index.mjs +0 -18
  306. package/esm2022/lib/search/mocks/index.mjs +0 -18
  307. package/esm2022/lib/search/mocks/search.service.mock.mjs +0 -56
  308. package/esm2022/lib/search/models/autocomplete-option.interface.mjs +0 -22
  309. package/esm2022/lib/search/models/facet-field-bucket.interface.mjs +0 -18
  310. package/esm2022/lib/search/models/facet-field.interface.mjs +0 -29
  311. package/esm2022/lib/search/models/facet-query.interface.mjs +0 -18
  312. package/esm2022/lib/search/models/facet-widget.interface.mjs +0 -18
  313. package/esm2022/lib/search/models/filter-query.interface.mjs +0 -18
  314. package/esm2022/lib/search/models/filter-search.interface.mjs +0 -18
  315. package/esm2022/lib/search/models/index.mjs +0 -34
  316. package/esm2022/lib/search/models/response-facet-query-list.model.mjs +0 -31
  317. package/esm2022/lib/search/models/search-category.interface.mjs +0 -18
  318. package/esm2022/lib/search/models/search-configuration.interface.mjs +0 -18
  319. package/esm2022/lib/search/models/search-filter-list.model.mjs +0 -148
  320. package/esm2022/lib/search/models/search-form.interface.mjs +0 -18
  321. package/esm2022/lib/search/models/search-range.interface.mjs +0 -18
  322. package/esm2022/lib/search/models/search-sorting-definition.interface.mjs +0 -18
  323. package/esm2022/lib/search/models/search-widget-settings.interface.mjs +0 -18
  324. package/esm2022/lib/search/models/search-widget.interface.mjs +0 -18
  325. package/esm2022/lib/search/models/tabbed-facet-field.interface.mjs +0 -18
  326. package/esm2022/lib/search/public-api.mjs +0 -24
  327. package/esm2022/lib/search/search-configuration.token.mjs +0 -19
  328. package/esm2022/lib/search/search.module.mjs +0 -192
  329. package/esm2022/lib/search/services/base-query-builder.service.mjs +0 -509
  330. package/esm2022/lib/search/services/index.mjs +0 -24
  331. package/esm2022/lib/search/services/search-configuration.service.mjs +0 -50
  332. package/esm2022/lib/search/services/search-facet-filters.service.mjs +0 -374
  333. package/esm2022/lib/search/services/search-filter.service.mjs +0 -56
  334. package/esm2022/lib/search/services/search-header-query-builder.service.mjs +0 -136
  335. package/esm2022/lib/search/services/search-query-builder.service.mjs +0 -48
  336. package/esm2022/lib/search/services/search.service.mjs +0 -89
  337. package/esm2022/lib/search-ai/index.mjs +0 -18
  338. package/esm2022/lib/search-ai/models/search-ai-input-state.mjs +0 -18
  339. package/esm2022/lib/search-ai/public-api.mjs +0 -19
  340. package/esm2022/lib/search-ai/services/search-ai.service.mjs +0 -103
  341. package/esm2022/lib/security/index.mjs +0 -18
  342. package/esm2022/lib/security/public-api.mjs +0 -18
  343. package/esm2022/lib/security/services/models/security-controls-group-response.interface.mjs +0 -18
  344. package/esm2022/lib/security/services/models/security-controls-mark-response.interface.mjs +0 -18
  345. package/esm2022/lib/security/services/security-controls-groups-marks-security.service.mjs +0 -274
  346. package/esm2022/lib/security-options-loader/security-options-loader.service.mjs +0 -43
  347. package/esm2022/lib/services/alfresco-api.interface.mjs +0 -18
  348. package/esm2022/lib/services/alfresco-api.service.mjs +0 -120
  349. package/esm2022/lib/services/index.mjs +0 -18
  350. package/esm2022/lib/services/public-api.mjs +0 -18
  351. package/esm2022/lib/tag/index.mjs +0 -18
  352. package/esm2022/lib/tag/public-api.mjs +0 -24
  353. package/esm2022/lib/tag/services/tag.service.mjs +0 -171
  354. package/esm2022/lib/tag/tag-actions/tag-actions.component.mjs +0 -115
  355. package/esm2022/lib/tag/tag-list/tag-list.component.mjs +0 -98
  356. package/esm2022/lib/tag/tag-node-list/tag-node-list.component.mjs +0 -80
  357. package/esm2022/lib/tag/tag.module.mjs +0 -37
  358. package/esm2022/lib/tag/tags-creator/tags-creator-mode.mjs +0 -27
  359. package/esm2022/lib/tag/tags-creator/tags-creator.component.mjs +0 -371
  360. package/esm2022/lib/testing/content.testing.module.mjs +0 -56
  361. package/esm2022/lib/tree/components/tree.component.mjs +0 -313
  362. package/esm2022/lib/tree/index.mjs +0 -18
  363. package/esm2022/lib/tree/models/tree-context-menu-result.interface.mjs +0 -18
  364. package/esm2022/lib/tree/models/tree-node.interface.mjs +0 -22
  365. package/esm2022/lib/tree/models/tree-response.interface.mjs +0 -18
  366. package/esm2022/lib/tree/public-api.mjs +0 -23
  367. package/esm2022/lib/tree/services/tree.service.mjs +0 -134
  368. package/esm2022/lib/tree/tree.module.mjs +0 -33
  369. package/esm2022/lib/tree-view/components/tree-view.component.mjs +0 -76
  370. package/esm2022/lib/tree-view/data/tree-view-datasource.mjs +0 -99
  371. package/esm2022/lib/tree-view/index.mjs +0 -18
  372. package/esm2022/lib/tree-view/models/tree-view.model.mjs +0 -28
  373. package/esm2022/lib/tree-view/public-api.mjs +0 -22
  374. package/esm2022/lib/tree-view/services/tree-view.service.mjs +0 -38
  375. package/esm2022/lib/tree-view/tree-view.module.mjs +0 -33
  376. package/esm2022/lib/upload/components/base-upload/upload-base.mjs +0 -176
  377. package/esm2022/lib/upload/components/file-uploading-dialog.component.mjs +0 -191
  378. package/esm2022/lib/upload/components/file-uploading-list-row.component.mjs +0 -93
  379. package/esm2022/lib/upload/components/file-uploading-list.component.mjs +0 -124
  380. package/esm2022/lib/upload/components/upload-button.component.mjs +0 -134
  381. package/esm2022/lib/upload/components/upload-drag-area.component.mjs +0 -112
  382. package/esm2022/lib/upload/components/upload-files.event.mjs +0 -41
  383. package/esm2022/lib/upload/components/upload-version-button.component.mjs +0 -55
  384. package/esm2022/lib/upload/directives/file-draggable.directive.mjs +0 -154
  385. package/esm2022/lib/upload/directives/toggle-icon.directive.mjs +0 -75
  386. package/esm2022/lib/upload/index.mjs +0 -18
  387. package/esm2022/lib/upload/pipes/file-upload-error.pipe.mjs +0 -39
  388. package/esm2022/lib/upload/public-api.mjs +0 -29
  389. package/esm2022/lib/upload/upload.module.mjs +0 -72
  390. package/esm2022/lib/version-compatibility/index.mjs +0 -18
  391. package/esm2022/lib/version-compatibility/public-api.mjs +0 -20
  392. package/esm2022/lib/version-compatibility/version-compatibility-factory.mjs +0 -26
  393. package/esm2022/lib/version-compatibility/version-compatibility.directive.mjs +0 -53
  394. package/esm2022/lib/version-compatibility/version-compatibility.module.mjs +0 -33
  395. package/esm2022/lib/version-compatibility/version-compatibility.service.mjs +0 -76
  396. package/esm2022/lib/version-manager/content-version.service.mjs +0 -53
  397. package/esm2022/lib/version-manager/index.mjs +0 -18
  398. package/esm2022/lib/version-manager/public-api.mjs +0 -23
  399. package/esm2022/lib/version-manager/version-comparison.component.mjs +0 -43
  400. package/esm2022/lib/version-manager/version-list.component.mjs +0 -216
  401. package/esm2022/lib/version-manager/version-manager.component.mjs +0 -146
  402. package/esm2022/lib/version-manager/version-manager.module.mjs +0 -48
  403. package/esm2022/lib/version-manager/version-upload.component.mjs +0 -155
  404. package/esm2022/lib/viewer/alfresco-viewer.module.mjs +0 -33
  405. package/esm2022/lib/viewer/components/alfresco-viewer.component.mjs +0 -409
  406. package/esm2022/lib/viewer/index.mjs +0 -18
  407. package/esm2022/lib/viewer/public-api.mjs +0 -19
  408. package/esm2022/public-api.mjs +0 -56
@@ -1,309 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { Category } from '@alfresco/js-api';
18
- import { Component, DestroyRef, ElementRef, EventEmitter, inject, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
19
- import { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';
20
- import { EMPTY, Observable, Subject, timer } from 'rxjs';
21
- import { debounce, first, map, tap } from 'rxjs/operators';
22
- import { CategoriesManagementMode } from './categories-management-mode';
23
- import { CategoryService } from '../services/category.service';
24
- import { CommonModule } from '@angular/common';
25
- import { TranslateModule } from '@ngx-translate/core';
26
- import { AutoFocusDirective } from '../../directives';
27
- import { MatFormFieldModule } from '@angular/material/form-field';
28
- import { MatButtonModule } from '@angular/material/button';
29
- import { MatIconModule } from '@angular/material/icon';
30
- import { MatListModule } from '@angular/material/list';
31
- import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
32
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
33
- import * as i0 from "@angular/core";
34
- import * as i1 from "../services/category.service";
35
- import * as i2 from "@angular/common";
36
- import * as i3 from "@ngx-translate/core";
37
- import * as i4 from "@angular/forms";
38
- import * as i5 from "@angular/material/form-field";
39
- import * as i6 from "@angular/material/button";
40
- import * as i7 from "@angular/material/icon";
41
- import * as i8 from "@angular/material/list";
42
- import * as i9 from "@angular/material/progress-spinner";
43
- export class CategoriesManagementComponent {
44
- /**
45
- * Decides if categoryNameControl should be visible. Sets also existing categories panel visibility
46
- * and scrolls control into view when visible.
47
- *
48
- * @param categoryNameControlVisible control visibility.
49
- */
50
- set categoryNameControlVisible(categoryNameControlVisible) {
51
- this._categoryNameControlVisible = categoryNameControlVisible;
52
- if (categoryNameControlVisible) {
53
- setTimeout(() => {
54
- this.categoryNameInputElement.nativeElement.scrollIntoView();
55
- });
56
- this._existingCategoriesPanelVisible = true;
57
- }
58
- else {
59
- this._existingCategoriesPanelVisible = false;
60
- this.clearCategoryNameInput();
61
- }
62
- }
63
- get categoryNameControlVisible() {
64
- return this._categoryNameControlVisible;
65
- }
66
- constructor(categoryService) {
67
- this.categoryService = categoryService;
68
- this.nameErrorMessagesByErrors = new Map([
69
- ['duplicatedExistingCategory', 'ALREADY_EXISTS'],
70
- ['duplicatedCategory', 'DUPLICATED_CATEGORY'],
71
- ['emptyCategory', 'EMPTY_CATEGORY'],
72
- ['required', 'REQUIRED']
73
- ]);
74
- this.existingCategoryLoaded$ = new Subject();
75
- this.cancelExistingCategoriesLoading$ = new Subject();
76
- this._categoryNameControl = new FormControl('', [this.validateIfNotAlreadyAdded.bind(this), this.validateEmptyCategory, Validators.required], this.validateIfNotAlreadyCreated.bind(this));
77
- this._categoryNameErrorMessageKey = '';
78
- this._existingCategoriesLoading = false;
79
- this._typing = false;
80
- this._categoryNameControlVisible = false;
81
- this.existingCategoriesListLimit = 15;
82
- this.initialCategories = [];
83
- this.noCategoriesMsg = '';
84
- this.removeCategoryTitle = '';
85
- this.existingCategoriesMsg = '';
86
- /** Categories to display initially */
87
- this.categories = [];
88
- /** Disables remove button in upper categories list */
89
- this.disableRemoval = false;
90
- /** Toggles multiselect mode */
91
- this.multiSelect = true;
92
- /** Emits when state of upper categories list changes */
93
- this.categoriesChange = new EventEmitter();
94
- /** Emits when categoryNameControl visibility changes */
95
- this.categoryNameControlVisibleChange = new EventEmitter();
96
- this.destroyRef = inject(DestroyRef);
97
- }
98
- ngOnInit() {
99
- this.categoryNameControl.valueChanges
100
- .pipe(map((name) => name.trim()), tap((name) => {
101
- this._typing = true;
102
- if (name) {
103
- this._existingCategoriesLoading = true;
104
- this._existingCategoriesPanelVisible = true;
105
- }
106
- this.cancelExistingCategoriesLoading$.next();
107
- }), debounce((name) => (name ? timer(300) : EMPTY)), takeUntilDestroyed(this.destroyRef))
108
- .subscribe((name) => this.onNameControlValueChange(name));
109
- this.categoryNameControl.statusChanges
110
- .pipe(takeUntilDestroyed(this.destroyRef))
111
- .subscribe(() => this.setCategoryNameControlErrorMessageKey());
112
- this.setCategoryNameControlErrorMessageKey();
113
- this.noCategoriesMsg = this.isCRUDMode ? 'CATEGORIES_MANAGEMENT.NO_CATEGORIES_CREATED' : 'CATEGORIES_MANAGEMENT.NO_CATEGORIES_ASSIGNED';
114
- this.removeCategoryTitle = this.isCRUDMode ? 'CATEGORIES_MANAGEMENT.DELETE_CATEGORY' : 'CATEGORIES_MANAGEMENT.UNASSIGN_CATEGORY';
115
- this.existingCategoriesMsg = this.isCRUDMode ? 'CATEGORIES_MANAGEMENT.EXISTING_CATEGORIES' : 'CATEGORIES_MANAGEMENT.SELECT_EXISTING_CATEGORY';
116
- if (!this.isCRUDMode) {
117
- this._categoryNameControl.removeValidators(Validators.required);
118
- this.categories.forEach((category) => this.initialCategories.push(category));
119
- if (this.classifiableChanged) {
120
- this.classifiableChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
121
- this.categories = [];
122
- this.categoryNameControlVisible = false;
123
- this.categoryNameControlVisibleChange.emit(false);
124
- });
125
- }
126
- }
127
- }
128
- ngOnDestroy() {
129
- this.cancelExistingCategoriesLoading$.next();
130
- this.cancelExistingCategoriesLoading$.complete();
131
- }
132
- get categoryNameControl() {
133
- return this._categoryNameControl;
134
- }
135
- /*
136
- * Returns `true` if categories empty and category panel non editable state, otherwise `false`
137
- */
138
- get showEmptyCategoryMessage() {
139
- return this.categories.length === 0 && !this.categoryNameControlVisible;
140
- }
141
- get existingCategories() {
142
- return this._existingCategories;
143
- }
144
- get categoryNameErrorMessageKey() {
145
- return this._categoryNameErrorMessageKey;
146
- }
147
- get existingCategoriesLoading() {
148
- return this._existingCategoriesLoading;
149
- }
150
- get typing() {
151
- return this._typing;
152
- }
153
- get existingCategoriesPanelVisible() {
154
- return this._existingCategoriesPanelVisible;
155
- }
156
- get isCRUDMode() {
157
- return this.managementMode === CategoriesManagementMode.CRUD;
158
- }
159
- /**
160
- * Adds category that has been typed to a categoryNameControl and hides it afterwards.
161
- */
162
- addCategory() {
163
- if (this.isCRUDMode && !this._typing && !this.categoryNameControl.invalid) {
164
- const newCatName = this.categoryNameControl.value.trim();
165
- const newCat = new Category({ id: newCatName, name: newCatName });
166
- this.categories.push(newCat);
167
- this.clearCategoryNameInput();
168
- this._existingCategories = null;
169
- this.categoriesChange.emit(this.categories);
170
- }
171
- }
172
- /**
173
- * Adds existing category to categories list and removes it from existing categories list.
174
- *
175
- * @param category - selection list change containing selected category
176
- */
177
- addCategoryToAssign(category) {
178
- if (!(this.isCRUDMode || (!this.multiSelect && this.categories.length > 0))) {
179
- const selectedCategory = category;
180
- this.categories.push(selectedCategory);
181
- this._existingCategories.splice(this._existingCategories.indexOf(selectedCategory), 1);
182
- this.categoryNameControl.updateValueAndValidity();
183
- this.categoriesChange.emit(this.categories);
184
- }
185
- }
186
- /**
187
- * Removes the category from categories list and adds it to existing categories list in ASSIGN mode.
188
- *
189
- * @param category - category to remove
190
- */
191
- removeCategory(category) {
192
- this.categories.splice(this.categories.indexOf(category), 1);
193
- if (!this.isCRUDMode && !!this._existingCategories && !this.initialCategories.some((cat) => cat.id === category.id)) {
194
- this._existingCategories.push(category);
195
- this.sortCategoriesList(this._existingCategories);
196
- }
197
- this.categoryNameControl.updateValueAndValidity({
198
- emitEvent: false
199
- });
200
- this.categoriesChange.emit(this.categories);
201
- }
202
- onNameControlValueChange(name) {
203
- this.categoryNameControl.markAsTouched();
204
- if (name) {
205
- if (this.isCRUDMode) {
206
- this.getChildrenCategories(name);
207
- }
208
- else {
209
- this.searchForExistingCategories(name);
210
- }
211
- }
212
- else {
213
- this._existingCategories = null;
214
- }
215
- }
216
- searchForExistingCategories(searchTerm) {
217
- this.categoryService.searchCategories(searchTerm, 0, this.existingCategoriesListLimit).subscribe((existingCategoriesResult) => {
218
- this._existingCategories = existingCategoriesResult.list.entries.map((rowEntry) => {
219
- const existingCat = new Category();
220
- existingCat.id = rowEntry.entry.id;
221
- const path = rowEntry.entry.path.name.split('/').splice(3).join('/');
222
- existingCat.name = path ? `${path}/${rowEntry.entry.name}` : rowEntry.entry.name;
223
- return existingCat;
224
- });
225
- this._existingCategories = this._existingCategories.filter((existingCat) => this.categories.find((category) => existingCat.id === category.id) === undefined);
226
- this.sortCategoriesList(this._existingCategories);
227
- this._existingCategoriesLoading = false;
228
- this._typing = false;
229
- this.existingCategoryLoaded$.next();
230
- });
231
- }
232
- getChildrenCategories(searchTerm) {
233
- this.categoryService.getSubcategories(this.parentId).subscribe((childrenCategories) => {
234
- this._existingCategories = childrenCategories.list.entries.map((categoryEntry) => categoryEntry.entry);
235
- this._existingCategories = this._existingCategories.filter((existingCat) => existingCat.name.toLowerCase().includes(searchTerm.toLowerCase()));
236
- this.sortCategoriesList(this._existingCategories);
237
- this._existingCategoriesLoading = false;
238
- this._typing = false;
239
- this.existingCategoryLoaded$.next();
240
- });
241
- }
242
- validateIfNotAlreadyAdded(nameControl) {
243
- return this.categories?.some((category) => this.compareCategories(category, nameControl.value)) && this.isCRUDMode
244
- ? { duplicatedCategory: true }
245
- : null;
246
- }
247
- validateIfNotAlreadyCreated(nameControl) {
248
- return this.existingCategoryLoaded$.pipe(map(() => this.existingCategories.some((category) => this.compareCategories(category, nameControl.value)) && this.isCRUDMode
249
- ? { duplicatedExistingCategory: true }
250
- : null), first());
251
- }
252
- compareCategories(category1, cat2Name) {
253
- return category1?.name.trim().toUpperCase() === cat2Name?.trim().toUpperCase();
254
- }
255
- validateEmptyCategory(categoryNameControl) {
256
- return categoryNameControl.value.length && !categoryNameControl.value.trim() ? { emptyCategory: true } : null;
257
- }
258
- setCategoryNameControlErrorMessageKey() {
259
- this._categoryNameErrorMessageKey = this.categoryNameControl.invalid
260
- ? `CATEGORIES_MANAGEMENT.ERRORS.${this.nameErrorMessagesByErrors.get(Object.keys(this.categoryNameControl.errors)[0])}`
261
- : '';
262
- }
263
- sortCategoriesList(categoriesList) {
264
- categoriesList.sort((category1, category2) => category1.name.localeCompare(category2.name));
265
- }
266
- clearCategoryNameInput() {
267
- this.categoryNameControl.setValue('');
268
- this.categoryNameControl.markAsUntouched();
269
- }
270
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CategoriesManagementComponent, deps: [{ token: i1.CategoryService }], target: i0.ɵɵFactoryTarget.Component }); }
271
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CategoriesManagementComponent, isStandalone: true, selector: "adf-categories-management", inputs: { categories: "categories", categoryNameControlVisible: "categoryNameControlVisible", classifiableChanged: "classifiableChanged", disableRemoval: "disableRemoval", managementMode: "managementMode", parentId: "parentId", multiSelect: "multiSelect" }, outputs: { categoriesChange: "categoriesChange", categoryNameControlVisibleChange: "categoryNameControlVisibleChange" }, viewQueries: [{ propertyName: "categoryNameInputElement", first: true, predicate: ["categoryNameInput"], descendants: true }], ngImport: i0, template: "<div class=\"adf-categories-management\">\n <div *ngIf=\"categoryNameControlVisible\" class=\"adf-category-name-field\">\n <input #categoryNameInput\n [formControl]=\"categoryNameControl\"\n (keyup.enter)=\"addCategory()\"\n placeholder=\"{{'CATEGORIES_MANAGEMENT.CATEGORIES_SEARCH_PLACEHOLDER' | translate }}\"\n adf-auto-focus\n />\n <mat-error *ngIf=\"categoryNameControl.invalid\">{{ categoryNameErrorMessageKey | translate }}</mat-error>\n </div>\n <div class=\"adf-categories-list\" *ngIf=\"categories?.length > 0\" [class.adf-categories-list-fixed]=\"!categoryNameControlVisible\">\n <span\n *ngFor=\"let category of categories\"\n [class.adf-categories-padded]=\"!isCRUDMode\"\n class=\"adf-assigned-categories\">\n {{ category.name }}\n <button\n data-automation-id=\"categories-remove-category-button\"\n mat-icon-button\n (click)=\"removeCategory(category)\"\n [attr.title]=\"removeCategoryTitle | translate\"\n [disabled]=\"disableRemoval\">\n <mat-icon>remove</mat-icon>\n </button>\n </span>\n </div>\n <p *ngIf=\"showEmptyCategoryMessage\" class=\"adf-no-categories-message\">\n {{ noCategoriesMsg | translate }}\n </p>\n</div>\n<div class=\"adf-existing-categories-panel\" *ngIf=\"existingCategoriesPanelVisible\">\n <ng-container *ngIf=\"isCRUDMode && (!existingCategoriesLoading || existingCategories)\">\n <span class=\"adf-create-category-label\"\n (click)=\"addCategory()\"\n tabindex=\"0\"\n role=\"button\"\n (keyup.enter)=\"addCategory()\"\n [hidden]=\"categoryNameControl.invalid || typing\">\n {{ 'CATEGORIES_MANAGEMENT.GENERIC_CREATE' | translate : { name: categoryNameControl.value } }}\n </span>\n </ng-container>\n <div *ngIf=\"categoryNameControlVisible\" class=\"adf-categories-list\">\n <ng-container *ngIf=\"!existingCategoriesLoading && existingCategories\">\n <p class=\"adf-existing-categories-label\">\n {{ existingCategoriesMsg | translate }}\n </p>\n <mat-list\n [disabled]=\"isCRUDMode || !multiSelect && categories.length > 0\"\n class=\"adf-categories-management-list\">\n <mat-list-item\n *ngFor=\"let category of existingCategories\"\n class=\"adf-category\"\n (click)='addCategoryToAssign(category)'>\n {{ category.name }}\n </mat-list-item>\n <p *ngIf=\"!existingCategories?.length && !existingCategoriesLoading\"\n data-automation-id=\"no-categories-message\">\n {{ 'CATEGORIES_MANAGEMENT.NO_EXISTING_CATEGORIES' | translate }}\n </p>\n </mat-list>\n </ng-container>\n <mat-spinner\n *ngIf=\"existingCategoriesLoading\"\n [diameter]=\"50\"\n class=\"adf-categories-management-spinner\"\n [attr.aria-label]=\"'CATEGORIES_MANAGEMENT.LOADING' | translate\" />\n </div>\n</div>\n", styles: [".adf-categories-management .adf-category-name-field{display:flex;flex-direction:column;margin-right:12px}.adf-categories-management .adf-category-name-field input{background:var(--adf-metadata-buttons-background-color);border-radius:12px;padding:7px 8px;border:none;outline:none;font:inherit;color:currentcolor;margin:0;vertical-align:bottom;text-align:inherit;box-sizing:content-box}.adf-categories-management .adf-category-name-field .mat-mdc-form-field-error{padding-top:5px}.adf-categories-management .adf-assigned-categories{display:flex;justify-content:space-between;align-items:center;word-break:break-word}.adf-categories-management .adf-categories-padded{padding:5px 0}.adf-categories-management [hidden]{visibility:hidden}.adf-categories-management .adf-no-categories-message{margin-bottom:0;height:30px}.adf-categories-list .adf-categories-management-list .adf-category{display:flex;height:100%;overflow-wrap:anywhere;padding:5px 0;font-size:14px;background-color:inherit;color:inherit}.adf-categories-list .adf-categories-management-list .adf-category:not(.mdc-list-item--disabled):hover{cursor:pointer;background:var(--adf-theme-mat-grey-color-a200)}.adf-categories-list .adf-categories-management-list .adf-category span{padding:0}.adf-categories-list .adf-existing-categories-label{font-size:10px;color:var(--theme-secondary-text-color);margin-bottom:2px}.adf-categories-list .adf-categories-management-spinner{margin:auto}.adf-existing-categories-panel{min-height:22vh}.adf-existing-categories-panel .adf-create-category-label{color:var(--theme-primary-color);cursor:pointer;overflow-wrap:anywhere}.adf-existing-categories-panel .mdc-list-item--disabled .mdc-list-item__primary-text{opacity:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "directive", type: AutoFocusDirective, selector: "[adf-auto-focus]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i8.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i8.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], encapsulation: i0.ViewEncapsulation.None }); }
272
- }
273
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CategoriesManagementComponent, decorators: [{
274
- type: Component,
275
- args: [{ selector: 'adf-categories-management', standalone: true, imports: [
276
- CommonModule,
277
- TranslateModule,
278
- AutoFocusDirective,
279
- ReactiveFormsModule,
280
- MatFormFieldModule,
281
- MatButtonModule,
282
- MatIconModule,
283
- MatListModule,
284
- MatProgressSpinnerModule
285
- ], encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-categories-management\">\n <div *ngIf=\"categoryNameControlVisible\" class=\"adf-category-name-field\">\n <input #categoryNameInput\n [formControl]=\"categoryNameControl\"\n (keyup.enter)=\"addCategory()\"\n placeholder=\"{{'CATEGORIES_MANAGEMENT.CATEGORIES_SEARCH_PLACEHOLDER' | translate }}\"\n adf-auto-focus\n />\n <mat-error *ngIf=\"categoryNameControl.invalid\">{{ categoryNameErrorMessageKey | translate }}</mat-error>\n </div>\n <div class=\"adf-categories-list\" *ngIf=\"categories?.length > 0\" [class.adf-categories-list-fixed]=\"!categoryNameControlVisible\">\n <span\n *ngFor=\"let category of categories\"\n [class.adf-categories-padded]=\"!isCRUDMode\"\n class=\"adf-assigned-categories\">\n {{ category.name }}\n <button\n data-automation-id=\"categories-remove-category-button\"\n mat-icon-button\n (click)=\"removeCategory(category)\"\n [attr.title]=\"removeCategoryTitle | translate\"\n [disabled]=\"disableRemoval\">\n <mat-icon>remove</mat-icon>\n </button>\n </span>\n </div>\n <p *ngIf=\"showEmptyCategoryMessage\" class=\"adf-no-categories-message\">\n {{ noCategoriesMsg | translate }}\n </p>\n</div>\n<div class=\"adf-existing-categories-panel\" *ngIf=\"existingCategoriesPanelVisible\">\n <ng-container *ngIf=\"isCRUDMode && (!existingCategoriesLoading || existingCategories)\">\n <span class=\"adf-create-category-label\"\n (click)=\"addCategory()\"\n tabindex=\"0\"\n role=\"button\"\n (keyup.enter)=\"addCategory()\"\n [hidden]=\"categoryNameControl.invalid || typing\">\n {{ 'CATEGORIES_MANAGEMENT.GENERIC_CREATE' | translate : { name: categoryNameControl.value } }}\n </span>\n </ng-container>\n <div *ngIf=\"categoryNameControlVisible\" class=\"adf-categories-list\">\n <ng-container *ngIf=\"!existingCategoriesLoading && existingCategories\">\n <p class=\"adf-existing-categories-label\">\n {{ existingCategoriesMsg | translate }}\n </p>\n <mat-list\n [disabled]=\"isCRUDMode || !multiSelect && categories.length > 0\"\n class=\"adf-categories-management-list\">\n <mat-list-item\n *ngFor=\"let category of existingCategories\"\n class=\"adf-category\"\n (click)='addCategoryToAssign(category)'>\n {{ category.name }}\n </mat-list-item>\n <p *ngIf=\"!existingCategories?.length && !existingCategoriesLoading\"\n data-automation-id=\"no-categories-message\">\n {{ 'CATEGORIES_MANAGEMENT.NO_EXISTING_CATEGORIES' | translate }}\n </p>\n </mat-list>\n </ng-container>\n <mat-spinner\n *ngIf=\"existingCategoriesLoading\"\n [diameter]=\"50\"\n class=\"adf-categories-management-spinner\"\n [attr.aria-label]=\"'CATEGORIES_MANAGEMENT.LOADING' | translate\" />\n </div>\n</div>\n", styles: [".adf-categories-management .adf-category-name-field{display:flex;flex-direction:column;margin-right:12px}.adf-categories-management .adf-category-name-field input{background:var(--adf-metadata-buttons-background-color);border-radius:12px;padding:7px 8px;border:none;outline:none;font:inherit;color:currentcolor;margin:0;vertical-align:bottom;text-align:inherit;box-sizing:content-box}.adf-categories-management .adf-category-name-field .mat-mdc-form-field-error{padding-top:5px}.adf-categories-management .adf-assigned-categories{display:flex;justify-content:space-between;align-items:center;word-break:break-word}.adf-categories-management .adf-categories-padded{padding:5px 0}.adf-categories-management [hidden]{visibility:hidden}.adf-categories-management .adf-no-categories-message{margin-bottom:0;height:30px}.adf-categories-list .adf-categories-management-list .adf-category{display:flex;height:100%;overflow-wrap:anywhere;padding:5px 0;font-size:14px;background-color:inherit;color:inherit}.adf-categories-list .adf-categories-management-list .adf-category:not(.mdc-list-item--disabled):hover{cursor:pointer;background:var(--adf-theme-mat-grey-color-a200)}.adf-categories-list .adf-categories-management-list .adf-category span{padding:0}.adf-categories-list .adf-existing-categories-label{font-size:10px;color:var(--theme-secondary-text-color);margin-bottom:2px}.adf-categories-list .adf-categories-management-spinner{margin:auto}.adf-existing-categories-panel{min-height:22vh}.adf-existing-categories-panel .adf-create-category-label{color:var(--theme-primary-color);cursor:pointer;overflow-wrap:anywhere}.adf-existing-categories-panel .mdc-list-item--disabled .mdc-list-item__primary-text{opacity:1}\n"] }]
286
- }], ctorParameters: () => [{ type: i1.CategoryService }], propDecorators: { categories: [{
287
- type: Input
288
- }], categoryNameControlVisible: [{
289
- type: Input
290
- }], classifiableChanged: [{
291
- type: Input
292
- }], disableRemoval: [{
293
- type: Input
294
- }], managementMode: [{
295
- type: Input,
296
- args: [{ required: true }]
297
- }], parentId: [{
298
- type: Input
299
- }], multiSelect: [{
300
- type: Input
301
- }], categoriesChange: [{
302
- type: Output
303
- }], categoryNameControlVisibleChange: [{
304
- type: Output
305
- }], categoryNameInputElement: [{
306
- type: ViewChild,
307
- args: ['categoryNameInput']
308
- }] } });
309
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcmllcy1tYW5hZ2VtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvY2F0ZWdvcnkvY2F0ZWdvcmllcy1tYW5hZ2VtZW50L2NhdGVnb3JpZXMtbWFuYWdlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL2NhdGVnb3J5L2NhdGVnb3JpZXMtbWFuYWdlbWVudC9jYXRlZ29yaWVzLW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFB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Q0FBQzsrR0FqVFEsNkJBQTZCO21HQUE3Qiw2QkFBNkIsK2tCQ3ZFMUMsZ3ZHQW9FQSx3dUREWFEsWUFBWSwrUEFDWixlQUFlLDRGQUNmLGtCQUFrQiw0REFDbEIsbUJBQW1CLHlrQkFDbkIsa0JBQWtCLDJIQUNsQixlQUFlLDJJQUNmLGFBQWEsbUxBQ2IsYUFBYSx1UkFDYix3QkFBd0I7OzRGQU1uQiw2QkFBNkI7a0JBbEJ6QyxTQUFTOytCQUNJLDJCQUEyQixjQUN6QixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixhQUFhO3dCQUNiLHdCQUF3QjtxQkFDM0IsaUJBR2MsaUJBQWlCLENBQUMsSUFBSTtvRkErQnJDLFVBQVU7c0JBRFQsS0FBSztnQkFVRiwwQkFBMEI7c0JBRDdCLEtBQUs7Z0JBb0JOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBU04sY0FBYztzQkFEYixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFLekIsUUFBUTtzQkFEUCxLQUFLO2dCQUtOLFdBQVc7c0JBRFYsS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsTUFBTTtnQkFLUCxnQ0FBZ0M7c0JBRC9CLE1BQU07Z0JBSUMsd0JBQXdCO3NCQUQvQixTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIFN1YmplY3QsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZSwgZmlyc3QsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2F0ZWdvcmllc01hbmFnZW1lbnRNb2RlIH0gZnJvbSAnLi9jYXRlZ29yaWVzLW1hbmFnZW1lbnQtbW9kZSc7XG5pbXBvcnQgeyBDYXRlZ29yeVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jYXRlZ29yeS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEF1dG9Gb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmludGVyZmFjZSBDYXRlZ29yeU5hbWVDb250cm9sRXJyb3JzIHtcbiAgICBkdXBsaWNhdGVkRXhpc3RpbmdDYXRlZ29yeT86IGJvb2xlYW47XG4gICAgZHVwbGljYXRlZENhdGVnb3J5PzogYm9vbGVhbjtcbiAgICBlbXB0eUNhdGVnb3J5PzogYm9vbGVhbjtcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNhdGVnb3JpZXMtbWFuYWdlbWVudCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBBdXRvRm9jdXNEaXJlY3RpdmUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRMaXN0TW9kdWxlLFxuICAgICAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGVcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYXRlZ29yaWVzLW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhdGVnb3JpZXMtbWFuYWdlbWVudC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQ2F0ZWdvcmllc01hbmFnZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcmVhZG9ubHkgbmFtZUVycm9yTWVzc2FnZXNCeUVycm9ycyA9IG5ldyBNYXA8a2V5b2YgQ2F0ZWdvcnlOYW1lQ29udHJvbEVycm9ycywgc3RyaW5nPihbXG4gICAgICAgIFsnZHVwbGljYXRlZEV4aXN0aW5nQ2F0ZWdvcnknLCAnQUxSRUFEWV9FWElTVFMnXSxcbiAgICAgICAgWydkdXBsaWNhdGVkQ2F0ZWdvcnknLCAnRFVQTElDQVRFRF9DQVRFR09SWSddLFxuICAgICAgICBbJ2VtcHR5Q2F0ZWdvcnknLCAnRU1QVFlfQ0FURUdPUlknXSxcbiAgICAgICAgWydyZXF1aXJlZCcsICdSRVFVSVJFRCddXG4gICAgXSk7XG5cbiAgICBwcml2YXRlIGV4aXN0aW5nQ2F0ZWdvcnlMb2FkZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIGNhbmNlbEV4aXN0aW5nQ2F0ZWdvcmllc0xvYWRpbmckID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIF9jYXRlZ29yeU5hbWVDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oXG4gICAgICAgICcnLFxuICAgICAgICBbdGhpcy52YWxpZGF0ZUlmTm90QWxyZWFkeUFkZGVkLmJpbmQodGhpcyksIHRoaXMudmFsaWRhdGVFbXB0eUNhdGVnb3J5LCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgdGhpcy52YWxpZGF0ZUlmTm90QWxyZWFkeUNyZWF0ZWQuYmluZCh0aGlzKVxuICAgICk7XG4gICAgcHJpdmF0ZSBfZXhpc3RpbmdDYXRlZ29yaWVzOiBDYXRlZ29yeVtdO1xuICAgIHByaXZhdGUgX2NhdGVnb3J5TmFtZUVycm9yTWVzc2FnZUtleSA9ICcnO1xuICAgIHByaXZhdGUgX2V4aXN0aW5nQ2F0ZWdvcmllc0xvYWRpbmcgPSBmYWxzZTtcbiAgICBwcml2YXRlIF90eXBpbmcgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9leGlzdGluZ0NhdGVnb3JpZXNQYW5lbFZpc2libGU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfY2F0ZWdvcnlOYW1lQ29udHJvbFZpc2libGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV4aXN0aW5nQ2F0ZWdvcmllc0xpc3RMaW1pdCA9IDE1O1xuICAgIGluaXRpYWxDYXRlZ29yaWVzOiBDYXRlZ29yeVtdID0gW107XG4gICAgbm9DYXRlZ29yaWVzTXNnID0gJyc7XG4gICAgcmVtb3ZlQ2F0ZWdvcnlUaXRsZSA9ICcnO1xuICAgIGV4aXN0aW5nQ2F0ZWdvcmllc01zZyA9ICcnO1xuXG4gICAgLyoqIENhdGVnb3JpZXMgdG8gZGlzcGxheSBpbml0aWFsbHkgKi9cbiAgICBASW5wdXQoKVxuICAgIGNhdGVnb3JpZXM6IENhdGVnb3J5W10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIERlY2lkZXMgaWYgY2F0ZWdvcnlOYW1lQ29udHJvbCBzaG91bGQgYmUgdmlzaWJsZS4gU2V0cyBhbHNvIGV4aXN0aW5nIGNhdGVnb3JpZXMgcGFuZWwgdmlzaWJpbGl0eVxuICAgICAqIGFuZCBzY3JvbGxzIGNvbnRyb2wgaW50byB2aWV3IHdoZW4gdmlzaWJsZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeU5hbWVDb250cm9sVmlzaWJsZSBjb250cm9sIHZpc2liaWxpdHkuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY2F0ZWdvcnlOYW1lQ29udHJvbFZpc2libGUoY2F0ZWdvcnlOYW1lQ29udHJvbFZpc2libGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fY2F0ZWdvcnlOYW1lQ29udHJvbFZpc2libGUgPSBjYXRlZ29yeU5hbWVDb250cm9sVmlzaWJsZTtcbiAgICAgICAgaWYgKGNhdGVnb3J5TmFtZUNvbnRyb2xWaXNpYmxlKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5TmFtZUlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX2V4aXN0aW5nQ2F0ZWdvcmllc1BhbmVsVmlzaWJsZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9leGlzdGluZ0NhdGVnb3JpZXNQYW5lbFZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJDYXRlZ29yeU5hbWVJbnB1dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGNhdGVnb3J5TmFtZUNvbnRyb2xWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2F0ZWdvcnlOYW1lQ29udHJvbFZpc2libGU7XG4gICAgfVxuXG4gICAgLyoqIEVtaXRzIHdoZW4gY2xhc3NpZmlhYmxlIGFzcGVjdCBjaGFuZ2VzICovXG4gICAgQElucHV0KClcbiAgICBjbGFzc2lmaWFibGVDaGFuZ2VkOiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gICAgLyoqIERpc2FibGVzIHJlbW92ZSBidXR0b24gaW4gdXBwZXIgY2F0ZWdvcmllcyBsaXN0ICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlUmVtb3ZhbCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ29tcG9uZW50IG1vZGUuXG4gICAgICogSW4gQVNTSUdOIG1vZGUgd2UgY2FuIG9ubHkgYXNzaWduL3VuYXNzaWduIGNhdGVnb3JpZXMgZnJvbSBleGlzdGluZyBsaXN0LlxuICAgICAqIEluIENSVUQgbW9kZSB3ZSBjYW4gY3JlYXRlIGNhdGVnb3JpZXMuXG4gICAgICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBtYW5hZ2VtZW50TW9kZTogQ2F0ZWdvcmllc01hbmFnZW1lbnRNb2RlO1xuXG4gICAgLyoqIElEIG9mIGEgcGFyZW50IGNhdGVnb3J5LiBOZXcgY2F0ZWdvcmllcyB3aWxsIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBwYXJlbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIHBhcmVudElkOiBzdHJpbmc7XG5cbiAgICAvKiogVG9nZ2xlcyBtdWx0aXNlbGVjdCBtb2RlICovXG4gICAgQElucHV0KClcbiAgICBtdWx0aVNlbGVjdCA9IHRydWU7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBzdGF0ZSBvZiB1cHBlciBjYXRlZ29yaWVzIGxpc3QgY2hhbmdlcyAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNhdGVnb3JpZXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENhdGVnb3J5W10+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBjYXRlZ29yeU5hbWVDb250cm9sIHZpc2liaWxpdHkgY2hhbmdlcyAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNhdGVnb3J5TmFtZUNvbnRyb2xWaXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgQFZpZXdDaGlsZCgnY2F0ZWdvcnlOYW1lSW5wdXQnKVxuICAgIHByaXZhdGUgY2F0ZWdvcnlOYW1lSW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjYXRlZ29yeVNlcnZpY2U6IENhdGVnb3J5U2VydmljZSkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNhdGVnb3J5TmFtZUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKG5hbWU6IHN0cmluZykgPT4gbmFtZS50cmltKCkpLFxuICAgICAgICAgICAgICAgIHRhcCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3R5cGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9leGlzdGluZ0NhdGVnb3JpZXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2V4aXN0aW5nQ2F0ZWdvcmllc1BhbmVsVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5jZWxFeGlzdGluZ0NhdGVnb3JpZXNMb2FkaW5nJC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZGVib3VuY2UoKG5hbWU6IHN0cmluZykgPT4gKG5hbWUgPyB0aW1lcigzMDApIDogRU1QVFkpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgobmFtZTogc3RyaW5nKSA9PiB0aGlzLm9uTmFtZUNvbnRyb2xWYWx1ZUNoYW5nZShuYW1lKSk7XG5cbiAgICAgICAgdGhpcy5jYXRlZ29yeU5hbWVDb250cm9sLnN0YXR1c0NoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNldENhdGVnb3J5TmFtZUNvbnRyb2xFcnJvck1lc3NhZ2VLZXkoKSk7XG5cbiAgICAgICAgdGhpcy5zZXRDYXRlZ29yeU5hbWVDb250cm9sRXJyb3JNZXNzYWdlS2V5KCk7XG5cbiAgICAgICAgdGhpcy5ub0NhdGVnb3JpZXNNc2cgPSB0aGlzLmlzQ1JVRE1vZGUgPyAnQ0FURUdPUklFU19NQU5BR0VNRU5ULk5PX0NBVEVHT1JJRVNfQ1JFQVRFRCcgOiAnQ0FURUdPUklFU19NQU5BR0VNRU5ULk5PX0NBVEVHT1JJRVNfQVNTSUdORUQnO1xuICAgICAgICB0aGlzLnJlbW92ZUNhdGVnb3J5VGl0bGUgPSB0aGlzLmlzQ1JVRE1vZGUgPyAnQ0FURUdPUklFU19NQU5BR0VNRU5ULkRFTEVURV9DQVRFR09SWScgOiAnQ0FURUdPUklFU19NQU5BR0VNRU5ULlVOQVNTSUdOX0NBVEVHT1JZJztcbiAgICAgICAgdGhpcy5leGlzdGluZ0NhdGVnb3JpZXNNc2cgPSB0aGlzLmlzQ1JVRE1vZGUgPyAnQ0FURUdPUklFU19NQU5BR0VNRU5ULkVYSVNUSU5HX0NBVEVHT1JJRVMnIDogJ0NBVEVHT1JJRVNfTUFOQUdFTUVOVC5TRUxFQ1RfRVhJU1RJTkdfQ0FURUdPUlknO1xuXG4gICAgICAgIGlmICghdGhpcy5pc0NSVURNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9jYXRlZ29yeU5hbWVDb250cm9sLnJlbW92ZVZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMuZm9yRWFjaCgoY2F0ZWdvcnkpID0+IHRoaXMuaW5pdGlhbENhdGVnb3JpZXMucHVzaChjYXRlZ29yeSkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuY2xhc3NpZmlhYmxlQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xhc3NpZmlhYmxlQ2hhbmdlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yeU5hbWVDb250cm9sVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5TmFtZUNvbnRyb2xWaXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY2FuY2VsRXhpc3RpbmdDYXRlZ29yaWVzTG9hZGluZyQubmV4dCgpO1xuICAgICAgICB0aGlzLmNhbmNlbEV4aXN0aW5nQ2F0ZWdvcmllc0xvYWRpbmckLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgZ2V0IGNhdGVnb3J5TmFtZUNvbnRyb2woKTogRm9ybUNvbnRyb2w8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYXRlZ29yeU5hbWVDb250cm9sO1xuICAgIH1cblxuICAgIC8qXG4gICAgICogUmV0dXJucyBgdHJ1ZWAgaWYgY2F0ZWdvcmllcyBlbXB0eSBhbmQgY2F0ZWdvcnkgcGFuZWwgbm9uIGVkaXRhYmxlIHN0YXRlLCBvdGhlcndpc2UgYGZhbHNlYFxuICAgICAqL1xuICAgIGdldCBzaG93RW1wdHlDYXRlZ29yeU1lc3NhZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhdGVnb3JpZXMubGVuZ3RoID09PSAwICYmICF0aGlzLmNhdGVnb3J5TmFtZUNvbnRyb2xWaXNpYmxlO1xuICAgIH1cblxuICAgIGdldCBleGlzdGluZ0NhdGVnb3JpZXMoKTogQ2F0ZWdvcnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9leGlzdGluZ0NhdGVnb3JpZXM7XG4gICAgfVxuXG4gICAgZ2V0IGNhdGVnb3J5TmFtZUVycm9yTWVzc2FnZUtleSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2F0ZWdvcnlOYW1lRXJyb3JNZXNzYWdlS2V5O1xuICAgIH1cblxuICAgIGdldCBleGlzdGluZ0NhdGVnb3JpZXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhpc3RpbmdDYXRlZ29yaWVzTG9hZGluZztcbiAgICB9XG5cbiAgICBnZXQgdHlwaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwaW5nO1xuICAgIH1cblxuICAgIGdldCBleGlzdGluZ0NhdGVnb3JpZXNQYW5lbFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9leGlzdGluZ0NhdGVnb3JpZXNQYW5lbFZpc2libGU7XG4gICAgfVxuXG4gICAgZ2V0IGlzQ1JVRE1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hbmFnZW1lbnRNb2RlID09PSBDYXRlZ29yaWVzTWFuYWdlbWVudE1vZGUuQ1JVRDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGNhdGVnb3J5IHRoYXQgaGFzIGJlZW4gdHlwZWQgdG8gYSBjYXRlZ29yeU5hbWVDb250cm9sIGFuZCBoaWRlcyBpdCBhZnRlcndhcmRzLlxuICAgICAqL1xuICAgIGFkZENhdGVnb3J5KCkge1xuICAgICAgICBpZiAodGhpcy5pc0NSVURNb2RlICYmICF0aGlzLl90eXBpbmcgJiYgIXRoaXMuY2F0ZWdvcnlOYW1lQ29udHJvbC5pbnZhbGlkKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdDYXROYW1lID0gdGhpcy5jYXRlZ29yeU5hbWVDb250cm9sLnZhbHVlLnRyaW0oKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld0NhdCA9IG5ldyBDYXRlZ29yeSh7IGlkOiBuZXdDYXROYW1lLCBuYW1lOiBuZXdDYXROYW1lIH0pO1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzLnB1c2gobmV3Q2F0KTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJDYXRlZ29yeU5hbWVJbnB1dCgpO1xuICAgICAgICAgICAgdGhpcy5fZXhpc3RpbmdDYXRlZ29yaWVzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc0NoYW5nZS5lbWl0KHRoaXMuY2F0ZWdvcmllcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGV4aXN0aW5nIGNhdGVnb3J5IHRvIGNhdGVnb3JpZXMgbGlzdCBhbmQgcmVtb3ZlcyBpdCBmcm9tIGV4aXN0aW5nIGNhdGVnb3JpZXMgbGlzdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeSAtIHNlbGVjdGlvbiBsaXN0IGNoYW5nZSBjb250YWluaW5nIHNlbGVjdGVkIGNhdGVnb3J5XG4gICAgICovXG4gICAgYWRkQ2F0ZWdvcnlUb0Fzc2lnbihjYXRlZ29yeTogQ2F0ZWdvcnkpIHtcbiAgICAgICAgaWYgKCEodGhpcy5pc0NSVURNb2RlIHx8ICghdGhpcy5tdWx0aVNlbGVjdCAmJiB0aGlzLmNhdGVnb3JpZXMubGVuZ3RoID4gMCkpKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZENhdGVnb3J5OiBDYXRlZ29yeSA9IGNhdGVnb3J5O1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzLnB1c2goc2VsZWN0ZWRDYXRlZ29yeSk7XG4gICAgICAgICAgICB0aGlzLl9leGlzdGluZ0NhdGVnb3JpZXMuc3BsaWNlKHRoaXMuX2V4aXN0aW5nQ2F0ZWdvcmllcy5pbmRleE9mKHNlbGVjdGVkQ2F0ZWdvcnkpLCAxKTtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnlOYW1lQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXNDaGFuZ2UuZW1pdCh0aGlzLmNhdGVnb3JpZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUgY2F0ZWdvcnkgZnJvbSBjYXRlZ29yaWVzIGxpc3QgYW5kIGFkZHMgaXQgdG8gZXhpc3RpbmcgY2F0ZWdvcmllcyBsaXN0IGluIEFTU0lHTiBtb2RlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5IC0gY2F0ZWdvcnkgdG8gcmVtb3ZlXG4gICAgICovXG4gICAgcmVtb3ZlQ2F0ZWdvcnkoY2F0ZWdvcnk6IENhdGVnb3J5KSB7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllcy5zcGxpY2UodGhpcy5jYXRlZ29yaWVzLmluZGV4T2YoY2F0ZWdvcnkpLCAxKTtcbiAgICAgICAgaWYgKCF0aGlzLmlzQ1JVRE1vZGUgJiYgISF0aGlzLl9leGlzdGluZ0NhdGVnb3JpZXMgJiYgIXRoaXMuaW5pdGlhbENhdGVnb3JpZXMuc29tZSgoY2F0KSA9PiBjYXQuaWQgPT09IGNhdGVnb3J5LmlkKSkge1xuICAgICAgICAgICAgdGhpcy5fZXhpc3RpbmdDYXRlZ29yaWVzLnB1c2goY2F0ZWdvcnkpO1xuICAgICAgICAgICAgdGhpcy5zb3J0Q2F0ZWdvcmllc0xpc3QodGhpcy5fZXhpc3RpbmdDYXRlZ29yaWVzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhdGVnb3J5TmFtZUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXNDaGFuZ2UuZW1pdCh0aGlzLmNhdGVnb3JpZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25OYW1lQ29udHJvbFZhbHVlQ2hhbmdlKG5hbWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNhdGVnb3J5TmFtZUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNDUlVETW9kZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW5DYXRlZ29yaWVzKG5hbWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEZvckV4aXN0aW5nQ2F0ZWdvcmllcyhuYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2V4aXN0aW5nQ2F0ZWdvcmllcyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNlYXJjaEZvckV4aXN0aW5nQ2F0ZWdvcmllcyhzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yeVNlcnZpY2Uuc2VhcmNoQ2F0ZWdvcmllcyhzZWFyY2hUZXJtLCAwLCB0aGlzLmV4aXN0aW5nQ2F0ZWdvcmllc0xpc3RMaW1pdCkuc3Vic2NyaWJlKChleGlzdGluZ0NhdGVnb3JpZXNSZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2V4aXN0aW5nQ2F0ZWdvcmllcyA9IGV4aXN0aW5nQ2F0ZWdvcmllc1Jlc3VsdC5saXN0LmVudHJpZXMubWFwKChyb3dFbnRyeSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nQ2F0ID0gbmV3IENhdGVnb3J5KCk7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdDYXQuaWQgPSByb3dFbnRyeS5lbnRyeS5pZDtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gcm93RW50cnkuZW50cnkucGF0aC5uYW1lLnNwbGl0KCcvJykuc3BsaWNlKDMpLmpvaW4oJy8nKTtcbiAgICAgICAgICAgICAgICBleGlzdGluZ0NhdC5uYW1lID0gcGF0aCA/IGAke3BhdGh9LyR7cm93RW50cnkuZW50cnkubmFtZX1gIDogcm93RW50cnkuZW50cnkubmFtZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdDYXQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX2V4aXN0aW5nQ2F0ZWdvcmllcyA9IHRoaXMuX2V4aXN0aW5nQ2F0ZWdvcmllcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGV4aXN0aW5nQ2F0KSA9PiB0aGlzLmNhdGVnb3JpZXMuZmluZCgoY2F0ZWdvcnkpID0+IGV4aXN0aW5nQ2F0LmlkID09PSBjYXRlZ29yeS5pZCkgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc29ydENhdGVnb3JpZXNMaXN0KHRoaXMuX2V4aXN0aW5nQ2F0ZWdvcmllcyk7XG4gICAgICAgICAgICB0aGlzLl9leGlzdGluZ0NhdGVnb3JpZXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl90eXBpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZXhpc3RpbmdDYXRlZ29yeUxvYWRlZCQubmV4dCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENoaWxkcmVuQ2F0ZWdvcmllcyhzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yeVNlcnZpY2UuZ2V0U3ViY2F0ZWdvcmllcyh0aGlzLnBhcmVudElkKS5zdWJzY3JpYmUoKGNoaWxkcmVuQ2F0ZWdvcmllcykgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZXhpc3RpbmdDYXRlZ29yaWVzID0gY2hpbGRyZW5DYXRlZ29yaWVzLmxpc3QuZW50cmllcy5tYXAoKGNhdGVnb3J5RW50cnkpID0+IGNhdGVnb3J5RW50cnkuZW50cnkpO1xuICAgICAgICAgICAgdGhpcy5fZXhpc3RpbmdDYXRlZ29yaWVzID0gdGhpcy5fZXhpc3RpbmdDYXRlZ29yaWVzLmZpbHRlcigoZXhpc3RpbmdDYXQpID0+XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdDYXQubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnNvcnRDYXRlZ29yaWVzTGlzdCh0aGlzLl9leGlzdGluZ0NhdGVnb3JpZXMpO1xuICAgICAgICAgICAgdGhpcy5fZXhpc3RpbmdDYXRlZ29yaWVzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fdHlwaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmV4aXN0aW5nQ2F0ZWdvcnlMb2FkZWQkLm5leHQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUlmTm90QWxyZWFkeUFkZGVkKG5hbWVDb250cm9sOiBGb3JtQ29udHJvbDxzdHJpbmc+KTogQ2F0ZWdvcnlOYW1lQ29udHJvbEVycm9ycyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5jYXRlZ29yaWVzPy5zb21lKChjYXRlZ29yeSkgPT4gdGhpcy5jb21wYXJlQ2F0ZWdvcmllcyhjYXRlZ29yeSwgbmFtZUNvbnRyb2wudmFsdWUpKSAmJiB0aGlzLmlzQ1JVRE1vZGVcbiAgICAgICAgICAgID8geyBkdXBsaWNhdGVkQ2F0ZWdvcnk6IHRydWUgfVxuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVJZk5vdEFscmVhZHlDcmVhdGVkKG5hbWVDb250cm9sOiBGb3JtQ29udHJvbDxzdHJpbmc+KTogT2JzZXJ2YWJsZTxDYXRlZ29yeU5hbWVDb250cm9sRXJyb3JzIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5leGlzdGluZ0NhdGVnb3J5TG9hZGVkJC5waXBlKFxuICAgICAgICAgICAgbWFwPHZvaWQsIENhdGVnb3J5TmFtZUNvbnRyb2xFcnJvcnMgfCBudWxsPigoKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuZXhpc3RpbmdDYXRlZ29yaWVzLnNvbWUoKGNhdGVnb3J5KSA9PiB0aGlzLmNvbXBhcmVDYXRlZ29yaWVzKGNhdGVnb3J5LCBuYW1lQ29udHJvbC52YWx1ZSkpICYmIHRoaXMuaXNDUlVETW9kZVxuICAgICAgICAgICAgICAgICAgICA/IHsgZHVwbGljYXRlZEV4aXN0aW5nQ2F0ZWdvcnk6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmaXJzdCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wYXJlQ2F0ZWdvcmllcyhjYXRlZ29yeTE/OiBDYXRlZ29yeSwgY2F0Mk5hbWU/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGNhdGVnb3J5MT8ubmFtZS50cmltKCkudG9VcHBlckNhc2UoKSA9PT0gY2F0Mk5hbWU/LnRyaW0oKS50b1VwcGVyQ2FzZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVFbXB0eUNhdGVnb3J5KGNhdGVnb3J5TmFtZUNvbnRyb2w6IEZvcm1Db250cm9sPHN0cmluZz4pOiBDYXRlZ29yeU5hbWVDb250cm9sRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiBjYXRlZ29yeU5hbWVDb250cm9sLnZhbHVlLmxlbmd0aCAmJiAhY2F0ZWdvcnlOYW1lQ29udHJvbC52YWx1ZS50cmltKCkgPyB7IGVtcHR5Q2F0ZWdvcnk6IHRydWUgfSA6IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDYXRlZ29yeU5hbWVDb250cm9sRXJyb3JNZXNzYWdlS2V5KCkge1xuICAgICAgICB0aGlzLl9jYXRlZ29yeU5hbWVFcnJvck1lc3NhZ2VLZXkgPSB0aGlzLmNhdGVnb3J5TmFtZUNvbnRyb2wuaW52YWxpZFxuICAgICAgICAgICAgPyBgQ0FURUdPUklFU19NQU5BR0VNRU5ULkVSUk9SUy4ke3RoaXMubmFtZUVycm9yTWVzc2FnZXNCeUVycm9ycy5nZXQoXG4gICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmNhdGVnb3J5TmFtZUNvbnRyb2wuZXJyb3JzKVswXSBhcyBrZXlvZiBDYXRlZ29yeU5hbWVDb250cm9sRXJyb3JzXG4gICAgICAgICAgICAgICl9YFxuICAgICAgICAgICAgOiAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRDYXRlZ29yaWVzTGlzdChjYXRlZ29yaWVzTGlzdDogQ2F0ZWdvcnlbXSkge1xuICAgICAgICBjYXRlZ29yaWVzTGlzdC5zb3J0KChjYXRlZ29yeTEsIGNhdGVnb3J5MikgPT4gY2F0ZWdvcnkxLm5hbWUubG9jYWxlQ29tcGFyZShjYXRlZ29yeTIubmFtZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJDYXRlZ29yeU5hbWVJbnB1dCgpIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yeU5hbWVDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgICAgdGhpcy5jYXRlZ29yeU5hbWVDb250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZGYtY2F0ZWdvcmllcy1tYW5hZ2VtZW50XCI+XG4gICAgPGRpdiAqbmdJZj1cImNhdGVnb3J5TmFtZUNvbnRyb2xWaXNpYmxlXCIgY2xhc3M9XCJhZGYtY2F0ZWdvcnktbmFtZS1maWVsZFwiPlxuICAgICAgICA8aW5wdXQgI2NhdGVnb3J5TmFtZUlucHV0XG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY2F0ZWdvcnlOYW1lQ29udHJvbFwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYWRkQ2F0ZWdvcnkoKVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0NBVEVHT1JJRVNfTUFOQUdFTUVOVC5DQVRFR09SSUVTX1NFQVJDSF9QTEFDRUhPTERFUicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgYWRmLWF1dG8tZm9jdXNcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJjYXRlZ29yeU5hbWVDb250cm9sLmludmFsaWRcIj57eyBjYXRlZ29yeU5hbWVFcnJvck1lc3NhZ2VLZXkgfCB0cmFuc2xhdGUgfX08L21hdC1lcnJvcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYWRmLWNhdGVnb3JpZXMtbGlzdFwiICpuZ0lmPVwiY2F0ZWdvcmllcz8ubGVuZ3RoID4gMFwiIFtjbGFzcy5hZGYtY2F0ZWdvcmllcy1saXN0LWZpeGVkXT1cIiFjYXRlZ29yeU5hbWVDb250cm9sVmlzaWJsZVwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXNcIlxuICAgICAgICAgICAgW2NsYXNzLmFkZi1jYXRlZ29yaWVzLXBhZGRlZF09XCIhaXNDUlVETW9kZVwiXG4gICAgICAgICAgICBjbGFzcz1cImFkZi1hc3NpZ25lZC1jYXRlZ29yaWVzXCI+XG4gICAgICAgICAgICB7eyBjYXRlZ29yeS5uYW1lIH19XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiY2F0ZWdvcmllcy1yZW1vdmUtY2F0ZWdvcnktYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ2F0ZWdvcnkoY2F0ZWdvcnkpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJyZW1vdmVDYXRlZ29yeVRpdGxlIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVJlbW92YWxcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+cmVtb3ZlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPHAgKm5nSWY9XCJzaG93RW1wdHlDYXRlZ29yeU1lc3NhZ2VcIiBjbGFzcz1cImFkZi1uby1jYXRlZ29yaWVzLW1lc3NhZ2VcIj5cbiAgICAgICAge3sgbm9DYXRlZ29yaWVzTXNnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9wPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYWRmLWV4aXN0aW5nLWNhdGVnb3JpZXMtcGFuZWxcIiAqbmdJZj1cImV4aXN0aW5nQ2F0ZWdvcmllc1BhbmVsVmlzaWJsZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0NSVURNb2RlICYmICghZXhpc3RpbmdDYXRlZ29yaWVzTG9hZGluZyB8fCBleGlzdGluZ0NhdGVnb3JpZXMpXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYWRmLWNyZWF0ZS1jYXRlZ29yeS1sYWJlbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWRkQ2F0ZWdvcnkoKVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYWRkQ2F0ZWdvcnkoKVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cImNhdGVnb3J5TmFtZUNvbnRyb2wuaW52YWxpZCB8fCB0eXBpbmdcIj5cbiAgICAgICAgICAgIHt7ICdDQVRFR09SSUVTX01BTkFHRU1FTlQuR0VORVJJQ19DUkVBVEUnIHwgdHJhbnNsYXRlIDogeyBuYW1lOiBjYXRlZ29yeU5hbWVDb250cm9sLnZhbHVlIH0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgKm5nSWY9XCJjYXRlZ29yeU5hbWVDb250cm9sVmlzaWJsZVwiIGNsYXNzPVwiYWRmLWNhdGVnb3JpZXMtbGlzdFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWV4aXN0aW5nQ2F0ZWdvcmllc0xvYWRpbmcgJiYgZXhpc3RpbmdDYXRlZ29yaWVzXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImFkZi1leGlzdGluZy1jYXRlZ29yaWVzLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAge3sgZXhpc3RpbmdDYXRlZ29yaWVzTXNnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8bWF0LWxpc3RcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNDUlVETW9kZSB8fCAhbXVsdGlTZWxlY3QgJiYgY2F0ZWdvcmllcy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jYXRlZ29yaWVzLW1hbmFnZW1lbnQtbGlzdFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBleGlzdGluZ0NhdGVnb3JpZXNcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9J2FkZENhdGVnb3J5VG9Bc3NpZ24oY2F0ZWdvcnkpJz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNhdGVnb3J5Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgPHAgKm5nSWY9XCIhZXhpc3RpbmdDYXRlZ29yaWVzPy5sZW5ndGggJiYgIWV4aXN0aW5nQ2F0ZWdvcmllc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cIm5vLWNhdGVnb3JpZXMtbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnQ0FURUdPUklFU19NQU5BR0VNRU5ULk5PX0VYSVNUSU5HX0NBVEVHT1JJRVMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9tYXQtbGlzdD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxtYXQtc3Bpbm5lclxuICAgICAgICAgICAgKm5nSWY9XCJleGlzdGluZ0NhdGVnb3JpZXNMb2FkaW5nXCJcbiAgICAgICAgICAgIFtkaWFtZXRlcl09XCI1MFwiXG4gICAgICAgICAgICBjbGFzcz1cImFkZi1jYXRlZ29yaWVzLW1hbmFnZW1lbnQtc3Bpbm5lclwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDQVRFR09SSUVTX01BTkFHRU1FTlQuTE9BRElORycgfCB0cmFuc2xhdGVcIiAvPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,33 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { NgModule } from '@angular/core';
18
- import { CategoriesManagementComponent } from './categories-management/categories-management.component';
19
- import * as i0 from "@angular/core";
20
- /** @deprecated use `CategoriesManagementComponent` standalone component instead */
21
- export class CategoriesModule {
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CategoriesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
23
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: CategoriesModule, imports: [CategoriesManagementComponent], exports: [CategoriesManagementComponent] }); }
24
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CategoriesModule, imports: [CategoriesManagementComponent] }); }
25
- }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CategoriesModule, decorators: [{
27
- type: NgModule,
28
- args: [{
29
- imports: [CategoriesManagementComponent],
30
- exports: [CategoriesManagementComponent]
31
- }]
32
- }] });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9jYXRlZ29yeS9jYXRlZ29yeS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQzs7QUFFeEcsbUZBQW1GO0FBS25GLE1BQU0sT0FBTyxnQkFBZ0I7K0dBQWhCLGdCQUFnQjtnSEFBaEIsZ0JBQWdCLFlBSGYsNkJBQTZCLGFBQzdCLDZCQUE2QjtnSEFFOUIsZ0JBQWdCLFlBSGYsNkJBQTZCOzs0RkFHOUIsZ0JBQWdCO2tCQUo1QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLDZCQUE2QixDQUFDO29CQUN4QyxPQUFPLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztpQkFDM0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYXRlZ29yaWVzTWFuYWdlbWVudENvbXBvbmVudCB9IGZyb20gJy4vY2F0ZWdvcmllcy1tYW5hZ2VtZW50L2NhdGVnb3JpZXMtbWFuYWdlbWVudC5jb21wb25lbnQnO1xuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIGBDYXRlZ29yaWVzTWFuYWdlbWVudENvbXBvbmVudGAgc3RhbmRhbG9uZSBjb21wb25lbnQgaW5zdGVhZCAqL1xuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ2F0ZWdvcmllc01hbmFnZW1lbnRDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtDYXRlZ29yaWVzTWFuYWdlbWVudENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgQ2F0ZWdvcmllc01vZHVsZSB7fVxuIl19
@@ -1,18 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- export * from './public-api';
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL2NhdGVnb3J5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -1,18 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- export {};
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktbm9kZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL2NhdGVnb3J5L21vZGVscy9jYXRlZ29yeS1ub2RlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUciLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFRyZWVOb2RlIH0gZnJvbSAnLi4vLi4vdHJlZS9tb2RlbHMvdHJlZS1ub2RlLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2F0ZWdvcnlOb2RlIGV4dGVuZHMgVHJlZU5vZGUge1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuIl19
@@ -1,23 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- export * from './services/category.service';
18
- export * from './services/category-tree-datasource.service';
19
- export * from './models/category-node.interface';
20
- export * from './category.module';
21
- export * from './categories-management/categories-management.component';
22
- export * from './categories-management/categories-management-mode';
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvY2F0ZWdvcnkvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyxvREFBb0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jYXRlZ29yeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvY2F0ZWdvcnktdHJlZS1kYXRhc291cmNlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvY2F0ZWdvcnktbm9kZS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXRlZ29yeS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXRlZ29yaWVzLW1hbmFnZW1lbnQvY2F0ZWdvcmllcy1tYW5hZ2VtZW50LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NhdGVnb3JpZXMtbWFuYWdlbWVudC9jYXRlZ29yaWVzLW1hbmFnZW1lbnQtbW9kZSc7XG4iXX0=
@@ -1,80 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { Injectable } from '@angular/core';
18
- import { TreeNodeType, TreeService } from '../../tree';
19
- import { CategoryService } from './category.service';
20
- import { from } from 'rxjs';
21
- import { map, mergeMap, toArray } from 'rxjs/operators';
22
- import * as i0 from "@angular/core";
23
- import * as i1 from "./category.service";
24
- export class CategoryTreeDatasourceService extends TreeService {
25
- constructor(categoryService) {
26
- super();
27
- this.categoryService = categoryService;
28
- }
29
- getSubNodes(parentNodeId, skipCount, maxItems, name) {
30
- return !name
31
- ? this.categoryService.getSubcategories(parentNodeId, skipCount, maxItems).pipe(map((response) => {
32
- const parentNode = this.getParentNode(parentNodeId);
33
- const nodesList = response.list.entries.map((entry) => ({
34
- id: entry.entry.id,
35
- nodeName: entry.entry.name,
36
- parentId: entry.entry.parentId,
37
- hasChildren: entry.entry.hasChildren,
38
- level: parentNode ? parentNode.level + 1 : 0,
39
- isLoading: false,
40
- nodeType: TreeNodeType.RegularNode
41
- }));
42
- if (response.list.pagination.hasMoreItems && parentNode) {
43
- const loadMoreNode = {
44
- id: 'loadMore',
45
- nodeName: '',
46
- parentId: parentNode.id,
47
- hasChildren: false,
48
- level: parentNode.level + 1,
49
- isLoading: false,
50
- nodeType: TreeNodeType.LoadMoreNode
51
- };
52
- nodesList.push(loadMoreNode);
53
- }
54
- return { entries: nodesList, pagination: response.list.pagination };
55
- }))
56
- : this.categoryService.searchCategories(name, skipCount, maxItems).pipe(mergeMap((pagingResult) => {
57
- const nextAfterGeneralPathPartIndex = 3;
58
- const pathSeparator = '/';
59
- return from(pagingResult.list.entries).pipe(mergeMap((category) => {
60
- const path = category.entry.path.name.split(pathSeparator).slice(nextAfterGeneralPathPartIndex).join(pathSeparator);
61
- return this.categoryService.getCategory(category.entry.id).pipe(map((res) => ({
62
- id: category.entry.id,
63
- nodeName: path ? `${path}/${category.entry.name}` : category.entry.name,
64
- parentId: category.entry.parentId,
65
- level: 0,
66
- nodeType: TreeNodeType.RegularNode,
67
- hasChildren: res.entry.hasChildren,
68
- isLoading: false
69
- })));
70
- }), toArray(), map((res) => ({ entries: res, pagination: pagingResult.list.pagination })));
71
- }));
72
- }
73
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CategoryTreeDatasourceService, deps: [{ token: i1.CategoryService }], target: i0.ɵɵFactoryTarget.Injectable }); }
74
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CategoryTreeDatasourceService, providedIn: 'root' }); }
75
- }
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CategoryTreeDatasourceService, decorators: [{
77
- type: Injectable,
78
- args: [{ providedIn: 'root' }]
79
- }], ctorParameters: () => [{ type: i1.CategoryService }] });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktdHJlZS1kYXRhc291cmNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL2NhdGVnb3J5L3NlcnZpY2VzL2NhdGVnb3J5LXRyZWUtZGF0YXNvdXJjZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBZ0IsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFHeEQsTUFBTSxPQUFPLDZCQUE4QixTQUFRLFdBQXlCO0lBQ3hFLFlBQW9CLGVBQWdDO1FBQ2hELEtBQUssRUFBRSxDQUFDO1FBRFEsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBRXBELENBQUM7SUFFTSxXQUFXLENBQUMsWUFBb0IsRUFBRSxTQUFrQixFQUFFLFFBQWlCLEVBQUUsSUFBYTtRQUN6RixPQUFPLENBQUMsSUFBSTtZQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUN6RSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDYixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNwRCxNQUFNLFNBQVMsR0FBbUIsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FB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RUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUM3RSxDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNaLENBQUM7K0dBM0RRLDZCQUE2QjttSEFBN0IsNkJBQTZCLGNBRGhCLE1BQU07OzRGQUNuQiw2QkFBNkI7a0JBRHpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmVlTm9kZVR5cGUsIFRyZWVSZXNwb25zZSwgVHJlZVNlcnZpY2UgfSBmcm9tICcuLi8uLi90cmVlJztcbmltcG9ydCB7IENhdGVnb3J5Tm9kZSB9IGZyb20gJy4uL21vZGVscy9jYXRlZ29yeS1ub2RlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDYXRlZ29yeVNlcnZpY2UgfSBmcm9tICcuL2NhdGVnb3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBtZXJnZU1hcCwgdG9BcnJheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBDYXRlZ29yeVRyZWVEYXRhc291cmNlU2VydmljZSBleHRlbmRzIFRyZWVTZXJ2aWNlPENhdGVnb3J5Tm9kZT4ge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2F0ZWdvcnlTZXJ2aWNlOiBDYXRlZ29yeVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3ViTm9kZXMocGFyZW50Tm9kZUlkOiBzdHJpbmcsIHNraXBDb3VudD86IG51bWJlciwgbWF4SXRlbXM/OiBudW1iZXIsIG5hbWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRyZWVSZXNwb25zZTxDYXRlZ29yeU5vZGU+PiB7XG4gICAgICAgIHJldHVybiAhbmFtZVxuICAgICAgICAgICAgPyB0aGlzLmNhdGVnb3J5U2VydmljZS5nZXRTdWJjYXRlZ29yaWVzKHBhcmVudE5vZGVJZCwgc2tpcENvdW50LCBtYXhJdGVtcykucGlwZShcbiAgICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gdGhpcy5nZXRQYXJlbnROb2RlKHBhcmVudE5vZGVJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZXNMaXN0OiBDYXRlZ29yeU5vZGVbXSA9IHJlc3BvbnNlLmxpc3QuZW50cmllcy5tYXAoKGVudHJ5KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogZW50cnkuZW50cnkuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVOYW1lOiBlbnRyeS5lbnRyeS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogZW50cnkuZW50cnkucGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0NoaWxkcmVuOiBlbnRyeS5lbnRyeS5oYXNDaGlsZHJlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IHBhcmVudE5vZGUgPyBwYXJlbnROb2RlLmxldmVsICsgMSA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVUeXBlOiBUcmVlTm9kZVR5cGUuUmVndWxhck5vZGVcbiAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmxpc3QucGFnaW5hdGlvbi5oYXNNb3JlSXRlbXMgJiYgcGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2FkTW9yZU5vZGU6IENhdGVnb3J5Tm9kZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnbG9hZE1vcmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZU5hbWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IHBhcmVudE5vZGUuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNDaGlsZHJlbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDogcGFyZW50Tm9kZS5sZXZlbCArIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZVR5cGU6IFRyZWVOb2RlVHlwZS5Mb2FkTW9yZU5vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXNMaXN0LnB1c2gobG9hZE1vcmVOb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgZW50cmllczogbm9kZXNMaXN0LCBwYWdpbmF0aW9uOiByZXNwb25zZS5saXN0LnBhZ2luYXRpb24gfTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogdGhpcy5jYXRlZ29yeVNlcnZpY2Uuc2VhcmNoQ2F0ZWdvcmllcyhuYW1lLCBza2lwQ291bnQsIG1heEl0ZW1zKS5waXBlKFxuICAgICAgICAgICAgICAgICAgbWVyZ2VNYXAoKHBhZ2luZ1Jlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRBZnRlckdlbmVyYWxQYXRoUGFydEluZGV4ID0gMztcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoU2VwYXJhdG9yID0gJy8nO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmcm9tKHBhZ2luZ1Jlc3VsdC5saXN0LmVudHJpZXMpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlTWFwKChjYXRlZ29yeSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IGNhdGVnb3J5LmVudHJ5LnBhdGgubmFtZS5zcGxpdChwYXRoU2VwYXJhdG9yKS5zbGljZShuZXh0QWZ0ZXJHZW5lcmFsUGF0aFBhcnRJbmRleCkuam9pbihwYXRoU2VwYXJhdG9yKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcnlTZXJ2aWNlLmdldENhdGVnb3J5KGNhdGVnb3J5LmVudHJ5LmlkKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgocmVzKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogY2F0ZWdvcnkuZW50cnkuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVOYW1lOiBwYXRoID8gYCR7cGF0aH0vJHtjYXRlZ29yeS5lbnRyeS5uYW1lfWAgOiBjYXRlZ29yeS5lbnRyeS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogY2F0ZWdvcnkuZW50cnkucGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlVHlwZTogVHJlZU5vZGVUeXBlLlJlZ3VsYXJOb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNDaGlsZHJlbjogcmVzLmVudHJ5Lmhhc0NoaWxkcmVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9BcnJheSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHJlcykgPT4gKHsgZW50cmllczogcmVzLCBwYWdpbmF0aW9uOiBwYWdpbmdSZXN1bHQubGlzdC5wYWdpbmF0aW9uIH0pKVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==