@alfresco/adf-content-services 8.1.0-16295248176 → 8.1.0-16342534841
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/de.json +1 -3
- package/bundles/assets/adf-content-services/i18n/en.json +1 -3
- package/bundles/assets/adf-content-services/i18n/es.json +1 -3
- package/bundles/assets/adf-content-services/i18n/fr.json +1 -3
- package/bundles/assets/adf-content-services/i18n/it.json +1 -3
- package/bundles/assets/adf-content-services/i18n/pl.json +1 -3
- package/bundles/assets/adf-content-services/i18n/pt.json +1 -3
- package/esm2022/adf-content-services.mjs +5 -0
- package/esm2022/lib/agent/index.mjs +18 -0
- package/esm2022/lib/agent/public-api.mjs +18 -0
- package/esm2022/lib/agent/services/agent.service.mjs +60 -0
- package/esm2022/lib/alfresco-icon/alfresco-icon.component.mjs +27 -0
- package/esm2022/lib/api-factories/alfresco-api-no-auth.service.mjs +42 -0
- package/esm2022/lib/api-factories/alfresco-api-v2-loader.service.mjs +77 -0
- package/esm2022/lib/api-factories/index.mjs +18 -0
- package/esm2022/lib/api-factories/public-api.mjs +19 -0
- package/esm2022/lib/aspect-list/aspect-list-dialog-data.interface.mjs +18 -0
- package/esm2022/lib/aspect-list/aspect-list-dialog.component.mjs +77 -0
- package/esm2022/lib/aspect-list/aspect-list.component.mjs +139 -0
- package/esm2022/lib/aspect-list/aspect-list.module.mjs +35 -0
- package/esm2022/lib/aspect-list/index.mjs +18 -0
- package/esm2022/lib/aspect-list/public-api.mjs +24 -0
- package/esm2022/lib/aspect-list/services/aspect-list.service.mjs +83 -0
- package/esm2022/lib/aspect-list/services/dialog-aspect-list.service.mjs +86 -0
- package/esm2022/lib/aspect-list/services/node-aspect.service.mjs +52 -0
- package/esm2022/lib/auth-loader/content-auth-loader-factory.mjs +26 -0
- package/esm2022/lib/auth-loader/content-auth-loader.service.mjs +42 -0
- package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +166 -0
- package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +35 -0
- package/esm2022/lib/breadcrumb/dropdown-breadcrumb.component.mjs +65 -0
- package/esm2022/lib/breadcrumb/index.mjs +18 -0
- package/esm2022/lib/breadcrumb/public-api.mjs +20 -0
- package/esm2022/lib/category/categories-management/categories-management-mode.mjs +22 -0
- package/esm2022/lib/category/categories-management/categories-management.component.mjs +308 -0
- package/esm2022/lib/category/category.module.mjs +33 -0
- package/esm2022/lib/category/index.mjs +18 -0
- package/esm2022/lib/category/models/category-node.interface.mjs +18 -0
- package/esm2022/lib/category/public-api.mjs +23 -0
- package/esm2022/lib/category/services/category-tree-datasource.service.mjs +80 -0
- package/esm2022/lib/category/services/category.service.mjs +159 -0
- package/esm2022/lib/common/events/file.event.mjs +46 -0
- package/esm2022/lib/common/index.mjs +18 -0
- package/esm2022/lib/common/interfaces/saved-search.interface.mjs +18 -0
- package/esm2022/lib/common/interfaces/search-configuration.interface.mjs +18 -0
- package/esm2022/lib/common/mocks/ecm-user.service.mock.mjs +37 -0
- package/esm2022/lib/common/models/allowable-operations.enum.mjs +30 -0
- package/esm2022/lib/common/models/ecm-company.model.mjs +19 -0
- package/esm2022/lib/common/models/ecm-user.model.mjs +45 -0
- package/esm2022/lib/common/models/file.model.mjs +53 -0
- package/esm2022/lib/common/models/node-metadata.model.mjs +23 -0
- package/esm2022/lib/common/models/permissions.enum.mjs +32 -0
- package/esm2022/lib/common/public-api.mjs +37 -0
- package/esm2022/lib/common/services/card-view-content-update.service.mjs +55 -0
- package/esm2022/lib/common/services/content.service.mjs +180 -0
- package/esm2022/lib/common/services/discovery-api.service.mjs +79 -0
- package/esm2022/lib/common/services/favorites-api.service.mjs +84 -0
- package/esm2022/lib/common/services/nodes-api.service.mjs +251 -0
- package/esm2022/lib/common/services/people-content.service.mjs +138 -0
- package/esm2022/lib/common/services/rendition.service.mjs +270 -0
- package/esm2022/lib/common/services/saved-searches.service.mjs +206 -0
- package/esm2022/lib/common/services/sites.service.mjs +243 -0
- package/esm2022/lib/common/services/upload.service.mjs +391 -0
- package/esm2022/lib/content-metadata/components/content-metadata/content-metadata-header.component.mjs +54 -0
- package/esm2022/lib/content-metadata/components/content-metadata/content-metadata.component.mjs +490 -0
- package/esm2022/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.mjs +128 -0
- package/esm2022/lib/content-metadata/content-metadata.module.mjs +36 -0
- package/esm2022/lib/content-metadata/index.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/aspect-oriented-config.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/card-view-group.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/content-metadata-config.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/content-metadata-custom-panel.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/content-metadata-panel.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/content-metadata.interfaces.mjs +28 -0
- package/esm2022/lib/content-metadata/interfaces/indifferent-config.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/layout-oriented-config.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/organised-property-group.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/preset-config.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/property-group.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/property.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/public-api.mjs +31 -0
- package/esm2022/lib/content-metadata/services/basic-properties.service.mjs +107 -0
- package/esm2022/lib/content-metadata/services/config/aspect-oriented-config.service.mjs +106 -0
- package/esm2022/lib/content-metadata/services/config/content-metadata-config.factory.mjs +76 -0
- package/esm2022/lib/content-metadata/services/config/indifferent-config.service.mjs +40 -0
- package/esm2022/lib/content-metadata/services/config/layout-oriented-config.service.mjs +108 -0
- package/esm2022/lib/content-metadata/services/config/property-group-reader.mjs +33 -0
- package/esm2022/lib/content-metadata/services/content-metadata.service.mjs +99 -0
- package/esm2022/lib/content-metadata/services/content-type-property.service.mjs +134 -0
- package/esm2022/lib/content-metadata/services/property-descriptors.service.mjs +52 -0
- package/esm2022/lib/content-metadata/services/property-groups-translator.service.mjs +169 -0
- package/esm2022/lib/content-node-selector/content-node-dialog.service.mjs +256 -0
- package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.component.mjs +617 -0
- package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.service.mjs +66 -0
- package/esm2022/lib/content-node-selector/content-node-selector.component-data.interface.mjs +18 -0
- package/esm2022/lib/content-node-selector/content-node-selector.component.mjs +205 -0
- package/esm2022/lib/content-node-selector/content-node-selector.module.mjs +50 -0
- package/esm2022/lib/content-node-selector/index.mjs +18 -0
- package/esm2022/lib/content-node-selector/name-location-cell/name-location-cell.component.mjs +48 -0
- package/esm2022/lib/content-node-selector/public-api.mjs +25 -0
- package/esm2022/lib/content-node-selector/site-dropdown/sites-dropdown.component.mjs +168 -0
- package/esm2022/lib/content-node-share/content-node-share.dialog.mjs +287 -0
- package/esm2022/lib/content-node-share/content-node-share.directive.mjs +102 -0
- package/esm2022/lib/content-node-share/content-node-share.module.mjs +35 -0
- package/esm2022/lib/content-node-share/content-node-share.settings.mjs +18 -0
- package/esm2022/lib/content-node-share/index.mjs +18 -0
- package/esm2022/lib/content-node-share/public-api.mjs +22 -0
- package/esm2022/lib/content-node-share/services/shared-links-api.service.mjs +83 -0
- package/esm2022/lib/content-type/content-type-dialog.component.mjs +57 -0
- package/esm2022/lib/content-type/content-type-metadata.interface.mjs +18 -0
- package/esm2022/lib/content-type/content-type.service.mjs +52 -0
- package/esm2022/lib/content-type/index.mjs +20 -0
- package/esm2022/lib/content.module.mjs +277 -0
- package/esm2022/lib/dialogs/category-selector/category-selector.dialog.mjs +51 -0
- package/esm2022/lib/dialogs/dialog.module.mjs +52 -0
- package/esm2022/lib/dialogs/download-zip/download-zip.dialog.mjs +111 -0
- package/esm2022/lib/dialogs/download-zip/download-zip.dialog.module.mjs +38 -0
- package/esm2022/lib/dialogs/download-zip/services/download-zip.service.mjs +66 -0
- package/esm2022/lib/dialogs/folder/folder-name.validators.mjs +44 -0
- package/esm2022/lib/dialogs/folder/folder.dialog.mjs +146 -0
- package/esm2022/lib/dialogs/index.mjs +18 -0
- package/esm2022/lib/dialogs/library/library.dialog.mjs +224 -0
- package/esm2022/lib/dialogs/node-lock/node-lock.dialog.mjs +115 -0
- package/esm2022/lib/dialogs/public-api.mjs +25 -0
- package/esm2022/lib/directives/auto-focus.directive.mjs +38 -0
- package/esm2022/lib/directives/check-allowable-operation.directive.mjs +126 -0
- package/esm2022/lib/directives/content-directive.module.mjs +75 -0
- package/esm2022/lib/directives/index.mjs +18 -0
- package/esm2022/lib/directives/library-favorite.directive.mjs +119 -0
- package/esm2022/lib/directives/library-membership.directive.mjs +202 -0
- package/esm2022/lib/directives/node-counter.directive.mjs +59 -0
- package/esm2022/lib/directives/node-delete.directive.mjs +177 -0
- package/esm2022/lib/directives/node-download.directive.mjs +138 -0
- package/esm2022/lib/directives/node-favorite.directive.mjs +193 -0
- package/esm2022/lib/directives/node-lock.directive.mjs +57 -0
- package/esm2022/lib/directives/node-restore.directive.mjs +218 -0
- package/esm2022/lib/directives/public-api.mjs +28 -0
- package/esm2022/lib/document-list/components/content-action/content-action-list.component.mjs +60 -0
- package/esm2022/lib/document-list/components/content-action/content-action.component.mjs +196 -0
- package/esm2022/lib/document-list/components/document-list.component.mjs +965 -0
- package/esm2022/lib/document-list/components/document-list.token.mjs +21 -0
- package/esm2022/lib/document-list/components/file-auto-download/file-auto-download.component.mjs +42 -0
- package/esm2022/lib/document-list/components/filter-header/filter-header.component.mjs +107 -0
- package/esm2022/lib/document-list/components/library-name-column/library-name-column.component.mjs +131 -0
- package/esm2022/lib/document-list/components/library-role-column/library-role-column.component.mjs +91 -0
- package/esm2022/lib/document-list/components/library-status-column/library-status-column.component.mjs +86 -0
- package/esm2022/lib/document-list/components/name-column/name-column.component.mjs +118 -0
- package/esm2022/lib/document-list/components/node.event.mjs +30 -0
- package/esm2022/lib/document-list/components/trashcan-name-column/trashcan-name-column.component.mjs +83 -0
- package/esm2022/lib/document-list/data/image-resolver.model.mjs +18 -0
- package/esm2022/lib/document-list/data/row-filter.model.mjs +18 -0
- package/esm2022/lib/document-list/data/share-data-row.model.mjs +102 -0
- package/esm2022/lib/document-list/data/share-datatable-adapter.mjs +258 -0
- package/esm2022/lib/document-list/document-list.module.mjs +75 -0
- package/esm2022/lib/document-list/index.mjs +18 -0
- package/esm2022/lib/document-list/interfaces/document-list-loader.interface.mjs +18 -0
- package/esm2022/lib/document-list/models/content-action.model.mjs +59 -0
- package/esm2022/lib/document-list/models/document-folder.model.mjs +23 -0
- package/esm2022/lib/document-list/models/node-action.enum.mjs +27 -0
- package/esm2022/lib/document-list/models/permissions-style.model.mjs +27 -0
- package/esm2022/lib/document-list/models/permissions.model.mjs +26 -0
- package/esm2022/lib/document-list/models/preset.model.mjs +257 -0
- package/esm2022/lib/document-list/public-api.mjs +47 -0
- package/esm2022/lib/document-list/services/custom-resources.service.mjs +378 -0
- package/esm2022/lib/document-list/services/document-actions.service.mjs +142 -0
- package/esm2022/lib/document-list/services/document-list.service.mjs +175 -0
- package/esm2022/lib/document-list/services/folder-actions.service.mjs +137 -0
- package/esm2022/lib/document-list/services/lock.service.mjs +72 -0
- package/esm2022/lib/document-list/services/node-actions.service.mjs +122 -0
- package/esm2022/lib/group/index.mjs +18 -0
- package/esm2022/lib/group/public-api.mjs +18 -0
- package/esm2022/lib/group/services/group.service.mjs +84 -0
- package/esm2022/lib/infinite-scroll-datasource/index.mjs +18 -0
- package/esm2022/lib/infinite-scroll-datasource/infinite-scroll-datasource.mjs +69 -0
- package/esm2022/lib/infinite-scroll-datasource/public-api.mjs +18 -0
- package/esm2022/lib/interfaces/base-card-view-content-update.interface.mjs +18 -0
- package/esm2022/lib/interfaces/index.mjs +18 -0
- package/esm2022/lib/interfaces/library-entity.interface.mjs +18 -0
- package/esm2022/lib/interfaces/library-membership-error-event.interface.mjs +18 -0
- package/esm2022/lib/interfaces/library-membership-toggle-event.interface.mjs +18 -0
- package/esm2022/lib/interfaces/node-allowable-operation-subject.interface.mjs +18 -0
- package/esm2022/lib/interfaces/public-api.mjs +23 -0
- package/esm2022/lib/interfaces/restore-message-model.interface.mjs +19 -0
- package/esm2022/lib/legal-hold/index.mjs +18 -0
- package/esm2022/lib/legal-hold/public-api.mjs +18 -0
- package/esm2022/lib/legal-hold/services/legal-hold.service.mjs +136 -0
- package/esm2022/lib/material.module.mjs +183 -0
- package/esm2022/lib/mock/alfresco-api.service.mock.mjs +43 -0
- package/esm2022/lib/mock/date-range-search-filter.mock.mjs +65 -0
- package/esm2022/lib/mock/document-library.model.mock.mjs +84 -0
- package/esm2022/lib/mock/document-list.component.mock.mjs +364 -0
- package/esm2022/lib/mock/index.mjs +18 -0
- package/esm2022/lib/mock/new-version-uploader.service.mock.mjs +161 -0
- package/esm2022/lib/mock/public-api.mjs +27 -0
- package/esm2022/lib/mock/search-filter-mock.mjs +637 -0
- package/esm2022/lib/mock/search-query.mock.mjs +40 -0
- package/esm2022/lib/mock/search.component.mock.mjs +165 -0
- package/esm2022/lib/mock/search.service.mock.mjs +61 -0
- package/esm2022/lib/mock/sites-dropdown.component.mock.mjs +281 -0
- package/esm2022/lib/new-version-uploader/index.mjs +18 -0
- package/esm2022/lib/new-version-uploader/models/index.mjs +18 -0
- package/esm2022/lib/new-version-uploader/models/new-version-uploader.model.mjs +24 -0
- package/esm2022/lib/new-version-uploader/new-version-uploader.dialog.mjs +74 -0
- package/esm2022/lib/new-version-uploader/new-version-uploader.module.mjs +33 -0
- package/esm2022/lib/new-version-uploader/new-version-uploader.service.mjs +103 -0
- package/esm2022/lib/new-version-uploader/public-api.mjs +21 -0
- package/esm2022/lib/node-comments/index.mjs +18 -0
- package/esm2022/lib/node-comments/node-comments.component.mjs +50 -0
- package/esm2022/lib/node-comments/node-comments.module.mjs +33 -0
- package/esm2022/lib/node-comments/public-api.mjs +20 -0
- package/esm2022/lib/node-comments/services/node-comments.service.mjs +85 -0
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog-data.interface.mjs +18 -0
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog.component.mjs +123 -0
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-panel.component.mjs +102 -0
- package/esm2022/lib/permission-manager/components/add-permission/add-permission.component.mjs +69 -0
- package/esm2022/lib/permission-manager/components/add-permission/search-config-permission.service.mjs +45 -0
- package/esm2022/lib/permission-manager/components/inherited-button.directive.mjs +67 -0
- package/esm2022/lib/permission-manager/components/node-path-column/node-path-column.component.mjs +56 -0
- package/esm2022/lib/permission-manager/components/permission-container/permission-container.component.mjs +102 -0
- package/esm2022/lib/permission-manager/components/permission-list/permission-list.component.mjs +87 -0
- package/esm2022/lib/permission-manager/components/permission-list/permission-list.service.mjs +219 -0
- package/esm2022/lib/permission-manager/components/pop-over.directive.mjs +134 -0
- package/esm2022/lib/permission-manager/components/user-icon-column/user-icon-column.component.mjs +88 -0
- package/esm2022/lib/permission-manager/components/user-name-column/user-name-column.component.mjs +82 -0
- package/esm2022/lib/permission-manager/components/user-role-column/user-role-column.component.mjs +111 -0
- package/esm2022/lib/permission-manager/index.mjs +18 -0
- package/esm2022/lib/permission-manager/models/member.model.mjs +59 -0
- package/esm2022/lib/permission-manager/models/permission.model.mjs +29 -0
- package/esm2022/lib/permission-manager/models/role.model.mjs +18 -0
- package/esm2022/lib/permission-manager/permission-manager.module.mjs +84 -0
- package/esm2022/lib/permission-manager/public-api.mjs +36 -0
- package/esm2022/lib/permission-manager/services/node-permission-dialog.service.mjs +78 -0
- package/esm2022/lib/permission-manager/services/node-permission.service.mjs +299 -0
- package/esm2022/lib/pipes/content-pipe.module.mjs +37 -0
- package/esm2022/lib/pipes/index.mjs +18 -0
- package/esm2022/lib/pipes/node-name-tooltip.pipe.mjs +69 -0
- package/esm2022/lib/pipes/public-api.mjs +19 -0
- package/esm2022/lib/prediction/index.mjs +18 -0
- package/esm2022/lib/prediction/public-api.mjs +18 -0
- package/esm2022/lib/prediction/services/index.mjs +18 -0
- package/esm2022/lib/prediction/services/prediction.service.mjs +57 -0
- package/esm2022/lib/search/components/empty-search-result.component.mjs +27 -0
- package/esm2022/lib/search/components/index.mjs +43 -0
- package/esm2022/lib/search/components/reset-search.directive.mjs +41 -0
- package/esm2022/lib/search/components/search-check-list/index.mjs +18 -0
- package/esm2022/lib/search/components/search-check-list/search-check-list.component.mjs +158 -0
- package/esm2022/lib/search/components/search-chip-autocomplete-input/index.mjs +18 -0
- package/esm2022/lib/search/components/search-chip-autocomplete-input/search-chip-autocomplete-input.component.mjs +169 -0
- package/esm2022/lib/search/components/search-chip-list/search-chip-list.component.mjs +46 -0
- package/esm2022/lib/search/components/search-control.component.mjs +180 -0
- package/esm2022/lib/search/components/search-date-range-tabbed/index.mjs +22 -0
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/date-range-type.mjs +23 -0
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/in-last-date-type.mjs +23 -0
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.mjs +196 -0
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.mjs +18 -0
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range-tabbed.component.mjs +201 -0
- package/esm2022/lib/search/components/search-datetime-range/index.mjs +18 -0
- package/esm2022/lib/search/components/search-datetime-range/search-datetime-range.component.mjs +223 -0
- package/esm2022/lib/search/components/search-facet-field/index.mjs +18 -0
- package/esm2022/lib/search/components/search-facet-field/search-facet-field.component.mjs +132 -0
- package/esm2022/lib/search/components/search-filter/index.mjs +19 -0
- package/esm2022/lib/search/components/search-filter/search-filter-card/search-filter-card.component.mjs +45 -0
- package/esm2022/lib/search/components/search-filter/search-filter.component.mjs +80 -0
- package/esm2022/lib/search/components/search-filter-autocomplete-chips/index.mjs +18 -0
- package/esm2022/lib/search/components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component.mjs +154 -0
- package/esm2022/lib/search/components/search-filter-chips/index.mjs +23 -0
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.mjs +104 -0
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.mjs +109 -0
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component.mjs +129 -0
- package/esm2022/lib/search/components/search-filter-chips/search-filter-chips.component.mjs +63 -0
- package/esm2022/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.mjs +43 -0
- package/esm2022/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.mjs +109 -0
- package/esm2022/lib/search/components/search-filter-container/index.mjs +18 -0
- package/esm2022/lib/search/components/search-filter-container/search-filter-container.component.mjs +122 -0
- package/esm2022/lib/search/components/search-filter-tabbed/index.mjs +19 -0
- package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tab.directive.mjs +36 -0
- package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tabbed.component.mjs +63 -0
- package/esm2022/lib/search/components/search-form/index.mjs +18 -0
- package/esm2022/lib/search/components/search-form/search-form.component.mjs +52 -0
- package/esm2022/lib/search/components/search-input/index.mjs +18 -0
- package/esm2022/lib/search/components/search-input/search-input.component.mjs +108 -0
- package/esm2022/lib/search/components/search-logical-filter/index.mjs +18 -0
- package/esm2022/lib/search/components/search-logical-filter/search-logical-filter.component.mjs +163 -0
- package/esm2022/lib/search/components/search-number-range/index.mjs +18 -0
- package/esm2022/lib/search/components/search-number-range/search-number-range.component.mjs +154 -0
- package/esm2022/lib/search/components/search-panel/index.mjs +18 -0
- package/esm2022/lib/search/components/search-panel/search-panel.component.mjs +44 -0
- package/esm2022/lib/search/components/search-properties/file-size-condition.mjs +18 -0
- package/esm2022/lib/search/components/search-properties/file-size-operator.enum.mjs +23 -0
- package/esm2022/lib/search/components/search-properties/file-size-unit.enum.mjs +26 -0
- package/esm2022/lib/search/components/search-properties/index.mjs +22 -0
- package/esm2022/lib/search/components/search-properties/search-properties.component.mjs +244 -0
- package/esm2022/lib/search/components/search-properties/search-properties.mjs +18 -0
- package/esm2022/lib/search/components/search-radio/index.mjs +18 -0
- package/esm2022/lib/search/components/search-radio/search-radio.component.mjs +145 -0
- package/esm2022/lib/search/components/search-slider/index.mjs +18 -0
- package/esm2022/lib/search/components/search-slider/search-slider.component.mjs +119 -0
- package/esm2022/lib/search/components/search-sorting-picker/index.mjs +18 -0
- package/esm2022/lib/search/components/search-sorting-picker/search-sorting-picker.component.mjs +77 -0
- package/esm2022/lib/search/components/search-text/index.mjs +18 -0
- package/esm2022/lib/search/components/search-text/search-text.component.mjs +134 -0
- package/esm2022/lib/search/components/search-widget-container/index.mjs +18 -0
- package/esm2022/lib/search/components/search-widget-container/search-widget-container.component.mjs +113 -0
- package/esm2022/lib/search/components/search.component.mjs +152 -0
- package/esm2022/lib/search/forms/index.mjs +19 -0
- package/esm2022/lib/search/forms/live-error-state-matcher.mjs +23 -0
- package/esm2022/lib/search/forms/search-term-validator.mjs +26 -0
- package/esm2022/lib/search/index.mjs +18 -0
- package/esm2022/lib/search/mocks/index.mjs +18 -0
- package/esm2022/lib/search/mocks/search.service.mock.mjs +56 -0
- package/esm2022/lib/search/models/autocomplete-option.interface.mjs +22 -0
- package/esm2022/lib/search/models/facet-field-bucket.interface.mjs +18 -0
- package/esm2022/lib/search/models/facet-field.interface.mjs +29 -0
- package/esm2022/lib/search/models/facet-query.interface.mjs +18 -0
- package/esm2022/lib/search/models/facet-widget.interface.mjs +18 -0
- package/esm2022/lib/search/models/filter-query.interface.mjs +18 -0
- package/esm2022/lib/search/models/filter-search.interface.mjs +18 -0
- package/esm2022/lib/search/models/index.mjs +34 -0
- package/esm2022/lib/search/models/response-facet-query-list.model.mjs +31 -0
- package/esm2022/lib/search/models/search-category.interface.mjs +18 -0
- package/esm2022/lib/search/models/search-configuration.interface.mjs +18 -0
- package/esm2022/lib/search/models/search-filter-list.model.mjs +148 -0
- package/esm2022/lib/search/models/search-form.interface.mjs +18 -0
- package/esm2022/lib/search/models/search-range.interface.mjs +18 -0
- package/esm2022/lib/search/models/search-sorting-definition.interface.mjs +18 -0
- package/esm2022/lib/search/models/search-widget-settings.interface.mjs +18 -0
- package/esm2022/lib/search/models/search-widget.interface.mjs +18 -0
- package/esm2022/lib/search/models/tabbed-facet-field.interface.mjs +18 -0
- package/esm2022/lib/search/public-api.mjs +24 -0
- package/esm2022/lib/search/search-configuration.token.mjs +19 -0
- package/esm2022/lib/search/search.module.mjs +192 -0
- package/esm2022/lib/search/services/base-query-builder.service.mjs +509 -0
- package/esm2022/lib/search/services/index.mjs +24 -0
- package/esm2022/lib/search/services/search-configuration.service.mjs +50 -0
- package/esm2022/lib/search/services/search-facet-filters.service.mjs +374 -0
- package/esm2022/lib/search/services/search-filter.service.mjs +56 -0
- package/esm2022/lib/search/services/search-header-query-builder.service.mjs +136 -0
- package/esm2022/lib/search/services/search-query-builder.service.mjs +48 -0
- package/esm2022/lib/search/services/search.service.mjs +89 -0
- package/esm2022/lib/search-ai/index.mjs +18 -0
- package/esm2022/lib/search-ai/models/search-ai-input-state.mjs +18 -0
- package/esm2022/lib/search-ai/public-api.mjs +19 -0
- package/esm2022/lib/search-ai/services/search-ai.service.mjs +103 -0
- package/esm2022/lib/security/index.mjs +18 -0
- package/esm2022/lib/security/public-api.mjs +18 -0
- package/esm2022/lib/security/services/models/security-controls-group-response.interface.mjs +18 -0
- package/esm2022/lib/security/services/models/security-controls-mark-response.interface.mjs +18 -0
- package/esm2022/lib/security/services/security-controls-groups-marks-security.service.mjs +274 -0
- package/esm2022/lib/security-options-loader/security-options-loader.service.mjs +43 -0
- package/esm2022/lib/services/alfresco-api.interface.mjs +18 -0
- package/esm2022/lib/services/alfresco-api.service.mjs +120 -0
- package/esm2022/lib/services/index.mjs +18 -0
- package/esm2022/lib/services/public-api.mjs +18 -0
- package/esm2022/lib/tag/index.mjs +18 -0
- package/esm2022/lib/tag/public-api.mjs +24 -0
- package/esm2022/lib/tag/services/tag.service.mjs +171 -0
- package/esm2022/lib/tag/tag-actions/tag-actions.component.mjs +114 -0
- package/esm2022/lib/tag/tag-list/tag-list.component.mjs +98 -0
- package/esm2022/lib/tag/tag-node-list/tag-node-list.component.mjs +80 -0
- package/esm2022/lib/tag/tag.module.mjs +37 -0
- package/esm2022/lib/tag/tags-creator/tags-creator-mode.mjs +27 -0
- package/esm2022/lib/tag/tags-creator/tags-creator.component.mjs +370 -0
- package/esm2022/lib/testing/content.testing.module.mjs +56 -0
- package/esm2022/lib/tree/components/tree.component.mjs +312 -0
- package/esm2022/lib/tree/index.mjs +18 -0
- package/esm2022/lib/tree/models/tree-context-menu-result.interface.mjs +18 -0
- package/esm2022/lib/tree/models/tree-node.interface.mjs +22 -0
- package/esm2022/lib/tree/models/tree-response.interface.mjs +18 -0
- package/esm2022/lib/tree/public-api.mjs +23 -0
- package/esm2022/lib/tree/services/tree.service.mjs +134 -0
- package/esm2022/lib/tree/tree.module.mjs +33 -0
- package/esm2022/lib/tree-view/components/tree-view.component.mjs +75 -0
- package/esm2022/lib/tree-view/data/tree-view-datasource.mjs +99 -0
- package/esm2022/lib/tree-view/index.mjs +18 -0
- package/esm2022/lib/tree-view/models/tree-view.model.mjs +28 -0
- package/esm2022/lib/tree-view/public-api.mjs +22 -0
- package/esm2022/lib/tree-view/services/tree-view.service.mjs +38 -0
- package/esm2022/lib/tree-view/tree-view.module.mjs +33 -0
- package/esm2022/lib/upload/components/base-upload/upload-base.mjs +176 -0
- package/esm2022/lib/upload/components/file-uploading-dialog.component.mjs +190 -0
- package/esm2022/lib/upload/components/file-uploading-list-row.component.mjs +92 -0
- package/esm2022/lib/upload/components/file-uploading-list.component.mjs +124 -0
- package/esm2022/lib/upload/components/upload-button.component.mjs +133 -0
- package/esm2022/lib/upload/components/upload-drag-area.component.mjs +112 -0
- package/esm2022/lib/upload/components/upload-files.event.mjs +41 -0
- package/esm2022/lib/upload/components/upload-version-button.component.mjs +54 -0
- package/esm2022/lib/upload/directives/file-draggable.directive.mjs +154 -0
- package/esm2022/lib/upload/directives/toggle-icon.directive.mjs +75 -0
- package/esm2022/lib/upload/index.mjs +18 -0
- package/esm2022/lib/upload/pipes/file-upload-error.pipe.mjs +39 -0
- package/esm2022/lib/upload/public-api.mjs +29 -0
- package/esm2022/lib/upload/upload.module.mjs +72 -0
- package/esm2022/lib/version-compatibility/index.mjs +18 -0
- package/esm2022/lib/version-compatibility/public-api.mjs +20 -0
- package/esm2022/lib/version-compatibility/version-compatibility-factory.mjs +26 -0
- package/esm2022/lib/version-compatibility/version-compatibility.directive.mjs +53 -0
- package/esm2022/lib/version-compatibility/version-compatibility.module.mjs +33 -0
- package/esm2022/lib/version-compatibility/version-compatibility.service.mjs +76 -0
- package/esm2022/lib/version-manager/content-version.service.mjs +53 -0
- package/esm2022/lib/version-manager/index.mjs +18 -0
- package/esm2022/lib/version-manager/public-api.mjs +23 -0
- package/esm2022/lib/version-manager/version-comparison.component.mjs +42 -0
- package/esm2022/lib/version-manager/version-list.component.mjs +215 -0
- package/esm2022/lib/version-manager/version-manager.component.mjs +145 -0
- package/esm2022/lib/version-manager/version-manager.module.mjs +48 -0
- package/esm2022/lib/version-manager/version-upload.component.mjs +154 -0
- package/esm2022/lib/viewer/alfresco-viewer.module.mjs +33 -0
- package/esm2022/lib/viewer/components/alfresco-viewer.component.mjs +408 -0
- package/esm2022/lib/viewer/index.mjs +18 -0
- package/esm2022/lib/viewer/public-api.mjs +19 -0
- package/esm2022/public-api.mjs +56 -0
- package/fesm2022/adf-content-services.mjs +827 -870
- package/fesm2022/adf-content-services.mjs.map +1 -1
- package/lib/aspect-list/aspect-list.component.d.ts +0 -4
- package/lib/aspect-list/public-api.d.ts +0 -1
- package/lib/aspect-list/services/aspect-list.service.d.ts +4 -6
- package/lib/category/categories-management/categories-management.component.d.ts +0 -4
- package/lib/content.module.d.ts +2 -2
- package/lib/dialogs/dialog.module.d.ts +5 -6
- package/lib/dialogs/download-zip/download-zip.dialog.d.ts +1 -1
- package/lib/dialogs/download-zip/download-zip.dialog.module.d.ts +6 -2
- 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/lib/version-manager/version-list.component.scss +2 -3
- package/package.json +5 -3
- package/lib/aspect-list/interfaces/custom-aspect-paging.interface.d.ts +0 -21
|
@@ -0,0 +1,391 @@
|
|
|
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 { inject, Injectable } from '@angular/core';
|
|
18
|
+
import { Minimatch } from 'minimatch';
|
|
19
|
+
import { Subject } from 'rxjs';
|
|
20
|
+
import { FileUploadCompleteEvent, FileUploadDeleteEvent, FileUploadErrorEvent, FileUploadEvent } from '../events/file.event';
|
|
21
|
+
import { FileUploadStatus } from '../models/file.model';
|
|
22
|
+
import { AppConfigService } from '@alfresco/adf-core';
|
|
23
|
+
import { filter } from 'rxjs/operators';
|
|
24
|
+
import { DiscoveryApiService } from '../../common/services/discovery-api.service';
|
|
25
|
+
import { NodesApi, UploadApi, VersionsApi } from '@alfresco/js-api';
|
|
26
|
+
import { AlfrescoApiService } from '../../services/alfresco-api.service';
|
|
27
|
+
import * as i0 from "@angular/core";
|
|
28
|
+
const MIN_CANCELLABLE_FILE_SIZE = 1000000;
|
|
29
|
+
const MAX_CANCELLABLE_FILE_PERCENTAGE = 50;
|
|
30
|
+
export class UploadService {
|
|
31
|
+
get uploadApi() {
|
|
32
|
+
this._uploadApi = this._uploadApi ?? new UploadApi(this.apiService.getInstance());
|
|
33
|
+
return this._uploadApi;
|
|
34
|
+
}
|
|
35
|
+
get nodesApi() {
|
|
36
|
+
this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());
|
|
37
|
+
return this._nodesApi;
|
|
38
|
+
}
|
|
39
|
+
get versionsApi() {
|
|
40
|
+
this._versionsApi = this._versionsApi ?? new VersionsApi(this.apiService.getInstance());
|
|
41
|
+
return this._versionsApi;
|
|
42
|
+
}
|
|
43
|
+
constructor() {
|
|
44
|
+
this.queue = [];
|
|
45
|
+
this.queueChanged = new Subject();
|
|
46
|
+
this.fileUpload = new Subject();
|
|
47
|
+
this.fileUploadStarting = new Subject();
|
|
48
|
+
this.fileUploadCancelled = new Subject();
|
|
49
|
+
this.fileUploadProgress = new Subject();
|
|
50
|
+
this.fileUploadAborted = new Subject();
|
|
51
|
+
this.fileUploadError = new Subject();
|
|
52
|
+
this.fileUploadComplete = new Subject();
|
|
53
|
+
this.fileUploadDeleted = new Subject();
|
|
54
|
+
this.fileDeleted = new Subject();
|
|
55
|
+
this.cache = {};
|
|
56
|
+
this.totalComplete = 0;
|
|
57
|
+
this.totalAborted = 0;
|
|
58
|
+
this.totalError = 0;
|
|
59
|
+
this.excludedFileList = [];
|
|
60
|
+
this.excludedFoldersList = [];
|
|
61
|
+
this.matchingOptions = null;
|
|
62
|
+
this.folderMatchingOptions = null;
|
|
63
|
+
this.apiService = inject(AlfrescoApiService);
|
|
64
|
+
this.appConfigService = inject(AppConfigService);
|
|
65
|
+
this.discoveryApiService = inject(DiscoveryApiService);
|
|
66
|
+
this.discoveryApiService.ecmProductInfo$.pipe(filter((info) => !!info)).subscribe(({ status }) => {
|
|
67
|
+
this.isThumbnailGenerationEnabled = status.isThumbnailGenerationEnabled;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
clearCache() {
|
|
71
|
+
this.cache = {};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Returns the number of concurrent threads for uploading.
|
|
75
|
+
*
|
|
76
|
+
* @returns Number of concurrent threads (default 1)
|
|
77
|
+
*/
|
|
78
|
+
getThreadsCount() {
|
|
79
|
+
return this.appConfigService.get('upload.threads', 1);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Checks whether the service still has files uploading or awaiting upload.
|
|
83
|
+
*
|
|
84
|
+
* @returns True if files in the queue are still uploading, false otherwise
|
|
85
|
+
*/
|
|
86
|
+
isUploading() {
|
|
87
|
+
const finishedFileStates = [
|
|
88
|
+
FileUploadStatus.Complete,
|
|
89
|
+
FileUploadStatus.Cancelled,
|
|
90
|
+
FileUploadStatus.Aborted,
|
|
91
|
+
FileUploadStatus.Error,
|
|
92
|
+
FileUploadStatus.Deleted
|
|
93
|
+
];
|
|
94
|
+
return this.queue.reduce((stillUploading, currentFile) => stillUploading || finishedFileStates.indexOf(currentFile.status) === -1, false);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Gets the file Queue
|
|
98
|
+
*
|
|
99
|
+
* @returns Array of files that form the queue
|
|
100
|
+
*/
|
|
101
|
+
getQueue() {
|
|
102
|
+
return this.queue;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Adds files to the uploading queue to be uploaded
|
|
106
|
+
*
|
|
107
|
+
* @param files One or more separate parameters or an array of files to queue
|
|
108
|
+
* @returns Array of files that were not blocked from upload by the ignore list
|
|
109
|
+
*/
|
|
110
|
+
addToQueue(...files) {
|
|
111
|
+
const allowedFiles = files.filter((currentFile) => this.filterElement(currentFile));
|
|
112
|
+
this.queue = this.queue.concat(allowedFiles);
|
|
113
|
+
this.queueChanged.next(this.queue);
|
|
114
|
+
return allowedFiles;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Finds all the files in the queue that are not yet uploaded and uploads them into the directory folder.
|
|
118
|
+
*
|
|
119
|
+
* @param successEmitter Emitter to invoke on file success status change
|
|
120
|
+
* @param errorEmitter Emitter to invoke on file error status change
|
|
121
|
+
*/
|
|
122
|
+
uploadFilesInTheQueue(successEmitter, errorEmitter) {
|
|
123
|
+
const files = this.getFilesToUpload();
|
|
124
|
+
if (files && files.length > 0) {
|
|
125
|
+
for (const file of files) {
|
|
126
|
+
this.onUploadStarting(file);
|
|
127
|
+
const promise = this.beginUpload(file, successEmitter, errorEmitter);
|
|
128
|
+
this.cache[file.name] = promise;
|
|
129
|
+
const next = () => {
|
|
130
|
+
setTimeout(() => this.uploadFilesInTheQueue(successEmitter, errorEmitter), 100);
|
|
131
|
+
};
|
|
132
|
+
promise.next = next;
|
|
133
|
+
promise.then(() => next(), () => next());
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Cancels uploading of files.
|
|
139
|
+
* If the file is smaller than 1 MB the file will be uploaded and then the node deleted
|
|
140
|
+
* to prevent having files that were aborted but still uploaded.
|
|
141
|
+
*
|
|
142
|
+
* @param files One or more separate parameters or an array of files specifying uploads to cancel
|
|
143
|
+
*/
|
|
144
|
+
cancelUpload(...files) {
|
|
145
|
+
files.forEach((file) => {
|
|
146
|
+
const promise = this.cache[file.name];
|
|
147
|
+
if (promise) {
|
|
148
|
+
if (this.isSaveToAbortFile(file)) {
|
|
149
|
+
promise.abort();
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
this.abortedFile = file.name;
|
|
153
|
+
}
|
|
154
|
+
delete this.cache[file.name];
|
|
155
|
+
promise.next();
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
const performAction = this.getAction(file);
|
|
159
|
+
if (performAction) {
|
|
160
|
+
performAction();
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
/** Clears the upload queue */
|
|
166
|
+
clearQueue() {
|
|
167
|
+
this.queue = [];
|
|
168
|
+
this.totalComplete = 0;
|
|
169
|
+
this.totalAborted = 0;
|
|
170
|
+
this.totalError = 0;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Gets an upload promise for a file.
|
|
174
|
+
*
|
|
175
|
+
* @param file The target file
|
|
176
|
+
* @returns Promise that is resolved if the upload is successful or error otherwise
|
|
177
|
+
*/
|
|
178
|
+
getUploadPromise(file) {
|
|
179
|
+
const opts = {
|
|
180
|
+
include: ['allowableOperations']
|
|
181
|
+
};
|
|
182
|
+
if (this.isThumbnailGenerationEnabled) {
|
|
183
|
+
opts.renditions = 'doclib';
|
|
184
|
+
}
|
|
185
|
+
if (file.options?.versioningEnabled !== undefined) {
|
|
186
|
+
opts.versioningEnabled = file.options.versioningEnabled;
|
|
187
|
+
}
|
|
188
|
+
if (file.options.newVersion === true) {
|
|
189
|
+
opts.overwrite = true;
|
|
190
|
+
opts.majorVersion = file.options.majorVersion;
|
|
191
|
+
opts.comment = file.options.comment;
|
|
192
|
+
opts.name = file.name;
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
opts.autoRename = true;
|
|
196
|
+
}
|
|
197
|
+
if (file.options.nodeType) {
|
|
198
|
+
opts.nodeType = file.options.nodeType;
|
|
199
|
+
}
|
|
200
|
+
if (file.id) {
|
|
201
|
+
return this.nodesApi.updateNodeContent(file.id, file.file, opts);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
const nodeBody = { ...file.options, name: file.name, nodeType: file.options.nodeType };
|
|
205
|
+
delete nodeBody['versioningEnabled'];
|
|
206
|
+
return this.uploadApi.uploadFile(file.file, file.options.path, file.options.parentId, nodeBody, opts);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
getFilesToUpload() {
|
|
210
|
+
const cached = Object.keys(this.cache);
|
|
211
|
+
const threadsCount = this.getThreadsCount();
|
|
212
|
+
if (cached.length >= threadsCount) {
|
|
213
|
+
return [];
|
|
214
|
+
}
|
|
215
|
+
const files = this.queue
|
|
216
|
+
.filter((toUpload) => !cached.includes(toUpload.name) && toUpload.status === FileUploadStatus.Pending)
|
|
217
|
+
.slice(0, threadsCount);
|
|
218
|
+
return files;
|
|
219
|
+
}
|
|
220
|
+
beginUpload(file, successEmitter, errorEmitter) {
|
|
221
|
+
const promise = this.getUploadPromise(file);
|
|
222
|
+
promise
|
|
223
|
+
.on('progress', (progress) => {
|
|
224
|
+
this.onUploadProgress(file, progress);
|
|
225
|
+
})
|
|
226
|
+
.on('abort', () => {
|
|
227
|
+
this.onUploadAborted(file);
|
|
228
|
+
if (successEmitter) {
|
|
229
|
+
successEmitter.emit({ value: 'File aborted' });
|
|
230
|
+
}
|
|
231
|
+
})
|
|
232
|
+
.on('error', (err) => {
|
|
233
|
+
this.onUploadError(file, err);
|
|
234
|
+
if (errorEmitter) {
|
|
235
|
+
errorEmitter.emit({ value: 'Error file uploaded' });
|
|
236
|
+
}
|
|
237
|
+
})
|
|
238
|
+
.on('success', (data) => {
|
|
239
|
+
if (this.abortedFile === file.name) {
|
|
240
|
+
this.onUploadAborted(file);
|
|
241
|
+
if (file.id === undefined) {
|
|
242
|
+
this.deleteAbortedNode(data.entry.id);
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
this.deleteAbortedNodeVersion(data.entry.id, data.entry.properties['cm:versionLabel']);
|
|
246
|
+
}
|
|
247
|
+
if (successEmitter) {
|
|
248
|
+
successEmitter.emit({ value: 'File deleted' });
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
this.onUploadComplete(file, data);
|
|
253
|
+
if (successEmitter) {
|
|
254
|
+
successEmitter.emit({ value: data });
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
})
|
|
258
|
+
.catch(() => { });
|
|
259
|
+
return promise;
|
|
260
|
+
}
|
|
261
|
+
onUploadStarting(file) {
|
|
262
|
+
if (file) {
|
|
263
|
+
file.status = FileUploadStatus.Starting;
|
|
264
|
+
const event = new FileUploadEvent(file, FileUploadStatus.Starting);
|
|
265
|
+
this.fileUpload.next(event);
|
|
266
|
+
this.fileUploadStarting.next(event);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
onUploadProgress(file, progress) {
|
|
270
|
+
if (file) {
|
|
271
|
+
file.progress = progress;
|
|
272
|
+
file.status = FileUploadStatus.Progress;
|
|
273
|
+
const event = new FileUploadEvent(file, FileUploadStatus.Progress);
|
|
274
|
+
this.fileUpload.next(event);
|
|
275
|
+
this.fileUploadProgress.next(event);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
onUploadError(file, error) {
|
|
279
|
+
if (file) {
|
|
280
|
+
file.errorCode = error?.status;
|
|
281
|
+
file.status = FileUploadStatus.Error;
|
|
282
|
+
this.totalError++;
|
|
283
|
+
const promise = this.cache[file.name];
|
|
284
|
+
if (promise) {
|
|
285
|
+
delete this.cache[file.name];
|
|
286
|
+
}
|
|
287
|
+
const event = new FileUploadErrorEvent(file, error, this.totalError);
|
|
288
|
+
this.fileUpload.next(event);
|
|
289
|
+
this.fileUploadError.next(event);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
onUploadComplete(file, data) {
|
|
293
|
+
if (file) {
|
|
294
|
+
file.status = FileUploadStatus.Complete;
|
|
295
|
+
file.data = data;
|
|
296
|
+
this.totalComplete++;
|
|
297
|
+
const promise = this.cache[file.name];
|
|
298
|
+
if (promise) {
|
|
299
|
+
delete this.cache[file.name];
|
|
300
|
+
}
|
|
301
|
+
const event = new FileUploadCompleteEvent(file, this.totalComplete, data, this.totalAborted);
|
|
302
|
+
this.fileUpload.next(event);
|
|
303
|
+
this.fileUploadComplete.next(event);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
onUploadAborted(file) {
|
|
307
|
+
if (file) {
|
|
308
|
+
file.status = FileUploadStatus.Aborted;
|
|
309
|
+
this.totalAborted++;
|
|
310
|
+
const event = new FileUploadEvent(file, FileUploadStatus.Aborted);
|
|
311
|
+
this.fileUpload.next(event);
|
|
312
|
+
this.fileUploadAborted.next(event);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
onUploadCancelled(file) {
|
|
316
|
+
if (file) {
|
|
317
|
+
file.status = FileUploadStatus.Cancelled;
|
|
318
|
+
const event = new FileUploadEvent(file, FileUploadStatus.Cancelled);
|
|
319
|
+
this.fileUpload.next(event);
|
|
320
|
+
this.fileUploadCancelled.next(event);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
onUploadDeleted(file) {
|
|
324
|
+
if (file) {
|
|
325
|
+
file.status = FileUploadStatus.Deleted;
|
|
326
|
+
this.totalComplete--;
|
|
327
|
+
const event = new FileUploadDeleteEvent(file, this.totalComplete);
|
|
328
|
+
this.fileUpload.next(event);
|
|
329
|
+
this.fileUploadDeleted.next(event);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
getAction(file) {
|
|
333
|
+
const actions = {
|
|
334
|
+
[FileUploadStatus.Pending]: () => this.onUploadCancelled(file),
|
|
335
|
+
[FileUploadStatus.Deleted]: () => this.onUploadDeleted(file),
|
|
336
|
+
[FileUploadStatus.Error]: () => this.onUploadError(file, null)
|
|
337
|
+
};
|
|
338
|
+
return actions[file.status];
|
|
339
|
+
}
|
|
340
|
+
deleteAbortedNode(nodeId) {
|
|
341
|
+
this.nodesApi.deleteNode(nodeId, { permanent: true }).then(() => (this.abortedFile = undefined));
|
|
342
|
+
}
|
|
343
|
+
deleteAbortedNodeVersion(nodeId, versionId) {
|
|
344
|
+
this.versionsApi.deleteVersion(nodeId, versionId).then(() => (this.abortedFile = undefined));
|
|
345
|
+
}
|
|
346
|
+
isSaveToAbortFile(file) {
|
|
347
|
+
return file.size > MIN_CANCELLABLE_FILE_SIZE && file.progress.percent < MAX_CANCELLABLE_FILE_PERCENTAGE;
|
|
348
|
+
}
|
|
349
|
+
filterElement(file) {
|
|
350
|
+
this.excludedFileList = this.appConfigService.get('files.excluded');
|
|
351
|
+
this.excludedFoldersList = this.appConfigService.get('folders.excluded');
|
|
352
|
+
let isAllowed = true;
|
|
353
|
+
if (this.excludedFileList) {
|
|
354
|
+
this.matchingOptions = this.appConfigService.get('files.match-options');
|
|
355
|
+
isAllowed = this.isFileNameAllowed(file);
|
|
356
|
+
}
|
|
357
|
+
if (isAllowed && this.excludedFoldersList) {
|
|
358
|
+
this.folderMatchingOptions = this.appConfigService.get('folders.match-options');
|
|
359
|
+
isAllowed = this.isParentFolderAllowed(file);
|
|
360
|
+
}
|
|
361
|
+
return isAllowed;
|
|
362
|
+
}
|
|
363
|
+
isParentFolderAllowed(file) {
|
|
364
|
+
let isAllowed = true;
|
|
365
|
+
const currentFile = file.file;
|
|
366
|
+
const fileRelativePath = currentFile.webkitRelativePath ? currentFile.webkitRelativePath : file.options.path;
|
|
367
|
+
if (currentFile && fileRelativePath) {
|
|
368
|
+
isAllowed =
|
|
369
|
+
this.excludedFoldersList.filter((folderToExclude) => fileRelativePath.split('/').some((pathElement) => {
|
|
370
|
+
const minimatch = new Minimatch(folderToExclude, this.folderMatchingOptions);
|
|
371
|
+
return minimatch.match(pathElement);
|
|
372
|
+
})).length === 0;
|
|
373
|
+
}
|
|
374
|
+
return isAllowed;
|
|
375
|
+
}
|
|
376
|
+
isFileNameAllowed(file) {
|
|
377
|
+
return (this.excludedFileList.filter((pattern) => {
|
|
378
|
+
const minimatch = new Minimatch(pattern, this.matchingOptions);
|
|
379
|
+
return minimatch.match(file.name);
|
|
380
|
+
}).length === 0);
|
|
381
|
+
}
|
|
382
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
383
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploadService, providedIn: 'root' }); }
|
|
384
|
+
}
|
|
385
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploadService, decorators: [{
|
|
386
|
+
type: Injectable,
|
|
387
|
+
args: [{
|
|
388
|
+
providedIn: 'root'
|
|
389
|
+
}]
|
|
390
|
+
}], ctorParameters: () => [] });
|
|
391
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL2NvbW1vbi9zZXJ2aWNlcy91cGxvYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQWdCLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3SCxPQUFPLEVBQWlDLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2xGLE9BQU8sRUFBa0IsUUFBUSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFFekUsTUFBTSx5QkFBeUIsR0FBRyxPQUFPLENBQUM7QUFDMUMsTUFBTSwrQkFBK0IsR0FBRyxFQUFFLENBQUM7QUFLM0MsTUFBTSxPQUFPLGFBQWE7SUF5QnRCLElBQUksU0FBUztRQUNULElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFD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QUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUNsQixDQUFDO0lBQ04sQ0FBQzsrR0FqYVEsYUFBYTttSEFBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNaW5pbWF0Y2ggfSBmcm9tICdtaW5pbWF0Y2gnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlsZVVwbG9hZENvbXBsZXRlRXZlbnQsIEZpbGVVcGxvYWREZWxldGVFdmVudCwgRmlsZVVwbG9hZEVycm9yRXZlbnQsIEZpbGVVcGxvYWRFdmVudCB9IGZyb20gJy4uL2V2ZW50cy9maWxlLmV2ZW50JztcbmltcG9ydCB7IEZpbGVNb2RlbCwgRmlsZVVwbG9hZFByb2dyZXNzLCBGaWxlVXBsb2FkU3RhdHVzIH0gZnJvbSAnLi4vbW9kZWxzL2ZpbGUubW9kZWwnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEaXNjb3ZlcnlBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3NlcnZpY2VzL2Rpc2NvdmVyeS1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlQm9keUNyZWF0ZSwgTm9kZXNBcGksIFVwbG9hZEFwaSwgVmVyc2lvbnNBcGkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IEFsZnJlc2NvQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FsZnJlc2NvLWFwaS5zZXJ2aWNlJztcblxuY29uc3QgTUlOX0NBTkNFTExBQkxFX0ZJTEVfU0laRSA9IDEwMDAwMDA7XG5jb25zdCBNQVhfQ0FOQ0VMTEFCTEVfRklMRV9QRVJDRU5UQUdFID0gNTA7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkU2VydmljZSB7XG4gICAgcXVldWU6IEZpbGVNb2RlbFtdID0gW107XG4gICAgcXVldWVDaGFuZ2VkOiBTdWJqZWN0PEZpbGVNb2RlbFtdPiA9IG5ldyBTdWJqZWN0PEZpbGVNb2RlbFtdPigpO1xuICAgIGZpbGVVcGxvYWQ6IFN1YmplY3Q8RmlsZVVwbG9hZEV2ZW50PiA9IG5ldyBTdWJqZWN0PEZpbGVVcGxvYWRFdmVudD4oKTtcbiAgICBmaWxlVXBsb2FkU3RhcnRpbmc6IFN1YmplY3Q8RmlsZVVwbG9hZEV2ZW50PiA9IG5ldyBTdWJqZWN0PEZpbGVVcGxvYWRFdmVudD4oKTtcbiAgICBmaWxlVXBsb2FkQ2FuY2VsbGVkOiBTdWJqZWN0PEZpbGVVcGxvYWRFdmVudD4gPSBuZXcgU3ViamVjdDxGaWxlVXBsb2FkRXZlbnQ+KCk7XG4gICAgZmlsZVVwbG9hZFByb2dyZXNzOiBTdWJqZWN0PEZpbGVVcGxvYWRFdmVudD4gPSBuZXcgU3ViamVjdDxGaWxlVXBsb2FkRXZlbnQ+KCk7XG4gICAgZmlsZVVwbG9hZEFib3J0ZWQ6IFN1YmplY3Q8RmlsZVVwbG9hZEV2ZW50PiA9IG5ldyBTdWJqZWN0PEZpbGVVcGxvYWRFdmVudD4oKTtcbiAgICBmaWxlVXBsb2FkRXJyb3I6IFN1YmplY3Q8RmlsZVVwbG9hZEVycm9yRXZlbnQ+ID0gbmV3IFN1YmplY3Q8RmlsZVVwbG9hZEVycm9yRXZlbnQ+KCk7XG4gICAgZmlsZVVwbG9hZENvbXBsZXRlOiBTdWJqZWN0PEZpbGVVcGxvYWRDb21wbGV0ZUV2ZW50PiA9IG5ldyBTdWJqZWN0PEZpbGVVcGxvYWRDb21wbGV0ZUV2ZW50PigpO1xuICAgIGZpbGVVcGxvYWREZWxldGVkOiBTdWJqZWN0PEZpbGVVcGxvYWREZWxldGVFdmVudD4gPSBuZXcgU3ViamVjdDxGaWxlVXBsb2FkRGVsZXRlRXZlbnQ+KCk7XG4gICAgZmlsZURlbGV0ZWQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICAgIHByaXZhdGUgY2FjaGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBwcml2YXRlIHRvdGFsQ29tcGxldGU6IG51bWJlciA9IDA7XG4gICAgcHJpdmF0ZSB0b3RhbEFib3J0ZWQ6IG51bWJlciA9IDA7XG4gICAgcHJpdmF0ZSB0b3RhbEVycm9yOiBudW1iZXIgPSAwO1xuICAgIHByaXZhdGUgZXhjbHVkZWRGaWxlTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIGV4Y2x1ZGVkRm9sZGVyc0xpc3Q6IHN0cmluZ1tdID0gW107XG4gICAgcHJpdmF0ZSBtYXRjaGluZ09wdGlvbnM6IGFueSA9IG51bGw7XG4gICAgcHJpdmF0ZSBmb2xkZXJNYXRjaGluZ09wdGlvbnM6IGFueSA9IG51bGw7XG4gICAgcHJpdmF0ZSBhYm9ydGVkRmlsZTogc3RyaW5nO1xuICAgIHByaXZhdGUgaXNUaHVtYm5haWxHZW5lcmF0aW9uRW5hYmxlZDogYm9vbGVhbjtcblxuICAgIHByaXZhdGUgX3VwbG9hZEFwaTogVXBsb2FkQXBpO1xuICAgIGdldCB1cGxvYWRBcGkoKTogVXBsb2FkQXBpIHtcbiAgICAgICAgdGhpcy5fdXBsb2FkQXBpID0gdGhpcy5fdXBsb2FkQXBpID8/IG5ldyBVcGxvYWRBcGkodGhpcy5hcGlTZXJ2aWNlLmdldEluc3RhbmNlKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5fdXBsb2FkQXBpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX25vZGVzQXBpOiBOb2Rlc0FwaTtcbiAgICBnZXQgbm9kZXNBcGkoKTogTm9kZXNBcGkge1xuICAgICAgICB0aGlzLl9ub2Rlc0FwaSA9IHRoaXMuX25vZGVzQXBpID8/IG5ldyBOb2Rlc0FwaSh0aGlzLmFwaVNlcnZpY2UuZ2V0SW5zdGFuY2UoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub2Rlc0FwaTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF92ZXJzaW9uc0FwaTogVmVyc2lvbnNBcGk7XG4gICAgZ2V0IHZlcnNpb25zQXBpKCk6IFZlcnNpb25zQXBpIHtcbiAgICAgICAgdGhpcy5fdmVyc2lvbnNBcGkgPSB0aGlzLl92ZXJzaW9uc0FwaSA/PyBuZXcgVmVyc2lvbnNBcGkodGhpcy5hcGlTZXJ2aWNlLmdldEluc3RhbmNlKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5fdmVyc2lvbnNBcGk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFwaVNlcnZpY2UgPSBpbmplY3QoQWxmcmVzY29BcGlTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgYXBwQ29uZmlnU2VydmljZSA9IGluamVjdChBcHBDb25maWdTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgZGlzY292ZXJ5QXBpU2VydmljZSA9IGluamVjdChEaXNjb3ZlcnlBcGlTZXJ2aWNlKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmRpc2NvdmVyeUFwaVNlcnZpY2UuZWNtUHJvZHVjdEluZm8kLnBpcGUoZmlsdGVyKChpbmZvKSA9PiAhIWluZm8pKS5zdWJzY3JpYmUoKHsgc3RhdHVzIH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNUaHVtYm5haWxHZW5lcmF0aW9uRW5hYmxlZCA9IHN0YXR1cy5pc1RodW1ibmFpbEdlbmVyYXRpb25FbmFibGVkO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjbGVhckNhY2hlKCkge1xuICAgICAgICB0aGlzLmNhY2hlID0ge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNvbmN1cnJlbnQgdGhyZWFkcyBmb3IgdXBsb2FkaW5nLlxuICAgICAqXG4gICAgICogQHJldHVybnMgTnVtYmVyIG9mIGNvbmN1cnJlbnQgdGhyZWFkcyAoZGVmYXVsdCAxKVxuICAgICAqL1xuICAgIGdldFRocmVhZHNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldDxudW1iZXI+KCd1cGxvYWQudGhyZWFkcycsIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBzZXJ2aWNlIHN0aWxsIGhhcyBmaWxlcyB1cGxvYWRpbmcgb3IgYXdhaXRpbmcgdXBsb2FkLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBmaWxlcyBpbiB0aGUgcXVldWUgYXJlIHN0aWxsIHVwbG9hZGluZywgZmFsc2Ugb3RoZXJ3aXNlXG4gICAgICovXG4gICAgaXNVcGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGZpbmlzaGVkRmlsZVN0YXRlcyA9IFtcbiAgICAgICAgICAgIEZpbGVVcGxvYWRTdGF0dXMuQ29tcGxldGUsXG4gICAgICAgICAgICBGaWxlVXBsb2FkU3RhdHVzLkNhbmNlbGxlZCxcbiAgICAgICAgICAgIEZpbGVVcGxvYWRTdGF0dXMuQWJvcnRlZCxcbiAgICAgICAgICAgIEZpbGVVcGxvYWRTdGF0dXMuRXJyb3IsXG4gICAgICAgICAgICBGaWxlVXBsb2FkU3RhdHVzLkRlbGV0ZWRcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVldWUucmVkdWNlKFxuICAgICAgICAgICAgKHN0aWxsVXBsb2FkaW5nOiBib29sZWFuLCBjdXJyZW50RmlsZTogRmlsZU1vZGVsKSA9PiBzdGlsbFVwbG9hZGluZyB8fCBmaW5pc2hlZEZpbGVTdGF0ZXMuaW5kZXhPZihjdXJyZW50RmlsZS5zdGF0dXMpID09PSAtMSxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZmlsZSBRdWV1ZVxuICAgICAqXG4gICAgICogQHJldHVybnMgQXJyYXkgb2YgZmlsZXMgdGhhdCBmb3JtIHRoZSBxdWV1ZVxuICAgICAqL1xuICAgIGdldFF1ZXVlKCk6IEZpbGVNb2RlbFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVldWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBmaWxlcyB0byB0aGUgdXBsb2FkaW5nIHF1ZXVlIHRvIGJlIHVwbG9hZGVkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZXMgT25lIG9yIG1vcmUgc2VwYXJhdGUgcGFyYW1ldGVycyBvciBhbiBhcnJheSBvZiBmaWxlcyB0byBxdWV1ZVxuICAgICAqIEByZXR1cm5zIEFycmF5IG9mIGZpbGVzIHRoYXQgd2VyZSBub3QgYmxvY2tlZCBmcm9tIHVwbG9hZCBieSB0aGUgaWdub3JlIGxpc3RcbiAgICAgKi9cbiAgICBhZGRUb1F1ZXVlKC4uLmZpbGVzOiBGaWxlTW9kZWxbXSk6IEZpbGVNb2RlbFtdIHtcbiAgICAgICAgY29uc3QgYWxsb3dlZEZpbGVzID0gZmlsZXMuZmlsdGVyKChjdXJyZW50RmlsZSkgPT4gdGhpcy5maWx0ZXJFbGVtZW50KGN1cnJlbnRGaWxlKSk7XG4gICAgICAgIHRoaXMucXVldWUgPSB0aGlzLnF1ZXVlLmNvbmNhdChhbGxvd2VkRmlsZXMpO1xuICAgICAgICB0aGlzLnF1ZXVlQ2hhbmdlZC5uZXh0KHRoaXMucXVldWUpO1xuICAgICAgICByZXR1cm4gYWxsb3dlZEZpbGVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIGFsbCB0aGUgZmlsZXMgaW4gdGhlIHF1ZXVlIHRoYXQgYXJlIG5vdCB5ZXQgdXBsb2FkZWQgYW5kIHVwbG9hZHMgdGhlbSBpbnRvIHRoZSBkaXJlY3RvcnkgZm9sZGVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHN1Y2Nlc3NFbWl0dGVyIEVtaXR0ZXIgdG8gaW52b2tlIG9uIGZpbGUgc3VjY2VzcyBzdGF0dXMgY2hhbmdlXG4gICAgICogQHBhcmFtIGVycm9yRW1pdHRlciBFbWl0dGVyIHRvIGludm9rZSBvbiBmaWxlIGVycm9yIHN0YXR1cyBjaGFuZ2VcbiAgICAgKi9cbiAgICB1cGxvYWRGaWxlc0luVGhlUXVldWUoc3VjY2Vzc0VtaXR0ZXI/OiBFdmVudEVtaXR0ZXI8YW55PiwgZXJyb3JFbWl0dGVyPzogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsZXMgPSB0aGlzLmdldEZpbGVzVG9VcGxvYWQoKTtcblxuICAgICAgICBpZiAoZmlsZXMgJiYgZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblVwbG9hZFN0YXJ0aW5nKGZpbGUpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuYmVnaW5VcGxvYWQoZmlsZSwgc3VjY2Vzc0VtaXR0ZXIsIGVycm9yRW1pdHRlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZVtmaWxlLm5hbWVdID0gcHJvbWlzZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGxvYWRGaWxlc0luVGhlUXVldWUoc3VjY2Vzc0VtaXR0ZXIsIGVycm9yRW1pdHRlciksIDEwMCk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHByb21pc2UubmV4dCA9IG5leHQ7XG5cbiAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICgpID0+IG5leHQoKSxcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4gbmV4dCgpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbmNlbHMgdXBsb2FkaW5nIG9mIGZpbGVzLlxuICAgICAqIElmIHRoZSBmaWxlIGlzIHNtYWxsZXIgdGhhbiAxIE1CIHRoZSBmaWxlIHdpbGwgYmUgdXBsb2FkZWQgYW5kIHRoZW4gdGhlIG5vZGUgZGVsZXRlZFxuICAgICAqIHRvIHByZXZlbnQgaGF2aW5nIGZpbGVzIHRoYXQgd2VyZSBhYm9ydGVkIGJ1dCBzdGlsbCB1cGxvYWRlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlcyBPbmUgb3IgbW9yZSBzZXBhcmF0ZSBwYXJhbWV0ZXJzIG9yIGFuIGFycmF5IG9mIGZpbGVzIHNwZWNpZnlpbmcgdXBsb2FkcyB0byBjYW5jZWxcbiAgICAgKi9cbiAgICBjYW5jZWxVcGxvYWQoLi4uZmlsZXM6IEZpbGVNb2RlbFtdKSB7XG4gICAgICAgIGZpbGVzLmZvckVhY2goKGZpbGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLmNhY2hlW2ZpbGUubmFtZV07XG4gICAgICAgICAgICBpZiAocHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2F2ZVRvQWJvcnRGaWxlKGZpbGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21pc2UuYWJvcnQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFib3J0ZWRGaWxlID0gZmlsZS5uYW1lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5jYWNoZVtmaWxlLm5hbWVdO1xuICAgICAgICAgICAgICAgIHByb21pc2UubmV4dCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwZXJmb3JtQWN0aW9uID0gdGhpcy5nZXRBY3Rpb24oZmlsZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAocGVyZm9ybUFjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBwZXJmb3JtQWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQ2xlYXJzIHRoZSB1cGxvYWQgcXVldWUgKi9cbiAgICBjbGVhclF1ZXVlKCkge1xuICAgICAgICB0aGlzLnF1ZXVlID0gW107XG4gICAgICAgIHRoaXMudG90YWxDb21wbGV0ZSA9IDA7XG4gICAgICAgIHRoaXMudG90YWxBYm9ydGVkID0gMDtcbiAgICAgICAgdGhpcy50b3RhbEVycm9yID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFuIHVwbG9hZCBwcm9taXNlIGZvciBhIGZpbGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZSBUaGUgdGFyZ2V0IGZpbGVcbiAgICAgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgaWYgdGhlIHVwbG9hZCBpcyBzdWNjZXNzZnVsIG9yIGVycm9yIG90aGVyd2lzZVxuICAgICAqL1xuICAgIGdldFVwbG9hZFByb21pc2UoZmlsZTogRmlsZU1vZGVsKTogYW55IHtcbiAgICAgICAgY29uc3Qgb3B0czogYW55ID0ge1xuICAgICAgICAgICAgaW5jbHVkZTogWydhbGxvd2FibGVPcGVyYXRpb25zJ11cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5pc1RodW1ibmFpbEdlbmVyYXRpb25FbmFibGVkKSB7XG4gICAgICAgICAgICBvcHRzLnJlbmRpdGlvbnMgPSAnZG9jbGliJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlLm9wdGlvbnM/LnZlcnNpb25pbmdFbmFibGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9wdHMudmVyc2lvbmluZ0VuYWJsZWQgPSBmaWxlLm9wdGlvbnMudmVyc2lvbmluZ0VuYWJsZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsZS5vcHRpb25zLm5ld1ZlcnNpb24gPT09IHRydWUpIHtcbiAgICAgICAgICAgIG9wdHMub3ZlcndyaXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIG9wdHMubWFqb3JWZXJzaW9uID0gZmlsZS5vcHRpb25zLm1ham9yVmVyc2lvbjtcbiAgICAgICAgICAgIG9wdHMuY29tbWVudCA9IGZpbGUub3B0aW9ucy5jb21tZW50O1xuICAgICAgICAgICAgb3B0cy5uYW1lID0gZmlsZS5uYW1lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3B0cy5hdXRvUmVuYW1lID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlLm9wdGlvbnMubm9kZVR5cGUpIHtcbiAgICAgICAgICAgIG9wdHMubm9kZVR5cGUgPSBmaWxlLm9wdGlvbnMubm9kZVR5cGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsZS5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZXNBcGkudXBkYXRlTm9kZUNvbnRlbnQoZmlsZS5pZCwgZmlsZS5maWxlIGFzIGFueSwgb3B0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBub2RlQm9keTogTm9kZUJvZHlDcmVhdGUgPSB7IC4uLmZpbGUub3B0aW9ucywgbmFtZTogZmlsZS5uYW1lLCBub2RlVHlwZTogZmlsZS5vcHRpb25zLm5vZGVUeXBlIH07XG4gICAgICAgICAgICBkZWxldGUgbm9kZUJvZHlbJ3ZlcnNpb25pbmdFbmFibGVkJ107XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVwbG9hZEFwaS51cGxvYWRGaWxlKGZpbGUuZmlsZSwgZmlsZS5vcHRpb25zLnBhdGgsIGZpbGUub3B0aW9ucy5wYXJlbnRJZCwgbm9kZUJvZHksIG9wdHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaWxlc1RvVXBsb2FkKCk6IEZpbGVNb2RlbFtdIHtcbiAgICAgICAgY29uc3QgY2FjaGVkID0gT2JqZWN0LmtleXModGhpcy5jYWNoZSk7XG4gICAgICAgIGNvbnN0IHRocmVhZHNDb3VudCA9IHRoaXMuZ2V0VGhyZWFkc0NvdW50KCk7XG5cbiAgICAgICAgaWYgKGNhY2hlZC5sZW5ndGggPj0gdGhyZWFkc0NvdW50KSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlcyA9IHRoaXMucXVldWVcbiAgICAgICAgICAgIC5maWx0ZXIoKHRvVXBsb2FkKSA9PiAhY2FjaGVkLmluY2x1ZGVzKHRvVXBsb2FkLm5hbWUpICYmIHRvVXBsb2FkLnN0YXR1cyA9PT0gRmlsZVVwbG9hZFN0YXR1cy5QZW5kaW5nKVxuICAgICAgICAgICAgLnNsaWNlKDAsIHRocmVhZHNDb3VudCk7XG5cbiAgICAgICAgcmV0dXJuIGZpbGVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmVnaW5VcGxvYWQoZmlsZTogRmlsZU1vZGVsLCBzdWNjZXNzRW1pdHRlcj86IEV2ZW50RW1pdHRlcjxhbnk+LCBlcnJvckVtaXR0ZXI/OiBFdmVudEVtaXR0ZXI8YW55Pik6IGFueSB7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLmdldFVwbG9hZFByb21pc2UoZmlsZSk7XG4gICAgICAgIHByb21pc2VcbiAgICAgICAgICAgIC5vbigncHJvZ3Jlc3MnLCAocHJvZ3Jlc3M6IEZpbGVVcGxvYWRQcm9ncmVzcykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25VcGxvYWRQcm9ncmVzcyhmaWxlLCBwcm9ncmVzcyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm9uKCdhYm9ydCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uVXBsb2FkQWJvcnRlZChmaWxlKTtcbiAgICAgICAgICAgICAgICBpZiAoc3VjY2Vzc0VtaXR0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc0VtaXR0ZXIuZW1pdCh7IHZhbHVlOiAnRmlsZSBhYm9ydGVkJyB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uVXBsb2FkRXJyb3IoZmlsZSwgZXJyKTtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JFbWl0dGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRW1pdHRlci5lbWl0KHsgdmFsdWU6ICdFcnJvciBmaWxlIHVwbG9hZGVkJyB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm9uKCdzdWNjZXNzJywgKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hYm9ydGVkRmlsZSA9PT0gZmlsZS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25VcGxvYWRBYm9ydGVkKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZS5pZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUFib3J0ZWROb2RlKGRhdGEuZW50cnkuaWQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWxldGVBYm9ydGVkTm9kZVZlcnNpb24oZGF0YS5lbnRyeS5pZCwgZGF0YS5lbnRyeS5wcm9wZXJ0aWVzWydjbTp2ZXJzaW9uTGFiZWwnXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3NFbWl0dGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzRW1pdHRlci5lbWl0KHsgdmFsdWU6ICdGaWxlIGRlbGV0ZWQnIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblVwbG9hZENvbXBsZXRlKGZpbGUsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3VjY2Vzc0VtaXR0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NFbWl0dGVyLmVtaXQoeyB2YWx1ZTogZGF0YSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge30pO1xuXG4gICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25VcGxvYWRTdGFydGluZyhmaWxlOiBGaWxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgICAgIGZpbGUuc3RhdHVzID0gRmlsZVVwbG9hZFN0YXR1cy5TdGFydGluZztcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEZpbGVVcGxvYWRFdmVudChmaWxlLCBGaWxlVXBsb2FkU3RhdHVzLlN0YXJ0aW5nKTtcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZC5uZXh0KGV2ZW50KTtcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZFN0YXJ0aW5nLm5leHQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblVwbG9hZFByb2dyZXNzKGZpbGU6IEZpbGVNb2RlbCwgcHJvZ3Jlc3M6IEZpbGVVcGxvYWRQcm9ncmVzcyk6IHZvaWQge1xuICAgICAgICBpZiAoZmlsZSkge1xuICAgICAgICAgICAgZmlsZS5wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgICAgICAgICAgZmlsZS5zdGF0dXMgPSBGaWxlVXBsb2FkU3RhdHVzLlByb2dyZXNzO1xuXG4gICAgICAgICAgICBjb25zdCBldmVudCA9IG5ldyBGaWxlVXBsb2FkRXZlbnQoZmlsZSwgRmlsZVVwbG9hZFN0YXR1cy5Qcm9ncmVzcyk7XG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWQubmV4dChldmVudCk7XG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRQcm9ncmVzcy5uZXh0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25VcGxvYWRFcnJvcihmaWxlOiBGaWxlTW9kZWwsIGVycm9yOiB7IHN0YXR1cz86IG51bWJlciB9KTogdm9pZCB7XG4gICAgICAgIGlmIChmaWxlKSB7XG4gICAgICAgICAgICBmaWxlLmVycm9yQ29kZSA9IGVycm9yPy5zdGF0dXM7XG4gICAgICAgICAgICBmaWxlLnN0YXR1cyA9IEZpbGVVcGxvYWRTdGF0dXMuRXJyb3I7XG4gICAgICAgICAgICB0aGlzLnRvdGFsRXJyb3IrKztcblxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuY2FjaGVbZmlsZS5uYW1lXTtcbiAgICAgICAgICAgIGlmIChwcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuY2FjaGVbZmlsZS5uYW1lXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRmlsZVVwbG9hZEVycm9yRXZlbnQoZmlsZSwgZXJyb3IsIHRoaXMudG90YWxFcnJvcik7XG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWQubmV4dChldmVudCk7XG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRFcnJvci5uZXh0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25VcGxvYWRDb21wbGV0ZShmaWxlOiBGaWxlTW9kZWwsIGRhdGE6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoZmlsZSkge1xuICAgICAgICAgICAgZmlsZS5zdGF0dXMgPSBGaWxlVXBsb2FkU3RhdHVzLkNvbXBsZXRlO1xuICAgICAgICAgICAgZmlsZS5kYXRhID0gZGF0YTtcbiAgICAgICAgICAgIHRoaXMudG90YWxDb21wbGV0ZSsrO1xuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuY2FjaGVbZmlsZS5uYW1lXTtcbiAgICAgICAgICAgIGlmIChwcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuY2FjaGVbZmlsZS5uYW1lXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRmlsZVVwbG9hZENvbXBsZXRlRXZlbnQoZmlsZSwgdGhpcy50b3RhbENvbXBsZXRlLCBkYXRhLCB0aGlzLnRvdGFsQWJvcnRlZCk7XG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWQubmV4dChldmVudCk7XG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRDb21wbGV0ZS5uZXh0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25VcGxvYWRBYm9ydGVkKGZpbGU6IEZpbGVNb2RlbCk6IHZvaWQge1xuICAgICAgICBpZiAoZmlsZSkge1xuICAgICAgICAgICAgZmlsZS5zdGF0dXMgPSBGaWxlVXBsb2FkU3RhdHVzLkFib3J0ZWQ7XG4gICAgICAgICAgICB0aGlzLnRvdGFsQWJvcnRlZCsrO1xuXG4gICAgICAgICAgICBjb25zdCBldmVudCA9IG5ldyBGaWxlVXBsb2FkRXZlbnQoZmlsZSwgRmlsZVVwbG9hZFN0YXR1cy5BYm9ydGVkKTtcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZC5uZXh0KGV2ZW50KTtcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEFib3J0ZWQubmV4dChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uVXBsb2FkQ2FuY2VsbGVkKGZpbGU6IEZpbGVNb2RlbCk6IHZvaWQge1xuICAgICAgICBpZiAoZmlsZSkge1xuICAgICAgICAgICAgZmlsZS5zdGF0dXMgPSBGaWxlVXBsb2FkU3RhdHVzLkNhbmNlbGxlZDtcblxuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRmlsZVVwbG9hZEV2ZW50KGZpbGUsIEZpbGVVcGxvYWRTdGF0dXMuQ2FuY2VsbGVkKTtcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZC5uZXh0KGV2ZW50KTtcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZENhbmNlbGxlZC5uZXh0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25VcGxvYWREZWxldGVkKGZpbGU6IEZpbGVNb2RlbCk6IHZvaWQge1xuICAgICAgICBpZiAoZmlsZSkge1xuICAgICAgICAgICAgZmlsZS5zdGF0dXMgPSBGaWxlVXBsb2FkU3RhdHVzLkRlbGV0ZWQ7XG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGxldGUtLTtcblxuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRmlsZVVwbG9hZERlbGV0ZUV2ZW50KGZpbGUsIHRoaXMudG90YWxDb21wbGV0ZSk7XG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWQubmV4dChldmVudCk7XG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWREZWxldGVkLm5leHQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBY3Rpb24oZmlsZTogRmlsZU1vZGVsKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbnMgPSB7XG4gICAgICAgICAgICBbRmlsZVVwbG9hZFN0YXR1cy5QZW5kaW5nXTogKCkgPT4gdGhpcy5vblVwbG9hZENhbmNlbGxlZChmaWxlKSxcbiAgICAgICAgICAgIFtGaWxlVXBsb2FkU3RhdHVzLkRlbGV0ZWRdOiAoKSA9PiB0aGlzLm9uVXBsb2FkRGVsZXRlZChmaWxlKSxcbiAgICAgICAgICAgIFtGaWxlVXBsb2FkU3RhdHVzLkVycm9yXTogKCkgPT4gdGhpcy5vblVwbG9hZEVycm9yKGZpbGUsIG51bGwpXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGFjdGlvbnNbZmlsZS5zdGF0dXNdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVsZXRlQWJvcnRlZE5vZGUobm9kZUlkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5ub2Rlc0FwaS5kZWxldGVOb2RlKG5vZGVJZCwgeyBwZXJtYW5lbnQ6IHRydWUgfSkudGhlbigoKSA9PiAodGhpcy5hYm9ydGVkRmlsZSA9IHVuZGVmaW5lZCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVsZXRlQWJvcnRlZE5vZGVWZXJzaW9uKG5vZGVJZDogc3RyaW5nLCB2ZXJzaW9uSWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnZlcnNpb25zQXBpLmRlbGV0ZVZlcnNpb24obm9kZUlkLCB2ZXJzaW9uSWQpLnRoZW4oKCkgPT4gKHRoaXMuYWJvcnRlZEZpbGUgPSB1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU2F2ZVRvQWJvcnRGaWxlKGZpbGU6IEZpbGVNb2RlbCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmlsZS5zaXplID4gTUlOX0NBTkNFTExBQkxFX0ZJTEVfU0laRSAmJiBmaWxlLnByb2dyZXNzLnBlcmNlbnQgPCBNQVhfQ0FOQ0VMTEFCTEVfRklMRV9QRVJDRU5UQUdFO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmlsdGVyRWxlbWVudChmaWxlOiBGaWxlTW9kZWwpIHtcbiAgICAgICAgdGhpcy5leGNsdWRlZEZpbGVMaXN0ID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldDxzdHJpbmdbXT4oJ2ZpbGVzLmV4Y2x1ZGVkJyk7XG4gICAgICAgIHRoaXMuZXhjbHVkZWRGb2xkZXJzTGlzdCA9IHRoaXMuYXBwQ29uZmlnU2VydmljZS5nZXQ8c3RyaW5nW10+KCdmb2xkZXJzLmV4Y2x1ZGVkJyk7XG4gICAgICAgIGxldCBpc0FsbG93ZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLmV4Y2x1ZGVkRmlsZUxpc3QpIHtcbiAgICAgICAgICAgIHRoaXMubWF0Y2hpbmdPcHRpb25zID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldCgnZmlsZXMubWF0Y2gtb3B0aW9ucycpO1xuICAgICAgICAgICAgaXNBbGxvd2VkID0gdGhpcy5pc0ZpbGVOYW1lQWxsb3dlZChmaWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0FsbG93ZWQgJiYgdGhpcy5leGNsdWRlZEZvbGRlcnNMaXN0KSB7XG4gICAgICAgICAgICB0aGlzLmZvbGRlck1hdGNoaW5nT3B0aW9ucyA9IHRoaXMuYXBwQ29uZmlnU2VydmljZS5nZXQoJ2ZvbGRlcnMubWF0Y2gtb3B0aW9ucycpO1xuICAgICAgICAgICAgaXNBbGxvd2VkID0gdGhpcy5pc1BhcmVudEZvbGRlckFsbG93ZWQoZmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzQWxsb3dlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUGFyZW50Rm9sZGVyQWxsb3dlZChmaWxlOiBGaWxlTW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGlzQWxsb3dlZDogYm9vbGVhbiA9IHRydWU7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRGaWxlOiBhbnkgPSBmaWxlLmZpbGU7XG4gICAgICAgIGNvbnN0IGZpbGVSZWxhdGl2ZVBhdGggPSBjdXJyZW50RmlsZS53ZWJraXRSZWxhdGl2ZVBhdGggPyBjdXJyZW50RmlsZS53ZWJraXRSZWxhdGl2ZVBhdGggOiBmaWxlLm9wdGlvbnMucGF0aDtcbiAgICAgICAgaWYgKGN1cnJlbnRGaWxlICYmIGZpbGVSZWxhdGl2ZVBhdGgpIHtcbiAgICAgICAgICAgIGlzQWxsb3dlZCA9XG4gICAgICAgICAgICAgICAgdGhpcy5leGNsdWRlZEZvbGRlcnNMaXN0LmZpbHRlcigoZm9sZGVyVG9FeGNsdWRlKSA9PlxuICAgICAgICAgICAgICAgICAgICBmaWxlUmVsYXRpdmVQYXRoLnNwbGl0KCcvJykuc29tZSgocGF0aEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbmltYXRjaCA9IG5ldyBNaW5pbWF0Y2goZm9sZGVyVG9FeGNsdWRlLCB0aGlzLmZvbGRlck1hdGNoaW5nT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWluaW1hdGNoLm1hdGNoKHBhdGhFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBbGxvd2VkO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaWxlTmFtZUFsbG93ZWQoZmlsZTogRmlsZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLmV4Y2x1ZGVkRmlsZUxpc3QuZmlsdGVyKChwYXR0ZXJuKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWluaW1hdGNoID0gbmV3IE1pbmltYXRjaChwYXR0ZXJuLCB0aGlzLm1hdGNoaW5nT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1pbmltYXRjaC5tYXRjaChmaWxlLm5hbWUpO1xuICAgICAgICAgICAgfSkubGVuZ3RoID09PSAwXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,54 @@
|
|
|
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 { CommonModule } from '@angular/common';
|
|
18
|
+
import { Component, Input, ViewEncapsulation } from '@angular/core';
|
|
19
|
+
import { MatExpansionModule } from '@angular/material/expansion';
|
|
20
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
21
|
+
import { TranslatePipe } from '@ngx-translate/core';
|
|
22
|
+
import * as i0 from "@angular/core";
|
|
23
|
+
import * as i1 from "@angular/common";
|
|
24
|
+
import * as i2 from "@angular/material/icon";
|
|
25
|
+
import * as i3 from "@angular/material/expansion";
|
|
26
|
+
export class ContentMetadataHeaderComponent {
|
|
27
|
+
constructor() {
|
|
28
|
+
this.title = null;
|
|
29
|
+
this.expanded = true;
|
|
30
|
+
}
|
|
31
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentMetadataHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ContentMetadataHeaderComponent, isStandalone: true, selector: "adf-content-metadata-header", inputs: { title: "title", expanded: "expanded" }, ngImport: i0, template: `
|
|
33
|
+
<ng-container>
|
|
34
|
+
<mat-icon>{{ expanded ? 'expand_more' : 'chevron_right' }}</mat-icon>
|
|
35
|
+
<mat-panel-title *ngIf="title" class="adf-metadata-properties-title" [title]="title | translate">{{ title | translate }}</mat-panel-title>
|
|
36
|
+
<ng-content />
|
|
37
|
+
</ng-container>
|
|
38
|
+
`, isInline: true, styles: ["adf-content-metadata-header{display:flex;align-items:center;width:100%}.adf-metadata-properties-title{display:block;overflow:hidden;text-overflow:ellipsis;font-weight:700;font-size:15px;padding-left:12px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i3.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
39
|
+
}
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentMetadataHeaderComponent, decorators: [{
|
|
41
|
+
type: Component,
|
|
42
|
+
args: [{ standalone: true, imports: [CommonModule, MatIconModule, MatExpansionModule, TranslatePipe], selector: 'adf-content-metadata-header', encapsulation: ViewEncapsulation.None, template: `
|
|
43
|
+
<ng-container>
|
|
44
|
+
<mat-icon>{{ expanded ? 'expand_more' : 'chevron_right' }}</mat-icon>
|
|
45
|
+
<mat-panel-title *ngIf="title" class="adf-metadata-properties-title" [title]="title | translate">{{ title | translate }}</mat-panel-title>
|
|
46
|
+
<ng-content />
|
|
47
|
+
</ng-container>
|
|
48
|
+
`, styles: ["adf-content-metadata-header{display:flex;align-items:center;width:100%}.adf-metadata-properties-title{display:block;overflow:hidden;text-overflow:ellipsis;font-weight:700;font-size:15px;padding-left:12px}\n"] }]
|
|
49
|
+
}], propDecorators: { title: [{
|
|
50
|
+
type: Input
|
|
51
|
+
}], expanded: [{
|
|
52
|
+
type: Input
|
|
53
|
+
}] } });
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1tZXRhZGF0YS1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9jb250ZW50LW1ldGFkYXRhL2NvbXBvbmVudHMvY29udGVudC1tZXRhZGF0YS9jb250ZW50LW1ldGFkYXRhLWhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBaUNwRCxNQUFNLE9BQU8sOEJBQThCO0lBL0IzQztRQWdDYSxVQUFLLEdBQVcsSUFBSSxDQUFDO1FBQ3JCLGFBQVEsR0FBRyxJQUFJLENBQUM7S0FDNUI7K0dBSFksOEJBQThCO21HQUE5Qiw4QkFBOEIseUlBUjdCOzs7Ozs7S0FNVCx1UkEzQlMsWUFBWSxrSUFBRSxhQUFhLG1MQUFFLGtCQUFrQiwrR0FBRSxhQUFhOzs0RkE2Qi9ELDhCQUE4QjtrQkEvQjFDLFNBQVM7aUNBQ00sSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLENBQUMsWUFDL0QsNkJBQTZCLGlCQUN4QixpQkFBaUIsQ0FBQyxJQUFJLFlBbUIzQjs7Ozs7O0tBTVQ7OEJBR1EsS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRFeHBhbnNpb25Nb2R1bGUsIFRyYW5zbGF0ZVBpcGVdLFxuICAgIHNlbGVjdG9yOiAnYWRmLWNvbnRlbnQtbWV0YWRhdGEtaGVhZGVyJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlczogW1xuICAgICAgICBgXG4gICAgICAgICAgICBhZGYtY29udGVudC1tZXRhZGF0YS1oZWFkZXIge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmFkZi1tZXRhZGF0YS1wcm9wZXJ0aWVzLXRpdGxlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTJweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgYFxuICAgIF0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj57eyBleHBhbmRlZCA/ICdleHBhbmRfbW9yZScgOiAnY2hldnJvbl9yaWdodCcgfX08L21hdC1pY29uPlxuICAgICAgICAgICAgPG1hdC1wYW5lbC10aXRsZSAqbmdJZj1cInRpdGxlXCIgY2xhc3M9XCJhZGYtbWV0YWRhdGEtcHJvcGVydGllcy10aXRsZVwiIFt0aXRsZV09XCJ0aXRsZSB8IHRyYW5zbGF0ZVwiPnt7IHRpdGxlIHwgdHJhbnNsYXRlIH19PC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICBgXG59KVxuZXhwb3J0IGNsYXNzIENvbnRlbnRNZXRhZGF0YUhlYWRlckNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9IG51bGw7XG4gICAgQElucHV0KCkgZXhwYW5kZWQgPSB0cnVlO1xufVxuIl19
|