@alfresco/adf-content-services 8.1.0-16117584844 → 8.1.0-16120632321
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.
- package/bundles/assets/adf-content-services/i18n/en.json +3 -1
- package/fesm2022/adf-content-services.mjs +831 -790
- package/fesm2022/adf-content-services.mjs.map +1 -1
- package/lib/aspect-list/aspect-list.component.d.ts +4 -0
- package/lib/aspect-list/interfaces/custom-aspect-paging.interface.d.ts +21 -0
- package/lib/aspect-list/public-api.d.ts +1 -0
- package/lib/aspect-list/services/aspect-list.service.d.ts +6 -4
- package/lib/category/categories-management/categories-management.component.d.ts +4 -0
- package/lib/new-version-uploader/new-version-uploader.dialog.scss +1 -1
- package/lib/upload/components/base-upload/upload-base.d.ts +1 -1
- package/package.json +3 -5
- package/esm2022/adf-content-services.mjs +0 -5
- package/esm2022/lib/agent/index.mjs +0 -18
- package/esm2022/lib/agent/public-api.mjs +0 -18
- package/esm2022/lib/agent/services/agent.service.mjs +0 -60
- package/esm2022/lib/alfresco-icon/alfresco-icon.component.mjs +0 -27
- package/esm2022/lib/api-factories/alfresco-api-no-auth.service.mjs +0 -42
- package/esm2022/lib/api-factories/alfresco-api-v2-loader.service.mjs +0 -77
- package/esm2022/lib/api-factories/index.mjs +0 -18
- package/esm2022/lib/api-factories/public-api.mjs +0 -19
- package/esm2022/lib/aspect-list/aspect-list-dialog-data.interface.mjs +0 -18
- package/esm2022/lib/aspect-list/aspect-list-dialog.component.mjs +0 -77
- package/esm2022/lib/aspect-list/aspect-list.component.mjs +0 -139
- package/esm2022/lib/aspect-list/aspect-list.module.mjs +0 -35
- package/esm2022/lib/aspect-list/index.mjs +0 -18
- package/esm2022/lib/aspect-list/public-api.mjs +0 -24
- package/esm2022/lib/aspect-list/services/aspect-list.service.mjs +0 -83
- package/esm2022/lib/aspect-list/services/dialog-aspect-list.service.mjs +0 -86
- package/esm2022/lib/aspect-list/services/node-aspect.service.mjs +0 -52
- package/esm2022/lib/auth-loader/content-auth-loader-factory.mjs +0 -26
- package/esm2022/lib/auth-loader/content-auth-loader.service.mjs +0 -42
- package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +0 -166
- package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +0 -35
- package/esm2022/lib/breadcrumb/dropdown-breadcrumb.component.mjs +0 -65
- package/esm2022/lib/breadcrumb/index.mjs +0 -18
- package/esm2022/lib/breadcrumb/public-api.mjs +0 -20
- package/esm2022/lib/category/categories-management/categories-management-mode.mjs +0 -22
- package/esm2022/lib/category/categories-management/categories-management.component.mjs +0 -308
- package/esm2022/lib/category/category.module.mjs +0 -33
- package/esm2022/lib/category/index.mjs +0 -18
- package/esm2022/lib/category/models/category-node.interface.mjs +0 -18
- package/esm2022/lib/category/public-api.mjs +0 -23
- package/esm2022/lib/category/services/category-tree-datasource.service.mjs +0 -80
- package/esm2022/lib/category/services/category.service.mjs +0 -159
- package/esm2022/lib/common/events/file.event.mjs +0 -46
- package/esm2022/lib/common/index.mjs +0 -18
- package/esm2022/lib/common/interfaces/saved-search.interface.mjs +0 -18
- package/esm2022/lib/common/interfaces/search-configuration.interface.mjs +0 -18
- package/esm2022/lib/common/mocks/ecm-user.service.mock.mjs +0 -37
- package/esm2022/lib/common/models/allowable-operations.enum.mjs +0 -30
- package/esm2022/lib/common/models/ecm-company.model.mjs +0 -19
- package/esm2022/lib/common/models/ecm-user.model.mjs +0 -45
- package/esm2022/lib/common/models/file.model.mjs +0 -53
- package/esm2022/lib/common/models/node-metadata.model.mjs +0 -23
- package/esm2022/lib/common/models/permissions.enum.mjs +0 -32
- package/esm2022/lib/common/public-api.mjs +0 -37
- package/esm2022/lib/common/services/card-view-content-update.service.mjs +0 -55
- package/esm2022/lib/common/services/content.service.mjs +0 -180
- package/esm2022/lib/common/services/discovery-api.service.mjs +0 -79
- package/esm2022/lib/common/services/favorites-api.service.mjs +0 -84
- package/esm2022/lib/common/services/nodes-api.service.mjs +0 -251
- package/esm2022/lib/common/services/people-content.service.mjs +0 -138
- package/esm2022/lib/common/services/rendition.service.mjs +0 -270
- package/esm2022/lib/common/services/saved-searches.service.mjs +0 -206
- package/esm2022/lib/common/services/sites.service.mjs +0 -243
- package/esm2022/lib/common/services/upload.service.mjs +0 -391
- package/esm2022/lib/content-metadata/components/content-metadata/content-metadata-header.component.mjs +0 -54
- package/esm2022/lib/content-metadata/components/content-metadata/content-metadata.component.mjs +0 -490
- package/esm2022/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.mjs +0 -128
- package/esm2022/lib/content-metadata/content-metadata.module.mjs +0 -36
- package/esm2022/lib/content-metadata/index.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/aspect-oriented-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/card-view-group.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/content-metadata-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/content-metadata-custom-panel.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/content-metadata-panel.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/content-metadata.interfaces.mjs +0 -28
- package/esm2022/lib/content-metadata/interfaces/indifferent-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/layout-oriented-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/organised-property-group.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/preset-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/property-group.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/property.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/public-api.mjs +0 -31
- package/esm2022/lib/content-metadata/services/basic-properties.service.mjs +0 -107
- package/esm2022/lib/content-metadata/services/config/aspect-oriented-config.service.mjs +0 -106
- package/esm2022/lib/content-metadata/services/config/content-metadata-config.factory.mjs +0 -76
- package/esm2022/lib/content-metadata/services/config/indifferent-config.service.mjs +0 -40
- package/esm2022/lib/content-metadata/services/config/layout-oriented-config.service.mjs +0 -108
- package/esm2022/lib/content-metadata/services/config/property-group-reader.mjs +0 -33
- package/esm2022/lib/content-metadata/services/content-metadata.service.mjs +0 -99
- package/esm2022/lib/content-metadata/services/content-type-property.service.mjs +0 -134
- package/esm2022/lib/content-metadata/services/property-descriptors.service.mjs +0 -52
- package/esm2022/lib/content-metadata/services/property-groups-translator.service.mjs +0 -169
- package/esm2022/lib/content-node-selector/content-node-dialog.service.mjs +0 -256
- package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.component.mjs +0 -617
- package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.service.mjs +0 -66
- package/esm2022/lib/content-node-selector/content-node-selector.component-data.interface.mjs +0 -18
- package/esm2022/lib/content-node-selector/content-node-selector.component.mjs +0 -205
- package/esm2022/lib/content-node-selector/content-node-selector.module.mjs +0 -50
- package/esm2022/lib/content-node-selector/index.mjs +0 -18
- package/esm2022/lib/content-node-selector/name-location-cell/name-location-cell.component.mjs +0 -48
- package/esm2022/lib/content-node-selector/public-api.mjs +0 -25
- package/esm2022/lib/content-node-selector/site-dropdown/sites-dropdown.component.mjs +0 -168
- package/esm2022/lib/content-node-share/content-node-share.dialog.mjs +0 -287
- package/esm2022/lib/content-node-share/content-node-share.directive.mjs +0 -102
- package/esm2022/lib/content-node-share/content-node-share.module.mjs +0 -35
- package/esm2022/lib/content-node-share/content-node-share.settings.mjs +0 -18
- package/esm2022/lib/content-node-share/index.mjs +0 -18
- package/esm2022/lib/content-node-share/public-api.mjs +0 -22
- package/esm2022/lib/content-node-share/services/shared-links-api.service.mjs +0 -83
- package/esm2022/lib/content-type/content-type-dialog.component.mjs +0 -57
- package/esm2022/lib/content-type/content-type-metadata.interface.mjs +0 -18
- package/esm2022/lib/content-type/content-type.service.mjs +0 -52
- package/esm2022/lib/content-type/index.mjs +0 -20
- package/esm2022/lib/content.module.mjs +0 -277
- package/esm2022/lib/dialogs/category-selector/category-selector.dialog.mjs +0 -51
- package/esm2022/lib/dialogs/dialog.module.mjs +0 -52
- package/esm2022/lib/dialogs/download-zip/download-zip.dialog.mjs +0 -111
- package/esm2022/lib/dialogs/download-zip/download-zip.dialog.module.mjs +0 -38
- package/esm2022/lib/dialogs/download-zip/services/download-zip.service.mjs +0 -66
- package/esm2022/lib/dialogs/folder/folder-name.validators.mjs +0 -44
- package/esm2022/lib/dialogs/folder/folder.dialog.mjs +0 -146
- package/esm2022/lib/dialogs/index.mjs +0 -18
- package/esm2022/lib/dialogs/library/library.dialog.mjs +0 -224
- package/esm2022/lib/dialogs/node-lock/node-lock.dialog.mjs +0 -115
- package/esm2022/lib/dialogs/public-api.mjs +0 -25
- package/esm2022/lib/directives/auto-focus.directive.mjs +0 -38
- package/esm2022/lib/directives/check-allowable-operation.directive.mjs +0 -126
- package/esm2022/lib/directives/content-directive.module.mjs +0 -75
- package/esm2022/lib/directives/index.mjs +0 -18
- package/esm2022/lib/directives/library-favorite.directive.mjs +0 -119
- package/esm2022/lib/directives/library-membership.directive.mjs +0 -202
- package/esm2022/lib/directives/node-counter.directive.mjs +0 -59
- package/esm2022/lib/directives/node-delete.directive.mjs +0 -177
- package/esm2022/lib/directives/node-download.directive.mjs +0 -138
- package/esm2022/lib/directives/node-favorite.directive.mjs +0 -193
- package/esm2022/lib/directives/node-lock.directive.mjs +0 -57
- package/esm2022/lib/directives/node-restore.directive.mjs +0 -218
- package/esm2022/lib/directives/public-api.mjs +0 -28
- package/esm2022/lib/document-list/components/content-action/content-action-list.component.mjs +0 -60
- package/esm2022/lib/document-list/components/content-action/content-action.component.mjs +0 -196
- package/esm2022/lib/document-list/components/document-list.component.mjs +0 -965
- package/esm2022/lib/document-list/components/document-list.token.mjs +0 -21
- package/esm2022/lib/document-list/components/file-auto-download/file-auto-download.component.mjs +0 -42
- package/esm2022/lib/document-list/components/filter-header/filter-header.component.mjs +0 -107
- package/esm2022/lib/document-list/components/library-name-column/library-name-column.component.mjs +0 -131
- package/esm2022/lib/document-list/components/library-role-column/library-role-column.component.mjs +0 -91
- package/esm2022/lib/document-list/components/library-status-column/library-status-column.component.mjs +0 -86
- package/esm2022/lib/document-list/components/name-column/name-column.component.mjs +0 -118
- package/esm2022/lib/document-list/components/node.event.mjs +0 -30
- package/esm2022/lib/document-list/components/trashcan-name-column/trashcan-name-column.component.mjs +0 -83
- package/esm2022/lib/document-list/data/image-resolver.model.mjs +0 -18
- package/esm2022/lib/document-list/data/row-filter.model.mjs +0 -18
- package/esm2022/lib/document-list/data/share-data-row.model.mjs +0 -102
- package/esm2022/lib/document-list/data/share-datatable-adapter.mjs +0 -258
- package/esm2022/lib/document-list/document-list.module.mjs +0 -75
- package/esm2022/lib/document-list/index.mjs +0 -18
- package/esm2022/lib/document-list/interfaces/document-list-loader.interface.mjs +0 -18
- package/esm2022/lib/document-list/models/content-action.model.mjs +0 -59
- package/esm2022/lib/document-list/models/document-folder.model.mjs +0 -23
- package/esm2022/lib/document-list/models/node-action.enum.mjs +0 -27
- package/esm2022/lib/document-list/models/permissions-style.model.mjs +0 -27
- package/esm2022/lib/document-list/models/permissions.model.mjs +0 -26
- package/esm2022/lib/document-list/models/preset.model.mjs +0 -257
- package/esm2022/lib/document-list/public-api.mjs +0 -47
- package/esm2022/lib/document-list/services/custom-resources.service.mjs +0 -378
- package/esm2022/lib/document-list/services/document-actions.service.mjs +0 -142
- package/esm2022/lib/document-list/services/document-list.service.mjs +0 -175
- package/esm2022/lib/document-list/services/folder-actions.service.mjs +0 -137
- package/esm2022/lib/document-list/services/lock.service.mjs +0 -72
- package/esm2022/lib/document-list/services/node-actions.service.mjs +0 -122
- package/esm2022/lib/group/index.mjs +0 -18
- package/esm2022/lib/group/public-api.mjs +0 -18
- package/esm2022/lib/group/services/group.service.mjs +0 -84
- package/esm2022/lib/infinite-scroll-datasource/index.mjs +0 -18
- package/esm2022/lib/infinite-scroll-datasource/infinite-scroll-datasource.mjs +0 -69
- package/esm2022/lib/infinite-scroll-datasource/public-api.mjs +0 -18
- package/esm2022/lib/interfaces/base-card-view-content-update.interface.mjs +0 -18
- package/esm2022/lib/interfaces/index.mjs +0 -18
- package/esm2022/lib/interfaces/library-entity.interface.mjs +0 -18
- package/esm2022/lib/interfaces/library-membership-error-event.interface.mjs +0 -18
- package/esm2022/lib/interfaces/library-membership-toggle-event.interface.mjs +0 -18
- package/esm2022/lib/interfaces/node-allowable-operation-subject.interface.mjs +0 -18
- package/esm2022/lib/interfaces/public-api.mjs +0 -23
- package/esm2022/lib/interfaces/restore-message-model.interface.mjs +0 -19
- package/esm2022/lib/legal-hold/index.mjs +0 -18
- package/esm2022/lib/legal-hold/public-api.mjs +0 -18
- package/esm2022/lib/legal-hold/services/legal-hold.service.mjs +0 -136
- package/esm2022/lib/material.module.mjs +0 -183
- package/esm2022/lib/mock/alfresco-api.service.mock.mjs +0 -43
- package/esm2022/lib/mock/date-range-search-filter.mock.mjs +0 -65
- package/esm2022/lib/mock/document-library.model.mock.mjs +0 -84
- package/esm2022/lib/mock/document-list.component.mock.mjs +0 -364
- package/esm2022/lib/mock/index.mjs +0 -18
- package/esm2022/lib/mock/new-version-uploader.service.mock.mjs +0 -161
- package/esm2022/lib/mock/public-api.mjs +0 -27
- package/esm2022/lib/mock/search-filter-mock.mjs +0 -637
- package/esm2022/lib/mock/search-query.mock.mjs +0 -40
- package/esm2022/lib/mock/search.component.mock.mjs +0 -165
- package/esm2022/lib/mock/search.service.mock.mjs +0 -61
- package/esm2022/lib/mock/sites-dropdown.component.mock.mjs +0 -281
- package/esm2022/lib/new-version-uploader/index.mjs +0 -18
- package/esm2022/lib/new-version-uploader/models/index.mjs +0 -18
- package/esm2022/lib/new-version-uploader/models/new-version-uploader.model.mjs +0 -24
- package/esm2022/lib/new-version-uploader/new-version-uploader.dialog.mjs +0 -74
- package/esm2022/lib/new-version-uploader/new-version-uploader.module.mjs +0 -33
- package/esm2022/lib/new-version-uploader/new-version-uploader.service.mjs +0 -103
- package/esm2022/lib/new-version-uploader/public-api.mjs +0 -21
- package/esm2022/lib/node-comments/index.mjs +0 -18
- package/esm2022/lib/node-comments/node-comments.component.mjs +0 -50
- package/esm2022/lib/node-comments/node-comments.module.mjs +0 -33
- package/esm2022/lib/node-comments/public-api.mjs +0 -20
- package/esm2022/lib/node-comments/services/node-comments.service.mjs +0 -85
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog-data.interface.mjs +0 -18
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog.component.mjs +0 -123
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-panel.component.mjs +0 -102
- package/esm2022/lib/permission-manager/components/add-permission/add-permission.component.mjs +0 -69
- package/esm2022/lib/permission-manager/components/add-permission/search-config-permission.service.mjs +0 -45
- package/esm2022/lib/permission-manager/components/inherited-button.directive.mjs +0 -67
- package/esm2022/lib/permission-manager/components/node-path-column/node-path-column.component.mjs +0 -56
- package/esm2022/lib/permission-manager/components/permission-container/permission-container.component.mjs +0 -102
- package/esm2022/lib/permission-manager/components/permission-list/permission-list.component.mjs +0 -87
- package/esm2022/lib/permission-manager/components/permission-list/permission-list.service.mjs +0 -219
- package/esm2022/lib/permission-manager/components/pop-over.directive.mjs +0 -134
- package/esm2022/lib/permission-manager/components/user-icon-column/user-icon-column.component.mjs +0 -88
- package/esm2022/lib/permission-manager/components/user-name-column/user-name-column.component.mjs +0 -82
- package/esm2022/lib/permission-manager/components/user-role-column/user-role-column.component.mjs +0 -111
- package/esm2022/lib/permission-manager/index.mjs +0 -18
- package/esm2022/lib/permission-manager/models/member.model.mjs +0 -59
- package/esm2022/lib/permission-manager/models/permission.model.mjs +0 -29
- package/esm2022/lib/permission-manager/models/role.model.mjs +0 -18
- package/esm2022/lib/permission-manager/permission-manager.module.mjs +0 -84
- package/esm2022/lib/permission-manager/public-api.mjs +0 -36
- package/esm2022/lib/permission-manager/services/node-permission-dialog.service.mjs +0 -78
- package/esm2022/lib/permission-manager/services/node-permission.service.mjs +0 -299
- package/esm2022/lib/pipes/content-pipe.module.mjs +0 -37
- package/esm2022/lib/pipes/index.mjs +0 -18
- package/esm2022/lib/pipes/node-name-tooltip.pipe.mjs +0 -69
- package/esm2022/lib/pipes/public-api.mjs +0 -19
- package/esm2022/lib/prediction/index.mjs +0 -18
- package/esm2022/lib/prediction/public-api.mjs +0 -18
- package/esm2022/lib/prediction/services/index.mjs +0 -18
- package/esm2022/lib/prediction/services/prediction.service.mjs +0 -57
- package/esm2022/lib/search/components/empty-search-result.component.mjs +0 -27
- package/esm2022/lib/search/components/index.mjs +0 -43
- package/esm2022/lib/search/components/reset-search.directive.mjs +0 -41
- package/esm2022/lib/search/components/search-check-list/index.mjs +0 -18
- package/esm2022/lib/search/components/search-check-list/search-check-list.component.mjs +0 -158
- package/esm2022/lib/search/components/search-chip-autocomplete-input/index.mjs +0 -18
- package/esm2022/lib/search/components/search-chip-autocomplete-input/search-chip-autocomplete-input.component.mjs +0 -169
- package/esm2022/lib/search/components/search-chip-list/search-chip-list.component.mjs +0 -46
- package/esm2022/lib/search/components/search-control.component.mjs +0 -180
- package/esm2022/lib/search/components/search-date-range-tabbed/index.mjs +0 -22
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/date-range-type.mjs +0 -23
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/in-last-date-type.mjs +0 -23
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.mjs +0 -196
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.mjs +0 -18
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range-tabbed.component.mjs +0 -201
- package/esm2022/lib/search/components/search-datetime-range/index.mjs +0 -18
- package/esm2022/lib/search/components/search-datetime-range/search-datetime-range.component.mjs +0 -223
- package/esm2022/lib/search/components/search-facet-field/index.mjs +0 -18
- package/esm2022/lib/search/components/search-facet-field/search-facet-field.component.mjs +0 -132
- package/esm2022/lib/search/components/search-filter/index.mjs +0 -19
- package/esm2022/lib/search/components/search-filter/search-filter-card/search-filter-card.component.mjs +0 -45
- package/esm2022/lib/search/components/search-filter/search-filter.component.mjs +0 -80
- package/esm2022/lib/search/components/search-filter-autocomplete-chips/index.mjs +0 -18
- package/esm2022/lib/search/components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component.mjs +0 -154
- package/esm2022/lib/search/components/search-filter-chips/index.mjs +0 -23
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.mjs +0 -104
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.mjs +0 -109
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component.mjs +0 -129
- package/esm2022/lib/search/components/search-filter-chips/search-filter-chips.component.mjs +0 -63
- package/esm2022/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.mjs +0 -43
- package/esm2022/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.mjs +0 -109
- package/esm2022/lib/search/components/search-filter-container/index.mjs +0 -18
- package/esm2022/lib/search/components/search-filter-container/search-filter-container.component.mjs +0 -122
- package/esm2022/lib/search/components/search-filter-tabbed/index.mjs +0 -19
- package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tab.directive.mjs +0 -36
- package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tabbed.component.mjs +0 -63
- package/esm2022/lib/search/components/search-form/index.mjs +0 -18
- package/esm2022/lib/search/components/search-form/search-form.component.mjs +0 -52
- package/esm2022/lib/search/components/search-input/index.mjs +0 -18
- package/esm2022/lib/search/components/search-input/search-input.component.mjs +0 -108
- package/esm2022/lib/search/components/search-logical-filter/index.mjs +0 -18
- package/esm2022/lib/search/components/search-logical-filter/search-logical-filter.component.mjs +0 -163
- package/esm2022/lib/search/components/search-number-range/index.mjs +0 -18
- package/esm2022/lib/search/components/search-number-range/search-number-range.component.mjs +0 -154
- package/esm2022/lib/search/components/search-panel/index.mjs +0 -18
- package/esm2022/lib/search/components/search-panel/search-panel.component.mjs +0 -44
- package/esm2022/lib/search/components/search-properties/file-size-condition.mjs +0 -18
- package/esm2022/lib/search/components/search-properties/file-size-operator.enum.mjs +0 -23
- package/esm2022/lib/search/components/search-properties/file-size-unit.enum.mjs +0 -26
- package/esm2022/lib/search/components/search-properties/index.mjs +0 -22
- package/esm2022/lib/search/components/search-properties/search-properties.component.mjs +0 -244
- package/esm2022/lib/search/components/search-properties/search-properties.mjs +0 -18
- package/esm2022/lib/search/components/search-radio/index.mjs +0 -18
- package/esm2022/lib/search/components/search-radio/search-radio.component.mjs +0 -145
- package/esm2022/lib/search/components/search-slider/index.mjs +0 -18
- package/esm2022/lib/search/components/search-slider/search-slider.component.mjs +0 -119
- package/esm2022/lib/search/components/search-sorting-picker/index.mjs +0 -18
- package/esm2022/lib/search/components/search-sorting-picker/search-sorting-picker.component.mjs +0 -77
- package/esm2022/lib/search/components/search-text/index.mjs +0 -18
- package/esm2022/lib/search/components/search-text/search-text.component.mjs +0 -134
- package/esm2022/lib/search/components/search-widget-container/index.mjs +0 -18
- package/esm2022/lib/search/components/search-widget-container/search-widget-container.component.mjs +0 -113
- package/esm2022/lib/search/components/search.component.mjs +0 -152
- package/esm2022/lib/search/forms/index.mjs +0 -19
- package/esm2022/lib/search/forms/live-error-state-matcher.mjs +0 -23
- package/esm2022/lib/search/forms/search-term-validator.mjs +0 -26
- package/esm2022/lib/search/index.mjs +0 -18
- package/esm2022/lib/search/mocks/index.mjs +0 -18
- package/esm2022/lib/search/mocks/search.service.mock.mjs +0 -56
- package/esm2022/lib/search/models/autocomplete-option.interface.mjs +0 -22
- package/esm2022/lib/search/models/facet-field-bucket.interface.mjs +0 -18
- package/esm2022/lib/search/models/facet-field.interface.mjs +0 -29
- package/esm2022/lib/search/models/facet-query.interface.mjs +0 -18
- package/esm2022/lib/search/models/facet-widget.interface.mjs +0 -18
- package/esm2022/lib/search/models/filter-query.interface.mjs +0 -18
- package/esm2022/lib/search/models/filter-search.interface.mjs +0 -18
- package/esm2022/lib/search/models/index.mjs +0 -34
- package/esm2022/lib/search/models/response-facet-query-list.model.mjs +0 -31
- package/esm2022/lib/search/models/search-category.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-configuration.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-filter-list.model.mjs +0 -148
- package/esm2022/lib/search/models/search-form.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-range.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-sorting-definition.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-widget-settings.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-widget.interface.mjs +0 -18
- package/esm2022/lib/search/models/tabbed-facet-field.interface.mjs +0 -18
- package/esm2022/lib/search/public-api.mjs +0 -24
- package/esm2022/lib/search/search-configuration.token.mjs +0 -19
- package/esm2022/lib/search/search.module.mjs +0 -192
- package/esm2022/lib/search/services/base-query-builder.service.mjs +0 -509
- package/esm2022/lib/search/services/index.mjs +0 -24
- package/esm2022/lib/search/services/search-configuration.service.mjs +0 -50
- package/esm2022/lib/search/services/search-facet-filters.service.mjs +0 -374
- package/esm2022/lib/search/services/search-filter.service.mjs +0 -56
- package/esm2022/lib/search/services/search-header-query-builder.service.mjs +0 -136
- package/esm2022/lib/search/services/search-query-builder.service.mjs +0 -48
- package/esm2022/lib/search/services/search.service.mjs +0 -89
- package/esm2022/lib/search-ai/index.mjs +0 -18
- package/esm2022/lib/search-ai/models/search-ai-input-state.mjs +0 -18
- package/esm2022/lib/search-ai/public-api.mjs +0 -19
- package/esm2022/lib/search-ai/services/search-ai.service.mjs +0 -103
- package/esm2022/lib/security/index.mjs +0 -18
- package/esm2022/lib/security/public-api.mjs +0 -18
- package/esm2022/lib/security/services/models/security-controls-group-response.interface.mjs +0 -18
- package/esm2022/lib/security/services/models/security-controls-mark-response.interface.mjs +0 -18
- package/esm2022/lib/security/services/security-controls-groups-marks-security.service.mjs +0 -274
- package/esm2022/lib/security-options-loader/security-options-loader.service.mjs +0 -43
- package/esm2022/lib/services/alfresco-api.interface.mjs +0 -18
- package/esm2022/lib/services/alfresco-api.service.mjs +0 -120
- package/esm2022/lib/services/index.mjs +0 -18
- package/esm2022/lib/services/public-api.mjs +0 -18
- package/esm2022/lib/tag/index.mjs +0 -18
- package/esm2022/lib/tag/public-api.mjs +0 -24
- package/esm2022/lib/tag/services/tag.service.mjs +0 -171
- package/esm2022/lib/tag/tag-actions/tag-actions.component.mjs +0 -114
- package/esm2022/lib/tag/tag-list/tag-list.component.mjs +0 -98
- package/esm2022/lib/tag/tag-node-list/tag-node-list.component.mjs +0 -80
- package/esm2022/lib/tag/tag.module.mjs +0 -37
- package/esm2022/lib/tag/tags-creator/tags-creator-mode.mjs +0 -27
- package/esm2022/lib/tag/tags-creator/tags-creator.component.mjs +0 -370
- package/esm2022/lib/testing/content.testing.module.mjs +0 -56
- package/esm2022/lib/tree/components/tree.component.mjs +0 -312
- package/esm2022/lib/tree/index.mjs +0 -18
- package/esm2022/lib/tree/models/tree-context-menu-result.interface.mjs +0 -18
- package/esm2022/lib/tree/models/tree-node.interface.mjs +0 -22
- package/esm2022/lib/tree/models/tree-response.interface.mjs +0 -18
- package/esm2022/lib/tree/public-api.mjs +0 -23
- package/esm2022/lib/tree/services/tree.service.mjs +0 -134
- package/esm2022/lib/tree/tree.module.mjs +0 -33
- package/esm2022/lib/tree-view/components/tree-view.component.mjs +0 -75
- package/esm2022/lib/tree-view/data/tree-view-datasource.mjs +0 -99
- package/esm2022/lib/tree-view/index.mjs +0 -18
- package/esm2022/lib/tree-view/models/tree-view.model.mjs +0 -28
- package/esm2022/lib/tree-view/public-api.mjs +0 -22
- package/esm2022/lib/tree-view/services/tree-view.service.mjs +0 -38
- package/esm2022/lib/tree-view/tree-view.module.mjs +0 -33
- package/esm2022/lib/upload/components/base-upload/upload-base.mjs +0 -176
- package/esm2022/lib/upload/components/file-uploading-dialog.component.mjs +0 -190
- package/esm2022/lib/upload/components/file-uploading-list-row.component.mjs +0 -92
- package/esm2022/lib/upload/components/file-uploading-list.component.mjs +0 -124
- package/esm2022/lib/upload/components/upload-button.component.mjs +0 -133
- package/esm2022/lib/upload/components/upload-drag-area.component.mjs +0 -112
- package/esm2022/lib/upload/components/upload-files.event.mjs +0 -41
- package/esm2022/lib/upload/components/upload-version-button.component.mjs +0 -54
- package/esm2022/lib/upload/directives/file-draggable.directive.mjs +0 -154
- package/esm2022/lib/upload/directives/toggle-icon.directive.mjs +0 -75
- package/esm2022/lib/upload/index.mjs +0 -18
- package/esm2022/lib/upload/pipes/file-upload-error.pipe.mjs +0 -39
- package/esm2022/lib/upload/public-api.mjs +0 -29
- package/esm2022/lib/upload/upload.module.mjs +0 -72
- package/esm2022/lib/version-compatibility/index.mjs +0 -18
- package/esm2022/lib/version-compatibility/public-api.mjs +0 -20
- package/esm2022/lib/version-compatibility/version-compatibility-factory.mjs +0 -26
- package/esm2022/lib/version-compatibility/version-compatibility.directive.mjs +0 -53
- package/esm2022/lib/version-compatibility/version-compatibility.module.mjs +0 -33
- package/esm2022/lib/version-compatibility/version-compatibility.service.mjs +0 -76
- package/esm2022/lib/version-manager/content-version.service.mjs +0 -53
- package/esm2022/lib/version-manager/index.mjs +0 -18
- package/esm2022/lib/version-manager/public-api.mjs +0 -23
- package/esm2022/lib/version-manager/version-comparison.component.mjs +0 -42
- package/esm2022/lib/version-manager/version-list.component.mjs +0 -215
- package/esm2022/lib/version-manager/version-manager.component.mjs +0 -145
- package/esm2022/lib/version-manager/version-manager.module.mjs +0 -48
- package/esm2022/lib/version-manager/version-upload.component.mjs +0 -154
- package/esm2022/lib/viewer/alfresco-viewer.module.mjs +0 -33
- package/esm2022/lib/viewer/components/alfresco-viewer.component.mjs +0 -408
- package/esm2022/lib/viewer/index.mjs +0 -18
- package/esm2022/lib/viewer/public-api.mjs +0 -19
- package/esm2022/public-api.mjs +0 -56
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
import { TranslationService } from '@alfresco/adf-core';
|
|
18
|
-
import { FileModel } from '../../../common/models/file.model';
|
|
19
|
-
import { UploadService } from '../../../common/services/upload.service';
|
|
20
|
-
import { DestroyRef, Directive, EventEmitter, inject, Input, NgZone, Output } from '@angular/core';
|
|
21
|
-
import { UploadFilesEvent } from '../upload-files.event';
|
|
22
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
23
|
-
import * as i0 from "@angular/core";
|
|
24
|
-
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
|
25
|
-
export class UploadBase {
|
|
26
|
-
constructor() {
|
|
27
|
-
this.uploadService = inject(UploadService);
|
|
28
|
-
this.translationService = inject(TranslationService);
|
|
29
|
-
this.ngZone = inject(NgZone);
|
|
30
|
-
/**
|
|
31
|
-
* The ID of the root. Use the nodeId for
|
|
32
|
-
* Content Services or the taskId/processId for Process Services.
|
|
33
|
-
*/
|
|
34
|
-
this.rootFolderId = '-root-';
|
|
35
|
-
/** Toggles component disabled state (if there is no node permission checking). */
|
|
36
|
-
this.disabled = false;
|
|
37
|
-
/** Filter for accepted file types. */
|
|
38
|
-
this.acceptedFilesType = '*';
|
|
39
|
-
/** Toggles versioning. */
|
|
40
|
-
this.versioning = false;
|
|
41
|
-
/** majorVersion boolean field to true to indicate a major version should be created. */
|
|
42
|
-
this.majorVersion = false;
|
|
43
|
-
/** Custom node type for uploaded file */
|
|
44
|
-
this.nodeType = 'cm:content';
|
|
45
|
-
/** Emitted when the file is uploaded successfully. */
|
|
46
|
-
this.success = new EventEmitter();
|
|
47
|
-
/** Emitted when an error occurs. */
|
|
48
|
-
this.error = new EventEmitter();
|
|
49
|
-
/** Emitted when the upload begins. */
|
|
50
|
-
this.beginUpload = new EventEmitter();
|
|
51
|
-
/** Emitted when dropping a file over another file to update the version. */
|
|
52
|
-
this.updateFileVersion = new EventEmitter();
|
|
53
|
-
this.destroyRef = inject(DestroyRef);
|
|
54
|
-
}
|
|
55
|
-
ngOnInit() {
|
|
56
|
-
this.uploadService.fileUploadError
|
|
57
|
-
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
58
|
-
.subscribe(error => this.error.emit(error));
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Upload a list of file in the specified path
|
|
62
|
-
*
|
|
63
|
-
* @param files files to upload
|
|
64
|
-
*/
|
|
65
|
-
uploadFiles(files) {
|
|
66
|
-
const filteredFiles = files.map((file) => this.createFileModel(file, this.rootFolderId, ((file).webkitRelativePath || '').replace(/\/[^/]*$/, '')));
|
|
67
|
-
this.uploadQueue(filteredFiles);
|
|
68
|
-
}
|
|
69
|
-
uploadFilesInfo(files) {
|
|
70
|
-
const filteredFiles = files.map((fileInfo) => this.createFileModel(fileInfo.file, this.rootFolderId, fileInfo.relativeFolder));
|
|
71
|
-
this.uploadQueue(filteredFiles);
|
|
72
|
-
}
|
|
73
|
-
uploadQueue(files) {
|
|
74
|
-
const filteredFiles = files.filter(this.isFileAcceptable.bind(this)).filter(this.isFileSizeAcceptable.bind(this));
|
|
75
|
-
this.ngZone.run(() => {
|
|
76
|
-
const event = new UploadFilesEvent([...filteredFiles], this.uploadService, this.success, this.error);
|
|
77
|
-
this.beginUpload.emit(event);
|
|
78
|
-
if (!event.defaultPrevented) {
|
|
79
|
-
if (filteredFiles.length > 0) {
|
|
80
|
-
this.uploadService.addToQueue(...filteredFiles);
|
|
81
|
-
this.uploadService.uploadFilesInTheQueue(this.success, this.error);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Checks if the given file is allowed by the extension filters
|
|
88
|
-
*
|
|
89
|
-
* @param file FileModel
|
|
90
|
-
* @returns `true` if file is acceptable, otherwise `false`
|
|
91
|
-
*/
|
|
92
|
-
isFileAcceptable(file) {
|
|
93
|
-
if (this.acceptedFilesType === '*') {
|
|
94
|
-
return true;
|
|
95
|
-
}
|
|
96
|
-
const allowedExtensions = this.acceptedFilesType.split(',').map((ext) => ext.trim().replace(/^\./, ''));
|
|
97
|
-
return allowedExtensions.indexOf(file.extension) !== -1;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Creates FileModel from File
|
|
101
|
-
*
|
|
102
|
-
* @param file file instance
|
|
103
|
-
* @param parentId parent id
|
|
104
|
-
* @param path upload path
|
|
105
|
-
* @param id model id
|
|
106
|
-
* @returns file model
|
|
107
|
-
*/
|
|
108
|
-
createFileModel(file, parentId, path, id) {
|
|
109
|
-
return new FileModel(file, {
|
|
110
|
-
comment: this.comment,
|
|
111
|
-
majorVersion: this.majorVersion,
|
|
112
|
-
newVersion: this.versioning,
|
|
113
|
-
parentId,
|
|
114
|
-
path,
|
|
115
|
-
nodeType: this.nodeType
|
|
116
|
-
}, id);
|
|
117
|
-
}
|
|
118
|
-
isFileSizeAllowed(file) {
|
|
119
|
-
let isFileSizeAllowed = true;
|
|
120
|
-
if (this.isMaxFileSizeDefined()) {
|
|
121
|
-
isFileSizeAllowed = this.isFileSizeCorrect(file);
|
|
122
|
-
}
|
|
123
|
-
return isFileSizeAllowed;
|
|
124
|
-
}
|
|
125
|
-
isMaxFileSizeDefined() {
|
|
126
|
-
return this.maxFilesSize !== undefined && this.maxFilesSize !== null;
|
|
127
|
-
}
|
|
128
|
-
isFileSizeCorrect(file) {
|
|
129
|
-
return this.maxFilesSize >= 0 && file.size <= this.maxFilesSize;
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Checks if the given file is an acceptable size
|
|
133
|
-
*
|
|
134
|
-
* @param file FileModel
|
|
135
|
-
* @returns `true` if file size is acceptable, otherwise `false`
|
|
136
|
-
*/
|
|
137
|
-
isFileSizeAcceptable(file) {
|
|
138
|
-
let acceptableSize = true;
|
|
139
|
-
if (!this.isFileSizeAllowed(file)) {
|
|
140
|
-
acceptableSize = false;
|
|
141
|
-
const message = this.translationService.instant('FILE_UPLOAD.MESSAGES.EXCEED_MAX_FILE_SIZE', { fileName: file.name });
|
|
142
|
-
this.error.emit(message);
|
|
143
|
-
}
|
|
144
|
-
return acceptableSize;
|
|
145
|
-
}
|
|
146
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploadBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
147
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: UploadBase, inputs: { maxFilesSize: "maxFilesSize", rootFolderId: "rootFolderId", disabled: "disabled", acceptedFilesType: "acceptedFilesType", versioning: "versioning", majorVersion: "majorVersion", comment: "comment", nodeType: "nodeType" }, outputs: { success: "success", error: "error", beginUpload: "beginUpload", updateFileVersion: "updateFileVersion" }, ngImport: i0 }); }
|
|
148
|
-
}
|
|
149
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploadBase, decorators: [{
|
|
150
|
-
type: Directive
|
|
151
|
-
}], propDecorators: { maxFilesSize: [{
|
|
152
|
-
type: Input
|
|
153
|
-
}], rootFolderId: [{
|
|
154
|
-
type: Input
|
|
155
|
-
}], disabled: [{
|
|
156
|
-
type: Input
|
|
157
|
-
}], acceptedFilesType: [{
|
|
158
|
-
type: Input
|
|
159
|
-
}], versioning: [{
|
|
160
|
-
type: Input
|
|
161
|
-
}], majorVersion: [{
|
|
162
|
-
type: Input
|
|
163
|
-
}], comment: [{
|
|
164
|
-
type: Input
|
|
165
|
-
}], nodeType: [{
|
|
166
|
-
type: Input
|
|
167
|
-
}], success: [{
|
|
168
|
-
type: Output
|
|
169
|
-
}], error: [{
|
|
170
|
-
type: Output
|
|
171
|
-
}], beginUpload: [{
|
|
172
|
-
type: Output
|
|
173
|
-
}], updateFileVersion: [{
|
|
174
|
-
type: Output
|
|
175
|
-
}] } });
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3VwbG9hZC9jb21wb25lbnRzL2Jhc2UtdXBsb2FkL3VwbG9hZC1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBWSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHaEUsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBZ0IsVUFBVTtJQUZoQztRQUdjLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLHVCQUFrQixHQUF1QixNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwRSxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBU2xDOzs7V0FHRztRQUVILGlCQUFZLEdBQVcsUUFBUSxDQUFDO1FBRWhDLGtGQUFrRjtRQUVsRixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFCLHNDQUFzQztRQUV0QyxzQkFBaUIsR0FBVyxHQUFHLENBQUM7UUFFaEMsMEJBQTBCO1FBRTFCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFNUIsd0ZBQXdGO1FBRXhGLGlCQUFZLEdBQVksS0FBSyxDQUFD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QUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLG9CQUFvQixDQUFDLElBQWU7UUFDeEMsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBRTFCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBRXZCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsMkNBQTJDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFFdEgsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUVELE9BQU8sY0FBYyxDQUFDO0lBQzFCLENBQUM7K0dBbkxpQixVQUFVO21HQUFWLFVBQVU7OzRGQUFWLFVBQVU7a0JBRi9CLFNBQVM7OEJBWU4sWUFBWTtzQkFEWCxLQUFLO2dCQVFOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sT0FBTztzQkFETixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixPQUFPO3NCQUROLE1BQU07Z0JBS1AsS0FBSztzQkFESixNQUFNO2dCQUtQLFdBQVc7c0JBRFYsTUFBTTtnQkFLUCxpQkFBaUI7c0JBRGhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEZpbGVJbmZvLCBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgRmlsZVVwbG9hZEVycm9yRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZXZlbnRzL2ZpbGUuZXZlbnQnO1xuaW1wb3J0IHsgRmlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL21vZGVscy9maWxlLm1vZGVsJztcbmltcG9ydCB7IFVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vc2VydmljZXMvdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE5nWm9uZSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVwbG9hZEZpbGVzRXZlbnQgfSBmcm9tICcuLi91cGxvYWQtZmlsZXMuZXZlbnQnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5ARGlyZWN0aXZlKClcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFVwbG9hZEJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByb3RlY3RlZCB1cGxvYWRTZXJ2aWNlID0gaW5qZWN0KFVwbG9hZFNlcnZpY2UpO1xuICAgIHByb3RlY3RlZCB0cmFuc2xhdGlvblNlcnZpY2U6IFRyYW5zbGF0aW9uU2VydmljZSA9IGluamVjdChUcmFuc2xhdGlvblNlcnZpY2UpO1xuICAgIHByb3RlY3RlZCBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICAgIC8qKlxuICAgICAqIFNldHMgYSBsaW1pdCBvbiB0aGUgbWF4aW11bSBzaXplIChpbiBieXRlcykgb2YgYSBmaWxlIHRvIGJlIHVwbG9hZGVkLlxuICAgICAqIEhhcyBubyBlZmZlY3QgaWYgdW5kZWZpbmVkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWF4RmlsZXNTaXplOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgSUQgb2YgdGhlIHJvb3QuIFVzZSB0aGUgbm9kZUlkIGZvclxuICAgICAqIENvbnRlbnQgU2VydmljZXMgb3IgdGhlIHRhc2tJZC9wcm9jZXNzSWQgZm9yIFByb2Nlc3MgU2VydmljZXMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICByb290Rm9sZGVySWQ6IHN0cmluZyA9ICctcm9vdC0nO1xuXG4gICAgLyoqIFRvZ2dsZXMgY29tcG9uZW50IGRpc2FibGVkIHN0YXRlIChpZiB0aGVyZSBpcyBubyBub2RlIHBlcm1pc3Npb24gY2hlY2tpbmcpLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBGaWx0ZXIgZm9yIGFjY2VwdGVkIGZpbGUgdHlwZXMuICovXG4gICAgQElucHV0KClcbiAgICBhY2NlcHRlZEZpbGVzVHlwZTogc3RyaW5nID0gJyonO1xuXG4gICAgLyoqIFRvZ2dsZXMgdmVyc2lvbmluZy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHZlcnNpb25pbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBtYWpvclZlcnNpb24gYm9vbGVhbiBmaWVsZCB0byB0cnVlIHRvIGluZGljYXRlIGEgbWFqb3IgdmVyc2lvbiBzaG91bGQgYmUgY3JlYXRlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1ham9yVmVyc2lvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZW4geW91IG92ZXJ3cml0ZSBleGlzdGluZyBjb250ZW50LCB5b3UgY2FuIHVzZSB0aGUgY29tbWVudCBmaWVsZCB0byBhZGQgYSB2ZXJzaW9uIGNvbW1lbnQgdGhhdCBhcHBlYXJzIGluIHRoZSB2ZXJzaW9uIGhpc3RvcnkgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbW1lbnQ6IHN0cmluZztcblxuICAgIC8qKiBDdXN0b20gbm9kZSB0eXBlIGZvciB1cGxvYWRlZCBmaWxlICovXG4gICAgQElucHV0KClcbiAgICBub2RlVHlwZTogc3RyaW5nID0gJ2NtOmNvbnRlbnQnO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgZmlsZSBpcyB1cGxvYWRlZCBzdWNjZXNzZnVsbHkuICovXG4gICAgQE91dHB1dCgpXG4gICAgc3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYW4gZXJyb3Igb2NjdXJzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlVXBsb2FkRXJyb3JFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIHVwbG9hZCBiZWdpbnMuICovXG4gICAgQE91dHB1dCgpXG4gICAgYmVnaW5VcGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPFVwbG9hZEZpbGVzRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGRyb3BwaW5nIGEgZmlsZSBvdmVyIGFub3RoZXIgZmlsZSB0byB1cGRhdGUgdGhlIHZlcnNpb24uICovXG4gICAgQE91dHB1dCgpXG4gICAgdXBkYXRlRmlsZVZlcnNpb24gPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5maWxlVXBsb2FkRXJyb3JcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShlcnJvciA9PiB0aGlzLmVycm9yLmVtaXQoZXJyb3IpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgYSBsaXN0IG9mIGZpbGUgaW4gdGhlIHNwZWNpZmllZCBwYXRoXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZXMgZmlsZXMgdG8gdXBsb2FkXG4gICAgICovXG4gICAgdXBsb2FkRmlsZXMoZmlsZXM6IEZpbGVbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZEZpbGVzOiBGaWxlTW9kZWxbXSA9IGZpbGVzLm1hcDxGaWxlTW9kZWw+KChmaWxlOiBGaWxlKSA9PlxuICAgICAgICAgICAgdGhpcy5jcmVhdGVGaWxlTW9kZWwoZmlsZSwgdGhpcy5yb290Rm9sZGVySWQsICgoZmlsZSkud2Via2l0UmVsYXRpdmVQYXRoIHx8ICcnKS5yZXBsYWNlKC9cXC9bXi9dKiQvLCAnJykpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy51cGxvYWRRdWV1ZShmaWx0ZXJlZEZpbGVzKTtcbiAgICB9XG5cbiAgICB1cGxvYWRGaWxlc0luZm8oZmlsZXM6IEZpbGVJbmZvW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRGaWxlczogRmlsZU1vZGVsW10gPSBmaWxlcy5tYXA8RmlsZU1vZGVsPigoZmlsZUluZm86IEZpbGVJbmZvKSA9PlxuICAgICAgICAgICAgdGhpcy5jcmVhdGVGaWxlTW9kZWwoZmlsZUluZm8uZmlsZSwgdGhpcy5yb290Rm9sZGVySWQsIGZpbGVJbmZvLnJlbGF0aXZlRm9sZGVyKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMudXBsb2FkUXVldWUoZmlsdGVyZWRGaWxlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGxvYWRRdWV1ZShmaWxlczogRmlsZU1vZGVsW10pIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRGaWxlcyA9IGZpbGVzLmZpbHRlcih0aGlzLmlzRmlsZUFjY2VwdGFibGUuYmluZCh0aGlzKSkuZmlsdGVyKHRoaXMuaXNGaWxlU2l6ZUFjY2VwdGFibGUuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IFVwbG9hZEZpbGVzRXZlbnQoWy4uLmZpbHRlcmVkRmlsZXNdLCB0aGlzLnVwbG9hZFNlcnZpY2UsIHRoaXMuc3VjY2VzcywgdGhpcy5lcnJvcik7XG4gICAgICAgICAgICB0aGlzLmJlZ2luVXBsb2FkLmVtaXQoZXZlbnQpO1xuXG4gICAgICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5hZGRUb1F1ZXVlKC4uLmZpbHRlcmVkRmlsZXMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZXNJblRoZVF1ZXVlKHRoaXMuc3VjY2VzcywgdGhpcy5lcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUgaXMgYWxsb3dlZCBieSB0aGUgZXh0ZW5zaW9uIGZpbHRlcnNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIEZpbGVNb2RlbFxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiBmaWxlIGlzIGFjY2VwdGFibGUsIG90aGVyd2lzZSBgZmFsc2VgXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGlzRmlsZUFjY2VwdGFibGUoZmlsZTogRmlsZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmFjY2VwdGVkRmlsZXNUeXBlID09PSAnKicpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWxsb3dlZEV4dGVuc2lvbnMgPSB0aGlzLmFjY2VwdGVkRmlsZXNUeXBlLnNwbGl0KCcsJykubWFwKChleHQpID0+IGV4dC50cmltKCkucmVwbGFjZSgvXlxcLi8sICcnKSk7XG5cbiAgICAgICAgcmV0dXJuIGFsbG93ZWRFeHRlbnNpb25zLmluZGV4T2YoZmlsZS5leHRlbnNpb24pICE9PSAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIEZpbGVNb2RlbCBmcm9tIEZpbGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIGZpbGUgaW5zdGFuY2VcbiAgICAgKiBAcGFyYW0gcGFyZW50SWQgcGFyZW50IGlkXG4gICAgICogQHBhcmFtIHBhdGggdXBsb2FkIHBhdGhcbiAgICAgKiBAcGFyYW0gaWQgbW9kZWwgaWRcbiAgICAgKiBAcmV0dXJucyBmaWxlIG1vZGVsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUZpbGVNb2RlbChmaWxlOiBGaWxlLCBwYXJlbnRJZDogc3RyaW5nLCBwYXRoOiBzdHJpbmcsIGlkPzogc3RyaW5nKTogRmlsZU1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWxlTW9kZWwoXG4gICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbW1lbnQ6IHRoaXMuY29tbWVudCxcbiAgICAgICAgICAgICAgICBtYWpvclZlcnNpb246IHRoaXMubWFqb3JWZXJzaW9uLFxuICAgICAgICAgICAgICAgIG5ld1ZlcnNpb246IHRoaXMudmVyc2lvbmluZyxcbiAgICAgICAgICAgICAgICBwYXJlbnRJZCxcbiAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgIG5vZGVUeXBlOiB0aGlzLm5vZGVUeXBlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNGaWxlU2l6ZUFsbG93ZWQoZmlsZTogRmlsZU1vZGVsKSB7XG4gICAgICAgIGxldCBpc0ZpbGVTaXplQWxsb3dlZCA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLmlzTWF4RmlsZVNpemVEZWZpbmVkKCkpIHtcbiAgICAgICAgICAgIGlzRmlsZVNpemVBbGxvd2VkID0gdGhpcy5pc0ZpbGVTaXplQ29ycmVjdChmaWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc0ZpbGVTaXplQWxsb3dlZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNNYXhGaWxlU2l6ZURlZmluZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1heEZpbGVzU2l6ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMubWF4RmlsZXNTaXplICE9PSBudWxsO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpc0ZpbGVTaXplQ29ycmVjdChmaWxlOiBGaWxlTW9kZWwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4RmlsZXNTaXplID49IDAgJiYgZmlsZS5zaXplIDw9IHRoaXMubWF4RmlsZXNTaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhbiBhY2NlcHRhYmxlIHNpemVcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIEZpbGVNb2RlbFxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiBmaWxlIHNpemUgaXMgYWNjZXB0YWJsZSwgb3RoZXJ3aXNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBwcml2YXRlIGlzRmlsZVNpemVBY2NlcHRhYmxlKGZpbGU6IEZpbGVNb2RlbCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgYWNjZXB0YWJsZVNpemUgPSB0cnVlO1xuXG4gICAgICAgIGlmICghdGhpcy5pc0ZpbGVTaXplQWxsb3dlZChmaWxlKSkge1xuICAgICAgICAgICAgYWNjZXB0YWJsZVNpemUgPSBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQoJ0ZJTEVfVVBMT0FELk1FU1NBR0VTLkVYQ0VFRF9NQVhfRklMRV9TSVpFJywgeyBmaWxlTmFtZTogZmlsZS5uYW1lIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQobWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjZXB0YWJsZVNpemU7XG4gICAgfVxufVxuIl19
|
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
import { UserPreferencesService } from '@alfresco/adf-core';
|
|
18
|
-
import { ChangeDetectorRef, Component, DestroyRef, ElementRef, EventEmitter, HostBinding, inject, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
19
|
-
import { merge, Subject } from 'rxjs';
|
|
20
|
-
import { FileUploadingListComponent } from './file-uploading-list.component';
|
|
21
|
-
import { delay } from 'rxjs/operators';
|
|
22
|
-
import { UploadService } from '../../common/services/upload.service';
|
|
23
|
-
import { FileUploadStatus } from '../../common/models/file.model';
|
|
24
|
-
import { CommonModule } from '@angular/common';
|
|
25
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
26
|
-
import { TranslatePipe } from '@ngx-translate/core';
|
|
27
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
28
|
-
import { FileUploadingListRowComponent } from './file-uploading-list-row.component';
|
|
29
|
-
import { A11yModule } from '@angular/cdk/a11y';
|
|
30
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
31
|
-
import * as i0 from "@angular/core";
|
|
32
|
-
import * as i1 from "../../common/services/upload.service";
|
|
33
|
-
import * as i2 from "@alfresco/adf-core";
|
|
34
|
-
import * as i3 from "@angular/common";
|
|
35
|
-
import * as i4 from "@angular/material/button";
|
|
36
|
-
import * as i5 from "@angular/material/icon";
|
|
37
|
-
import * as i6 from "@angular/cdk/a11y";
|
|
38
|
-
export class FileUploadingDialogComponent {
|
|
39
|
-
get isPositionRight() {
|
|
40
|
-
return (this.direction === 'ltr' && this.position === 'right') || (this.direction === 'rtl' && this.position === 'left') || null;
|
|
41
|
-
}
|
|
42
|
-
get isPositionLeft() {
|
|
43
|
-
return (this.direction === 'ltr' && this.position === 'left') || (this.direction === 'rtl' && this.position === 'right') || null;
|
|
44
|
-
}
|
|
45
|
-
constructor(uploadService, changeDetector, userPreferencesService, elementRef) {
|
|
46
|
-
this.uploadService = uploadService;
|
|
47
|
-
this.changeDetector = changeDetector;
|
|
48
|
-
this.userPreferencesService = userPreferencesService;
|
|
49
|
-
this.elementRef = elementRef;
|
|
50
|
-
/** Dialog direction. Can be 'ltr' or 'rtl. */
|
|
51
|
-
this.direction = 'ltr';
|
|
52
|
-
/** Dialog position. Can be 'left' or 'right'. */
|
|
53
|
-
this.position = 'right';
|
|
54
|
-
/** Makes the dialog always visible even when there are no uploads. */
|
|
55
|
-
this.alwaysVisible = false;
|
|
56
|
-
/** Emitted when a file in the list has an error. */
|
|
57
|
-
this.error = new EventEmitter();
|
|
58
|
-
this.filesUploadingList = [];
|
|
59
|
-
this.isDialogActive = false;
|
|
60
|
-
this.totalCompleted = 0;
|
|
61
|
-
this.totalErrors = 0;
|
|
62
|
-
this.isDialogMinimized = false;
|
|
63
|
-
this.isConfirmation = false;
|
|
64
|
-
this.dialogActive = new Subject();
|
|
65
|
-
this.destroyRef = inject(DestroyRef);
|
|
66
|
-
}
|
|
67
|
-
ngOnInit() {
|
|
68
|
-
this.dialogActive.pipe(delay(100), takeUntilDestroyed(this.destroyRef)).subscribe(() => {
|
|
69
|
-
const element = this.elementRef.nativeElement.querySelector('#upload-dialog');
|
|
70
|
-
if (element) {
|
|
71
|
-
element.focus();
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
this.uploadService.queueChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((fileList) => {
|
|
75
|
-
this.filesUploadingList = fileList;
|
|
76
|
-
if (this.filesUploadingList.length && !this.isDialogActive) {
|
|
77
|
-
this.isDialogActive = true;
|
|
78
|
-
this.dialogActive.next(undefined);
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
this.dialogActive.next(undefined);
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
merge(this.uploadService.fileUploadComplete, this.uploadService.fileUploadDeleted)
|
|
85
|
-
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
86
|
-
.subscribe((event) => {
|
|
87
|
-
this.totalCompleted = event.totalComplete;
|
|
88
|
-
this.changeDetector.detectChanges();
|
|
89
|
-
});
|
|
90
|
-
this.uploadService.fileUploadError.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {
|
|
91
|
-
this.totalErrors = event.totalError;
|
|
92
|
-
this.changeDetector.detectChanges();
|
|
93
|
-
});
|
|
94
|
-
this.uploadService.fileUpload.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
|
|
95
|
-
this.changeDetector.detectChanges();
|
|
96
|
-
});
|
|
97
|
-
this.uploadService.fileDeleted.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((objId) => {
|
|
98
|
-
if (this.filesUploadingList) {
|
|
99
|
-
const uploadedFile = this.filesUploadingList.find((file) => (file.data ? file.data.entry.id === objId : false));
|
|
100
|
-
if (uploadedFile) {
|
|
101
|
-
uploadedFile.status = FileUploadStatus.Cancelled;
|
|
102
|
-
this.changeDetector.detectChanges();
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
this.userPreferencesService
|
|
107
|
-
.select('textOrientation')
|
|
108
|
-
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
109
|
-
.subscribe((textOrientation) => {
|
|
110
|
-
this.direction = textOrientation;
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Toggle confirmation message.
|
|
115
|
-
*/
|
|
116
|
-
toggleConfirmation() {
|
|
117
|
-
this.isConfirmation = !this.isConfirmation;
|
|
118
|
-
if (!this.isConfirmation) {
|
|
119
|
-
this.dialogActive.next(undefined);
|
|
120
|
-
}
|
|
121
|
-
if (this.isDialogMinimized) {
|
|
122
|
-
this.isDialogMinimized = false;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Cancel uploads and hide confirmation
|
|
127
|
-
*/
|
|
128
|
-
cancelAllUploads() {
|
|
129
|
-
this.toggleConfirmation();
|
|
130
|
-
this.dialogActive.next(undefined);
|
|
131
|
-
this.uploadList.cancelAllFiles();
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Toggle dialog minimized state.
|
|
135
|
-
*/
|
|
136
|
-
toggleMinimized() {
|
|
137
|
-
this.isDialogMinimized = !this.isDialogMinimized;
|
|
138
|
-
this.changeDetector.detectChanges();
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Dismiss dialog
|
|
142
|
-
*/
|
|
143
|
-
close() {
|
|
144
|
-
this.isConfirmation = false;
|
|
145
|
-
this.totalCompleted = 0;
|
|
146
|
-
this.totalErrors = 0;
|
|
147
|
-
this.filesUploadingList = [];
|
|
148
|
-
this.isDialogActive = false;
|
|
149
|
-
this.isDialogMinimized = false;
|
|
150
|
-
this.uploadService.clearQueue();
|
|
151
|
-
this.changeDetector.detectChanges();
|
|
152
|
-
}
|
|
153
|
-
ngOnDestroy() {
|
|
154
|
-
this.uploadService.clearQueue();
|
|
155
|
-
}
|
|
156
|
-
canShowDialog() {
|
|
157
|
-
return this.isDialogActive || this.alwaysVisible;
|
|
158
|
-
}
|
|
159
|
-
canShowCancelAll() {
|
|
160
|
-
return this.filesUploadingList?.length && this.hasUploadInProgress();
|
|
161
|
-
}
|
|
162
|
-
canCloseDialog() {
|
|
163
|
-
return !this.hasUploadInProgress() && !this.alwaysVisible;
|
|
164
|
-
}
|
|
165
|
-
hasUploadInProgress() {
|
|
166
|
-
return !this.uploadList?.isUploadCompleted() && !this.uploadList?.isUploadCancelled();
|
|
167
|
-
}
|
|
168
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileUploadingDialogComponent, deps: [{ token: i1.UploadService }, { token: i0.ChangeDetectorRef }, { token: i2.UserPreferencesService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
169
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FileUploadingDialogComponent, isStandalone: true, selector: "adf-file-uploading-dialog", inputs: { position: "position", alwaysVisible: "alwaysVisible" }, outputs: { error: "error" }, host: { properties: { "attr.adfUploadDialogRight": "this.isPositionRight", "attr.adfUploadDialogLeft": "this.isPositionLeft" } }, viewQueries: [{ propertyName: "uploadList", first: true, predicate: ["uploadList"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"canShowDialog()\"\n role=\"dialog\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.DIALOG'| translate\"\n tabindex=\"0\"\n class=\"adf-upload-dialog\"\n id=\"upload-dialog\"\n [class.adf-upload-dialog--minimized]=\"isDialogMinimized\">\n <header class=\"adf-upload-dialog__header\">\n <button\n mat-icon-button\n class=\"adf-upload-dialog__header-button\"\n [attr.data-automation-id]=\"'adf-upload-dialog__toggle-minimize'\"\n [attr.aria-label]=\"(isDialogMinimized ?\n 'ADF_FILE_UPLOAD.ARIA-LABEL.DIALOG_MAXIMIZE':\n 'ADF_FILE_UPLOAD.ARIA-LABEL.DIALOG_MINIMIZE') | translate\"\n [disabled]=\"isConfirmation\"\n [attr.aria-expanded]=\"!isDialogMinimized\"\n (click)=\"toggleMinimized()\">\n <mat-icon\n class=\"adf-upload-dialog__header-button-icon\">\n {{ isDialogMinimized ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }}\n </mat-icon>\n </button>\n\n <span\n class=\"adf-upload-dialog__title\"\n *ngIf=\"!uploadList.isUploadCancelled()\">\n {{ 'FILE_UPLOAD.MESSAGES.UPLOAD_PROGRESS'\n | translate: {\n completed: totalCompleted,\n total: filesUploadingList.length\n }\n }}\n </span>\n\n <span\n class=\"adf-upload-dialog__title\"\n *ngIf=\"uploadList.isUploadCancelled()\">\n {{ 'FILE_UPLOAD.MESSAGES.UPLOAD_CANCELED' | translate }}\n </span>\n </header>\n\n <section class=\"adf-upload-dialog__info\"\n *ngIf=\"totalErrors\">\n {{\n (totalErrors > 1\n ? 'FILE_UPLOAD.MESSAGES.UPLOAD_ERRORS'\n : 'FILE_UPLOAD.MESSAGES.UPLOAD_ERROR')\n | translate: { total: totalErrors }\n }}\n </section>\n\n <section class=\"adf-upload-dialog__content\"\n [class.adf-upload-dialog--padding]=\"isConfirmation\">\n <adf-file-uploading-list\n class=\"adf-file-uploading-list\"\n [class.adf-upload-dialog--hide]=\"isConfirmation\"\n #uploadList\n [files]=\"filesUploadingList\">\n <ng-template let-file=\"$implicit\">\n <adf-file-uploading-list-row\n [file]=\"file\"\n (cancel)=\"uploadList.cancelFile(file)\" />\n </ng-template>\n </adf-file-uploading-list>\n\n <div\n aria-live=\"polite\"\n aria-labelledby=\"confirmationTitle\"\n aria-describedby=\"confirmationDescription\"\n class=\"adf-upload-dialog__confirmation\"\n [class.adf-upload-dialog--hide]=\"!isConfirmation\">\n <p role=\"heading\" aria-level=\"2\" id=\"confirmationTitle\" class=\"adf-upload-dialog__confirmation--title\">\n {{ 'ADF_FILE_UPLOAD.CONFIRMATION.MESSAGE.TITLE' | translate }}\n </p>\n <p id=\"confirmationDescription\" class=\"adf-upload-dialog__confirmation--text\">\n {{ 'ADF_FILE_UPLOAD.CONFIRMATION.MESSAGE.TEXT' | translate }}\n </p>\n </div>\n </section>\n\n <footer class=\"adf-upload-dialog__actions\" *ngIf=\"!isConfirmation\">\n <button\n id=\"adf-upload-dialog-cancel-all\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.STOP_ALL' | translate\"\n color=\"primary\"\n mat-button\n *ngIf=\"canShowCancelAll()\"\n (click)=\"toggleConfirmation()\"\n >{{ 'ADF_FILE_UPLOAD.BUTTON.STOP_ALL' | translate }}</button>\n\n <button\n id=\"adf-upload-dialog-close\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.DIALOG_CLOSE' | translate\"\n *ngIf=\"canCloseDialog()\"\n mat-button\n color=\"primary\"\n (click)=\"close()\"\n >{{ 'ADF_FILE_UPLOAD.BUTTON.CLOSE' | translate }}</button>\n </footer>\n\n <footer class=\"adf-upload-dialog__actions\"\n *ngIf=\"isConfirmation\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <button\n id=\"adf-upload-dialog-cancel\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.CONFIRMATION.CANCEL' | translate\"\n mat-button\n (click)=\"cancelAllUploads()\"\n >{{ 'ADF_FILE_UPLOAD.CONFIRMATION.BUTTON.CANCEL' | translate }}</button>\n\n <button\n id=\"adf-upload-dialog-confirm\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.CONFIRMATION.CONTINUE' | translate\"\n mat-button\n color=\"primary\"\n (click)=\"toggleConfirmation()\"\n >{{ 'ADF_FILE_UPLOAD.CONFIRMATION.BUTTON.CONTINUE' | translate }}</button>\n </footer>\n</div>\n", styles: [".adf-upload-dialog{background:var(--adf-theme-background-dialog-color);color:var(--adf-theme-foreground-text-color-054);position:fixed;bottom:20px;width:40%;box-shadow:1px 5px 15px #888;z-index:999}.adf-upload-dialog--padding{padding:1em}.adf-upload-dialog--hide.adf-upload-dialog__confirmation,.adf-upload-dialog--hide.adf-file-uploading-list{display:none}.adf-upload-dialog--minimized{width:20%}.adf-upload-dialog--minimized .adf-upload-dialog__content{display:none}.adf-upload-dialog .adf-upload-dialog__header{padding:1em;display:flex;align-items:center}.adf-upload-dialog .adf-upload-dialog__header .adf-upload-dialog__header-button:is(button){min-width:0;height:24px;width:24px;padding:0;line-height:0;color:var(--adf-theme-foreground-text-color-054)}.adf-upload-dialog__title{margin-left:.5em;flex:1 1 auto}.adf-upload-dialog__info{padding:0 1em 1em}.adf-upload-dialog__content{overflow:auto;max-height:194px;border-top:1px solid var(--adf-theme-foreground-text-color-014);border-bottom:1px solid var(--adf-theme-foreground-text-color-014)}.adf-upload-dialog__confirmation{padding:0 .5em}.adf-upload-dialog__confirmation--title{font-size:var(--theme-subheading-2-font-size);line-height:1.5;letter-spacing:-.4px;color:var(--adf-theme-foreground-text-color-087)}.adf-upload-dialog__confirmation--text{margin-bottom:0}.adf-upload-dialog__actions{display:flex;justify-content:flex-end;padding:1em}.adf-upload-dialog__actions>button{width:auto;min-width:40px;text-transform:uppercase;padding:0 16px}[adfUploadDialogLeft] .adf-upload-dialog{left:25px}[adfUploadDialogRight] .adf-upload-dialog{right:25px}@media screen and (width >= 380px) and (width <= 768px){.adf-upload-dialog{width:60%}.adf-file-uploading-row .adf-file-uploading-row__group{min-width:0}}@media screen and (width <= 380px){.adf-upload-dialog{width:85%}.adf-file-uploading-row .adf-file-uploading-row__group{min-width:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: FileUploadingListComponent, selector: "adf-file-uploading-list", inputs: ["files"], outputs: ["error"] }, { kind: "component", type: FileUploadingListRowComponent, selector: "adf-file-uploading-list-row", inputs: ["file"], outputs: ["cancel"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i6.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
170
|
-
}
|
|
171
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileUploadingDialogComponent, decorators: [{
|
|
172
|
-
type: Component,
|
|
173
|
-
args: [{ selector: 'adf-file-uploading-dialog', standalone: true, imports: [CommonModule, MatButtonModule, TranslatePipe, MatIconModule, FileUploadingListComponent, FileUploadingListRowComponent, A11yModule], encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"canShowDialog()\"\n role=\"dialog\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.DIALOG'| translate\"\n tabindex=\"0\"\n class=\"adf-upload-dialog\"\n id=\"upload-dialog\"\n [class.adf-upload-dialog--minimized]=\"isDialogMinimized\">\n <header class=\"adf-upload-dialog__header\">\n <button\n mat-icon-button\n class=\"adf-upload-dialog__header-button\"\n [attr.data-automation-id]=\"'adf-upload-dialog__toggle-minimize'\"\n [attr.aria-label]=\"(isDialogMinimized ?\n 'ADF_FILE_UPLOAD.ARIA-LABEL.DIALOG_MAXIMIZE':\n 'ADF_FILE_UPLOAD.ARIA-LABEL.DIALOG_MINIMIZE') | translate\"\n [disabled]=\"isConfirmation\"\n [attr.aria-expanded]=\"!isDialogMinimized\"\n (click)=\"toggleMinimized()\">\n <mat-icon\n class=\"adf-upload-dialog__header-button-icon\">\n {{ isDialogMinimized ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }}\n </mat-icon>\n </button>\n\n <span\n class=\"adf-upload-dialog__title\"\n *ngIf=\"!uploadList.isUploadCancelled()\">\n {{ 'FILE_UPLOAD.MESSAGES.UPLOAD_PROGRESS'\n | translate: {\n completed: totalCompleted,\n total: filesUploadingList.length\n }\n }}\n </span>\n\n <span\n class=\"adf-upload-dialog__title\"\n *ngIf=\"uploadList.isUploadCancelled()\">\n {{ 'FILE_UPLOAD.MESSAGES.UPLOAD_CANCELED' | translate }}\n </span>\n </header>\n\n <section class=\"adf-upload-dialog__info\"\n *ngIf=\"totalErrors\">\n {{\n (totalErrors > 1\n ? 'FILE_UPLOAD.MESSAGES.UPLOAD_ERRORS'\n : 'FILE_UPLOAD.MESSAGES.UPLOAD_ERROR')\n | translate: { total: totalErrors }\n }}\n </section>\n\n <section class=\"adf-upload-dialog__content\"\n [class.adf-upload-dialog--padding]=\"isConfirmation\">\n <adf-file-uploading-list\n class=\"adf-file-uploading-list\"\n [class.adf-upload-dialog--hide]=\"isConfirmation\"\n #uploadList\n [files]=\"filesUploadingList\">\n <ng-template let-file=\"$implicit\">\n <adf-file-uploading-list-row\n [file]=\"file\"\n (cancel)=\"uploadList.cancelFile(file)\" />\n </ng-template>\n </adf-file-uploading-list>\n\n <div\n aria-live=\"polite\"\n aria-labelledby=\"confirmationTitle\"\n aria-describedby=\"confirmationDescription\"\n class=\"adf-upload-dialog__confirmation\"\n [class.adf-upload-dialog--hide]=\"!isConfirmation\">\n <p role=\"heading\" aria-level=\"2\" id=\"confirmationTitle\" class=\"adf-upload-dialog__confirmation--title\">\n {{ 'ADF_FILE_UPLOAD.CONFIRMATION.MESSAGE.TITLE' | translate }}\n </p>\n <p id=\"confirmationDescription\" class=\"adf-upload-dialog__confirmation--text\">\n {{ 'ADF_FILE_UPLOAD.CONFIRMATION.MESSAGE.TEXT' | translate }}\n </p>\n </div>\n </section>\n\n <footer class=\"adf-upload-dialog__actions\" *ngIf=\"!isConfirmation\">\n <button\n id=\"adf-upload-dialog-cancel-all\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.STOP_ALL' | translate\"\n color=\"primary\"\n mat-button\n *ngIf=\"canShowCancelAll()\"\n (click)=\"toggleConfirmation()\"\n >{{ 'ADF_FILE_UPLOAD.BUTTON.STOP_ALL' | translate }}</button>\n\n <button\n id=\"adf-upload-dialog-close\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.DIALOG_CLOSE' | translate\"\n *ngIf=\"canCloseDialog()\"\n mat-button\n color=\"primary\"\n (click)=\"close()\"\n >{{ 'ADF_FILE_UPLOAD.BUTTON.CLOSE' | translate }}</button>\n </footer>\n\n <footer class=\"adf-upload-dialog__actions\"\n *ngIf=\"isConfirmation\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <button\n id=\"adf-upload-dialog-cancel\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.CONFIRMATION.CANCEL' | translate\"\n mat-button\n (click)=\"cancelAllUploads()\"\n >{{ 'ADF_FILE_UPLOAD.CONFIRMATION.BUTTON.CANCEL' | translate }}</button>\n\n <button\n id=\"adf-upload-dialog-confirm\"\n [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.CONFIRMATION.CONTINUE' | translate\"\n mat-button\n color=\"primary\"\n (click)=\"toggleConfirmation()\"\n >{{ 'ADF_FILE_UPLOAD.CONFIRMATION.BUTTON.CONTINUE' | translate }}</button>\n </footer>\n</div>\n", styles: [".adf-upload-dialog{background:var(--adf-theme-background-dialog-color);color:var(--adf-theme-foreground-text-color-054);position:fixed;bottom:20px;width:40%;box-shadow:1px 5px 15px #888;z-index:999}.adf-upload-dialog--padding{padding:1em}.adf-upload-dialog--hide.adf-upload-dialog__confirmation,.adf-upload-dialog--hide.adf-file-uploading-list{display:none}.adf-upload-dialog--minimized{width:20%}.adf-upload-dialog--minimized .adf-upload-dialog__content{display:none}.adf-upload-dialog .adf-upload-dialog__header{padding:1em;display:flex;align-items:center}.adf-upload-dialog .adf-upload-dialog__header .adf-upload-dialog__header-button:is(button){min-width:0;height:24px;width:24px;padding:0;line-height:0;color:var(--adf-theme-foreground-text-color-054)}.adf-upload-dialog__title{margin-left:.5em;flex:1 1 auto}.adf-upload-dialog__info{padding:0 1em 1em}.adf-upload-dialog__content{overflow:auto;max-height:194px;border-top:1px solid var(--adf-theme-foreground-text-color-014);border-bottom:1px solid var(--adf-theme-foreground-text-color-014)}.adf-upload-dialog__confirmation{padding:0 .5em}.adf-upload-dialog__confirmation--title{font-size:var(--theme-subheading-2-font-size);line-height:1.5;letter-spacing:-.4px;color:var(--adf-theme-foreground-text-color-087)}.adf-upload-dialog__confirmation--text{margin-bottom:0}.adf-upload-dialog__actions{display:flex;justify-content:flex-end;padding:1em}.adf-upload-dialog__actions>button{width:auto;min-width:40px;text-transform:uppercase;padding:0 16px}[adfUploadDialogLeft] .adf-upload-dialog{left:25px}[adfUploadDialogRight] .adf-upload-dialog{right:25px}@media screen and (width >= 380px) and (width <= 768px){.adf-upload-dialog{width:60%}.adf-file-uploading-row .adf-file-uploading-row__group{min-width:0}}@media screen and (width <= 380px){.adf-upload-dialog{width:85%}.adf-file-uploading-row .adf-file-uploading-row__group{min-width:0}}\n"] }]
|
|
174
|
-
}], ctorParameters: () => [{ type: i1.UploadService }, { type: i0.ChangeDetectorRef }, { type: i2.UserPreferencesService }, { type: i0.ElementRef }], propDecorators: { uploadList: [{
|
|
175
|
-
type: ViewChild,
|
|
176
|
-
args: ['uploadList']
|
|
177
|
-
}], position: [{
|
|
178
|
-
type: Input
|
|
179
|
-
}], alwaysVisible: [{
|
|
180
|
-
type: Input
|
|
181
|
-
}], error: [{
|
|
182
|
-
type: Output
|
|
183
|
-
}], isPositionRight: [{
|
|
184
|
-
type: HostBinding,
|
|
185
|
-
args: ['attr.adfUploadDialogRight']
|
|
186
|
-
}], isPositionLeft: [{
|
|
187
|
-
type: HostBinding,
|
|
188
|
-
args: ['attr.adfUploadDialogLeft']
|
|
189
|
-
}] } });
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWRpbmctZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvdXBsb2FkL2NvbXBvbmVudHMvZmlsZS11cGxvYWRpbmctZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvdXBsb2FkL2NvbXBvbmVudHMvZmlsZS11cGxvYWRpbmctZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVELE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDckUsT0FBTyxFQUFhLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FB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LENBQUMsVUFBVSxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLGlCQUFpQixFQUFFLENBQUM7SUFDMUYsQ0FBQzsrR0FuS1EsNEJBQTRCO21HQUE1Qiw0QkFBNEIsZ2FDeER6Qyw4MUpBdUhBLDY1RERwRWMsWUFBWSxrSUFBRSxlQUFlLG9VQUFFLGFBQWEsaURBQUUsYUFBYSxvTEFBRSwwQkFBMEIsMkdBQUUsNkJBQTZCLDhHQUFFLFVBQVU7OzRGQUtuSSw0QkFBNEI7a0JBUnhDLFNBQVM7K0JBQ0ksMkJBQTJCLGNBQ3pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSwwQkFBMEIsRUFBRSw2QkFBNkIsRUFBRSxVQUFVLENBQUMsaUJBRzlILGlCQUFpQixDQUFDLElBQUk7Z0xBT3JDLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxZQUFZO2dCQUt2QixRQUFRO3NCQURQLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLEtBQUs7c0JBREosTUFBTTtnQkFJSSxlQUFlO3NCQUR6QixXQUFXO3VCQUFDLDJCQUEyQjtnQkFLN0IsY0FBYztzQkFEeEIsV0FBVzt1QkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWVyZ2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZpbGVVcGxvYWRpbmdMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9maWxlLXVwbG9hZGluZy1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24vc2VydmljZXMvdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsZU1vZGVsLCBGaWxlVXBsb2FkU3RhdHVzIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9maWxlLm1vZGVsJztcbmltcG9ydCB7IEZpbGVVcGxvYWRDb21wbGV0ZUV2ZW50LCBGaWxlVXBsb2FkRGVsZXRlRXZlbnQgfSBmcm9tICcuLi8uLi9jb21tb24vZXZlbnRzL2ZpbGUuZXZlbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBGaWxlVXBsb2FkaW5nTGlzdFJvd0NvbXBvbmVudCB9IGZyb20gJy4vZmlsZS11cGxvYWRpbmctbGlzdC1yb3cuY29tcG9uZW50JztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWZpbGUtdXBsb2FkaW5nLWRpYWxvZycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIFRyYW5zbGF0ZVBpcGUsIE1hdEljb25Nb2R1bGUsIEZpbGVVcGxvYWRpbmdMaXN0Q29tcG9uZW50LCBGaWxlVXBsb2FkaW5nTGlzdFJvd0NvbXBvbmVudCwgQTExeU1vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdXBsb2FkaW5nLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsZS11cGxvYWRpbmctZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkaW5nRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBEaWFsb2cgZGlyZWN0aW9uLiBDYW4gYmUgJ2x0cicgb3IgJ3J0bC4gKi9cbiAgICBwcml2YXRlIGRpcmVjdGlvbjogRGlyZWN0aW9uID0gJ2x0cic7XG5cbiAgICBAVmlld0NoaWxkKCd1cGxvYWRMaXN0JylcbiAgICB1cGxvYWRMaXN0OiBGaWxlVXBsb2FkaW5nTGlzdENvbXBvbmVudDtcblxuICAgIC8qKiBEaWFsb2cgcG9zaXRpb24uIENhbiBiZSAnbGVmdCcgb3IgJ3JpZ2h0Jy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHBvc2l0aW9uOiBzdHJpbmcgPSAncmlnaHQnO1xuXG4gICAgLyoqIE1ha2VzIHRoZSBkaWFsb2cgYWx3YXlzIHZpc2libGUgZXZlbiB3aGVuIHRoZXJlIGFyZSBubyB1cGxvYWRzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWx3YXlzVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhIGZpbGUgaW4gdGhlIGxpc3QgaGFzIGFuIGVycm9yLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGVycm9yOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hZGZVcGxvYWREaWFsb2dSaWdodCcpXG4gICAgcHVibGljIGdldCBpc1Bvc2l0aW9uUmlnaHQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAodGhpcy5kaXJlY3Rpb24gPT09ICdsdHInICYmIHRoaXMucG9zaXRpb24gPT09ICdyaWdodCcpIHx8ICh0aGlzLmRpcmVjdGlvbiA9PT0gJ3J0bCcgJiYgdGhpcy5wb3NpdGlvbiA9PT0gJ2xlZnQnKSB8fCBudWxsO1xuICAgIH1cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYWRmVXBsb2FkRGlhbG9nTGVmdCcpXG4gICAgcHVibGljIGdldCBpc1Bvc2l0aW9uTGVmdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmRpcmVjdGlvbiA9PT0gJ2x0cicgJiYgdGhpcy5wb3NpdGlvbiA9PT0gJ2xlZnQnKSB8fCAodGhpcy5kaXJlY3Rpb24gPT09ICdydGwnICYmIHRoaXMucG9zaXRpb24gPT09ICdyaWdodCcpIHx8IG51bGw7XG4gICAgfVxuXG4gICAgZmlsZXNVcGxvYWRpbmdMaXN0OiBGaWxlTW9kZWxbXSA9IFtdO1xuICAgIGlzRGlhbG9nQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG4gICAgdG90YWxDb21wbGV0ZWQ6IG51bWJlciA9IDA7XG4gICAgdG90YWxFcnJvcnM6IG51bWJlciA9IDA7XG4gICAgaXNEaWFsb2dNaW5pbWl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBpc0NvbmZpcm1hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBkaWFsb2dBY3RpdmUgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdXBsb2FkU2VydmljZTogVXBsb2FkU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgdXNlclByZWZlcmVuY2VzU2VydmljZTogVXNlclByZWZlcmVuY2VzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nQWN0aXZlLnBpcGUoZGVsYXkoMTAwKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50OiBhbnkgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjdXBsb2FkLWRpYWxvZycpO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5xdWV1ZUNoYW5nZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChmaWxlTGlzdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5maWxlc1VwbG9hZGluZ0xpc3QgPSBmaWxlTGlzdDtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZmlsZXNVcGxvYWRpbmdMaXN0Lmxlbmd0aCAmJiAhdGhpcy5pc0RpYWxvZ0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNEaWFsb2dBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nQWN0aXZlLm5leHQodW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dBY3RpdmUubmV4dCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBtZXJnZSh0aGlzLnVwbG9hZFNlcnZpY2UuZmlsZVVwbG9hZENvbXBsZXRlLCB0aGlzLnVwbG9hZFNlcnZpY2UuZmlsZVVwbG9hZERlbGV0ZWQpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBGaWxlVXBsb2FkQ29tcGxldGVFdmVudCB8IEZpbGVVcGxvYWREZWxldGVFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWxDb21wbGV0ZWQgPSBldmVudC50b3RhbENvbXBsZXRlO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmZpbGVVcGxvYWRFcnJvci5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvdGFsRXJyb3JzID0gZXZlbnQudG90YWxFcnJvcjtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZmlsZVVwbG9hZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5maWxlRGVsZXRlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKG9iaklkKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5maWxlc1VwbG9hZGluZ0xpc3QpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB1cGxvYWRlZEZpbGUgPSB0aGlzLmZpbGVzVXBsb2FkaW5nTGlzdC5maW5kKChmaWxlKSA9PiAoZmlsZS5kYXRhID8gZmlsZS5kYXRhLmVudHJ5LmlkID09PSBvYmpJZCA6IGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgaWYgKHVwbG9hZGVkRmlsZSkge1xuICAgICAgICAgICAgICAgICAgICB1cGxvYWRlZEZpbGUuc3RhdHVzID0gRmlsZVVwbG9hZFN0YXR1cy5DYW5jZWxsZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlXG4gICAgICAgICAgICAuc2VsZWN0KCd0ZXh0T3JpZW50YXRpb24nKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh0ZXh0T3JpZW50YXRpb246IERpcmVjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlyZWN0aW9uID0gdGV4dE9yaWVudGF0aW9uO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlIGNvbmZpcm1hdGlvbiBtZXNzYWdlLlxuICAgICAqL1xuICAgIHRvZ2dsZUNvbmZpcm1hdGlvbigpIHtcbiAgICAgICAgdGhpcy5pc0NvbmZpcm1hdGlvbiA9ICF0aGlzLmlzQ29uZmlybWF0aW9uO1xuXG4gICAgICAgIGlmICghdGhpcy5pc0NvbmZpcm1hdGlvbikge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dBY3RpdmUubmV4dCh1bmRlZmluZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEaWFsb2dNaW5pbWl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNEaWFsb2dNaW5pbWl6ZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbmNlbCB1cGxvYWRzIGFuZCBoaWRlIGNvbmZpcm1hdGlvblxuICAgICAqL1xuICAgIGNhbmNlbEFsbFVwbG9hZHMoKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlQ29uZmlybWF0aW9uKCk7XG4gICAgICAgIHRoaXMuZGlhbG9nQWN0aXZlLm5leHQodW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy51cGxvYWRMaXN0LmNhbmNlbEFsbEZpbGVzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlIGRpYWxvZyBtaW5pbWl6ZWQgc3RhdGUuXG4gICAgICovXG4gICAgdG9nZ2xlTWluaW1pemVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRGlhbG9nTWluaW1pemVkID0gIXRoaXMuaXNEaWFsb2dNaW5pbWl6ZWQ7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc21pc3MgZGlhbG9nXG4gICAgICovXG4gICAgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNDb25maXJtYXRpb24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy50b3RhbENvbXBsZXRlZCA9IDA7XG4gICAgICAgIHRoaXMudG90YWxFcnJvcnMgPSAwO1xuICAgICAgICB0aGlzLmZpbGVzVXBsb2FkaW5nTGlzdCA9IFtdO1xuICAgICAgICB0aGlzLmlzRGlhbG9nQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNEaWFsb2dNaW5pbWl6ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNsZWFyUXVldWUoKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jbGVhclF1ZXVlKCk7XG4gICAgfVxuXG4gICAgY2FuU2hvd0RpYWxvZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNEaWFsb2dBY3RpdmUgfHwgdGhpcy5hbHdheXNWaXNpYmxlO1xuICAgIH1cblxuICAgIGNhblNob3dDYW5jZWxBbGwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbGVzVXBsb2FkaW5nTGlzdD8ubGVuZ3RoICYmIHRoaXMuaGFzVXBsb2FkSW5Qcm9ncmVzcygpO1xuICAgIH1cblxuICAgIGNhbkNsb3NlRGlhbG9nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaGFzVXBsb2FkSW5Qcm9ncmVzcygpICYmICF0aGlzLmFsd2F5c1Zpc2libGU7XG4gICAgfVxuXG4gICAgaGFzVXBsb2FkSW5Qcm9ncmVzcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnVwbG9hZExpc3Q/LmlzVXBsb2FkQ29tcGxldGVkKCkgJiYgIXRoaXMudXBsb2FkTGlzdD8uaXNVcGxvYWRDYW5jZWxsZWQoKTtcbiAgICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiY2FuU2hvd0RpYWxvZygpXCJcbiAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9GSUxFX1VQTE9BRC5BUklBLUxBQkVMLkRJQUxPRyd8IHRyYW5zbGF0ZVwiXG4gICAgIHRhYmluZGV4PVwiMFwiXG4gICAgIGNsYXNzPVwiYWRmLXVwbG9hZC1kaWFsb2dcIlxuICAgICBpZD1cInVwbG9hZC1kaWFsb2dcIlxuICAgICBbY2xhc3MuYWRmLXVwbG9hZC1kaWFsb2ctLW1pbmltaXplZF09XCJpc0RpYWxvZ01pbmltaXplZFwiPlxuICAgIDxoZWFkZXIgY2xhc3M9XCJhZGYtdXBsb2FkLWRpYWxvZ19faGVhZGVyXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtdXBsb2FkLWRpYWxvZ19faGVhZGVyLWJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2FkZi11cGxvYWQtZGlhbG9nX190b2dnbGUtbWluaW1pemUnXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiKGlzRGlhbG9nTWluaW1pemVkID9cbiAgICAgICAgICAgICAgICAnQURGX0ZJTEVfVVBMT0FELkFSSUEtTEFCRUwuRElBTE9HX01BWElNSVpFJzpcbiAgICAgICAgICAgICAgICAnQURGX0ZJTEVfVVBMT0FELkFSSUEtTEFCRUwuRElBTE9HX01JTklNSVpFJykgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzQ29uZmlybWF0aW9uXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiIWlzRGlhbG9nTWluaW1pemVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVNaW5pbWl6ZWQoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtdXBsb2FkLWRpYWxvZ19faGVhZGVyLWJ1dHRvbi1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGlzRGlhbG9nTWluaW1pemVkID8gJ2tleWJvYXJkX2Fycm93X3VwJyA6ICdrZXlib2FyZF9hcnJvd19kb3duJyB9fVxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLXVwbG9hZC1kaWFsb2dfX3RpdGxlXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIXVwbG9hZExpc3QuaXNVcGxvYWRDYW5jZWxsZWQoKVwiPlxuICAgICAgICAgICAge3sgJ0ZJTEVfVVBMT0FELk1FU1NBR0VTLlVQTE9BRF9QUk9HUkVTUydcbiAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZToge1xuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQ6IHRvdGFsQ29tcGxldGVkLFxuICAgICAgICAgICAgICAgICAgICB0b3RhbDogZmlsZXNVcGxvYWRpbmdMaXN0Lmxlbmd0aFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtdXBsb2FkLWRpYWxvZ19fdGl0bGVcIlxuICAgICAgICAgICAgKm5nSWY9XCJ1cGxvYWRMaXN0LmlzVXBsb2FkQ2FuY2VsbGVkKClcIj5cbiAgICAgICAgICAgIHt7ICdGSUxFX1VQTE9BRC5NRVNTQUdFUy5VUExPQURfQ0FOQ0VMRUQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2hlYWRlcj5cblxuICAgIDxzZWN0aW9uIGNsYXNzPVwiYWRmLXVwbG9hZC1kaWFsb2dfX2luZm9cIlxuICAgICAgICAqbmdJZj1cInRvdGFsRXJyb3JzXCI+XG4gICAgICAgIHt7XG4gICAgICAgICAgICAodG90YWxFcnJvcnMgPiAxXG4gICAgICAgICAgICAgICAgID8gJ0ZJTEVfVVBMT0FELk1FU1NBR0VTLlVQTE9BRF9FUlJPUlMnXG4gICAgICAgICAgICAgICAgIDogJ0ZJTEVfVVBMT0FELk1FU1NBR0VTLlVQTE9BRF9FUlJPUicpXG4gICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IHRvdGFsOiB0b3RhbEVycm9ycyB9XG4gICAgICAgIH19XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJhZGYtdXBsb2FkLWRpYWxvZ19fY29udGVudFwiXG4gICAgICAgIFtjbGFzcy5hZGYtdXBsb2FkLWRpYWxvZy0tcGFkZGluZ109XCJpc0NvbmZpcm1hdGlvblwiPlxuICAgICAgICA8YWRmLWZpbGUtdXBsb2FkaW5nLWxpc3RcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLWZpbGUtdXBsb2FkaW5nLWxpc3RcIlxuICAgICAgICAgICAgW2NsYXNzLmFkZi11cGxvYWQtZGlhbG9nLS1oaWRlXT1cImlzQ29uZmlybWF0aW9uXCJcbiAgICAgICAgICAgICN1cGxvYWRMaXN0XG4gICAgICAgICAgICBbZmlsZXNdPVwiZmlsZXNVcGxvYWRpbmdMaXN0XCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1maWxlPVwiJGltcGxpY2l0XCI+XG4gICAgICAgICAgICAgICAgICAgICA8YWRmLWZpbGUtdXBsb2FkaW5nLWxpc3Qtcm93XG4gICAgICAgICAgICAgICAgICAgICAgICBbZmlsZV09XCJmaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjYW5jZWwpPVwidXBsb2FkTGlzdC5jYW5jZWxGaWxlKGZpbGUpXCIgLz5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2FkZi1maWxlLXVwbG9hZGluZy1saXN0PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJjb25maXJtYXRpb25UaXRsZVwiXG4gICAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiY29uZmlybWF0aW9uRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtdXBsb2FkLWRpYWxvZ19fY29uZmlybWF0aW9uXCJcbiAgICAgICAgICAgIFtjbGFzcy5hZGYtdXBsb2FkLWRpYWxvZy0taGlkZV09XCIhaXNDb25maXJtYXRpb25cIj5cbiAgICAgICAgICAgICAgICA8cCByb2xlPVwiaGVhZGluZ1wiIGFyaWEtbGV2ZWw9XCIyXCIgaWQ9XCJjb25maXJtYXRpb25UaXRsZVwiIGNsYXNzPVwiYWRmLXVwbG9hZC1kaWFsb2dfX2NvbmZpcm1hdGlvbi0tdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ0FERl9GSUxFX1VQTE9BRC5DT05GSVJNQVRJT04uTUVTU0FHRS5USVRMRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPHAgaWQ9XCJjb25maXJtYXRpb25EZXNjcmlwdGlvblwiIGNsYXNzPVwiYWRmLXVwbG9hZC1kaWFsb2dfX2NvbmZpcm1hdGlvbi0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnQURGX0ZJTEVfVVBMT0FELkNPTkZJUk1BVElPTi5NRVNTQUdFLlRFWFQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG5cbiAgICA8Zm9vdGVyIGNsYXNzPVwiYWRmLXVwbG9hZC1kaWFsb2dfX2FjdGlvbnNcIiAqbmdJZj1cIiFpc0NvbmZpcm1hdGlvblwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBpZD1cImFkZi11cGxvYWQtZGlhbG9nLWNhbmNlbC1hbGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX0ZJTEVfVVBMT0FELkFSSUEtTEFCRUwuU1RPUF9BTEwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImNhblNob3dDYW5jZWxBbGwoKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29uZmlybWF0aW9uKClcIlxuICAgICAgICA+e3sgJ0FERl9GSUxFX1VQTE9BRC5CVVRUT04uU1RPUF9BTEwnIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgaWQ9XCJhZGYtdXBsb2FkLWRpYWxvZy1jbG9zZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfRklMRV9VUExPQUQuQVJJQS1MQUJFTC5ESUFMT0dfQ0xPU0UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICpuZ0lmPVwiY2FuQ2xvc2VEaWFsb2coKVwiXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgICAgICA+e3sgJ0FERl9GSUxFX1VQTE9BRC5CVVRUT04uQ0xPU0UnIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XG4gICAgPC9mb290ZXI+XG5cbiAgICA8Zm9vdGVyIGNsYXNzPVwiYWRmLXVwbG9hZC1kaWFsb2dfX2FjdGlvbnNcIlxuICAgICAgICAgICAgKm5nSWY9XCJpc0NvbmZpcm1hdGlvblwiIGNka1RyYXBGb2N1cyBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgaWQ9XCJhZGYtdXBsb2FkLWRpYWxvZy1jYW5jZWxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX0ZJTEVfVVBMT0FELkFSSUEtTEFCRUwuQ09ORklSTUFUSU9OLkNBTkNFTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbEFsbFVwbG9hZHMoKVwiXG4gICAgICAgID57eyAnQURGX0ZJTEVfVVBMT0FELkNPTkZJUk1BVElPTi5CVVRUT04uQ0FOQ0VMJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGlkPVwiYWRmLXVwbG9hZC1kaWFsb2ctY29uZmlybVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfRklMRV9VUExPQUQuQVJJQS1MQUJFTC5DT05GSVJNQVRJT04uQ09OVElOVUUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29uZmlybWF0aW9uKClcIlxuICAgICAgICA+e3sgJ0FERl9GSUxFX1VQTE9BRC5DT05GSVJNQVRJT04uQlVUVE9OLkNPTlRJTlVFJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgIDwvZm9vdGVyPlxuPC9kaXY+XG4iXX0=
|