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

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/esm2022/adf-content-services.mjs +5 -0
  2. package/esm2022/lib/agent/index.mjs +18 -0
  3. package/esm2022/lib/agent/public-api.mjs +18 -0
  4. package/esm2022/lib/agent/services/agent.service.mjs +60 -0
  5. package/esm2022/lib/alfresco-icon/alfresco-icon.component.mjs +27 -0
  6. package/esm2022/lib/api-factories/alfresco-api-no-auth.service.mjs +42 -0
  7. package/esm2022/lib/api-factories/alfresco-api-v2-loader.service.mjs +77 -0
  8. package/esm2022/lib/api-factories/index.mjs +18 -0
  9. package/esm2022/lib/api-factories/public-api.mjs +19 -0
  10. package/esm2022/lib/aspect-list/aspect-list-dialog-data.interface.mjs +18 -0
  11. package/esm2022/lib/aspect-list/aspect-list-dialog.component.mjs +77 -0
  12. package/esm2022/lib/aspect-list/aspect-list.component.mjs +139 -0
  13. package/esm2022/lib/aspect-list/aspect-list.module.mjs +35 -0
  14. package/esm2022/lib/aspect-list/index.mjs +18 -0
  15. package/esm2022/lib/aspect-list/public-api.mjs +24 -0
  16. package/esm2022/lib/aspect-list/services/aspect-list.service.mjs +83 -0
  17. package/esm2022/lib/aspect-list/services/dialog-aspect-list.service.mjs +86 -0
  18. package/esm2022/lib/aspect-list/services/node-aspect.service.mjs +52 -0
  19. package/esm2022/lib/auth-loader/content-auth-loader-factory.mjs +26 -0
  20. package/esm2022/lib/auth-loader/content-auth-loader.service.mjs +42 -0
  21. package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +166 -0
  22. package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +35 -0
  23. package/esm2022/lib/breadcrumb/dropdown-breadcrumb.component.mjs +65 -0
  24. package/esm2022/lib/breadcrumb/index.mjs +18 -0
  25. package/esm2022/lib/breadcrumb/public-api.mjs +20 -0
  26. package/esm2022/lib/category/categories-management/categories-management-mode.mjs +22 -0
  27. package/esm2022/lib/category/categories-management/categories-management.component.mjs +308 -0
  28. package/esm2022/lib/category/category.module.mjs +33 -0
  29. package/esm2022/lib/category/index.mjs +18 -0
  30. package/esm2022/lib/category/models/category-node.interface.mjs +18 -0
  31. package/esm2022/lib/category/public-api.mjs +23 -0
  32. package/esm2022/lib/category/services/category-tree-datasource.service.mjs +80 -0
  33. package/esm2022/lib/category/services/category.service.mjs +159 -0
  34. package/esm2022/lib/common/events/file.event.mjs +46 -0
  35. package/esm2022/lib/common/index.mjs +18 -0
  36. package/esm2022/lib/common/interfaces/saved-search.interface.mjs +18 -0
  37. package/esm2022/lib/common/interfaces/search-configuration.interface.mjs +18 -0
  38. package/esm2022/lib/common/mocks/ecm-user.service.mock.mjs +37 -0
  39. package/esm2022/lib/common/models/allowable-operations.enum.mjs +30 -0
  40. package/esm2022/lib/common/models/ecm-company.model.mjs +19 -0
  41. package/esm2022/lib/common/models/ecm-user.model.mjs +45 -0
  42. package/esm2022/lib/common/models/file.model.mjs +53 -0
  43. package/esm2022/lib/common/models/node-metadata.model.mjs +23 -0
  44. package/esm2022/lib/common/models/permissions.enum.mjs +32 -0
  45. package/esm2022/lib/common/public-api.mjs +37 -0
  46. package/esm2022/lib/common/services/card-view-content-update.service.mjs +55 -0
  47. package/esm2022/lib/common/services/content.service.mjs +180 -0
  48. package/esm2022/lib/common/services/discovery-api.service.mjs +79 -0
  49. package/esm2022/lib/common/services/favorites-api.service.mjs +84 -0
  50. package/esm2022/lib/common/services/nodes-api.service.mjs +251 -0
  51. package/esm2022/lib/common/services/people-content.service.mjs +138 -0
  52. package/esm2022/lib/common/services/rendition.service.mjs +270 -0
  53. package/esm2022/lib/common/services/saved-searches.service.mjs +206 -0
  54. package/esm2022/lib/common/services/sites.service.mjs +243 -0
  55. package/esm2022/lib/common/services/upload.service.mjs +391 -0
  56. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata-header.component.mjs +54 -0
  57. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata.component.mjs +490 -0
  58. package/esm2022/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.mjs +128 -0
  59. package/esm2022/lib/content-metadata/content-metadata.module.mjs +36 -0
  60. package/esm2022/lib/content-metadata/index.mjs +18 -0
  61. package/esm2022/lib/content-metadata/interfaces/aspect-oriented-config.interface.mjs +18 -0
  62. package/esm2022/lib/content-metadata/interfaces/card-view-group.interface.mjs +18 -0
  63. package/esm2022/lib/content-metadata/interfaces/content-metadata-config.interface.mjs +18 -0
  64. package/esm2022/lib/content-metadata/interfaces/content-metadata-custom-panel.interface.mjs +18 -0
  65. package/esm2022/lib/content-metadata/interfaces/content-metadata-panel.interface.mjs +18 -0
  66. package/esm2022/lib/content-metadata/interfaces/content-metadata.interfaces.mjs +28 -0
  67. package/esm2022/lib/content-metadata/interfaces/indifferent-config.interface.mjs +18 -0
  68. package/esm2022/lib/content-metadata/interfaces/layout-oriented-config.interface.mjs +18 -0
  69. package/esm2022/lib/content-metadata/interfaces/organised-property-group.interface.mjs +18 -0
  70. package/esm2022/lib/content-metadata/interfaces/preset-config.interface.mjs +18 -0
  71. package/esm2022/lib/content-metadata/interfaces/property-group.interface.mjs +18 -0
  72. package/esm2022/lib/content-metadata/interfaces/property.interface.mjs +18 -0
  73. package/esm2022/lib/content-metadata/public-api.mjs +31 -0
  74. package/esm2022/lib/content-metadata/services/basic-properties.service.mjs +107 -0
  75. package/esm2022/lib/content-metadata/services/config/aspect-oriented-config.service.mjs +106 -0
  76. package/esm2022/lib/content-metadata/services/config/content-metadata-config.factory.mjs +76 -0
  77. package/esm2022/lib/content-metadata/services/config/indifferent-config.service.mjs +40 -0
  78. package/esm2022/lib/content-metadata/services/config/layout-oriented-config.service.mjs +108 -0
  79. package/esm2022/lib/content-metadata/services/config/property-group-reader.mjs +33 -0
  80. package/esm2022/lib/content-metadata/services/content-metadata.service.mjs +99 -0
  81. package/esm2022/lib/content-metadata/services/content-type-property.service.mjs +134 -0
  82. package/esm2022/lib/content-metadata/services/property-descriptors.service.mjs +52 -0
  83. package/esm2022/lib/content-metadata/services/property-groups-translator.service.mjs +169 -0
  84. package/esm2022/lib/content-node-selector/content-node-dialog.service.mjs +256 -0
  85. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.component.mjs +617 -0
  86. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.service.mjs +66 -0
  87. package/esm2022/lib/content-node-selector/content-node-selector.component-data.interface.mjs +18 -0
  88. package/esm2022/lib/content-node-selector/content-node-selector.component.mjs +205 -0
  89. package/esm2022/lib/content-node-selector/content-node-selector.module.mjs +50 -0
  90. package/esm2022/lib/content-node-selector/index.mjs +18 -0
  91. package/esm2022/lib/content-node-selector/name-location-cell/name-location-cell.component.mjs +48 -0
  92. package/esm2022/lib/content-node-selector/public-api.mjs +25 -0
  93. package/esm2022/lib/content-node-selector/site-dropdown/sites-dropdown.component.mjs +168 -0
  94. package/esm2022/lib/content-node-share/content-node-share.dialog.mjs +287 -0
  95. package/esm2022/lib/content-node-share/content-node-share.directive.mjs +102 -0
  96. package/esm2022/lib/content-node-share/content-node-share.module.mjs +35 -0
  97. package/esm2022/lib/content-node-share/content-node-share.settings.mjs +18 -0
  98. package/esm2022/lib/content-node-share/index.mjs +18 -0
  99. package/esm2022/lib/content-node-share/public-api.mjs +22 -0
  100. package/esm2022/lib/content-node-share/services/shared-links-api.service.mjs +83 -0
  101. package/esm2022/lib/content-type/content-type-dialog.component.mjs +57 -0
  102. package/esm2022/lib/content-type/content-type-metadata.interface.mjs +18 -0
  103. package/esm2022/lib/content-type/content-type.service.mjs +52 -0
  104. package/esm2022/lib/content-type/index.mjs +20 -0
  105. package/esm2022/lib/content.module.mjs +277 -0
  106. package/esm2022/lib/dialogs/category-selector/category-selector.dialog.mjs +51 -0
  107. package/esm2022/lib/dialogs/dialog.module.mjs +52 -0
  108. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.mjs +111 -0
  109. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.module.mjs +38 -0
  110. package/esm2022/lib/dialogs/download-zip/services/download-zip.service.mjs +66 -0
  111. package/esm2022/lib/dialogs/folder/folder-name.validators.mjs +44 -0
  112. package/esm2022/lib/dialogs/folder/folder.dialog.mjs +146 -0
  113. package/esm2022/lib/dialogs/index.mjs +18 -0
  114. package/esm2022/lib/dialogs/library/library.dialog.mjs +224 -0
  115. package/esm2022/lib/dialogs/node-lock/node-lock.dialog.mjs +115 -0
  116. package/esm2022/lib/dialogs/public-api.mjs +25 -0
  117. package/esm2022/lib/directives/auto-focus.directive.mjs +38 -0
  118. package/esm2022/lib/directives/check-allowable-operation.directive.mjs +126 -0
  119. package/esm2022/lib/directives/content-directive.module.mjs +75 -0
  120. package/esm2022/lib/directives/index.mjs +18 -0
  121. package/esm2022/lib/directives/library-favorite.directive.mjs +119 -0
  122. package/esm2022/lib/directives/library-membership.directive.mjs +202 -0
  123. package/esm2022/lib/directives/node-counter.directive.mjs +59 -0
  124. package/esm2022/lib/directives/node-delete.directive.mjs +177 -0
  125. package/esm2022/lib/directives/node-download.directive.mjs +138 -0
  126. package/esm2022/lib/directives/node-favorite.directive.mjs +193 -0
  127. package/esm2022/lib/directives/node-lock.directive.mjs +57 -0
  128. package/esm2022/lib/directives/node-restore.directive.mjs +218 -0
  129. package/esm2022/lib/directives/public-api.mjs +28 -0
  130. package/esm2022/lib/document-list/components/content-action/content-action-list.component.mjs +60 -0
  131. package/esm2022/lib/document-list/components/content-action/content-action.component.mjs +196 -0
  132. package/esm2022/lib/document-list/components/document-list.component.mjs +963 -0
  133. package/esm2022/lib/document-list/components/document-list.token.mjs +21 -0
  134. package/esm2022/lib/document-list/components/file-auto-download/file-auto-download.component.mjs +42 -0
  135. package/esm2022/lib/document-list/components/filter-header/filter-header.component.mjs +107 -0
  136. package/esm2022/lib/document-list/components/library-name-column/library-name-column.component.mjs +131 -0
  137. package/esm2022/lib/document-list/components/library-role-column/library-role-column.component.mjs +91 -0
  138. package/esm2022/lib/document-list/components/library-status-column/library-status-column.component.mjs +86 -0
  139. package/esm2022/lib/document-list/components/name-column/name-column.component.mjs +118 -0
  140. package/esm2022/lib/document-list/components/node.event.mjs +30 -0
  141. package/esm2022/lib/document-list/components/trashcan-name-column/trashcan-name-column.component.mjs +83 -0
  142. package/esm2022/lib/document-list/data/image-resolver.model.mjs +18 -0
  143. package/esm2022/lib/document-list/data/row-filter.model.mjs +18 -0
  144. package/esm2022/lib/document-list/data/share-data-row.model.mjs +102 -0
  145. package/esm2022/lib/document-list/data/share-datatable-adapter.mjs +258 -0
  146. package/esm2022/lib/document-list/document-list.module.mjs +75 -0
  147. package/esm2022/lib/document-list/index.mjs +18 -0
  148. package/esm2022/lib/document-list/interfaces/document-list-loader.interface.mjs +18 -0
  149. package/esm2022/lib/document-list/models/content-action.model.mjs +59 -0
  150. package/esm2022/lib/document-list/models/document-folder.model.mjs +23 -0
  151. package/esm2022/lib/document-list/models/node-action.enum.mjs +27 -0
  152. package/esm2022/lib/document-list/models/permissions-style.model.mjs +27 -0
  153. package/esm2022/lib/document-list/models/permissions.model.mjs +26 -0
  154. package/esm2022/lib/document-list/models/preset.model.mjs +257 -0
  155. package/esm2022/lib/document-list/public-api.mjs +47 -0
  156. package/esm2022/lib/document-list/services/custom-resources.service.mjs +378 -0
  157. package/esm2022/lib/document-list/services/document-actions.service.mjs +142 -0
  158. package/esm2022/lib/document-list/services/document-list.service.mjs +175 -0
  159. package/esm2022/lib/document-list/services/folder-actions.service.mjs +137 -0
  160. package/esm2022/lib/document-list/services/lock.service.mjs +72 -0
  161. package/esm2022/lib/document-list/services/node-actions.service.mjs +122 -0
  162. package/esm2022/lib/group/index.mjs +18 -0
  163. package/esm2022/lib/group/public-api.mjs +18 -0
  164. package/esm2022/lib/group/services/group.service.mjs +84 -0
  165. package/esm2022/lib/infinite-scroll-datasource/index.mjs +18 -0
  166. package/esm2022/lib/infinite-scroll-datasource/infinite-scroll-datasource.mjs +69 -0
  167. package/esm2022/lib/infinite-scroll-datasource/public-api.mjs +18 -0
  168. package/esm2022/lib/interfaces/base-card-view-content-update.interface.mjs +18 -0
  169. package/esm2022/lib/interfaces/index.mjs +18 -0
  170. package/esm2022/lib/interfaces/library-entity.interface.mjs +18 -0
  171. package/esm2022/lib/interfaces/library-membership-error-event.interface.mjs +18 -0
  172. package/esm2022/lib/interfaces/library-membership-toggle-event.interface.mjs +18 -0
  173. package/esm2022/lib/interfaces/node-allowable-operation-subject.interface.mjs +18 -0
  174. package/esm2022/lib/interfaces/public-api.mjs +23 -0
  175. package/esm2022/lib/interfaces/restore-message-model.interface.mjs +19 -0
  176. package/esm2022/lib/legal-hold/index.mjs +18 -0
  177. package/esm2022/lib/legal-hold/public-api.mjs +18 -0
  178. package/esm2022/lib/legal-hold/services/legal-hold.service.mjs +136 -0
  179. package/esm2022/lib/material.module.mjs +183 -0
  180. package/esm2022/lib/mock/alfresco-api.service.mock.mjs +43 -0
  181. package/esm2022/lib/mock/date-range-search-filter.mock.mjs +65 -0
  182. package/esm2022/lib/mock/document-library.model.mock.mjs +84 -0
  183. package/esm2022/lib/mock/document-list.component.mock.mjs +364 -0
  184. package/esm2022/lib/mock/index.mjs +18 -0
  185. package/esm2022/lib/mock/new-version-uploader.service.mock.mjs +161 -0
  186. package/esm2022/lib/mock/public-api.mjs +27 -0
  187. package/esm2022/lib/mock/search-filter-mock.mjs +637 -0
  188. package/esm2022/lib/mock/search-query.mock.mjs +40 -0
  189. package/esm2022/lib/mock/search.component.mock.mjs +165 -0
  190. package/esm2022/lib/mock/search.service.mock.mjs +61 -0
  191. package/esm2022/lib/mock/sites-dropdown.component.mock.mjs +281 -0
  192. package/esm2022/lib/new-version-uploader/index.mjs +18 -0
  193. package/esm2022/lib/new-version-uploader/models/index.mjs +18 -0
  194. package/esm2022/lib/new-version-uploader/models/new-version-uploader.model.mjs +24 -0
  195. package/esm2022/lib/new-version-uploader/new-version-uploader.dialog.mjs +74 -0
  196. package/esm2022/lib/new-version-uploader/new-version-uploader.module.mjs +33 -0
  197. package/esm2022/lib/new-version-uploader/new-version-uploader.service.mjs +103 -0
  198. package/esm2022/lib/new-version-uploader/public-api.mjs +21 -0
  199. package/esm2022/lib/node-comments/index.mjs +18 -0
  200. package/esm2022/lib/node-comments/node-comments.component.mjs +44 -0
  201. package/esm2022/lib/node-comments/node-comments.module.mjs +33 -0
  202. package/esm2022/lib/node-comments/public-api.mjs +20 -0
  203. package/esm2022/lib/node-comments/services/node-comments.service.mjs +85 -0
  204. package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog-data.interface.mjs +18 -0
  205. package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog.component.mjs +123 -0
  206. package/esm2022/lib/permission-manager/components/add-permission/add-permission-panel.component.mjs +102 -0
  207. package/esm2022/lib/permission-manager/components/add-permission/add-permission.component.mjs +69 -0
  208. package/esm2022/lib/permission-manager/components/add-permission/search-config-permission.service.mjs +45 -0
  209. package/esm2022/lib/permission-manager/components/inherited-button.directive.mjs +67 -0
  210. package/esm2022/lib/permission-manager/components/node-path-column/node-path-column.component.mjs +56 -0
  211. package/esm2022/lib/permission-manager/components/permission-container/permission-container.component.mjs +102 -0
  212. package/esm2022/lib/permission-manager/components/permission-list/permission-list.component.mjs +87 -0
  213. package/esm2022/lib/permission-manager/components/permission-list/permission-list.service.mjs +219 -0
  214. package/esm2022/lib/permission-manager/components/pop-over.directive.mjs +134 -0
  215. package/esm2022/lib/permission-manager/components/user-icon-column/user-icon-column.component.mjs +88 -0
  216. package/esm2022/lib/permission-manager/components/user-name-column/user-name-column.component.mjs +82 -0
  217. package/esm2022/lib/permission-manager/components/user-role-column/user-role-column.component.mjs +111 -0
  218. package/esm2022/lib/permission-manager/index.mjs +18 -0
  219. package/esm2022/lib/permission-manager/models/member.model.mjs +59 -0
  220. package/esm2022/lib/permission-manager/models/permission.model.mjs +29 -0
  221. package/esm2022/lib/permission-manager/models/role.model.mjs +18 -0
  222. package/esm2022/lib/permission-manager/permission-manager.module.mjs +84 -0
  223. package/esm2022/lib/permission-manager/public-api.mjs +36 -0
  224. package/esm2022/lib/permission-manager/services/node-permission-dialog.service.mjs +78 -0
  225. package/esm2022/lib/permission-manager/services/node-permission.service.mjs +299 -0
  226. package/esm2022/lib/pipes/content-pipe.module.mjs +37 -0
  227. package/esm2022/lib/pipes/index.mjs +18 -0
  228. package/esm2022/lib/pipes/node-name-tooltip.pipe.mjs +69 -0
  229. package/esm2022/lib/pipes/public-api.mjs +19 -0
  230. package/esm2022/lib/prediction/index.mjs +18 -0
  231. package/esm2022/lib/prediction/public-api.mjs +18 -0
  232. package/esm2022/lib/prediction/services/index.mjs +18 -0
  233. package/esm2022/lib/prediction/services/prediction.service.mjs +57 -0
  234. package/esm2022/lib/search/components/empty-search-result.component.mjs +27 -0
  235. package/esm2022/lib/search/components/index.mjs +43 -0
  236. package/esm2022/lib/search/components/reset-search.directive.mjs +41 -0
  237. package/esm2022/lib/search/components/search-check-list/index.mjs +18 -0
  238. package/esm2022/lib/search/components/search-check-list/search-check-list.component.mjs +158 -0
  239. package/esm2022/lib/search/components/search-chip-autocomplete-input/index.mjs +18 -0
  240. package/esm2022/lib/search/components/search-chip-autocomplete-input/search-chip-autocomplete-input.component.mjs +169 -0
  241. package/esm2022/lib/search/components/search-chip-list/search-chip-list.component.mjs +46 -0
  242. package/esm2022/lib/search/components/search-control.component.mjs +180 -0
  243. package/esm2022/lib/search/components/search-date-range-tabbed/index.mjs +22 -0
  244. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/date-range-type.mjs +23 -0
  245. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/in-last-date-type.mjs +23 -0
  246. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.mjs +196 -0
  247. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.mjs +18 -0
  248. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range-tabbed.component.mjs +201 -0
  249. package/esm2022/lib/search/components/search-datetime-range/index.mjs +18 -0
  250. package/esm2022/lib/search/components/search-datetime-range/search-datetime-range.component.mjs +223 -0
  251. package/esm2022/lib/search/components/search-facet-field/index.mjs +18 -0
  252. package/esm2022/lib/search/components/search-facet-field/search-facet-field.component.mjs +132 -0
  253. package/esm2022/lib/search/components/search-filter/index.mjs +19 -0
  254. package/esm2022/lib/search/components/search-filter/search-filter-card/search-filter-card.component.mjs +45 -0
  255. package/esm2022/lib/search/components/search-filter/search-filter.component.mjs +80 -0
  256. package/esm2022/lib/search/components/search-filter-autocomplete-chips/index.mjs +18 -0
  257. package/esm2022/lib/search/components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component.mjs +154 -0
  258. package/esm2022/lib/search/components/search-filter-chips/index.mjs +23 -0
  259. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.mjs +104 -0
  260. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.mjs +109 -0
  261. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component.mjs +129 -0
  262. package/esm2022/lib/search/components/search-filter-chips/search-filter-chips.component.mjs +63 -0
  263. package/esm2022/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.mjs +43 -0
  264. package/esm2022/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.mjs +109 -0
  265. package/esm2022/lib/search/components/search-filter-container/index.mjs +18 -0
  266. package/esm2022/lib/search/components/search-filter-container/search-filter-container.component.mjs +122 -0
  267. package/esm2022/lib/search/components/search-filter-tabbed/index.mjs +19 -0
  268. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tab.directive.mjs +36 -0
  269. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tabbed.component.mjs +63 -0
  270. package/esm2022/lib/search/components/search-form/index.mjs +18 -0
  271. package/esm2022/lib/search/components/search-form/search-form.component.mjs +52 -0
  272. package/esm2022/lib/search/components/search-input/index.mjs +18 -0
  273. package/esm2022/lib/search/components/search-input/search-input.component.mjs +108 -0
  274. package/esm2022/lib/search/components/search-logical-filter/index.mjs +18 -0
  275. package/esm2022/lib/search/components/search-logical-filter/search-logical-filter.component.mjs +163 -0
  276. package/esm2022/lib/search/components/search-number-range/index.mjs +18 -0
  277. package/esm2022/lib/search/components/search-number-range/search-number-range.component.mjs +154 -0
  278. package/esm2022/lib/search/components/search-panel/index.mjs +18 -0
  279. package/esm2022/lib/search/components/search-panel/search-panel.component.mjs +44 -0
  280. package/esm2022/lib/search/components/search-properties/file-size-condition.mjs +18 -0
  281. package/esm2022/lib/search/components/search-properties/file-size-operator.enum.mjs +23 -0
  282. package/esm2022/lib/search/components/search-properties/file-size-unit.enum.mjs +26 -0
  283. package/esm2022/lib/search/components/search-properties/index.mjs +22 -0
  284. package/esm2022/lib/search/components/search-properties/search-properties.component.mjs +244 -0
  285. package/esm2022/lib/search/components/search-properties/search-properties.mjs +18 -0
  286. package/esm2022/lib/search/components/search-radio/index.mjs +18 -0
  287. package/esm2022/lib/search/components/search-radio/search-radio.component.mjs +145 -0
  288. package/esm2022/lib/search/components/search-slider/index.mjs +18 -0
  289. package/esm2022/lib/search/components/search-slider/search-slider.component.mjs +119 -0
  290. package/esm2022/lib/search/components/search-sorting-picker/index.mjs +18 -0
  291. package/esm2022/lib/search/components/search-sorting-picker/search-sorting-picker.component.mjs +77 -0
  292. package/esm2022/lib/search/components/search-text/index.mjs +18 -0
  293. package/esm2022/lib/search/components/search-text/search-text.component.mjs +134 -0
  294. package/esm2022/lib/search/components/search-widget-container/index.mjs +18 -0
  295. package/esm2022/lib/search/components/search-widget-container/search-widget-container.component.mjs +113 -0
  296. package/esm2022/lib/search/components/search.component.mjs +152 -0
  297. package/esm2022/lib/search/forms/index.mjs +19 -0
  298. package/esm2022/lib/search/forms/live-error-state-matcher.mjs +23 -0
  299. package/esm2022/lib/search/forms/search-term-validator.mjs +26 -0
  300. package/esm2022/lib/search/index.mjs +18 -0
  301. package/esm2022/lib/search/mocks/index.mjs +18 -0
  302. package/esm2022/lib/search/mocks/search.service.mock.mjs +56 -0
  303. package/esm2022/lib/search/models/autocomplete-option.interface.mjs +22 -0
  304. package/esm2022/lib/search/models/facet-field-bucket.interface.mjs +18 -0
  305. package/esm2022/lib/search/models/facet-field.interface.mjs +29 -0
  306. package/esm2022/lib/search/models/facet-query.interface.mjs +18 -0
  307. package/esm2022/lib/search/models/facet-widget.interface.mjs +18 -0
  308. package/esm2022/lib/search/models/filter-query.interface.mjs +18 -0
  309. package/esm2022/lib/search/models/filter-search.interface.mjs +18 -0
  310. package/esm2022/lib/search/models/index.mjs +34 -0
  311. package/esm2022/lib/search/models/response-facet-query-list.model.mjs +31 -0
  312. package/esm2022/lib/search/models/search-category.interface.mjs +18 -0
  313. package/esm2022/lib/search/models/search-configuration.interface.mjs +18 -0
  314. package/esm2022/lib/search/models/search-filter-list.model.mjs +148 -0
  315. package/esm2022/lib/search/models/search-form.interface.mjs +18 -0
  316. package/esm2022/lib/search/models/search-range.interface.mjs +18 -0
  317. package/esm2022/lib/search/models/search-sorting-definition.interface.mjs +18 -0
  318. package/esm2022/lib/search/models/search-widget-settings.interface.mjs +18 -0
  319. package/esm2022/lib/search/models/search-widget.interface.mjs +18 -0
  320. package/esm2022/lib/search/models/tabbed-facet-field.interface.mjs +18 -0
  321. package/esm2022/lib/search/public-api.mjs +24 -0
  322. package/esm2022/lib/search/search-configuration.token.mjs +19 -0
  323. package/esm2022/lib/search/search.module.mjs +192 -0
  324. package/esm2022/lib/search/services/base-query-builder.service.mjs +509 -0
  325. package/esm2022/lib/search/services/index.mjs +24 -0
  326. package/esm2022/lib/search/services/search-configuration.service.mjs +50 -0
  327. package/esm2022/lib/search/services/search-facet-filters.service.mjs +374 -0
  328. package/esm2022/lib/search/services/search-filter.service.mjs +56 -0
  329. package/esm2022/lib/search/services/search-header-query-builder.service.mjs +136 -0
  330. package/esm2022/lib/search/services/search-query-builder.service.mjs +48 -0
  331. package/esm2022/lib/search/services/search.service.mjs +89 -0
  332. package/esm2022/lib/search-ai/index.mjs +18 -0
  333. package/esm2022/lib/search-ai/models/search-ai-input-state.mjs +18 -0
  334. package/esm2022/lib/search-ai/public-api.mjs +19 -0
  335. package/esm2022/lib/search-ai/services/search-ai.service.mjs +103 -0
  336. package/esm2022/lib/security/index.mjs +18 -0
  337. package/esm2022/lib/security/public-api.mjs +18 -0
  338. package/esm2022/lib/security/services/models/security-controls-group-response.interface.mjs +18 -0
  339. package/esm2022/lib/security/services/models/security-controls-mark-response.interface.mjs +18 -0
  340. package/esm2022/lib/security/services/security-controls-groups-marks-security.service.mjs +274 -0
  341. package/esm2022/lib/security-options-loader/security-options-loader.service.mjs +43 -0
  342. package/esm2022/lib/services/alfresco-api.interface.mjs +18 -0
  343. package/esm2022/lib/services/alfresco-api.service.mjs +120 -0
  344. package/esm2022/lib/services/index.mjs +18 -0
  345. package/esm2022/lib/services/public-api.mjs +18 -0
  346. package/esm2022/lib/tag/index.mjs +18 -0
  347. package/esm2022/lib/tag/public-api.mjs +24 -0
  348. package/esm2022/lib/tag/services/tag.service.mjs +171 -0
  349. package/esm2022/lib/tag/tag-actions/tag-actions.component.mjs +114 -0
  350. package/esm2022/lib/tag/tag-list/tag-list.component.mjs +98 -0
  351. package/esm2022/lib/tag/tag-node-list/tag-node-list.component.mjs +80 -0
  352. package/esm2022/lib/tag/tag.module.mjs +37 -0
  353. package/esm2022/lib/tag/tags-creator/tags-creator-mode.mjs +27 -0
  354. package/esm2022/lib/tag/tags-creator/tags-creator.component.mjs +370 -0
  355. package/esm2022/lib/testing/content.testing.module.mjs +56 -0
  356. package/esm2022/lib/tree/components/tree.component.mjs +312 -0
  357. package/esm2022/lib/tree/index.mjs +18 -0
  358. package/esm2022/lib/tree/models/tree-context-menu-result.interface.mjs +18 -0
  359. package/esm2022/lib/tree/models/tree-node.interface.mjs +22 -0
  360. package/esm2022/lib/tree/models/tree-response.interface.mjs +18 -0
  361. package/esm2022/lib/tree/public-api.mjs +23 -0
  362. package/esm2022/lib/tree/services/tree.service.mjs +134 -0
  363. package/esm2022/lib/tree/tree.module.mjs +33 -0
  364. package/esm2022/lib/tree-view/components/tree-view.component.mjs +75 -0
  365. package/esm2022/lib/tree-view/data/tree-view-datasource.mjs +99 -0
  366. package/esm2022/lib/tree-view/index.mjs +18 -0
  367. package/esm2022/lib/tree-view/models/tree-view.model.mjs +28 -0
  368. package/esm2022/lib/tree-view/public-api.mjs +22 -0
  369. package/esm2022/lib/tree-view/services/tree-view.service.mjs +38 -0
  370. package/esm2022/lib/tree-view/tree-view.module.mjs +33 -0
  371. package/esm2022/lib/upload/components/base-upload/upload-base.mjs +176 -0
  372. package/esm2022/lib/upload/components/file-uploading-dialog.component.mjs +190 -0
  373. package/esm2022/lib/upload/components/file-uploading-list-row.component.mjs +92 -0
  374. package/esm2022/lib/upload/components/file-uploading-list.component.mjs +124 -0
  375. package/esm2022/lib/upload/components/upload-button.component.mjs +133 -0
  376. package/esm2022/lib/upload/components/upload-drag-area.component.mjs +112 -0
  377. package/esm2022/lib/upload/components/upload-files.event.mjs +41 -0
  378. package/esm2022/lib/upload/components/upload-version-button.component.mjs +54 -0
  379. package/esm2022/lib/upload/directives/file-draggable.directive.mjs +154 -0
  380. package/esm2022/lib/upload/directives/toggle-icon.directive.mjs +75 -0
  381. package/esm2022/lib/upload/index.mjs +18 -0
  382. package/esm2022/lib/upload/pipes/file-upload-error.pipe.mjs +39 -0
  383. package/esm2022/lib/upload/public-api.mjs +29 -0
  384. package/esm2022/lib/upload/upload.module.mjs +72 -0
  385. package/esm2022/lib/version-compatibility/index.mjs +18 -0
  386. package/esm2022/lib/version-compatibility/public-api.mjs +20 -0
  387. package/esm2022/lib/version-compatibility/version-compatibility-factory.mjs +26 -0
  388. package/esm2022/lib/version-compatibility/version-compatibility.directive.mjs +53 -0
  389. package/esm2022/lib/version-compatibility/version-compatibility.module.mjs +33 -0
  390. package/esm2022/lib/version-compatibility/version-compatibility.service.mjs +76 -0
  391. package/esm2022/lib/version-manager/content-version.service.mjs +53 -0
  392. package/esm2022/lib/version-manager/index.mjs +18 -0
  393. package/esm2022/lib/version-manager/public-api.mjs +23 -0
  394. package/esm2022/lib/version-manager/version-comparison.component.mjs +42 -0
  395. package/esm2022/lib/version-manager/version-list.component.mjs +215 -0
  396. package/esm2022/lib/version-manager/version-manager.component.mjs +145 -0
  397. package/esm2022/lib/version-manager/version-manager.module.mjs +48 -0
  398. package/esm2022/lib/version-manager/version-upload.component.mjs +154 -0
  399. package/esm2022/lib/viewer/alfresco-viewer.module.mjs +33 -0
  400. package/esm2022/lib/viewer/components/alfresco-viewer.component.mjs +408 -0
  401. package/esm2022/lib/viewer/index.mjs +18 -0
  402. package/esm2022/lib/viewer/public-api.mjs +19 -0
  403. package/esm2022/public-api.mjs +56 -0
  404. package/fesm2022/adf-content-services.mjs +761 -744
  405. package/fesm2022/adf-content-services.mjs.map +1 -1
  406. package/lib/new-version-uploader/new-version-uploader.dialog.scss +1 -1
  407. package/lib/upload/components/base-upload/upload-base.d.ts +1 -1
  408. package/package.json +5 -3
@@ -0,0 +1,92 @@
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 { FileModel, FileUploadStatus } from '../../common/models/file.model';
18
+ import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
19
+ import { CommonModule } from '@angular/common';
20
+ import { MatIconModule } from '@angular/material/icon';
21
+ import { MatListModule } from '@angular/material/list';
22
+ import { FileSizePipe, IconComponent } from '@alfresco/adf-core';
23
+ import { MatChipsModule } from '@angular/material/chips';
24
+ import { TranslatePipe } from '@ngx-translate/core';
25
+ import { ToggleIconDirective } from '../directives/toggle-icon.directive';
26
+ import { MatButtonModule } from '@angular/material/button';
27
+ import { FileUploadErrorPipe } from '../pipes/file-upload-error.pipe';
28
+ import * as i0 from "@angular/core";
29
+ import * as i1 from "@angular/common";
30
+ import * as i2 from "@angular/material/icon";
31
+ import * as i3 from "@angular/material/list";
32
+ import * as i4 from "@angular/material/chips";
33
+ import * as i5 from "@angular/material/button";
34
+ export class FileUploadingListRowComponent {
35
+ constructor() {
36
+ this.cancel = new EventEmitter();
37
+ }
38
+ onCancel(file) {
39
+ this.cancel.emit(file);
40
+ }
41
+ showCancelledStatus() {
42
+ return (this.file.status === FileUploadStatus.Cancelled ||
43
+ this.file.status === FileUploadStatus.Aborted ||
44
+ this.file.status === FileUploadStatus.Deleted);
45
+ }
46
+ get versionNumber() {
47
+ return this.file.data.entry.properties['cm:versionLabel'];
48
+ }
49
+ get mimeType() {
50
+ return this.file?.file?.type || 'default';
51
+ }
52
+ isUploadVersion() {
53
+ return !!this.file.data && this.file.options?.newVersion && this.file.data.entry.properties?.['cm:versionLabel'];
54
+ }
55
+ canCancelUpload() {
56
+ return this.file?.status === FileUploadStatus.Pending;
57
+ }
58
+ isUploadError() {
59
+ return this.file?.status === FileUploadStatus.Error;
60
+ }
61
+ isUploading() {
62
+ return this.file && (this.file.status === FileUploadStatus.Progress || this.file.status === FileUploadStatus.Starting);
63
+ }
64
+ isUploadComplete() {
65
+ return this.file?.status === FileUploadStatus.Complete && !this.isUploadVersion();
66
+ }
67
+ isUploadVersionComplete() {
68
+ return this.file?.status === FileUploadStatus.Complete && this.isUploadVersion();
69
+ }
70
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileUploadingListRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FileUploadingListRowComponent, isStandalone: true, selector: "adf-file-uploading-list-row", inputs: { file: "file" }, outputs: { cancel: "cancel" }, ngImport: i0, template: "<div class=\"adf-file-uploading-row\">\n <mat-icon *ngIf=\"mimeType === 'default'\" matListItemIcon class=\"adf-file-uploading-row__type\">\n insert_drive_file\n </mat-icon>\n\n <adf-icon *ngIf=\"mimeType !== 'default'\" value=\"adf:{{ mimeType }}\" />\n\n <span\n class=\"adf-file-uploading-row__name\"\n title=\"{{ file.name }}\">\n {{ file.name }}\n </span>\n\n <span *ngIf=\"isUploadVersion()\" class=\"adf-file-uploading-row__version\" tabindex=\"0\" >\n <mat-chip color=\"primary\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.VERSION' | translate: { version: versionNumber }\"\n [title]=\"'version' + versionNumber\"\n >{{ versionNumber }}</mat-chip>\n </span>\n\n <div\n tabindex=\"0\"\n role=\"button\"\n #toggleIcon=\"toggleIcon\"\n adf-toggle-icon\n (keyup.enter)=\"onCancel(file)\"\n (click)=\"onCancel(file)\"\n data-automation-id=\"cancel-upload-progress\"\n *ngIf=\"isUploading()\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.STOP_FILE_UPLOAD' | translate: { file: file.name }\"\n class=\"adf-file-uploading-row__group adf-file-uploading-row__group--toggle\"\n title=\"{{ 'ADF_FILE_UPLOAD.BUTTON.STOP_FILE' | translate }}\">\n\n <span class=\"adf-file-uploading-row__status\" *ngIf=\"!toggleIcon.isToggled\">\n {{ file.progress.loaded | adfFileSize }} / {{ file.progress.total | adfFileSize }}\n </span>\n\n <mat-icon *ngIf=\"toggleIcon.isToggled\"\n class=\"adf-file-uploading-row__action adf-file-uploading-row__action--cancel\">\n clear\n </mat-icon>\n </div>\n\n <button mat-icon-button\n adf-toggle-icon\n #toggleIcon=\"toggleIcon\"\n *ngIf=\"isUploadComplete()\"\n class=\"adf-file-uploading-row__group\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.UPLOAD_SUCCESSFUL' | translate: { file: file.name }\"\n title=\"{{ 'ADF_FILE_UPLOAD.BUTTON.UPLOAD_SUCCESSFUL' | translate }}\">\n\n <mat-icon\n class=\"adf-file-uploading-row__status adf-file-uploading-row__status--done\">\n check_circle\n </mat-icon>\n </button>\n\n <div\n *ngIf=\"isUploadVersionComplete()\"\n class=\"adf-file-uploading-row__file-version\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.STATUS.FILE_DONE_STATUS' | translate\"\n >\n <mat-icon\n matListItemIcon\n class=\"adf-file-uploading-row__status--done\">\n check_circle\n </mat-icon>\n </div>\n\n <button\n adf-toggle-icon\n #toggleIconCancel=\"toggleIcon\"\n mat-icon-button\n *ngIf=\"canCancelUpload()\"\n (click)=\"onCancel(file)\"\n data-automation-id=\"cancel-upload-queue\"\n class=\"adf-file-uploading-row__group\"\n title=\"{{ 'ADF_FILE_UPLOAD.BUTTON.STOP_FILE' | translate }}\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.STOP_FILE' | translate: { file: file.name }\">\n <mat-icon\n *ngIf=\"!toggleIconCancel.isToggled\"\n class=\"adf-file-uploading-row__status adf-file-uploading-row__status--pending\">\n schedule\n </mat-icon>\n\n <mat-icon\n *ngIf=\"toggleIconCancel.isToggled\"\n class=\"adf-file-uploading-row__action adf-file-uploading-row__action--remove\">\n remove_circle\n </mat-icon>\n </button>\n\n <div\n role=\"status\"\n *ngIf=\"isUploadError()\"\n class=\"adf-file-uploading-row__block adf-file-uploading-row__status--error\">\n <mat-icon matListItemIcon\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.UPLOAD_FILE_ERROR' | translate: { error: file.errorCode | adfFileUploadError }\"\n [title]=\"file.errorCode | adfFileUploadError\">\n report_problem\n </mat-icon>\n </div>\n\n <div\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.STATUS.FILE_CANCELED_STATUS' | translate\"\n role=\"status\"\n *ngIf=\"showCancelledStatus()\"\n class=\"adf-file-uploading-row__block adf-file-uploading-row__status--cancelled\">\n {{ 'ADF_FILE_UPLOAD.STATUS.FILE_CANCELED_STATUS' | translate }}\n </div>\n</div>\n", styles: ["adf-file-uploading-list-row:not(:first-child){display:block;border-top:1px solid var(--adf-theme-foreground-text-color-014)}.adf-file-uploading-row{display:flex;align-items:center;padding:.3em 1em;cursor:default}.adf-file-uploading-row:hover{background:#eee}.adf-file-uploading-row__name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;padding:0 1em 0 .5em}.adf-file-uploading-row .adf-file-uploading-row__group,.adf-file-uploading-row .adf-file-uploading-row__block,.adf-file-uploading-row .adf-file-uploading-row__file-version{min-width:100px;display:flex;justify-content:flex-end;line-height:40px;height:40px;align-items:center;padding:0 12px}.adf-file-uploading-row__group--toggle{cursor:pointer;display:flex;align-items:center;height:40px;line-height:40px}.adf-file-uploading-row__status--done{color:var(--theme-accent-color)}.adf-file-uploading-row__status--error{color:var(--theme-warn-color);padding:0 12px}.adf-file-uploading-row__action--cancel,.adf-file-uploading-row__action--remove{color:var(--theme-warn-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatListModule }, { kind: "directive", type: i3.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "component", type: IconComponent, selector: "adf-icon", inputs: ["color", "fontSet", "value"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i4.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: ToggleIconDirective, selector: "[adf-toggle-icon]", exportAs: ["toggleIcon"] }, { kind: "pipe", type: FileSizePipe, name: "adfFileSize" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "pipe", type: FileUploadErrorPipe, name: "adfFileUploadError" }], encapsulation: i0.ViewEncapsulation.None }); }
72
+ }
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileUploadingListRowComponent, decorators: [{
74
+ type: Component,
75
+ args: [{ selector: 'adf-file-uploading-list-row', standalone: true, imports: [
76
+ CommonModule,
77
+ MatIconModule,
78
+ MatListModule,
79
+ IconComponent,
80
+ MatChipsModule,
81
+ TranslatePipe,
82
+ ToggleIconDirective,
83
+ FileSizePipe,
84
+ MatButtonModule,
85
+ FileUploadErrorPipe
86
+ ], encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-file-uploading-row\">\n <mat-icon *ngIf=\"mimeType === 'default'\" matListItemIcon class=\"adf-file-uploading-row__type\">\n insert_drive_file\n </mat-icon>\n\n <adf-icon *ngIf=\"mimeType !== 'default'\" value=\"adf:{{ mimeType }}\" />\n\n <span\n class=\"adf-file-uploading-row__name\"\n title=\"{{ file.name }}\">\n {{ file.name }}\n </span>\n\n <span *ngIf=\"isUploadVersion()\" class=\"adf-file-uploading-row__version\" tabindex=\"0\" >\n <mat-chip color=\"primary\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.VERSION' | translate: { version: versionNumber }\"\n [title]=\"'version' + versionNumber\"\n >{{ versionNumber }}</mat-chip>\n </span>\n\n <div\n tabindex=\"0\"\n role=\"button\"\n #toggleIcon=\"toggleIcon\"\n adf-toggle-icon\n (keyup.enter)=\"onCancel(file)\"\n (click)=\"onCancel(file)\"\n data-automation-id=\"cancel-upload-progress\"\n *ngIf=\"isUploading()\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.STOP_FILE_UPLOAD' | translate: { file: file.name }\"\n class=\"adf-file-uploading-row__group adf-file-uploading-row__group--toggle\"\n title=\"{{ 'ADF_FILE_UPLOAD.BUTTON.STOP_FILE' | translate }}\">\n\n <span class=\"adf-file-uploading-row__status\" *ngIf=\"!toggleIcon.isToggled\">\n {{ file.progress.loaded | adfFileSize }} / {{ file.progress.total | adfFileSize }}\n </span>\n\n <mat-icon *ngIf=\"toggleIcon.isToggled\"\n class=\"adf-file-uploading-row__action adf-file-uploading-row__action--cancel\">\n clear\n </mat-icon>\n </div>\n\n <button mat-icon-button\n adf-toggle-icon\n #toggleIcon=\"toggleIcon\"\n *ngIf=\"isUploadComplete()\"\n class=\"adf-file-uploading-row__group\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.UPLOAD_SUCCESSFUL' | translate: { file: file.name }\"\n title=\"{{ 'ADF_FILE_UPLOAD.BUTTON.UPLOAD_SUCCESSFUL' | translate }}\">\n\n <mat-icon\n class=\"adf-file-uploading-row__status adf-file-uploading-row__status--done\">\n check_circle\n </mat-icon>\n </button>\n\n <div\n *ngIf=\"isUploadVersionComplete()\"\n class=\"adf-file-uploading-row__file-version\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.STATUS.FILE_DONE_STATUS' | translate\"\n >\n <mat-icon\n matListItemIcon\n class=\"adf-file-uploading-row__status--done\">\n check_circle\n </mat-icon>\n </div>\n\n <button\n adf-toggle-icon\n #toggleIconCancel=\"toggleIcon\"\n mat-icon-button\n *ngIf=\"canCancelUpload()\"\n (click)=\"onCancel(file)\"\n data-automation-id=\"cancel-upload-queue\"\n class=\"adf-file-uploading-row__group\"\n title=\"{{ 'ADF_FILE_UPLOAD.BUTTON.STOP_FILE' | translate }}\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.STOP_FILE' | translate: { file: file.name }\">\n <mat-icon\n *ngIf=\"!toggleIconCancel.isToggled\"\n class=\"adf-file-uploading-row__status adf-file-uploading-row__status--pending\">\n schedule\n </mat-icon>\n\n <mat-icon\n *ngIf=\"toggleIconCancel.isToggled\"\n class=\"adf-file-uploading-row__action adf-file-uploading-row__action--remove\">\n remove_circle\n </mat-icon>\n </button>\n\n <div\n role=\"status\"\n *ngIf=\"isUploadError()\"\n class=\"adf-file-uploading-row__block adf-file-uploading-row__status--error\">\n <mat-icon matListItemIcon\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.UPLOAD_FILE_ERROR' | translate: { error: file.errorCode | adfFileUploadError }\"\n [title]=\"file.errorCode | adfFileUploadError\">\n report_problem\n </mat-icon>\n </div>\n\n <div\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.STATUS.FILE_CANCELED_STATUS' | translate\"\n role=\"status\"\n *ngIf=\"showCancelledStatus()\"\n class=\"adf-file-uploading-row__block adf-file-uploading-row__status--cancelled\">\n {{ 'ADF_FILE_UPLOAD.STATUS.FILE_CANCELED_STATUS' | translate }}\n </div>\n</div>\n", styles: ["adf-file-uploading-list-row:not(:first-child){display:block;border-top:1px solid var(--adf-theme-foreground-text-color-014)}.adf-file-uploading-row{display:flex;align-items:center;padding:.3em 1em;cursor:default}.adf-file-uploading-row:hover{background:#eee}.adf-file-uploading-row__name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;padding:0 1em 0 .5em}.adf-file-uploading-row .adf-file-uploading-row__group,.adf-file-uploading-row .adf-file-uploading-row__block,.adf-file-uploading-row .adf-file-uploading-row__file-version{min-width:100px;display:flex;justify-content:flex-end;line-height:40px;height:40px;align-items:center;padding:0 12px}.adf-file-uploading-row__group--toggle{cursor:pointer;display:flex;align-items:center;height:40px;line-height:40px}.adf-file-uploading-row__status--done{color:var(--theme-accent-color)}.adf-file-uploading-row__status--error{color:var(--theme-warn-color);padding:0 12px}.adf-file-uploading-row__action--cancel,.adf-file-uploading-row__action--remove{color:var(--theme-warn-color)}\n"] }]
87
+ }], propDecorators: { file: [{
88
+ type: Input
89
+ }], cancel: [{
90
+ type: Output
91
+ }] } });
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWRpbmctbGlzdC1yb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi91cGxvYWQvY29tcG9uZW50cy9maWxlLXVwbG9hZGluZy1saXN0LXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3VwbG9hZC9jb21wb25lbnRzL2ZpbGUtdXBsb2FkaW5nLWxpc3Qtcm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7QUFxQnRFLE1BQU0sT0FBTyw2QkFBNkI7SUFuQjFDO1FBd0JJLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO0tBNkMxQztJQTNDRyxRQUFRLENBQUMsSUFBZTtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsT0FBTyxDQUNILElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLFNBQVM7WUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssZ0JBQWdCLENBQUMsT0FBTztZQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPLENBQ2hELENBQUM7SUFDTixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLFNBQVMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsZUFBZTtRQUNYLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNySCxDQUFDO0lBRUQsZUFBZTtRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxDQUFDO0lBQzFELENBQUM7SUFFRCxhQUFhO1FBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7SUFDeEQsQ0FBQztJQUVELFdBQVc7UUFDUCxPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxnQkFBZ0IsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0gsQ0FBQztJQUVELGdCQUFnQjtRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEtBQUssZ0JBQWdCLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3RGLENBQUM7SUFFRCx1QkFBdUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sS0FBSyxnQkFBZ0IsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3JGLENBQUM7K0dBakRRLDZCQUE2QjttR0FBN0IsNkJBQTZCLGdKQ2hEMUMsOHZJQStHQSxvbENEOUVRLFlBQVksa0lBQ1osYUFBYSxtTEFDYixhQUFhLCtHQUNiLGFBQWEsMkZBQ2IsY0FBYyxzVUFDZCxhQUFhLGtEQUNiLG1CQUFtQixtRkFDbkIsWUFBWSxtREFDWixlQUFlLHVJQUNmLG1CQUFtQjs7NEZBTWQsNkJBQTZCO2tCQW5CekMsU0FBUzsrQkFDSSw2QkFBNkIsY0FDM0IsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixlQUFlO3dCQUNmLG1CQUFtQjtxQkFDdEIsaUJBR2MsaUJBQWlCLENBQUMsSUFBSTs4QkFJckMsSUFBSTtzQkFESCxLQUFLO2dCQUlOLE1BQU07c0JBREwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgRmlsZU1vZGVsLCBGaWxlVXBsb2FkU3RhdHVzIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9maWxlLm1vZGVsJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcbmltcG9ydCB7IEZpbGVTaXplUGlwZSwgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFRvZ2dsZUljb25EaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3RvZ2dsZS1pY29uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgRmlsZVVwbG9hZEVycm9yUGlwZSB9IGZyb20gJy4uL3BpcGVzL2ZpbGUtdXBsb2FkLWVycm9yLnBpcGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1maWxlLXVwbG9hZGluZy1saXN0LXJvdycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgTWF0TGlzdE1vZHVsZSxcbiAgICAgICAgSWNvbkNvbXBvbmVudCxcbiAgICAgICAgTWF0Q2hpcHNNb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgICAgIFRvZ2dsZUljb25EaXJlY3RpdmUsXG4gICAgICAgIEZpbGVTaXplUGlwZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBGaWxlVXBsb2FkRXJyb3JQaXBlXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsZS11cGxvYWRpbmctbGlzdC1yb3cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkaW5nLWxpc3Qtcm93LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkaW5nTGlzdFJvd0NvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBmaWxlOiBGaWxlTW9kZWw7XG5cbiAgICBAT3V0cHV0KClcbiAgICBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVNb2RlbD4oKTtcblxuICAgIG9uQ2FuY2VsKGZpbGU6IEZpbGVNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhbmNlbC5lbWl0KGZpbGUpO1xuICAgIH1cblxuICAgIHNob3dDYW5jZWxsZWRTdGF0dXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLmZpbGUuc3RhdHVzID09PSBGaWxlVXBsb2FkU3RhdHVzLkNhbmNlbGxlZCB8fFxuICAgICAgICAgICAgdGhpcy5maWxlLnN0YXR1cyA9PT0gRmlsZVVwbG9hZFN0YXR1cy5BYm9ydGVkIHx8XG4gICAgICAgICAgICB0aGlzLmZpbGUuc3RhdHVzID09PSBGaWxlVXBsb2FkU3RhdHVzLkRlbGV0ZWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgdmVyc2lvbk51bWJlcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5maWxlLmRhdGEuZW50cnkucHJvcGVydGllc1snY206dmVyc2lvbkxhYmVsJ107XG4gICAgfVxuXG4gICAgZ2V0IG1pbWVUeXBlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbGU/LmZpbGU/LnR5cGUgfHwgJ2RlZmF1bHQnO1xuICAgIH1cblxuICAgIGlzVXBsb2FkVmVyc2lvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5maWxlLmRhdGEgJiYgdGhpcy5maWxlLm9wdGlvbnM/Lm5ld1ZlcnNpb24gJiYgdGhpcy5maWxlLmRhdGEuZW50cnkucHJvcGVydGllcz8uWydjbTp2ZXJzaW9uTGFiZWwnXTtcbiAgICB9XG5cbiAgICBjYW5DYW5jZWxVcGxvYWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbGU/LnN0YXR1cyA9PT0gRmlsZVVwbG9hZFN0YXR1cy5QZW5kaW5nO1xuICAgIH1cblxuICAgIGlzVXBsb2FkRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbGU/LnN0YXR1cyA9PT0gRmlsZVVwbG9hZFN0YXR1cy5FcnJvcjtcbiAgICB9XG5cbiAgICBpc1VwbG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZSAmJiAodGhpcy5maWxlLnN0YXR1cyA9PT0gRmlsZVVwbG9hZFN0YXR1cy5Qcm9ncmVzcyB8fCB0aGlzLmZpbGUuc3RhdHVzID09PSBGaWxlVXBsb2FkU3RhdHVzLlN0YXJ0aW5nKTtcbiAgICB9XG5cbiAgICBpc1VwbG9hZENvbXBsZXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWxlPy5zdGF0dXMgPT09IEZpbGVVcGxvYWRTdGF0dXMuQ29tcGxldGUgJiYgIXRoaXMuaXNVcGxvYWRWZXJzaW9uKCk7XG4gICAgfVxuXG4gICAgaXNVcGxvYWRWZXJzaW9uQ29tcGxldGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbGU/LnN0YXR1cyA9PT0gRmlsZVVwbG9hZFN0YXR1cy5Db21wbGV0ZSAmJiB0aGlzLmlzVXBsb2FkVmVyc2lvbigpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZGYtZmlsZS11cGxvYWRpbmctcm93XCI+XG4gICAgPG1hdC1pY29uICpuZ0lmPVwibWltZVR5cGUgPT09ICdkZWZhdWx0J1wiIG1hdExpc3RJdGVtSWNvbiBjbGFzcz1cImFkZi1maWxlLXVwbG9hZGluZy1yb3dfX3R5cGVcIj5cbiAgICAgICAgaW5zZXJ0X2RyaXZlX2ZpbGVcbiAgICA8L21hdC1pY29uPlxuXG4gICAgPGFkZi1pY29uICpuZ0lmPVwibWltZVR5cGUgIT09ICdkZWZhdWx0J1wiIHZhbHVlPVwiYWRmOnt7IG1pbWVUeXBlIH19XCIgLz5cblxuICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiYWRmLWZpbGUtdXBsb2FkaW5nLXJvd19fbmFtZVwiXG4gICAgICAgIHRpdGxlPVwie3sgZmlsZS5uYW1lIH19XCI+XG4gICAgICAgIHt7IGZpbGUubmFtZSB9fVxuICAgIDwvc3Bhbj5cblxuICAgIDxzcGFuICpuZ0lmPVwiaXNVcGxvYWRWZXJzaW9uKClcIiBjbGFzcz1cImFkZi1maWxlLXVwbG9hZGluZy1yb3dfX3ZlcnNpb25cIiB0YWJpbmRleD1cIjBcIiA+XG4gICAgICAgIDxtYXQtY2hpcCBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX0ZJTEVfVVBMT0FELkFSSUEtTEFCRUwuVkVSU0lPTicgfCB0cmFuc2xhdGU6IHsgdmVyc2lvbjogIHZlcnNpb25OdW1iZXIgfVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ3ZlcnNpb24nICsgdmVyc2lvbk51bWJlclwiXG4gICAgICAgID57eyB2ZXJzaW9uTnVtYmVyIH19PC9tYXQtY2hpcD5cbiAgICA8L3NwYW4+XG5cbiAgICA8ZGl2XG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAjdG9nZ2xlSWNvbj1cInRvZ2dsZUljb25cIlxuICAgICAgICBhZGYtdG9nZ2xlLWljb25cbiAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uQ2FuY2VsKGZpbGUpXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsKGZpbGUpXCJcbiAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiY2FuY2VsLXVwbG9hZC1wcm9ncmVzc1wiXG4gICAgICAgICpuZ0lmPVwiaXNVcGxvYWRpbmcoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9GSUxFX1VQTE9BRC5BUklBLUxBQkVMLlNUT1BfRklMRV9VUExPQUQnIHwgdHJhbnNsYXRlOiB7IGZpbGU6IGZpbGUubmFtZSB9XCJcbiAgICAgICAgY2xhc3M9XCJhZGYtZmlsZS11cGxvYWRpbmctcm93X19ncm91cCBhZGYtZmlsZS11cGxvYWRpbmctcm93X19ncm91cC0tdG9nZ2xlXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnQURGX0ZJTEVfVVBMT0FELkJVVFRPTi5TVE9QX0ZJTEUnIHwgdHJhbnNsYXRlIH19XCI+XG5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhZGYtZmlsZS11cGxvYWRpbmctcm93X19zdGF0dXNcIiAqbmdJZj1cIiF0b2dnbGVJY29uLmlzVG9nZ2xlZFwiPlxuICAgICAgICAgICAge3sgZmlsZS5wcm9ncmVzcy5sb2FkZWQgfCBhZGZGaWxlU2l6ZSB9fSAvIHt7IGZpbGUucHJvZ3Jlc3MudG90YWwgfCBhZGZGaWxlU2l6ZSB9fVxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwidG9nZ2xlSWNvbi5pc1RvZ2dsZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtZmlsZS11cGxvYWRpbmctcm93X19hY3Rpb24gYWRmLWZpbGUtdXBsb2FkaW5nLXJvd19fYWN0aW9uLS1jYW5jZWxcIj5cbiAgICAgICAgICAgIGNsZWFyXG4gICAgICAgIDwvbWF0LWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICBhZGYtdG9nZ2xlLWljb25cbiAgICAgICAgI3RvZ2dsZUljb249XCJ0b2dnbGVJY29uXCJcbiAgICAgICAgKm5nSWY9XCJpc1VwbG9hZENvbXBsZXRlKClcIlxuICAgICAgICBjbGFzcz1cImFkZi1maWxlLXVwbG9hZGluZy1yb3dfX2dyb3VwXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX0ZJTEVfVVBMT0FELkFSSUEtTEFCRUwuVVBMT0FEX1NVQ0NFU1NGVUwnIHwgdHJhbnNsYXRlOiB7IGZpbGU6IGZpbGUubmFtZSB9XCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnQURGX0ZJTEVfVVBMT0FELkJVVFRPTi5VUExPQURfU1VDQ0VTU0ZVTCcgfCB0cmFuc2xhdGUgfX1cIj5cblxuICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLWZpbGUtdXBsb2FkaW5nLXJvd19fc3RhdHVzIGFkZi1maWxlLXVwbG9hZGluZy1yb3dfX3N0YXR1cy0tZG9uZVwiPlxuICAgICAgICAgICAgY2hlY2tfY2lyY2xlXG4gICAgICAgIDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiaXNVcGxvYWRWZXJzaW9uQ29tcGxldGUoKVwiXG4gICAgICAgIGNsYXNzPVwiYWRmLWZpbGUtdXBsb2FkaW5nLXJvd19fZmlsZS12ZXJzaW9uXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX0ZJTEVfVVBMT0FELlNUQVRVUy5GSUxFX0RPTkVfU1RBVFVTJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgID5cbiAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICBtYXRMaXN0SXRlbUljb25cbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLWZpbGUtdXBsb2FkaW5nLXJvd19fc3RhdHVzLS1kb25lXCI+XG4gICAgICAgICAgICBjaGVja19jaXJjbGVcbiAgICAgICAgPC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxidXR0b25cbiAgICAgICAgYWRmLXRvZ2dsZS1pY29uXG4gICAgICAgICN0b2dnbGVJY29uQ2FuY2VsPVwidG9nZ2xlSWNvblwiXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAqbmdJZj1cImNhbkNhbmNlbFVwbG9hZCgpXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsKGZpbGUpXCJcbiAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiY2FuY2VsLXVwbG9hZC1xdWV1ZVwiXG4gICAgICAgIGNsYXNzPVwiYWRmLWZpbGUtdXBsb2FkaW5nLXJvd19fZ3JvdXBcIlxuICAgICAgICB0aXRsZT1cInt7ICdBREZfRklMRV9VUExPQUQuQlVUVE9OLlNUT1BfRklMRScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfRklMRV9VUExPQUQuQVJJQS1MQUJFTC5TVE9QX0ZJTEUnIHwgdHJhbnNsYXRlOiB7IGZpbGU6IGZpbGUubmFtZSB9XCI+XG4gICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgKm5nSWY9XCIhdG9nZ2xlSWNvbkNhbmNlbC5pc1RvZ2dsZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtZmlsZS11cGxvYWRpbmctcm93X19zdGF0dXMgYWRmLWZpbGUtdXBsb2FkaW5nLXJvd19fc3RhdHVzLS1wZW5kaW5nXCI+XG4gICAgICAgICAgICBzY2hlZHVsZVxuICAgICAgICA8L21hdC1pY29uPlxuXG4gICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgKm5nSWY9XCJ0b2dnbGVJY29uQ2FuY2VsLmlzVG9nZ2xlZFwiXG4gICAgICAgICAgICBjbGFzcz1cImFkZi1maWxlLXVwbG9hZGluZy1yb3dfX2FjdGlvbiBhZGYtZmlsZS11cGxvYWRpbmctcm93X19hY3Rpb24tLXJlbW92ZVwiPlxuICAgICAgICAgICAgcmVtb3ZlX2NpcmNsZVxuICAgICAgICA8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdlxuICAgICAgICByb2xlPVwic3RhdHVzXCJcbiAgICAgICAgKm5nSWY9XCJpc1VwbG9hZEVycm9yKClcIlxuICAgICAgICBjbGFzcz1cImFkZi1maWxlLXVwbG9hZGluZy1yb3dfX2Jsb2NrIGFkZi1maWxlLXVwbG9hZGluZy1yb3dfX3N0YXR1cy0tZXJyb3JcIj5cbiAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvblxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX0ZJTEVfVVBMT0FELkFSSUEtTEFCRUwuVVBMT0FEX0ZJTEVfRVJST1InIHwgdHJhbnNsYXRlOiB7IGVycm9yOiBmaWxlLmVycm9yQ29kZSB8IGFkZkZpbGVVcGxvYWRFcnJvciB9XCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJmaWxlLmVycm9yQ29kZSB8IGFkZkZpbGVVcGxvYWRFcnJvclwiPlxuICAgICAgICAgICAgcmVwb3J0X3Byb2JsZW1cbiAgICAgICAgPC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX0ZJTEVfVVBMT0FELlNUQVRVUy5GSUxFX0NBTkNFTEVEX1NUQVRVUycgfCB0cmFuc2xhdGVcIlxuICAgICAgICByb2xlPVwic3RhdHVzXCJcbiAgICAgICAgKm5nSWY9XCJzaG93Q2FuY2VsbGVkU3RhdHVzKClcIlxuICAgICAgICBjbGFzcz1cImFkZi1maWxlLXVwbG9hZGluZy1yb3dfX2Jsb2NrIGFkZi1maWxlLXVwbG9hZGluZy1yb3dfX3N0YXR1cy0tY2FuY2VsbGVkXCI+XG4gICAgICAgIHt7ICdBREZfRklMRV9VUExPQUQuU1RBVFVTLkZJTEVfQ0FOQ0VMRURfU1RBVFVTJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,124 @@
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 { TranslationService } from '@alfresco/adf-core';
18
+ import { UploadService } from '../../common/services/upload.service';
19
+ import { FileUploadStatus } from '../../common/models/file.model';
20
+ import { Component, ContentChild, Input, Output, TemplateRef, EventEmitter } from '@angular/core';
21
+ import { CommonModule } from '@angular/common';
22
+ import * as i0 from "@angular/core";
23
+ import * as i1 from "../../common/services/upload.service";
24
+ import * as i2 from "@alfresco/adf-core";
25
+ import * as i3 from "@angular/common";
26
+ export class FileUploadingListComponent {
27
+ constructor(uploadService, translateService) {
28
+ this.uploadService = uploadService;
29
+ this.translateService = translateService;
30
+ this.files = [];
31
+ /** Emitted when a file in the list has an error. */
32
+ this.error = new EventEmitter();
33
+ }
34
+ /**
35
+ * Cancel file upload
36
+ *
37
+ * @param file File model to cancel upload for.
38
+ */
39
+ cancelFile(file) {
40
+ if (file.status === FileUploadStatus.Pending) {
41
+ file.status = FileUploadStatus.Cancelled;
42
+ }
43
+ else {
44
+ this.uploadService.cancelUpload(file);
45
+ }
46
+ }
47
+ /**
48
+ * Remove uploaded file
49
+ *
50
+ * @param file File model to remove upload for.
51
+ */
52
+ removeFile(file) {
53
+ if (file.status === FileUploadStatus.Error) {
54
+ this.notifyError(file);
55
+ }
56
+ if (this.isUploadingFile(file)) {
57
+ this.cancelNodeVersionInstances(file);
58
+ this.uploadService.cancelUpload(file);
59
+ }
60
+ this.files = this.files.filter((entry) => entry !== file);
61
+ }
62
+ /**
63
+ * Calls the appropriate methods for each file, depending on state
64
+ */
65
+ cancelAllFiles() {
66
+ const filesToCancel = this.files.filter((file) => this.isUploadingFile(file));
67
+ if (filesToCancel.length > 0) {
68
+ this.uploadService.cancelUpload(...filesToCancel);
69
+ }
70
+ }
71
+ /**
72
+ * Checks if all the files are uploaded false if there is at least one file in Progress | Starting | Pending
73
+ *
74
+ * @returns `true` if upload is complete, otherwise `false`
75
+ */
76
+ isUploadCompleted() {
77
+ return (!this.isUploadCancelled() &&
78
+ Boolean(this.files.length) &&
79
+ !this.files.some(({ status }) => status === FileUploadStatus.Starting || status === FileUploadStatus.Progress || status === FileUploadStatus.Pending));
80
+ }
81
+ /**
82
+ * Check if all the files are Cancelled | Aborted | Error. false if there is at least one file in uploading states
83
+ *
84
+ * @returns `true` if upload is cancelled, otherwise `false`
85
+ */
86
+ isUploadCancelled() {
87
+ return (!!this.files.length &&
88
+ this.files.every(({ status }) => status === FileUploadStatus.Aborted || status === FileUploadStatus.Cancelled || status === FileUploadStatus.Deleted));
89
+ }
90
+ cancelNodeVersionInstances(file) {
91
+ this.files
92
+ .filter((item) => item.options.newVersion && item.data.entry.id === file.data.entry.id)
93
+ .map((item) => {
94
+ item.status = FileUploadStatus.Deleted;
95
+ });
96
+ }
97
+ notifyError(...files) {
98
+ let messageError = null;
99
+ if (files.length === 1) {
100
+ messageError = this.translateService.instant('FILE_UPLOAD.MESSAGES.REMOVE_FILE_ERROR', { fileName: files[0].name });
101
+ }
102
+ else {
103
+ messageError = this.translateService.instant('FILE_UPLOAD.MESSAGES.REMOVE_FILES_ERROR', { total: files.length });
104
+ }
105
+ this.error.emit(messageError);
106
+ }
107
+ isUploadingFile(file) {
108
+ return file.status === FileUploadStatus.Pending || file.status === FileUploadStatus.Starting || file.status === FileUploadStatus.Progress;
109
+ }
110
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileUploadingListComponent, deps: [{ token: i1.UploadService }, { token: i2.TranslationService }], target: i0.ɵɵFactoryTarget.Component }); }
111
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FileUploadingListComponent, isStandalone: true, selector: "adf-file-uploading-list", inputs: { files: "files" }, outputs: { error: "error" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<div class=\"upload-list\">\n <ng-template\n ngFor\n [ngForOf]=\"files\"\n [ngForTemplate]=\"template\" />\n</div>\n", styles: [":host{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
112
+ }
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileUploadingListComponent, decorators: [{
114
+ type: Component,
115
+ args: [{ selector: 'adf-file-uploading-list', standalone: true, imports: [CommonModule], template: "<div class=\"upload-list\">\n <ng-template\n ngFor\n [ngForOf]=\"files\"\n [ngForTemplate]=\"template\" />\n</div>\n", styles: [":host{display:flex;flex-direction:column}\n"] }]
116
+ }], ctorParameters: () => [{ type: i1.UploadService }, { type: i2.TranslationService }], propDecorators: { template: [{
117
+ type: ContentChild,
118
+ args: [TemplateRef]
119
+ }], files: [{
120
+ type: Input
121
+ }], error: [{
122
+ type: Output
123
+ }] } });
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWRpbmctbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3VwbG9hZC9jb21wb25lbnRzL2ZpbGUtdXBsb2FkaW5nLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi91cGxvYWQvY29tcG9uZW50cy9maWxlLXVwbG9hZGluZy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQVMvQyxNQUFNLE9BQU8sMEJBQTBCO0lBV25DLFlBQW9CLGFBQTRCLEVBQVUsZ0JBQW9DO1FBQTFFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQU45RixVQUFLLEdBQWdCLEVBQUUsQ0FBQztRQUV4QixvREFBb0Q7UUFFcEQsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFFaUUsQ0FBQztJQUVsRzs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLElBQWU7UUFDdEIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lB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LEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyx3Q0FBd0MsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4SCxDQUFDO2FBQU0sQ0FBQztZQUNKLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLHlDQUF5QyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3JILENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8sZUFBZSxDQUFDLElBQWU7UUFDbkMsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztJQUM5SSxDQUFDOytHQTFHUSwwQkFBMEI7bUdBQTFCLDBCQUEwQixrTEFDckIsV0FBVyxnRENoQzdCLDhJQU1BLG9HRHFCYyxZQUFZOzs0RkFJYiwwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0kseUJBQXlCLGNBQ3ZCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQzttSEFNdkIsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLFdBQVc7Z0JBSXpCLEtBQUs7c0JBREosS0FBSztnQkFLTixLQUFLO3NCQURKLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3NlcnZpY2VzL3VwbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbGVNb2RlbCwgRmlsZVVwbG9hZFN0YXR1cyB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvZmlsZS5tb2RlbCc7XG5cbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1maWxlLXVwbG9hZGluZy1saXN0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZGluZy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9maWxlLXVwbG9hZGluZy1saXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZGluZ0xpc3RDb21wb25lbnQge1xuICAgIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpXG4gICAgdGVtcGxhdGU6IGFueTtcblxuICAgIEBJbnB1dCgpXG4gICAgZmlsZXM6IEZpbGVNb2RlbFtdID0gW107XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGEgZmlsZSBpbiB0aGUgbGlzdCBoYXMgYW4gZXJyb3IuICovXG4gICAgQE91dHB1dCgpXG4gICAgZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdXBsb2FkU2VydmljZTogVXBsb2FkU2VydmljZSwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UpIHt9XG5cbiAgICAvKipcbiAgICAgKiBDYW5jZWwgZmlsZSB1cGxvYWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIEZpbGUgbW9kZWwgdG8gY2FuY2VsIHVwbG9hZCBmb3IuXG4gICAgICovXG4gICAgY2FuY2VsRmlsZShmaWxlOiBGaWxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKGZpbGUuc3RhdHVzID09PSBGaWxlVXBsb2FkU3RhdHVzLlBlbmRpbmcpIHtcbiAgICAgICAgICAgIGZpbGUuc3RhdHVzID0gRmlsZVVwbG9hZFN0YXR1cy5DYW5jZWxsZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY2FuY2VsVXBsb2FkKGZpbGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIHVwbG9hZGVkIGZpbGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIEZpbGUgbW9kZWwgdG8gcmVtb3ZlIHVwbG9hZCBmb3IuXG4gICAgICovXG4gICAgcmVtb3ZlRmlsZShmaWxlOiBGaWxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKGZpbGUuc3RhdHVzID09PSBGaWxlVXBsb2FkU3RhdHVzLkVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeUVycm9yKGZpbGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNVcGxvYWRpbmdGaWxlKGZpbGUpKSB7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbE5vZGVWZXJzaW9uSW5zdGFuY2VzKGZpbGUpO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNhbmNlbFVwbG9hZChmaWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZmlsZXMgPSB0aGlzLmZpbGVzLmZpbHRlcigoZW50cnkpID0+IGVudHJ5ICE9PSBmaWxlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxscyB0aGUgYXBwcm9wcmlhdGUgbWV0aG9kcyBmb3IgZWFjaCBmaWxlLCBkZXBlbmRpbmcgb24gc3RhdGVcbiAgICAgKi9cbiAgICBjYW5jZWxBbGxGaWxlcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsZXNUb0NhbmNlbCA9IHRoaXMuZmlsZXMuZmlsdGVyKChmaWxlKSA9PiB0aGlzLmlzVXBsb2FkaW5nRmlsZShmaWxlKSk7XG5cbiAgICAgICAgaWYgKGZpbGVzVG9DYW5jZWwubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNhbmNlbFVwbG9hZCguLi5maWxlc1RvQ2FuY2VsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhbGwgdGhlIGZpbGVzIGFyZSB1cGxvYWRlZCBmYWxzZSBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgZmlsZSBpbiBQcm9ncmVzcyB8IFN0YXJ0aW5nIHwgUGVuZGluZ1xuICAgICAqXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHVwbG9hZCBpcyBjb21wbGV0ZSwgb3RoZXJ3aXNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBpc1VwbG9hZENvbXBsZXRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICF0aGlzLmlzVXBsb2FkQ2FuY2VsbGVkKCkgJiZcbiAgICAgICAgICAgIEJvb2xlYW4odGhpcy5maWxlcy5sZW5ndGgpICYmXG4gICAgICAgICAgICAhdGhpcy5maWxlcy5zb21lKFxuICAgICAgICAgICAgICAgICh7IHN0YXR1cyB9KSA9PiBzdGF0dXMgPT09IEZpbGVVcGxvYWRTdGF0dXMuU3RhcnRpbmcgfHwgc3RhdHVzID09PSBGaWxlVXBsb2FkU3RhdHVzLlByb2dyZXNzIHx8IHN0YXR1cyA9PT0gRmlsZVVwbG9hZFN0YXR1cy5QZW5kaW5nXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgYWxsIHRoZSBmaWxlcyBhcmUgQ2FuY2VsbGVkIHwgQWJvcnRlZCB8IEVycm9yLiBmYWxzZSBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgZmlsZSBpbiB1cGxvYWRpbmcgc3RhdGVzXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdXBsb2FkIGlzIGNhbmNlbGxlZCwgb3RoZXJ3aXNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBpc1VwbG9hZENhbmNlbGxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhdGhpcy5maWxlcy5sZW5ndGggJiZcbiAgICAgICAgICAgIHRoaXMuZmlsZXMuZXZlcnkoXG4gICAgICAgICAgICAgICAgKHsgc3RhdHVzIH0pID0+IHN0YXR1cyA9PT0gRmlsZVVwbG9hZFN0YXR1cy5BYm9ydGVkIHx8IHN0YXR1cyA9PT0gRmlsZVVwbG9hZFN0YXR1cy5DYW5jZWxsZWQgfHwgc3RhdHVzID09PSBGaWxlVXBsb2FkU3RhdHVzLkRlbGV0ZWRcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbmNlbE5vZGVWZXJzaW9uSW5zdGFuY2VzKGZpbGU6IEZpbGVNb2RlbCkge1xuICAgICAgICB0aGlzLmZpbGVzXG4gICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLm9wdGlvbnMubmV3VmVyc2lvbiAmJiBpdGVtLmRhdGEuZW50cnkuaWQgPT09IGZpbGUuZGF0YS5lbnRyeS5pZClcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLnN0YXR1cyA9IEZpbGVVcGxvYWRTdGF0dXMuRGVsZXRlZDtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgbm90aWZ5RXJyb3IoLi4uZmlsZXM6IEZpbGVNb2RlbFtdKSB7XG4gICAgICAgIGxldCBtZXNzYWdlRXJyb3I6IHN0cmluZyA9IG51bGw7XG5cbiAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgbWVzc2FnZUVycm9yID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0ZJTEVfVVBMT0FELk1FU1NBR0VTLlJFTU9WRV9GSUxFX0VSUk9SJywgeyBmaWxlTmFtZTogZmlsZXNbMF0ubmFtZSB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1lc3NhZ2VFcnJvciA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdGSUxFX1VQTE9BRC5NRVNTQUdFUy5SRU1PVkVfRklMRVNfRVJST1InLCB7IHRvdGFsOiBmaWxlcy5sZW5ndGggfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVycm9yLmVtaXQobWVzc2FnZUVycm9yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVXBsb2FkaW5nRmlsZShmaWxlOiBGaWxlTW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGZpbGUuc3RhdHVzID09PSBGaWxlVXBsb2FkU3RhdHVzLlBlbmRpbmcgfHwgZmlsZS5zdGF0dXMgPT09IEZpbGVVcGxvYWRTdGF0dXMuU3RhcnRpbmcgfHwgZmlsZS5zdGF0dXMgPT09IEZpbGVVcGxvYWRTdGF0dXMuUHJvZ3Jlc3M7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInVwbG9hZC1saXN0XCI+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIG5nRm9yXG4gICAgICAgIFtuZ0Zvck9mXT1cImZpbGVzXCJcbiAgICAgICAgW25nRm9yVGVtcGxhdGVdPVwidGVtcGxhdGVcIiAvPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,133 @@
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 { EXTENDIBLE_COMPONENT, FileUtils } from '@alfresco/adf-core';
18
+ import { Component, EventEmitter, forwardRef, Input, Output, ViewEncapsulation, inject } from '@angular/core';
19
+ import { NodesApiService } from '../../common/services/nodes-api.service';
20
+ import { ContentService } from '../../common/services/content.service';
21
+ import { AllowableOperationsEnum } from '../../common/models/allowable-operations.enum';
22
+ import { Subject } from 'rxjs';
23
+ import { PermissionModel } from '../../document-list/models/permissions.model';
24
+ import { UploadBase } from './base-upload/upload-base';
25
+ import { CommonModule } from '@angular/common';
26
+ import { MatButtonModule } from '@angular/material/button';
27
+ import { TranslatePipe } from '@ngx-translate/core';
28
+ import { MatIconModule } from '@angular/material/icon';
29
+ import * as i0 from "@angular/core";
30
+ import * as i1 from "@angular/common";
31
+ import * as i2 from "@angular/material/icon";
32
+ export class UploadButtonComponent extends UploadBase {
33
+ constructor() {
34
+ super(...arguments);
35
+ this.contentService = inject(ContentService);
36
+ this.nodesApiService = inject(NodesApiService);
37
+ /** Allows/disallows upload folders (only for Chrome). */
38
+ this.uploadFolders = false;
39
+ /** Allows/disallows multiple files */
40
+ this.multipleFiles = false;
41
+ /** Custom tooltip text. */
42
+ this.tooltip = null;
43
+ /** Emitted when create permission is missing. */
44
+ this.permissionEvent = new EventEmitter();
45
+ this.hasAllowableOperations = false;
46
+ this.permissionValue = new Subject();
47
+ }
48
+ ngOnInit() {
49
+ this.permissionValue.subscribe((permission) => {
50
+ this.hasAllowableOperations = permission;
51
+ });
52
+ }
53
+ ngOnChanges(changes) {
54
+ const rootFolderId = changes['rootFolderId'];
55
+ if (rootFolderId?.currentValue) {
56
+ this.checkPermission();
57
+ }
58
+ }
59
+ isButtonDisabled() {
60
+ return this.disabled ? true : undefined;
61
+ }
62
+ onFilesAdded($event) {
63
+ const files = FileUtils.toFileArray($event.currentTarget.files);
64
+ if (this.hasAllowableOperations) {
65
+ this.uploadFiles(files);
66
+ }
67
+ else {
68
+ this.permissionEvent.emit(new PermissionModel({ type: 'content', action: 'upload', permission: 'create' }));
69
+ }
70
+ // reset the value of the input file
71
+ $event.target.value = '';
72
+ }
73
+ onClickUploadButton() {
74
+ if (this.file) {
75
+ const files = [this.file];
76
+ if (this.hasAllowableOperations) {
77
+ this.uploadFiles(files);
78
+ }
79
+ else {
80
+ this.permissionEvent.emit(new PermissionModel({ type: 'content', action: 'upload', permission: 'create' }));
81
+ }
82
+ }
83
+ }
84
+ onDirectoryAdded($event) {
85
+ if (this.hasAllowableOperations) {
86
+ const files = FileUtils.toFileArray($event.currentTarget.files);
87
+ this.uploadFiles(files);
88
+ }
89
+ else {
90
+ this.permissionEvent.emit(new PermissionModel({ type: 'content', action: 'upload', permission: 'create' }));
91
+ }
92
+ // reset the value of the input file
93
+ $event.target.value = '';
94
+ }
95
+ checkPermission() {
96
+ if (this.rootFolderId) {
97
+ const opts = {
98
+ includeSource: true,
99
+ include: ['allowableOperations']
100
+ };
101
+ this.nodesApiService.getNode(this.rootFolderId, opts).subscribe((res) => this.permissionValue.next(this.nodeHasPermission(res, AllowableOperationsEnum.CREATE)), (error) => {
102
+ if (error?.error) {
103
+ this.error.emit({ error: error.error.message });
104
+ }
105
+ else {
106
+ this.error.emit({ error: 'FILE_UPLOAD.BUTTON.PERMISSION_CHECK_ERROR' });
107
+ }
108
+ });
109
+ }
110
+ }
111
+ nodeHasPermission(node, permission) {
112
+ return this.contentService.hasAllowableOperations(node, permission);
113
+ }
114
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploadButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
115
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UploadButtonComponent, isStandalone: true, selector: "adf-upload-button", inputs: { uploadFolders: "uploadFolders", multipleFiles: "multipleFiles", staticTitle: "staticTitle", tooltip: "tooltip", file: "file" }, outputs: { permissionEvent: "permissionEvent" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<form class=\"adf-upload-button-file-container\">\n <!--Files Upload-->\n <div *ngIf=\"!uploadFolders\">\n\n <!--Single Files Upload-->\n <ng-container *ngIf=\"!multipleFiles\">\n <input\n class=\"adf-upload-button-file-container-upload-single-file\"\n id=\"upload-single-file\"\n data-automation-id=\"upload-single-file\"\n [type]=\"file ? 'button' : 'file'\"\n name=\"uploadFiles\"\n accept=\"{{acceptedFilesType}}\"\n [attr.disabled]=\"isButtonDisabled()\"\n [title]=\"tooltip\"\n (change)=\"onFilesAdded($event)\"\n (click)=\"onClickUploadButton()\"/>\n <label for=\"upload-single-file\" class=\"adf-upload-button-label\">\n <mat-icon class=\"adf-upload-button-icon\">file_upload</mat-icon>\n <span id=\"upload-single-file-label\" *ngIf=\"!staticTitle\">\n {{ 'FILE_UPLOAD.BUTTON.UPLOAD_FILE' | translate }}</span>\n <span id=\"upload-single-file-label-static\" *ngIf=\"staticTitle\">\n {{ staticTitle }}</span>\n </label>\n </ng-container>\n\n <!--Multiple Files Upload-->\n <ng-container *ngIf=\"multipleFiles\">\n <input\n id=\"upload-multiple-files\"\n data-automation-id=\"upload-multiple-files\"\n type=\"file\"\n name=\"uploadFiles\"\n multiple=\"multiple\"\n accept=\"{{acceptedFilesType}}\"\n [attr.disabled]=\"isButtonDisabled()\"\n [title]=\"tooltip\"\n (change)=\"onFilesAdded($event)\"/>\n <label for=\"upload-multiple-files\" class=\"adf-upload-button-label\">\n <mat-icon class=\"adf-upload-button-icon\">file_upload</mat-icon>\n <span id=\"upload-multiple-file-label\" *ngIf=\"!staticTitle\">\n {{ 'FILE_UPLOAD.BUTTON.UPLOAD_FILE' | translate }}</span>\n <span id=\"upload-multiple-file-label-static\" *ngIf=\"staticTitle\">\n {{ staticTitle }}</span>\n </label>\n </ng-container>\n </div>\n\n <!--Folders Upload-->\n <ng-container *ngIf=\"uploadFolders\">\n <input\n id=\"uploadFolder\"\n data-automation-id=\"uploadFolder\"\n type=\"file\"\n name=\"uploadFiles\"\n multiple=\"multiple\"\n accept=\"{{acceptedFilesType}}\"\n webkitdirectory directory\n [attr.disabled]=\"isButtonDisabled()\"\n [title]=\"tooltip\"\n (change)=\"onDirectoryAdded($event)\"/>\n <label for=\"uploadFolder\" data-automation-id=\"uploadFolder\" class=\"adf-upload-button-label\">\n <mat-icon class=\"adf-upload-button-icon\">file_upload</mat-icon>\n <span id=\"uploadFolder-label\" *ngIf=\"!staticTitle\">\n {{ 'FILE_UPLOAD.BUTTON.UPLOAD_FOLDER' | translate }}</span>\n <span id=\"uploadFolder-label-static\" *ngIf=\"staticTitle\">\n {{ staticTitle }}</span>\n </label>\n </ng-container>\n</form>\n", styles: [".adf-upload-button-file-container .adf-upload-button-icon{margin:0;font-size:24px;width:24px;height:24px}.adf-upload-button-file-container input{display:none}.adf-upload-button-label{display:flex;align-items:center;cursor:pointer;padding:8px 16px;box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;border-radius:4px}.adf-upload-button-label:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.adf-upload-button-file-container-upload-single-file[disabled]+.adf-upload-button-label{background-color:var(--adf-disabled-button-background);color:var(--adf-theme-foreground-disabled-text-color);box-shadow:none;cursor:default}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], viewProviders: [{ provide: EXTENDIBLE_COMPONENT, useExisting: forwardRef(() => UploadButtonComponent) }], encapsulation: i0.ViewEncapsulation.None }); }
116
+ }
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploadButtonComponent, decorators: [{
118
+ type: Component,
119
+ args: [{ selector: 'adf-upload-button', standalone: true, imports: [CommonModule, MatButtonModule, TranslatePipe, MatIconModule], viewProviders: [{ provide: EXTENDIBLE_COMPONENT, useExisting: forwardRef(() => UploadButtonComponent) }], encapsulation: ViewEncapsulation.None, template: "<form class=\"adf-upload-button-file-container\">\n <!--Files Upload-->\n <div *ngIf=\"!uploadFolders\">\n\n <!--Single Files Upload-->\n <ng-container *ngIf=\"!multipleFiles\">\n <input\n class=\"adf-upload-button-file-container-upload-single-file\"\n id=\"upload-single-file\"\n data-automation-id=\"upload-single-file\"\n [type]=\"file ? 'button' : 'file'\"\n name=\"uploadFiles\"\n accept=\"{{acceptedFilesType}}\"\n [attr.disabled]=\"isButtonDisabled()\"\n [title]=\"tooltip\"\n (change)=\"onFilesAdded($event)\"\n (click)=\"onClickUploadButton()\"/>\n <label for=\"upload-single-file\" class=\"adf-upload-button-label\">\n <mat-icon class=\"adf-upload-button-icon\">file_upload</mat-icon>\n <span id=\"upload-single-file-label\" *ngIf=\"!staticTitle\">\n {{ 'FILE_UPLOAD.BUTTON.UPLOAD_FILE' | translate }}</span>\n <span id=\"upload-single-file-label-static\" *ngIf=\"staticTitle\">\n {{ staticTitle }}</span>\n </label>\n </ng-container>\n\n <!--Multiple Files Upload-->\n <ng-container *ngIf=\"multipleFiles\">\n <input\n id=\"upload-multiple-files\"\n data-automation-id=\"upload-multiple-files\"\n type=\"file\"\n name=\"uploadFiles\"\n multiple=\"multiple\"\n accept=\"{{acceptedFilesType}}\"\n [attr.disabled]=\"isButtonDisabled()\"\n [title]=\"tooltip\"\n (change)=\"onFilesAdded($event)\"/>\n <label for=\"upload-multiple-files\" class=\"adf-upload-button-label\">\n <mat-icon class=\"adf-upload-button-icon\">file_upload</mat-icon>\n <span id=\"upload-multiple-file-label\" *ngIf=\"!staticTitle\">\n {{ 'FILE_UPLOAD.BUTTON.UPLOAD_FILE' | translate }}</span>\n <span id=\"upload-multiple-file-label-static\" *ngIf=\"staticTitle\">\n {{ staticTitle }}</span>\n </label>\n </ng-container>\n </div>\n\n <!--Folders Upload-->\n <ng-container *ngIf=\"uploadFolders\">\n <input\n id=\"uploadFolder\"\n data-automation-id=\"uploadFolder\"\n type=\"file\"\n name=\"uploadFiles\"\n multiple=\"multiple\"\n accept=\"{{acceptedFilesType}}\"\n webkitdirectory directory\n [attr.disabled]=\"isButtonDisabled()\"\n [title]=\"tooltip\"\n (change)=\"onDirectoryAdded($event)\"/>\n <label for=\"uploadFolder\" data-automation-id=\"uploadFolder\" class=\"adf-upload-button-label\">\n <mat-icon class=\"adf-upload-button-icon\">file_upload</mat-icon>\n <span id=\"uploadFolder-label\" *ngIf=\"!staticTitle\">\n {{ 'FILE_UPLOAD.BUTTON.UPLOAD_FOLDER' | translate }}</span>\n <span id=\"uploadFolder-label-static\" *ngIf=\"staticTitle\">\n {{ staticTitle }}</span>\n </label>\n </ng-container>\n</form>\n", styles: [".adf-upload-button-file-container .adf-upload-button-icon{margin:0;font-size:24px;width:24px;height:24px}.adf-upload-button-file-container input{display:none}.adf-upload-button-label{display:flex;align-items:center;cursor:pointer;padding:8px 16px;box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;border-radius:4px}.adf-upload-button-label:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.adf-upload-button-file-container-upload-single-file[disabled]+.adf-upload-button-label{background-color:var(--adf-disabled-button-background);color:var(--adf-theme-foreground-disabled-text-color);box-shadow:none;cursor:default}\n"] }]
120
+ }], propDecorators: { uploadFolders: [{
121
+ type: Input
122
+ }], multipleFiles: [{
123
+ type: Input
124
+ }], staticTitle: [{
125
+ type: Input
126
+ }], tooltip: [{
127
+ type: Input
128
+ }], file: [{
129
+ type: Input
130
+ }], permissionEvent: [{
131
+ type: Output
132
+ }] } });
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3VwbG9hZC9jb21wb25lbnRzL3VwbG9hZC1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi91cGxvYWQvY29tcG9uZW50cy91cGxvYWQtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXhGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JB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QkFBcUIsb1RDekNsQyxxc0dBc0VBLGt1QkRuQ2MsWUFBWSxrSUFBRSxlQUFlLDBCQUFFLGFBQWEsaURBQUUsYUFBYSx5S0FHdEQsQ0FBQyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQzs7NEZBRy9GLHFCQUFxQjtrQkFUakMsU0FBUzsrQkFDSSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLGlCQUd2RCxDQUFDLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxpQkFDekYsaUJBQWlCLENBQUMsSUFBSTs4QkFRckMsYUFBYTtzQkFEWixLQUFLO2dCQUtOLGFBQWE7c0JBRFosS0FBSztnQkFLTixXQUFXO3NCQURWLEtBQUs7Z0JBS04sT0FBTztzQkFETixLQUFLO2dCQUtOLElBQUk7c0JBREgsS0FBSztnQkFLTixlQUFlO3NCQURkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEVYVEVORElCTEVfQ09NUE9ORU5ULCBGaWxlVXRpbHMgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2Rlc0FwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24vc2VydmljZXMvbm9kZXMtYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24vc2VydmljZXMvY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEFsbG93YWJsZU9wZXJhdGlvbnNFbnVtIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9hbGxvd2FibGUtb3BlcmF0aW9ucy5lbnVtJztcbmltcG9ydCB7IE5vZGUgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBlcm1pc3Npb25Nb2RlbCB9IGZyb20gJy4uLy4uL2RvY3VtZW50LWxpc3QvbW9kZWxzL3Blcm1pc3Npb25zLm1vZGVsJztcbmltcG9ydCB7IFVwbG9hZEJhc2UgfSBmcm9tICcuL2Jhc2UtdXBsb2FkL3VwbG9hZC1iYXNlJztcbmltcG9ydCB7IE5vZGVBbGxvd2FibGVPcGVyYXRpb25TdWJqZWN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9ub2RlLWFsbG93YWJsZS1vcGVyYXRpb24tc3ViamVjdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLXVwbG9hZC1idXR0b24nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBUcmFuc2xhdGVQaXBlLCBNYXRJY29uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICAgIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IEVYVEVORElCTEVfQ09NUE9ORU5ULCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBVcGxvYWRCdXR0b25Db21wb25lbnQpIH1dLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkQnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgVXBsb2FkQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBOb2RlQWxsb3dhYmxlT3BlcmF0aW9uU3ViamVjdCB7XG4gICAgcHJpdmF0ZSBjb250ZW50U2VydmljZSA9IGluamVjdChDb250ZW50U2VydmljZSk7XG4gICAgcHJpdmF0ZSBub2Rlc0FwaVNlcnZpY2UgPSBpbmplY3QoTm9kZXNBcGlTZXJ2aWNlKTtcblxuICAgIC8qKiBBbGxvd3MvZGlzYWxsb3dzIHVwbG9hZCBmb2xkZXJzIChvbmx5IGZvciBDaHJvbWUpLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdXBsb2FkRm9sZGVyczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEFsbG93cy9kaXNhbGxvd3MgbXVsdGlwbGUgZmlsZXMgKi9cbiAgICBASW5wdXQoKVxuICAgIG11bHRpcGxlRmlsZXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBEZWZpbmVzIHRoZSB0ZXh0IG9mIHRoZSB1cGxvYWQgYnV0dG9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhdGljVGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBDdXN0b20gdG9vbHRpcCB0ZXh0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG9vbHRpcDogc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKiBDdXN0b20gYWRkZWQgZmlsZS4gVGhlIHVwbG9hZCBidXR0b24gdHlwZSB3aWxsIGJlICdidXR0b24nIGluc3RlYWQgb2YgJ2ZpbGUnICovXG4gICAgQElucHV0KClcbiAgICBmaWxlOiBGaWxlO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBjcmVhdGUgcGVybWlzc2lvbiBpcyBtaXNzaW5nLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHBlcm1pc3Npb25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UGVybWlzc2lvbk1vZGVsPigpO1xuXG4gICAgcHJpdmF0ZSBoYXNBbGxvd2FibGVPcGVyYXRpb25zOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIHBlcm1pc3Npb25WYWx1ZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9uVmFsdWUuc3Vic2NyaWJlKChwZXJtaXNzaW9uOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhc0FsbG93YWJsZU9wZXJhdGlvbnMgPSBwZXJtaXNzaW9uO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IHJvb3RGb2xkZXJJZCA9IGNoYW5nZXNbJ3Jvb3RGb2xkZXJJZCddO1xuICAgICAgICBpZiAocm9vdEZvbGRlcklkPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tQZXJtaXNzaW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0J1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IHRydWUgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgb25GaWxlc0FkZGVkKCRldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gRmlsZVV0aWxzLnRvRmlsZUFycmF5KCRldmVudC5jdXJyZW50VGFyZ2V0LmZpbGVzKTtcblxuICAgICAgICBpZiAodGhpcy5oYXNBbGxvd2FibGVPcGVyYXRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVzKGZpbGVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbkV2ZW50LmVtaXQobmV3IFBlcm1pc3Npb25Nb2RlbCh7IHR5cGU6ICdjb250ZW50JywgYWN0aW9uOiAndXBsb2FkJywgcGVybWlzc2lvbjogJ2NyZWF0ZScgfSkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlc2V0IHRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgZmlsZVxuICAgICAgICAkZXZlbnQudGFyZ2V0LnZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgb25DbGlja1VwbG9hZEJ1dHRvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsZSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBbdGhpcy5maWxlXTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZXMoZmlsZXMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25FdmVudC5lbWl0KG5ldyBQZXJtaXNzaW9uTW9kZWwoeyB0eXBlOiAnY29udGVudCcsIGFjdGlvbjogJ3VwbG9hZCcsIHBlcm1pc3Npb246ICdjcmVhdGUnIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRGlyZWN0b3J5QWRkZWQoJGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBGaWxlVXRpbHMudG9GaWxlQXJyYXkoJGV2ZW50LmN1cnJlbnRUYXJnZXQuZmlsZXMpO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlcyhmaWxlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25FdmVudC5lbWl0KG5ldyBQZXJtaXNzaW9uTW9kZWwoeyB0eXBlOiAnY29udGVudCcsIGFjdGlvbjogJ3VwbG9hZCcsIHBlcm1pc3Npb246ICdjcmVhdGUnIH0pKTtcbiAgICAgICAgfVxuICAgICAgICAvLyByZXNldCB0aGUgdmFsdWUgb2YgdGhlIGlucHV0IGZpbGVcbiAgICAgICAgJGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIGNoZWNrUGVybWlzc2lvbigpIHtcbiAgICAgICAgaWYgKHRoaXMucm9vdEZvbGRlcklkKSB7XG4gICAgICAgICAgICBjb25zdCBvcHRzOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgaW5jbHVkZVNvdXJjZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpbmNsdWRlOiBbJ2FsbG93YWJsZU9wZXJhdGlvbnMnXVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5ub2Rlc0FwaVNlcnZpY2UuZ2V0Tm9kZSh0aGlzLnJvb3RGb2xkZXJJZCwgb3B0cykuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChyZXMpID0+IHRoaXMucGVybWlzc2lvblZhbHVlLm5leHQodGhpcy5ub2RlSGFzUGVybWlzc2lvbihyZXMsIEFsbG93YWJsZU9wZXJhdGlvbnNFbnVtLkNSRUFURSkpLFxuICAgICAgICAgICAgICAgIChlcnJvcjogeyBlcnJvcjogRXJyb3IgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3I/LmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoeyBlcnJvcjogZXJyb3IuZXJyb3IubWVzc2FnZSB9IGFzIGFueSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoeyBlcnJvcjogJ0ZJTEVfVVBMT0FELkJVVFRPTi5QRVJNSVNTSU9OX0NIRUNLX0VSUk9SJyB9IGFzIGFueSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbm9kZUhhc1Blcm1pc3Npb24obm9kZTogTm9kZSwgcGVybWlzc2lvbjogQWxsb3dhYmxlT3BlcmF0aW9uc0VudW0gfCBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudFNlcnZpY2UuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucyhub2RlLCBwZXJtaXNzaW9uKTtcbiAgICB9XG59XG4iLCI8Zm9ybSBjbGFzcz1cImFkZi11cGxvYWQtYnV0dG9uLWZpbGUtY29udGFpbmVyXCI+XG4gICAgPCEtLUZpbGVzIFVwbG9hZC0tPlxuICAgIDxkaXYgKm5nSWY9XCIhdXBsb2FkRm9sZGVyc1wiPlxuXG4gICAgICAgIDwhLS1TaW5nbGUgRmlsZXMgVXBsb2FkLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbXVsdGlwbGVGaWxlc1wiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtdXBsb2FkLWJ1dHRvbi1maWxlLWNvbnRhaW5lci11cGxvYWQtc2luZ2xlLWZpbGVcIlxuICAgICAgICAgICAgICAgIGlkPVwidXBsb2FkLXNpbmdsZS1maWxlXCJcbiAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJ1cGxvYWQtc2luZ2xlLWZpbGVcIlxuICAgICAgICAgICAgICAgIFt0eXBlXT1cImZpbGUgPyAnYnV0dG9uJyA6ICdmaWxlJ1wiXG4gICAgICAgICAgICAgICAgbmFtZT1cInVwbG9hZEZpbGVzXCJcbiAgICAgICAgICAgICAgICBhY2NlcHQ9XCJ7e2FjY2VwdGVkRmlsZXNUeXBlfX1cIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImlzQnV0dG9uRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cInRvb2x0aXBcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25GaWxlc0FkZGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrVXBsb2FkQnV0dG9uKClcIi8+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwidXBsb2FkLXNpbmdsZS1maWxlXCIgY2xhc3M9XCJhZGYtdXBsb2FkLWJ1dHRvbi1sYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFkZi11cGxvYWQtYnV0dG9uLWljb25cIj5maWxlX3VwbG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gaWQ9XCJ1cGxvYWQtc2luZ2xlLWZpbGUtbGFiZWxcIiAqbmdJZj1cIiFzdGF0aWNUaXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnRklMRV9VUExPQUQuQlVUVE9OLlVQTE9BRF9GSUxFJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBpZD1cInVwbG9hZC1zaW5nbGUtZmlsZS1sYWJlbC1zdGF0aWNcIiAqbmdJZj1cInN0YXRpY1RpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHN0YXRpY1RpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLU11bHRpcGxlIEZpbGVzIFVwbG9hZC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGlwbGVGaWxlc1wiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgaWQ9XCJ1cGxvYWQtbXVsdGlwbGUtZmlsZXNcIlxuICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInVwbG9hZC1tdWx0aXBsZS1maWxlc1wiXG4gICAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJ1cGxvYWRGaWxlc1wiXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU9XCJtdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgYWNjZXB0PVwie3thY2NlcHRlZEZpbGVzVHlwZX19XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJpc0J1dHRvbkRpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJ0b29sdGlwXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZXNBZGRlZCgkZXZlbnQpXCIvPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cInVwbG9hZC1tdWx0aXBsZS1maWxlc1wiIGNsYXNzPVwiYWRmLXVwbG9hZC1idXR0b24tbGFiZWxcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhZGYtdXBsb2FkLWJ1dHRvbi1pY29uXCI+ZmlsZV91cGxvYWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwidXBsb2FkLW11bHRpcGxlLWZpbGUtbGFiZWxcIiAqbmdJZj1cIiFzdGF0aWNUaXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnRklMRV9VUExPQUQuQlVUVE9OLlVQTE9BRF9GSUxFJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBpZD1cInVwbG9hZC1tdWx0aXBsZS1maWxlLWxhYmVsLXN0YXRpY1wiICpuZ0lmPVwic3RhdGljVGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgc3RhdGljVGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS1Gb2xkZXJzIFVwbG9hZC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1cGxvYWRGb2xkZXJzXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJ1cGxvYWRGb2xkZXJcIlxuICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwidXBsb2FkRm9sZGVyXCJcbiAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgIG5hbWU9XCJ1cGxvYWRGaWxlc1wiXG4gICAgICAgICAgICBtdWx0aXBsZT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgIGFjY2VwdD1cInt7YWNjZXB0ZWRGaWxlc1R5cGV9fVwiXG4gICAgICAgICAgICB3ZWJraXRkaXJlY3RvcnkgZGlyZWN0b3J5XG4gICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJpc0J1dHRvbkRpc2FibGVkKClcIlxuICAgICAgICAgICAgW3RpdGxlXT1cInRvb2x0aXBcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkRpcmVjdG9yeUFkZGVkKCRldmVudClcIi8+XG4gICAgICAgIDxsYWJlbCBmb3I9XCJ1cGxvYWRGb2xkZXJcIiBkYXRhLWF1dG9tYXRpb24taWQ9XCJ1cGxvYWRGb2xkZXJcIiBjbGFzcz1cImFkZi11cGxvYWQtYnV0dG9uLWxhYmVsXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhZGYtdXBsb2FkLWJ1dHRvbi1pY29uXCI+ZmlsZV91cGxvYWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPHNwYW4gaWQ9XCJ1cGxvYWRGb2xkZXItbGFiZWxcIiAqbmdJZj1cIiFzdGF0aWNUaXRsZVwiPlxuICAgICAgICAgICAgICAgIHt7ICdGSUxFX1VQTE9BRC5CVVRUT04uVVBMT0FEX0ZPTERFUicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBpZD1cInVwbG9hZEZvbGRlci1sYWJlbC1zdGF0aWNcIiAqbmdJZj1cInN0YXRpY1RpdGxlXCI+XG4gICAgICAgICAgICAgICAge3sgc3RhdGljVGl0bGUgfX08L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Zvcm0+XG4iXX0=