@alfresco/adf-content-services 8.1.0-15902121227 → 8.1.0-15972188736
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/adf-content-services.mjs +808 -829
- package/fesm2022/adf-content-services.mjs.map +1 -1
- 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 +4 -6
- 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 -78
- package/esm2022/lib/aspect-list/aspect-list.component.mjs +0 -140
- 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 -167
- package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +0 -35
- package/esm2022/lib/breadcrumb/dropdown-breadcrumb.component.mjs +0 -66
- 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 -309
- 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 -55
- package/esm2022/lib/content-metadata/components/content-metadata/content-metadata.component.mjs +0 -491
- package/esm2022/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.mjs +0 -129
- 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 -618
- 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 -206
- 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 -288
- 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 -58
- 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 -52
- 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 -147
- package/esm2022/lib/dialogs/index.mjs +0 -18
- package/esm2022/lib/dialogs/library/library.dialog.mjs +0 -225
- package/esm2022/lib/dialogs/node-lock/node-lock.dialog.mjs +0 -116
- 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 -60
- 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 -964
- 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 -43
- 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 -133
- package/esm2022/lib/document-list/components/library-role-column/library-role-column.component.mjs +0 -93
- package/esm2022/lib/document-list/components/library-status-column/library-status-column.component.mjs +0 -88
- package/esm2022/lib/document-list/components/name-column/name-column.component.mjs +0 -120
- 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 -79
- 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 -75
- 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 -44
- 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 -124
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-panel.component.mjs +0 -103
- package/esm2022/lib/permission-manager/components/add-permission/add-permission.component.mjs +0 -70
- 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 -103
- package/esm2022/lib/permission-manager/components/permission-list/permission-list.component.mjs +0 -88
- 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 -112
- 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 -159
- 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 -170
- package/esm2022/lib/search/components/search-chip-list/search-chip-list.component.mjs +0 -47
- package/esm2022/lib/search/components/search-control.component.mjs +0 -181
- 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 -197
- 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 -224
- 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 -133
- 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 -46
- package/esm2022/lib/search/components/search-filter/search-filter.component.mjs +0 -81
- 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 -155
- 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 -105
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.mjs +0 -110
- 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 -64
- package/esm2022/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.mjs +0 -44
- package/esm2022/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.mjs +0 -110
- 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 -123
- 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 -64
- package/esm2022/lib/search/components/search-form/index.mjs +0 -18
- package/esm2022/lib/search/components/search-form/search-form.component.mjs +0 -53
- package/esm2022/lib/search/components/search-input/index.mjs +0 -18
- package/esm2022/lib/search/components/search-input/search-input.component.mjs +0 -109
- 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 -164
- 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 -155
- 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 -146
- package/esm2022/lib/search/components/search-slider/index.mjs +0 -18
- package/esm2022/lib/search/components/search-slider/search-slider.component.mjs +0 -120
- 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 -135
- 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 -153
- 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 -115
- 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 -371
- package/esm2022/lib/testing/content.testing.module.mjs +0 -56
- package/esm2022/lib/tree/components/tree.component.mjs +0 -313
- 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 -76
- 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 -191
- package/esm2022/lib/upload/components/file-uploading-list-row.component.mjs +0 -93
- package/esm2022/lib/upload/components/file-uploading-list.component.mjs +0 -124
- package/esm2022/lib/upload/components/upload-button.component.mjs +0 -134
- 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 -55
- 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 -43
- package/esm2022/lib/version-manager/version-list.component.mjs +0 -216
- package/esm2022/lib/version-manager/version-manager.component.mjs +0 -146
- package/esm2022/lib/version-manager/version-manager.module.mjs +0 -48
- package/esm2022/lib/version-manager/version-upload.component.mjs +0 -155
- package/esm2022/lib/viewer/alfresco-viewer.module.mjs +0 -33
- package/esm2022/lib/viewer/components/alfresco-viewer.component.mjs +0 -409
- 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,309 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
import { Category } from '@alfresco/js-api';
|
|
18
|
-
import { Component, DestroyRef, ElementRef, EventEmitter, inject, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
19
|
-
import { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
20
|
-
import { EMPTY, Observable, Subject, timer } from 'rxjs';
|
|
21
|
-
import { debounce, first, map, tap } from 'rxjs/operators';
|
|
22
|
-
import { CategoriesManagementMode } from './categories-management-mode';
|
|
23
|
-
import { CategoryService } from '../services/category.service';
|
|
24
|
-
import { CommonModule } from '@angular/common';
|
|
25
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
26
|
-
import { AutoFocusDirective } from '../../directives';
|
|
27
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
28
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
29
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
30
|
-
import { MatListModule } from '@angular/material/list';
|
|
31
|
-
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
32
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
33
|
-
import * as i0 from "@angular/core";
|
|
34
|
-
import * as i1 from "../services/category.service";
|
|
35
|
-
import * as i2 from "@angular/common";
|
|
36
|
-
import * as i3 from "@ngx-translate/core";
|
|
37
|
-
import * as i4 from "@angular/forms";
|
|
38
|
-
import * as i5 from "@angular/material/form-field";
|
|
39
|
-
import * as i6 from "@angular/material/button";
|
|
40
|
-
import * as i7 from "@angular/material/icon";
|
|
41
|
-
import * as i8 from "@angular/material/list";
|
|
42
|
-
import * as i9 from "@angular/material/progress-spinner";
|
|
43
|
-
export class CategoriesManagementComponent {
|
|
44
|
-
/**
|
|
45
|
-
* Decides if categoryNameControl should be visible. Sets also existing categories panel visibility
|
|
46
|
-
* and scrolls control into view when visible.
|
|
47
|
-
*
|
|
48
|
-
* @param categoryNameControlVisible control visibility.
|
|
49
|
-
*/
|
|
50
|
-
set categoryNameControlVisible(categoryNameControlVisible) {
|
|
51
|
-
this._categoryNameControlVisible = categoryNameControlVisible;
|
|
52
|
-
if (categoryNameControlVisible) {
|
|
53
|
-
setTimeout(() => {
|
|
54
|
-
this.categoryNameInputElement.nativeElement.scrollIntoView();
|
|
55
|
-
});
|
|
56
|
-
this._existingCategoriesPanelVisible = true;
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
this._existingCategoriesPanelVisible = false;
|
|
60
|
-
this.clearCategoryNameInput();
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
get categoryNameControlVisible() {
|
|
64
|
-
return this._categoryNameControlVisible;
|
|
65
|
-
}
|
|
66
|
-
constructor(categoryService) {
|
|
67
|
-
this.categoryService = categoryService;
|
|
68
|
-
this.nameErrorMessagesByErrors = new Map([
|
|
69
|
-
['duplicatedExistingCategory', 'ALREADY_EXISTS'],
|
|
70
|
-
['duplicatedCategory', 'DUPLICATED_CATEGORY'],
|
|
71
|
-
['emptyCategory', 'EMPTY_CATEGORY'],
|
|
72
|
-
['required', 'REQUIRED']
|
|
73
|
-
]);
|
|
74
|
-
this.existingCategoryLoaded$ = new Subject();
|
|
75
|
-
this.cancelExistingCategoriesLoading$ = new Subject();
|
|
76
|
-
this._categoryNameControl = new FormControl('', [this.validateIfNotAlreadyAdded.bind(this), this.validateEmptyCategory, Validators.required], this.validateIfNotAlreadyCreated.bind(this));
|
|
77
|
-
this._categoryNameErrorMessageKey = '';
|
|
78
|
-
this._existingCategoriesLoading = false;
|
|
79
|
-
this._typing = false;
|
|
80
|
-
this._categoryNameControlVisible = false;
|
|
81
|
-
this.existingCategoriesListLimit = 15;
|
|
82
|
-
this.initialCategories = [];
|
|
83
|
-
this.noCategoriesMsg = '';
|
|
84
|
-
this.removeCategoryTitle = '';
|
|
85
|
-
this.existingCategoriesMsg = '';
|
|
86
|
-
/** Categories to display initially */
|
|
87
|
-
this.categories = [];
|
|
88
|
-
/** Disables remove button in upper categories list */
|
|
89
|
-
this.disableRemoval = false;
|
|
90
|
-
/** Toggles multiselect mode */
|
|
91
|
-
this.multiSelect = true;
|
|
92
|
-
/** Emits when state of upper categories list changes */
|
|
93
|
-
this.categoriesChange = new EventEmitter();
|
|
94
|
-
/** Emits when categoryNameControl visibility changes */
|
|
95
|
-
this.categoryNameControlVisibleChange = new EventEmitter();
|
|
96
|
-
this.destroyRef = inject(DestroyRef);
|
|
97
|
-
}
|
|
98
|
-
ngOnInit() {
|
|
99
|
-
this.categoryNameControl.valueChanges
|
|
100
|
-
.pipe(map((name) => name.trim()), tap((name) => {
|
|
101
|
-
this._typing = true;
|
|
102
|
-
if (name) {
|
|
103
|
-
this._existingCategoriesLoading = true;
|
|
104
|
-
this._existingCategoriesPanelVisible = true;
|
|
105
|
-
}
|
|
106
|
-
this.cancelExistingCategoriesLoading$.next();
|
|
107
|
-
}), debounce((name) => (name ? timer(300) : EMPTY)), takeUntilDestroyed(this.destroyRef))
|
|
108
|
-
.subscribe((name) => this.onNameControlValueChange(name));
|
|
109
|
-
this.categoryNameControl.statusChanges
|
|
110
|
-
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
111
|
-
.subscribe(() => this.setCategoryNameControlErrorMessageKey());
|
|
112
|
-
this.setCategoryNameControlErrorMessageKey();
|
|
113
|
-
this.noCategoriesMsg = this.isCRUDMode ? 'CATEGORIES_MANAGEMENT.NO_CATEGORIES_CREATED' : 'CATEGORIES_MANAGEMENT.NO_CATEGORIES_ASSIGNED';
|
|
114
|
-
this.removeCategoryTitle = this.isCRUDMode ? 'CATEGORIES_MANAGEMENT.DELETE_CATEGORY' : 'CATEGORIES_MANAGEMENT.UNASSIGN_CATEGORY';
|
|
115
|
-
this.existingCategoriesMsg = this.isCRUDMode ? 'CATEGORIES_MANAGEMENT.EXISTING_CATEGORIES' : 'CATEGORIES_MANAGEMENT.SELECT_EXISTING_CATEGORY';
|
|
116
|
-
if (!this.isCRUDMode) {
|
|
117
|
-
this._categoryNameControl.removeValidators(Validators.required);
|
|
118
|
-
this.categories.forEach((category) => this.initialCategories.push(category));
|
|
119
|
-
if (this.classifiableChanged) {
|
|
120
|
-
this.classifiableChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
|
|
121
|
-
this.categories = [];
|
|
122
|
-
this.categoryNameControlVisible = false;
|
|
123
|
-
this.categoryNameControlVisibleChange.emit(false);
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
ngOnDestroy() {
|
|
129
|
-
this.cancelExistingCategoriesLoading$.next();
|
|
130
|
-
this.cancelExistingCategoriesLoading$.complete();
|
|
131
|
-
}
|
|
132
|
-
get categoryNameControl() {
|
|
133
|
-
return this._categoryNameControl;
|
|
134
|
-
}
|
|
135
|
-
/*
|
|
136
|
-
* Returns `true` if categories empty and category panel non editable state, otherwise `false`
|
|
137
|
-
*/
|
|
138
|
-
get showEmptyCategoryMessage() {
|
|
139
|
-
return this.categories.length === 0 && !this.categoryNameControlVisible;
|
|
140
|
-
}
|
|
141
|
-
get existingCategories() {
|
|
142
|
-
return this._existingCategories;
|
|
143
|
-
}
|
|
144
|
-
get categoryNameErrorMessageKey() {
|
|
145
|
-
return this._categoryNameErrorMessageKey;
|
|
146
|
-
}
|
|
147
|
-
get existingCategoriesLoading() {
|
|
148
|
-
return this._existingCategoriesLoading;
|
|
149
|
-
}
|
|
150
|
-
get typing() {
|
|
151
|
-
return this._typing;
|
|
152
|
-
}
|
|
153
|
-
get existingCategoriesPanelVisible() {
|
|
154
|
-
return this._existingCategoriesPanelVisible;
|
|
155
|
-
}
|
|
156
|
-
get isCRUDMode() {
|
|
157
|
-
return this.managementMode === CategoriesManagementMode.CRUD;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Adds category that has been typed to a categoryNameControl and hides it afterwards.
|
|
161
|
-
*/
|
|
162
|
-
addCategory() {
|
|
163
|
-
if (this.isCRUDMode && !this._typing && !this.categoryNameControl.invalid) {
|
|
164
|
-
const newCatName = this.categoryNameControl.value.trim();
|
|
165
|
-
const newCat = new Category({ id: newCatName, name: newCatName });
|
|
166
|
-
this.categories.push(newCat);
|
|
167
|
-
this.clearCategoryNameInput();
|
|
168
|
-
this._existingCategories = null;
|
|
169
|
-
this.categoriesChange.emit(this.categories);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Adds existing category to categories list and removes it from existing categories list.
|
|
174
|
-
*
|
|
175
|
-
* @param category - selection list change containing selected category
|
|
176
|
-
*/
|
|
177
|
-
addCategoryToAssign(category) {
|
|
178
|
-
if (!(this.isCRUDMode || (!this.multiSelect && this.categories.length > 0))) {
|
|
179
|
-
const selectedCategory = category;
|
|
180
|
-
this.categories.push(selectedCategory);
|
|
181
|
-
this._existingCategories.splice(this._existingCategories.indexOf(selectedCategory), 1);
|
|
182
|
-
this.categoryNameControl.updateValueAndValidity();
|
|
183
|
-
this.categoriesChange.emit(this.categories);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Removes the category from categories list and adds it to existing categories list in ASSIGN mode.
|
|
188
|
-
*
|
|
189
|
-
* @param category - category to remove
|
|
190
|
-
*/
|
|
191
|
-
removeCategory(category) {
|
|
192
|
-
this.categories.splice(this.categories.indexOf(category), 1);
|
|
193
|
-
if (!this.isCRUDMode && !!this._existingCategories && !this.initialCategories.some((cat) => cat.id === category.id)) {
|
|
194
|
-
this._existingCategories.push(category);
|
|
195
|
-
this.sortCategoriesList(this._existingCategories);
|
|
196
|
-
}
|
|
197
|
-
this.categoryNameControl.updateValueAndValidity({
|
|
198
|
-
emitEvent: false
|
|
199
|
-
});
|
|
200
|
-
this.categoriesChange.emit(this.categories);
|
|
201
|
-
}
|
|
202
|
-
onNameControlValueChange(name) {
|
|
203
|
-
this.categoryNameControl.markAsTouched();
|
|
204
|
-
if (name) {
|
|
205
|
-
if (this.isCRUDMode) {
|
|
206
|
-
this.getChildrenCategories(name);
|
|
207
|
-
}
|
|
208
|
-
else {
|
|
209
|
-
this.searchForExistingCategories(name);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
else {
|
|
213
|
-
this._existingCategories = null;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
searchForExistingCategories(searchTerm) {
|
|
217
|
-
this.categoryService.searchCategories(searchTerm, 0, this.existingCategoriesListLimit).subscribe((existingCategoriesResult) => {
|
|
218
|
-
this._existingCategories = existingCategoriesResult.list.entries.map((rowEntry) => {
|
|
219
|
-
const existingCat = new Category();
|
|
220
|
-
existingCat.id = rowEntry.entry.id;
|
|
221
|
-
const path = rowEntry.entry.path.name.split('/').splice(3).join('/');
|
|
222
|
-
existingCat.name = path ? `${path}/${rowEntry.entry.name}` : rowEntry.entry.name;
|
|
223
|
-
return existingCat;
|
|
224
|
-
});
|
|
225
|
-
this._existingCategories = this._existingCategories.filter((existingCat) => this.categories.find((category) => existingCat.id === category.id) === undefined);
|
|
226
|
-
this.sortCategoriesList(this._existingCategories);
|
|
227
|
-
this._existingCategoriesLoading = false;
|
|
228
|
-
this._typing = false;
|
|
229
|
-
this.existingCategoryLoaded$.next();
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
getChildrenCategories(searchTerm) {
|
|
233
|
-
this.categoryService.getSubcategories(this.parentId).subscribe((childrenCategories) => {
|
|
234
|
-
this._existingCategories = childrenCategories.list.entries.map((categoryEntry) => categoryEntry.entry);
|
|
235
|
-
this._existingCategories = this._existingCategories.filter((existingCat) => existingCat.name.toLowerCase().includes(searchTerm.toLowerCase()));
|
|
236
|
-
this.sortCategoriesList(this._existingCategories);
|
|
237
|
-
this._existingCategoriesLoading = false;
|
|
238
|
-
this._typing = false;
|
|
239
|
-
this.existingCategoryLoaded$.next();
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
validateIfNotAlreadyAdded(nameControl) {
|
|
243
|
-
return this.categories?.some((category) => this.compareCategories(category, nameControl.value)) && this.isCRUDMode
|
|
244
|
-
? { duplicatedCategory: true }
|
|
245
|
-
: null;
|
|
246
|
-
}
|
|
247
|
-
validateIfNotAlreadyCreated(nameControl) {
|
|
248
|
-
return this.existingCategoryLoaded$.pipe(map(() => this.existingCategories.some((category) => this.compareCategories(category, nameControl.value)) && this.isCRUDMode
|
|
249
|
-
? { duplicatedExistingCategory: true }
|
|
250
|
-
: null), first());
|
|
251
|
-
}
|
|
252
|
-
compareCategories(category1, cat2Name) {
|
|
253
|
-
return category1?.name.trim().toUpperCase() === cat2Name?.trim().toUpperCase();
|
|
254
|
-
}
|
|
255
|
-
validateEmptyCategory(categoryNameControl) {
|
|
256
|
-
return categoryNameControl.value.length && !categoryNameControl.value.trim() ? { emptyCategory: true } : null;
|
|
257
|
-
}
|
|
258
|
-
setCategoryNameControlErrorMessageKey() {
|
|
259
|
-
this._categoryNameErrorMessageKey = this.categoryNameControl.invalid
|
|
260
|
-
? `CATEGORIES_MANAGEMENT.ERRORS.${this.nameErrorMessagesByErrors.get(Object.keys(this.categoryNameControl.errors)[0])}`
|
|
261
|
-
: '';
|
|
262
|
-
}
|
|
263
|
-
sortCategoriesList(categoriesList) {
|
|
264
|
-
categoriesList.sort((category1, category2) => category1.name.localeCompare(category2.name));
|
|
265
|
-
}
|
|
266
|
-
clearCategoryNameInput() {
|
|
267
|
-
this.categoryNameControl.setValue('');
|
|
268
|
-
this.categoryNameControl.markAsUntouched();
|
|
269
|
-
}
|
|
270
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CategoriesManagementComponent, deps: [{ token: i1.CategoryService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
271
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CategoriesManagementComponent, isStandalone: true, selector: "adf-categories-management", inputs: { categories: "categories", categoryNameControlVisible: "categoryNameControlVisible", classifiableChanged: "classifiableChanged", disableRemoval: "disableRemoval", managementMode: "managementMode", parentId: "parentId", multiSelect: "multiSelect" }, outputs: { categoriesChange: "categoriesChange", categoryNameControlVisibleChange: "categoryNameControlVisibleChange" }, viewQueries: [{ propertyName: "categoryNameInputElement", first: true, predicate: ["categoryNameInput"], descendants: true }], ngImport: i0, template: "<div class=\"adf-categories-management\">\n <div *ngIf=\"categoryNameControlVisible\" class=\"adf-category-name-field\">\n <input #categoryNameInput\n [formControl]=\"categoryNameControl\"\n (keyup.enter)=\"addCategory()\"\n placeholder=\"{{'CATEGORIES_MANAGEMENT.CATEGORIES_SEARCH_PLACEHOLDER' | translate }}\"\n adf-auto-focus\n />\n <mat-error *ngIf=\"categoryNameControl.invalid\">{{ categoryNameErrorMessageKey | translate }}</mat-error>\n </div>\n <div class=\"adf-categories-list\" *ngIf=\"categories?.length > 0\" [class.adf-categories-list-fixed]=\"!categoryNameControlVisible\">\n <span\n *ngFor=\"let category of categories\"\n [class.adf-categories-padded]=\"!isCRUDMode\"\n class=\"adf-assigned-categories\">\n {{ category.name }}\n <button\n data-automation-id=\"categories-remove-category-button\"\n mat-icon-button\n (click)=\"removeCategory(category)\"\n [attr.title]=\"removeCategoryTitle | translate\"\n [disabled]=\"disableRemoval\">\n <mat-icon>remove</mat-icon>\n </button>\n </span>\n </div>\n <p *ngIf=\"showEmptyCategoryMessage\" class=\"adf-no-categories-message\">\n {{ noCategoriesMsg | translate }}\n </p>\n</div>\n<div class=\"adf-existing-categories-panel\" *ngIf=\"existingCategoriesPanelVisible\">\n <ng-container *ngIf=\"isCRUDMode && (!existingCategoriesLoading || existingCategories)\">\n <span class=\"adf-create-category-label\"\n (click)=\"addCategory()\"\n tabindex=\"0\"\n role=\"button\"\n (keyup.enter)=\"addCategory()\"\n [hidden]=\"categoryNameControl.invalid || typing\">\n {{ 'CATEGORIES_MANAGEMENT.GENERIC_CREATE' | translate : { name: categoryNameControl.value } }}\n </span>\n </ng-container>\n <div *ngIf=\"categoryNameControlVisible\" class=\"adf-categories-list\">\n <ng-container *ngIf=\"!existingCategoriesLoading && existingCategories\">\n <p class=\"adf-existing-categories-label\">\n {{ existingCategoriesMsg | translate }}\n </p>\n <mat-list\n [disabled]=\"isCRUDMode || !multiSelect && categories.length > 0\"\n class=\"adf-categories-management-list\">\n <mat-list-item\n *ngFor=\"let category of existingCategories\"\n class=\"adf-category\"\n (click)='addCategoryToAssign(category)'>\n {{ category.name }}\n </mat-list-item>\n <p *ngIf=\"!existingCategories?.length && !existingCategoriesLoading\"\n data-automation-id=\"no-categories-message\">\n {{ 'CATEGORIES_MANAGEMENT.NO_EXISTING_CATEGORIES' | translate }}\n </p>\n </mat-list>\n </ng-container>\n <mat-spinner\n *ngIf=\"existingCategoriesLoading\"\n [diameter]=\"50\"\n class=\"adf-categories-management-spinner\"\n [attr.aria-label]=\"'CATEGORIES_MANAGEMENT.LOADING' | translate\" />\n </div>\n</div>\n", styles: [".adf-categories-management .adf-category-name-field{display:flex;flex-direction:column;margin-right:12px}.adf-categories-management .adf-category-name-field input{background:var(--adf-metadata-buttons-background-color);border-radius:12px;padding:7px 8px;border:none;outline:none;font:inherit;color:currentcolor;margin:0;vertical-align:bottom;text-align:inherit;box-sizing:content-box}.adf-categories-management .adf-category-name-field .mat-mdc-form-field-error{padding-top:5px}.adf-categories-management .adf-assigned-categories{display:flex;justify-content:space-between;align-items:center;word-break:break-word}.adf-categories-management .adf-categories-padded{padding:5px 0}.adf-categories-management [hidden]{visibility:hidden}.adf-categories-management .adf-no-categories-message{margin-bottom:0;height:30px}.adf-categories-list .adf-categories-management-list .adf-category{display:flex;height:100%;overflow-wrap:anywhere;padding:5px 0;font-size:14px;background-color:inherit;color:inherit}.adf-categories-list .adf-categories-management-list .adf-category:not(.mdc-list-item--disabled):hover{cursor:pointer;background:var(--adf-theme-mat-grey-color-a200)}.adf-categories-list .adf-categories-management-list .adf-category span{padding:0}.adf-categories-list .adf-existing-categories-label{font-size:10px;color:var(--theme-secondary-text-color);margin-bottom:2px}.adf-categories-list .adf-categories-management-spinner{margin:auto}.adf-existing-categories-panel{min-height:22vh}.adf-existing-categories-panel .adf-create-category-label{color:var(--theme-primary-color);cursor:pointer;overflow-wrap:anywhere}.adf-existing-categories-panel .mdc-list-item--disabled .mdc-list-item__primary-text{opacity:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "directive", type: AutoFocusDirective, selector: "[adf-auto-focus]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i8.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i8.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
272
|
-
}
|
|
273
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CategoriesManagementComponent, decorators: [{
|
|
274
|
-
type: Component,
|
|
275
|
-
args: [{ selector: 'adf-categories-management', standalone: true, imports: [
|
|
276
|
-
CommonModule,
|
|
277
|
-
TranslateModule,
|
|
278
|
-
AutoFocusDirective,
|
|
279
|
-
ReactiveFormsModule,
|
|
280
|
-
MatFormFieldModule,
|
|
281
|
-
MatButtonModule,
|
|
282
|
-
MatIconModule,
|
|
283
|
-
MatListModule,
|
|
284
|
-
MatProgressSpinnerModule
|
|
285
|
-
], encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-categories-management\">\n <div *ngIf=\"categoryNameControlVisible\" class=\"adf-category-name-field\">\n <input #categoryNameInput\n [formControl]=\"categoryNameControl\"\n (keyup.enter)=\"addCategory()\"\n placeholder=\"{{'CATEGORIES_MANAGEMENT.CATEGORIES_SEARCH_PLACEHOLDER' | translate }}\"\n adf-auto-focus\n />\n <mat-error *ngIf=\"categoryNameControl.invalid\">{{ categoryNameErrorMessageKey | translate }}</mat-error>\n </div>\n <div class=\"adf-categories-list\" *ngIf=\"categories?.length > 0\" [class.adf-categories-list-fixed]=\"!categoryNameControlVisible\">\n <span\n *ngFor=\"let category of categories\"\n [class.adf-categories-padded]=\"!isCRUDMode\"\n class=\"adf-assigned-categories\">\n {{ category.name }}\n <button\n data-automation-id=\"categories-remove-category-button\"\n mat-icon-button\n (click)=\"removeCategory(category)\"\n [attr.title]=\"removeCategoryTitle | translate\"\n [disabled]=\"disableRemoval\">\n <mat-icon>remove</mat-icon>\n </button>\n </span>\n </div>\n <p *ngIf=\"showEmptyCategoryMessage\" class=\"adf-no-categories-message\">\n {{ noCategoriesMsg | translate }}\n </p>\n</div>\n<div class=\"adf-existing-categories-panel\" *ngIf=\"existingCategoriesPanelVisible\">\n <ng-container *ngIf=\"isCRUDMode && (!existingCategoriesLoading || existingCategories)\">\n <span class=\"adf-create-category-label\"\n (click)=\"addCategory()\"\n tabindex=\"0\"\n role=\"button\"\n (keyup.enter)=\"addCategory()\"\n [hidden]=\"categoryNameControl.invalid || typing\">\n {{ 'CATEGORIES_MANAGEMENT.GENERIC_CREATE' | translate : { name: categoryNameControl.value } }}\n </span>\n </ng-container>\n <div *ngIf=\"categoryNameControlVisible\" class=\"adf-categories-list\">\n <ng-container *ngIf=\"!existingCategoriesLoading && existingCategories\">\n <p class=\"adf-existing-categories-label\">\n {{ existingCategoriesMsg | translate }}\n </p>\n <mat-list\n [disabled]=\"isCRUDMode || !multiSelect && categories.length > 0\"\n class=\"adf-categories-management-list\">\n <mat-list-item\n *ngFor=\"let category of existingCategories\"\n class=\"adf-category\"\n (click)='addCategoryToAssign(category)'>\n {{ category.name }}\n </mat-list-item>\n <p *ngIf=\"!existingCategories?.length && !existingCategoriesLoading\"\n data-automation-id=\"no-categories-message\">\n {{ 'CATEGORIES_MANAGEMENT.NO_EXISTING_CATEGORIES' | translate }}\n </p>\n </mat-list>\n </ng-container>\n <mat-spinner\n *ngIf=\"existingCategoriesLoading\"\n [diameter]=\"50\"\n class=\"adf-categories-management-spinner\"\n [attr.aria-label]=\"'CATEGORIES_MANAGEMENT.LOADING' | translate\" />\n </div>\n</div>\n", styles: [".adf-categories-management .adf-category-name-field{display:flex;flex-direction:column;margin-right:12px}.adf-categories-management .adf-category-name-field input{background:var(--adf-metadata-buttons-background-color);border-radius:12px;padding:7px 8px;border:none;outline:none;font:inherit;color:currentcolor;margin:0;vertical-align:bottom;text-align:inherit;box-sizing:content-box}.adf-categories-management .adf-category-name-field .mat-mdc-form-field-error{padding-top:5px}.adf-categories-management .adf-assigned-categories{display:flex;justify-content:space-between;align-items:center;word-break:break-word}.adf-categories-management .adf-categories-padded{padding:5px 0}.adf-categories-management [hidden]{visibility:hidden}.adf-categories-management .adf-no-categories-message{margin-bottom:0;height:30px}.adf-categories-list .adf-categories-management-list .adf-category{display:flex;height:100%;overflow-wrap:anywhere;padding:5px 0;font-size:14px;background-color:inherit;color:inherit}.adf-categories-list .adf-categories-management-list .adf-category:not(.mdc-list-item--disabled):hover{cursor:pointer;background:var(--adf-theme-mat-grey-color-a200)}.adf-categories-list .adf-categories-management-list .adf-category span{padding:0}.adf-categories-list .adf-existing-categories-label{font-size:10px;color:var(--theme-secondary-text-color);margin-bottom:2px}.adf-categories-list .adf-categories-management-spinner{margin:auto}.adf-existing-categories-panel{min-height:22vh}.adf-existing-categories-panel .adf-create-category-label{color:var(--theme-primary-color);cursor:pointer;overflow-wrap:anywhere}.adf-existing-categories-panel .mdc-list-item--disabled .mdc-list-item__primary-text{opacity:1}\n"] }]
|
|
286
|
-
}], ctorParameters: () => [{ type: i1.CategoryService }], propDecorators: { categories: [{
|
|
287
|
-
type: Input
|
|
288
|
-
}], categoryNameControlVisible: [{
|
|
289
|
-
type: Input
|
|
290
|
-
}], classifiableChanged: [{
|
|
291
|
-
type: Input
|
|
292
|
-
}], disableRemoval: [{
|
|
293
|
-
type: Input
|
|
294
|
-
}], managementMode: [{
|
|
295
|
-
type: Input,
|
|
296
|
-
args: [{ required: true }]
|
|
297
|
-
}], parentId: [{
|
|
298
|
-
type: Input
|
|
299
|
-
}], multiSelect: [{
|
|
300
|
-
type: Input
|
|
301
|
-
}], categoriesChange: [{
|
|
302
|
-
type: Output
|
|
303
|
-
}], categoryNameControlVisibleChange: [{
|
|
304
|
-
type: Output
|
|
305
|
-
}], categoryNameInputElement: [{
|
|
306
|
-
type: ViewChild,
|
|
307
|
-
args: ['categoryNameInput']
|
|
308
|
-
}] } });
|
|
309
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcmllcy1tYW5hZ2VtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvY2F0ZWdvcnkvY2F0ZWdvcmllcy1tYW5hZ2VtZW50L2NhdGVnb3JpZXMtbWFuYWdlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL2NhdGVnb3J5L2NhdGVnb3JpZXMtbWFuYWdlbWVudC9jYXRlZ29yaWVzLW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFB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Q0FBQzsrR0FqVFEsNkJBQTZCO21HQUE3Qiw2QkFBNkIsK2tCQ3ZFMUMsZ3ZHQW9FQSx3dUREWFEsWUFBWSwrUEFDWixlQUFlLDRGQUNmLGtCQUFrQiw0REFDbEIsbUJBQW1CLHlrQkFDbkIsa0JBQWtCLDJIQUNsQixlQUFlLDJJQUNmLGFBQWEsbUxBQ2IsYUFBYSx1UkFDYix3QkFBd0I7OzRGQU1uQiw2QkFBNkI7a0JBbEJ6QyxTQUFTOytCQUNJLDJCQUEyQixjQUN6QixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixhQUFhO3dCQUNiLHdCQUF3QjtxQkFDM0IsaUJBR2MsaUJBQWlCLENBQUMsSUFBSTtvRkErQnJDLFVBQVU7c0JBRFQsS0FBSztnQkFVRiwwQkFBMEI7c0JBRDdCLEtBQUs7Z0JBb0JOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBU04sY0FBYztzQkFEYixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFLekIsUUFBUTtzQkFEUCxLQUFLO2dCQUtOLFdBQVc7c0JBRFYsS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsTUFBTTtnQkFLUCxnQ0FBZ0M7c0JBRC9CLE1BQU07Z0JBSUMsd0JBQXdCO3NCQUQvQixTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIFN1YmplY3QsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZSwgZmlyc3QsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2F0ZWdvcmllc01hbmFnZW1lbnRNb2RlIH0gZnJvbSAnLi9jYXRlZ29yaWVzLW1hbmFnZW1lbnQtbW9kZSc7XG5pbXBvcnQgeyBDYXRlZ29yeVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jYXRlZ29yeS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEF1dG9Gb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmludGVyZmFjZSBDYXRlZ29yeU5hbWVDb250cm9sRXJyb3JzIHtcbiAgICBkdXBsaWNhdGVkRXhpc3RpbmdDYXRlZ29yeT86IGJvb2xlYW47XG4gICAgZHVwbGljYXRlZENhdGVnb3J5PzogYm9vbGVhbjtcbiAgICBlbXB0eUNhdGVnb3J5PzogYm9vbGVhbjtcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNhdGVnb3JpZXMtbWFuYWdlbWVudCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBBdXRvRm9jdXNEaXJlY3RpdmUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRMaXN0TW9kdWxlLFxuICAgICAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGVcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYXRlZ29yaWVzLW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhdGVnb3JpZXMtbWFuYWdlbWVudC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQ2F0ZWdvcmllc01hbmFnZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcmVhZG9ubHkgbmFtZUVycm9yTWVzc2FnZXNCeUVycm9ycyA9IG5ldyBNYXA8a2V5b2YgQ2F0ZWdvcnlOYW1lQ29udHJvbEVycm9ycywgc3RyaW5nPihbXG4gICAgICAgIFsnZHVwbGljYXRlZEV4aXN0aW5nQ2F0ZWdvcnknLCAnQUxSRUFEWV9FWElTVFMnXSxcbiAgICAgICAgWydkdXBsaWNhdGVkQ2F0ZWdvcnknLCAnRFVQTElDQVRFRF9DQVRFR09SWSddLFxuICAgICAgICBbJ2VtcHR5Q2F0ZWdvcnknLCAnRU1QVFlfQ0FURUdPUlknXSxcbiAgICAgICAgWydyZXF1aXJlZCcsICdSRVFVSVJFRCddXG4gICAgXSk7XG5cbiAgICBwcml2YXRlIGV4aXN0aW5nQ2F0ZWdvcnlMb2FkZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIGNhbmNlbEV4aXN0aW5nQ2F0ZWdvcmllc0xvYWRpbmckID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIF9jYXRlZ29yeU5hbWVDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oXG4gICAgICAgICcnLFxuICAgICAgICBbdGhpcy52YWxpZGF0ZUlmTm90QWxyZWFkeUFkZGVkLmJpbmQodGhpcyksIHRoaXMudmFsaWRhdGVFbXB0eUNhdGVnb3J5LCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgdGhpcy52YWxpZGF0ZUlmTm90QWxyZWFkeUNyZWF0ZWQuYmluZCh0aGlzKVxuICAgICk7XG4gICAgcHJpdmF0ZSBfZXhpc3RpbmdDYXRlZ29yaWVzOiBDYXRlZ29yeVtdO1xuICAgIHByaXZhdGUgX2NhdGVnb3J5TmFtZUVycm9yTWVzc2FnZUtleSA9ICcnO1xuICAgIHByaXZhdGUgX2V4aXN0aW5nQ2F0ZWdvcmllc0xvYWRpbmcgPSBmYWxzZTtcbiAgICBwcml2YXRlIF90eXBpbmcgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9leGlzdGluZ0NhdGVnb3JpZXNQYW5lbFZpc2libGU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfY2F0ZWdvcnlOYW1lQ29udHJvbFZpc2libGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV4aXN0aW5nQ2F0ZWdvcmllc0xpc3RMaW1pdCA9IDE1O1xuICAgIGluaXRpYWxDYXRlZ29yaWVzOiBDYXRlZ29yeVtdID0gW107XG4gICAgbm9DYXRlZ29yaWVzTXNnID0gJyc7XG4gICAgcmVtb3ZlQ2F0ZWdvcnlUaXRsZSA9ICcnO1xuICAgIGV4aXN0aW5nQ2F0ZWdvcmllc01zZyA9ICcnO1xuXG4gICAgLyoqIENhdGVnb3JpZXMgdG8gZGlzcGxheSBpbml0aWFsbHkgKi9cbiAgICBASW5wdXQoKVxuICAgIGNhdGVnb3JpZXM6IENhdGVnb3J5W10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIERlY2lkZXMgaWYgY2F0ZWdvcnlOYW1lQ29udHJvbCBzaG91bGQgYmUgdmlzaWJsZS4gU2V0cyBhbHNvIGV4aXN0aW5nIGNhdGVnb3JpZXMgcGFuZWwgdmlzaWJpbGl0eVxuICAgICAqIGFuZCBzY3JvbGxzIGNvbnRyb2wgaW50byB2aWV3IHdoZW4gdmlzaWJsZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeU5hbWVDb250cm9sVmlzaWJsZSBjb250cm9sIHZpc2liaWxpdHkuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY2F0ZWdvcnlOYW1lQ29udHJvbFZpc2libGUoY2F0ZWdvcnlOYW1lQ29udHJvbFZpc2libGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fY2F0ZWdvcnlOYW1lQ29udHJvbFZpc2libGUgPSBjYXRlZ29yeU5hbWVDb250cm9sVmlzaWJsZTtcbiAgICAgICAgaWYgKGNhdGVnb3J5TmFtZUNvbnRyb2xWaXNpYmxlKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5TmFtZUlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX2V4aXN0aW5nQ2F0ZWdvcmllc1BhbmVsVmlzaWJsZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9leGlzdGluZ0NhdGVnb3JpZXNQYW5lbFZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJDYXRlZ29yeU5hbWVJbnB1dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGNhdGVnb3J5TmFtZUNvbnRyb2xWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2F0ZWdvcnlOYW1lQ29udHJvbFZpc2libGU7XG4gICAgfVxuXG4gICAgLyoqIEVtaXRzIHdoZW4gY2xhc3NpZmlhYmxlIGFzcGVjdCBjaGFuZ2VzICovXG4gICAgQElucHV0KClcbiAgICBjbGFzc2lmaWFibGVDaGFuZ2VkOiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gICAgLyoqIERpc2FibGVzIHJlbW92ZSBidXR0b24gaW4gdXBwZXIgY2F0ZWdvcmllcyBsaXN0ICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlUmVtb3ZhbCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ29tcG9uZW50IG1vZGUuXG4gICAgICogSW4gQVNTSUdOIG1vZGUgd2UgY2FuIG9ubHkgYXNzaWduL3VuYXNzaWduIGNhdGVnb3JpZXMgZnJvbSBleGlzdGluZyBsaXN0LlxuICAgICAqIEluIENSVUQgbW9kZSB3ZSBjYW4gY3JlYXRlIGNhdGVnb3JpZXMuXG4gICAgICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBtYW5hZ2VtZW50TW9kZTogQ2F0ZWdvcmllc01hbmFnZW1lbnRNb2RlO1xuXG4gICAgLyoqIElEIG9mIGEgcGFyZW50IGNhdGVnb3J5LiBOZXcgY2F0ZWdvcmllcyB3aWxsIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBwYXJlbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIHBhcmVudElkOiBzdHJpbmc7XG5cbiAgICAvKiogVG9nZ2xlcyBtdWx0aXNlbGVjdCBtb2RlICovXG4gICAgQElucHV0KClcbiAgICBtdWx0aVNlbGVjdCA9IHRydWU7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBzdGF0ZSBvZiB1cHBlciBjYXRlZ29yaWVzIGxpc3QgY2hhbmdlcyAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNhdGVnb3JpZXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENhdGVnb3J5W10+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBjYXRlZ29yeU5hbWVDb250cm9sIHZpc2liaWxpdHkgY2hhbmdlcyAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNhdGVnb3J5TmFtZUNvbnRyb2xWaXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgQFZpZXdDaGlsZCgnY2F0ZWdvcnlOYW1lSW5wdXQnKVxuICAgIHByaXZhdGUgY2F0ZWdvcnlOYW1lSW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjYXRlZ29yeVNlcnZpY2U6IENhdGVnb3J5U2VydmljZSkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNhdGVnb3J5TmFtZUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKG5hbWU6IHN0cmluZykgPT4gbmFtZS50cmltKCkpLFxuICAgICAgICAgICAgICAgIHRhcCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3R5cGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9leGlzdGluZ0NhdGVnb3JpZXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2V4aXN0aW5nQ2F0ZWdvcmllc1BhbmVsVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5jZWxFeGlzdGluZ0NhdGVnb3JpZXNMb2FkaW5nJC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZGVib3VuY2UoKG5hbWU6IHN0cmluZykgPT4gKG5hbWUgPyB0aW1lcigzMDApIDogRU1QVFkpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgobmFtZTogc3RyaW5nKSA9PiB0aGlzLm9uTmFtZUNvbnRyb2xWYWx1ZUNoYW5nZShuYW1lKSk7XG5cbiAgICAgICAgdGhpcy5jYXRlZ29yeU5hbWVDb250cm9sLnN0YXR1c0NoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNldENhdGVnb3J5TmFtZUNvbnRyb2xFcnJvck1lc3NhZ2VLZXkoKSk7XG5cbiAgICAgICAgdGhpcy5zZXRDYXRlZ29yeU5hbWVDb250cm9sRXJyb3JNZXNzYWdlS2V5KCk7XG5cbiAgICAgICAgdGhpcy5ub0NhdGVnb3JpZXNNc2cgPSB0aGlzLmlzQ1JVRE1vZGUgPyAnQ0FURUdPUklFU19NQU5BR0VNRU5ULk5PX0NBVEVHT1JJRVNfQ1JFQVRFRCcgOiAnQ0FURUdPUklFU19NQU5BR0VNRU5ULk5PX0NBVEVHT1JJRVNfQVNTSUdORUQnO1xuICAgICAgICB0aGlzLnJlbW92ZUNhdGVnb3J5VGl0bGUgPSB0aGlzLmlzQ1JVRE1vZGUgPyAnQ0FURUdPUklFU19NQU5BR0VNRU5ULkRFTEVURV9DQVRFR09SWScgOiAnQ0FURUdPUklFU19NQU5BR0VNRU5ULlVOQVNTSUdOX0NBVEVHT1JZJztcbiAgICAgICAgdGhpcy5leGlzdGluZ0NhdGVnb3JpZXNNc2cgPSB0aGlzLmlzQ1JVRE1vZGUgPyAnQ0FURUdPUklFU19NQU5BR0VNRU5ULkVYSVNUSU5HX0NBVEVHT1JJRVMnIDogJ0NBVEVHT1JJRVNfTUFOQUdFTUVOVC5TRUxFQ1RfRVhJU1RJTkdfQ0FURUdPUlknO1xuXG4gICAgICAgIGlmICghdGhpcy5pc0NSVURNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9jYXRlZ29yeU5hbWVDb250cm9sLnJlbW92ZVZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMuZm9yRWFjaCgoY2F0ZWdvcnkpID0+IHRoaXMuaW5pdGlhbENhdGVnb3JpZXMucHVzaChjYXRlZ29yeSkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuY2xhc3NpZmlhYmxlQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xhc3NpZmlhYmxlQ2hhbmdlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yeU5hbWVDb250cm9sVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5TmFtZUNvbnRyb2xWaXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY2FuY2VsRXhpc3RpbmdDYXRlZ29yaWVzTG9hZGluZyQubmV4dCgpO1xuICAgICAgICB0aGlzLmNhbmNlbEV4aXN0aW5nQ2F0ZWdvcmllc0xvYWRpbmckLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgZ2V0IGNhdGVnb3J5TmFtZUNvbnRyb2woKTogRm9ybUNvbnRyb2w8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYXRlZ29yeU5hbWVDb250cm9sO1xuICAgIH1cblxuICAgIC8qXG4gICAgICogUmV0dXJucyBgdHJ1ZWAgaWYgY2F0ZWdvcmllcyBlbXB0eSBhbmQgY2F0ZWdvcnkgcGFuZWwgbm9uIGVkaXRhYmxlIHN0YXRlLCBvdGhlcndpc2UgYGZhbHNlYFxuICAgICAqL1xuICAgIGdldCBzaG93RW1wdHlDYXRlZ29yeU1lc3NhZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhdGVnb3JpZXMubGVuZ3RoID09PSAwICYmICF0aGlzLmNhdGVnb3J5TmFtZUNvbnRyb2xWaXNpYmxlO1xuICAgIH1cblxuICAgIGdldCBleGlzdGluZ0NhdGVnb3JpZXMoKTogQ2F0ZWdvcnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9leGlzdGluZ0NhdGVnb3JpZXM7XG4gICAgfVxuXG4gICAgZ2V0IGNhdGVnb3J5TmFtZUVycm9yTWVzc2FnZUtleSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2F0ZWdvcnlOYW1lRXJyb3JNZXNzYWdlS2V5O1xuICAgIH1cblxuICAgIGdldCBleGlzdGluZ0NhdGVnb3JpZXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhpc3RpbmdDYXRlZ29yaWVzTG9hZGluZztcbiAgICB9XG5cbiAgICBnZXQgdHlwaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwaW5nO1xuICAgIH1cblxuICAgIGdldCBleGlzdGluZ0NhdGVnb3JpZXNQYW5lbFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9leGlzdGluZ0NhdGVnb3JpZXNQYW5lbFZpc2libGU7XG4gICAgfVxuXG4gICAgZ2V0IGlzQ1JVRE1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hbmFnZW1lbnRNb2RlID09PSBDYXRlZ29yaWVzTWFuYWdlbWVudE1vZGUuQ1JVRDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGNhdGVnb3J5IHRoYXQgaGFzIGJlZW4gdHlwZWQgdG8gYSBjYXRlZ29yeU5hbWVDb250cm9sIGFuZCBoaWRlcyBpdCBhZnRlcndhcmRzLlxuICAgICAqL1xuICAgIGFkZENhdGVnb3J5KCkge1xuICAgICAgICBpZiAodGhpcy5pc0NSVURNb2RlICYmICF0aGlzLl90eXBpbmcgJiYgIXRoaXMuY2F0ZWdvcnlOYW1lQ29udHJvbC5pbnZhbGlkKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdDYXROYW1lID0gdGhpcy5jYXRlZ29yeU5hbWVDb250cm9sLnZhbHVlLnRyaW0oKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld0NhdCA9IG5ldyBDYXRlZ29yeSh7IGlkOiBuZXdDYXROYW1lLCBuYW1lOiBuZXdDYXROYW1lIH0pO1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzLnB1c2gobmV3Q2F0KTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJDYXRlZ29yeU5hbWVJbnB1dCgpO1xuICAgICAgICAgICAgdGhpcy5fZXhpc3RpbmdDYXRlZ29yaWVzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc0NoYW5nZS5lbWl0KHRoaXMuY2F0ZWdvcmllcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGV4aXN0aW5nIGNhdGVnb3J5IHRvIGNhdGVnb3JpZXMgbGlzdCBhbmQgcmVtb3ZlcyBpdCBmcm9tIGV4aXN0aW5nIGNhdGVnb3JpZXMgbGlzdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeSAtIHNlbGVjdGlvbiBsaXN0IGNoYW5nZSBjb250YWluaW5nIHNlbGVjdGVkIGNhdGVnb3J5XG4gICAgICovXG4gICAgYWRkQ2F0ZWdvcnlUb0Fzc2lnbihjYXRlZ29yeTogQ2F0ZWdvcnkpIHtcbiAgICAgICAgaWYgKCEodGhpcy5pc0NSVURNb2RlIHx8ICghdGhpcy5tdWx0aVNlbGVjdCAmJiB0aGlzLmNhdGVnb3JpZXMubGVuZ3RoID4gMCkpKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZENhdGVnb3J5OiBDYXRlZ29yeSA9IGNhdGVnb3J5O1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzLnB1c2goc2VsZWN0ZWRDYXRlZ29yeSk7XG4gICAgICAgICAgICB0aGlzLl9leGlzdGluZ0NhdGVnb3JpZXMuc3BsaWNlKHRoaXMuX2V4aXN0aW5nQ2F0ZWdvcmllcy5pbmRleE9mKHNlbGVjdGVkQ2F0ZWdvcnkpLCAxKTtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnlOYW1lQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXNDaGFuZ2UuZW1pdCh0aGlzLmNhdGVnb3JpZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUgY2F0ZWdvcnkgZnJvbSBjYXRlZ29yaWVzIGxpc3QgYW5kIGFkZHMgaXQgdG8gZXhpc3RpbmcgY2F0ZWdvcmllcyBsaXN0IGluIEFTU0lHTiBtb2RlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5IC0gY2F0ZWdvcnkgdG8gcmVtb3ZlXG4gICAgICovXG4gICAgcmVtb3ZlQ2F0ZWdvcnkoY2F0ZWdvcnk6IENhdGVnb3J5KSB7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllcy5zcGxpY2UodGhpcy5jYXRlZ29yaWVzLmluZGV4T2YoY2F0ZWdvcnkpLCAxKTtcbiAgICAgICAgaWYgKCF0aGlzLmlzQ1JVRE1vZGUgJiYgISF0aGlzLl9leGlzdGluZ0NhdGVnb3JpZXMgJiYgIXRoaXMuaW5pdGlhbENhdGVnb3JpZXMuc29tZSgoY2F0KSA9PiBjYXQuaWQgPT09IGNhdGVnb3J5LmlkKSkge1xuICAgICAgICAgICAgdGhpcy5fZXhpc3RpbmdDYXRlZ29yaWVzLnB1c2goY2F0ZWdvcnkpO1xuICAgICAgICAgICAgdGhpcy5zb3J0Q2F0ZWdvcmllc0xpc3QodGhpcy5fZXhpc3RpbmdDYXRlZ29yaWVzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhdGVnb3J5TmFtZUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXNDaGFuZ2UuZW1pdCh0aGlzLmNhdGVnb3JpZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25OYW1lQ29udHJvbFZhbHVlQ2hhbmdlKG5hbWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNhdGVnb3J5TmFtZUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNDUlVETW9kZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW5DYXRlZ29yaWVzKG5hbWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEZvckV4aXN0aW5nQ2F0ZWdvcmllcyhuYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2V4aXN0aW5nQ2F0ZWdvcmllcyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNlYXJjaEZvckV4aXN0aW5nQ2F0ZWdvcmllcyhzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yeVNlcnZpY2Uuc2VhcmNoQ2F0ZWdvcmllcyhzZWFyY2hUZXJtLCAwLCB0aGlzLmV4aXN0aW5nQ2F0ZWdvcmllc0xpc3RMaW1pdCkuc3Vic2NyaWJlKChleGlzdGluZ0NhdGVnb3JpZXNSZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2V4aXN0aW5nQ2F0ZWdvcmllcyA9IGV4aXN0aW5nQ2F0ZWdvcmllc1Jlc3VsdC5saXN0LmVudHJpZXMubWFwKChyb3dFbnRyeSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nQ2F0ID0gbmV3IENhdGVnb3J5KCk7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdDYXQuaWQgPSByb3dFbnRyeS5lbnRyeS5pZDtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gcm93RW50cnkuZW50cnkucGF0aC5uYW1lLnNwbGl0KCcvJykuc3BsaWNlKDMpLmpvaW4oJy8nKTtcbiAgICAgICAgICAgICAgICBleGlzdGluZ0NhdC5uYW1lID0gcGF0aCA/IGAke3BhdGh9LyR7cm93RW50cnkuZW50cnkubmFtZX1gIDogcm93RW50cnkuZW50cnkubmFtZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdDYXQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX2V4aXN0aW5nQ2F0ZWdvcmllcyA9IHRoaXMuX2V4aXN0aW5nQ2F0ZWdvcmllcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGV4aXN0aW5nQ2F0KSA9PiB0aGlzLmNhdGVnb3JpZXMuZmluZCgoY2F0ZWdvcnkpID0+IGV4aXN0aW5nQ2F0LmlkID09PSBjYXRlZ29yeS5pZCkgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc29ydENhdGVnb3JpZXNMaXN0KHRoaXMuX2V4aXN0aW5nQ2F0ZWdvcmllcyk7XG4gICAgICAgICAgICB0aGlzLl9leGlzdGluZ0NhdGVnb3JpZXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl90eXBpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZXhpc3RpbmdDYXRlZ29yeUxvYWRlZCQubmV4dCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENoaWxkcmVuQ2F0ZWdvcmllcyhzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yeVNlcnZpY2UuZ2V0U3ViY2F0ZWdvcmllcyh0aGlzLnBhcmVudElkKS5zdWJzY3JpYmUoKGNoaWxkcmVuQ2F0ZWdvcmllcykgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZXhpc3RpbmdDYXRlZ29yaWVzID0gY2hpbGRyZW5DYXRlZ29yaWVzLmxpc3QuZW50cmllcy5tYXAoKGNhdGVnb3J5RW50cnkpID0+IGNhdGVnb3J5RW50cnkuZW50cnkpO1xuICAgICAgICAgICAgdGhpcy5fZXhpc3RpbmdDYXRlZ29yaWVzID0gdGhpcy5fZXhpc3RpbmdDYXRlZ29yaWVzLmZpbHRlcigoZXhpc3RpbmdDYXQpID0+XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdDYXQubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnNvcnRDYXRlZ29yaWVzTGlzdCh0aGlzLl9leGlzdGluZ0NhdGVnb3JpZXMpO1xuICAgICAgICAgICAgdGhpcy5fZXhpc3RpbmdDYXRlZ29yaWVzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fdHlwaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmV4aXN0aW5nQ2F0ZWdvcnlMb2FkZWQkLm5leHQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUlmTm90QWxyZWFkeUFkZGVkKG5hbWVDb250cm9sOiBGb3JtQ29udHJvbDxzdHJpbmc+KTogQ2F0ZWdvcnlOYW1lQ29udHJvbEVycm9ycyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5jYXRlZ29yaWVzPy5zb21lKChjYXRlZ29yeSkgPT4gdGhpcy5jb21wYXJlQ2F0ZWdvcmllcyhjYXRlZ29yeSwgbmFtZUNvbnRyb2wudmFsdWUpKSAmJiB0aGlzLmlzQ1JVRE1vZGVcbiAgICAgICAgICAgID8geyBkdXBsaWNhdGVkQ2F0ZWdvcnk6IHRydWUgfVxuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVJZk5vdEFscmVhZHlDcmVhdGVkKG5hbWVDb250cm9sOiBGb3JtQ29udHJvbDxzdHJpbmc+KTogT2JzZXJ2YWJsZTxDYXRlZ29yeU5hbWVDb250cm9sRXJyb3JzIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5leGlzdGluZ0NhdGVnb3J5TG9hZGVkJC5waXBlKFxuICAgICAgICAgICAgbWFwPHZvaWQsIENhdGVnb3J5TmFtZUNvbnRyb2xFcnJvcnMgfCBudWxsPigoKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuZXhpc3RpbmdDYXRlZ29yaWVzLnNvbWUoKGNhdGVnb3J5KSA9PiB0aGlzLmNvbXBhcmVDYXRlZ29yaWVzKGNhdGVnb3J5LCBuYW1lQ29udHJvbC52YWx1ZSkpICYmIHRoaXMuaXNDUlVETW9kZVxuICAgICAgICAgICAgICAgICAgICA/IHsgZHVwbGljYXRlZEV4aXN0aW5nQ2F0ZWdvcnk6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmaXJzdCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wYXJlQ2F0ZWdvcmllcyhjYXRlZ29yeTE/OiBDYXRlZ29yeSwgY2F0Mk5hbWU/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGNhdGVnb3J5MT8ubmFtZS50cmltKCkudG9VcHBlckNhc2UoKSA9PT0gY2F0Mk5hbWU/LnRyaW0oKS50b1VwcGVyQ2FzZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVFbXB0eUNhdGVnb3J5KGNhdGVnb3J5TmFtZUNvbnRyb2w6IEZvcm1Db250cm9sPHN0cmluZz4pOiBDYXRlZ29yeU5hbWVDb250cm9sRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiBjYXRlZ29yeU5hbWVDb250cm9sLnZhbHVlLmxlbmd0aCAmJiAhY2F0ZWdvcnlOYW1lQ29udHJvbC52YWx1ZS50cmltKCkgPyB7IGVtcHR5Q2F0ZWdvcnk6IHRydWUgfSA6IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDYXRlZ29yeU5hbWVDb250cm9sRXJyb3JNZXNzYWdlS2V5KCkge1xuICAgICAgICB0aGlzLl9jYXRlZ29yeU5hbWVFcnJvck1lc3NhZ2VLZXkgPSB0aGlzLmNhdGVnb3J5TmFtZUNvbnRyb2wuaW52YWxpZFxuICAgICAgICAgICAgPyBgQ0FURUdPUklFU19NQU5BR0VNRU5ULkVSUk9SUy4ke3RoaXMubmFtZUVycm9yTWVzc2FnZXNCeUVycm9ycy5nZXQoXG4gICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmNhdGVnb3J5TmFtZUNvbnRyb2wuZXJyb3JzKVswXSBhcyBrZXlvZiBDYXRlZ29yeU5hbWVDb250cm9sRXJyb3JzXG4gICAgICAgICAgICAgICl9YFxuICAgICAgICAgICAgOiAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRDYXRlZ29yaWVzTGlzdChjYXRlZ29yaWVzTGlzdDogQ2F0ZWdvcnlbXSkge1xuICAgICAgICBjYXRlZ29yaWVzTGlzdC5zb3J0KChjYXRlZ29yeTEsIGNhdGVnb3J5MikgPT4gY2F0ZWdvcnkxLm5hbWUubG9jYWxlQ29tcGFyZShjYXRlZ29yeTIubmFtZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJDYXRlZ29yeU5hbWVJbnB1dCgpIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yeU5hbWVDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgICAgdGhpcy5jYXRlZ29yeU5hbWVDb250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZGYtY2F0ZWdvcmllcy1tYW5hZ2VtZW50XCI+XG4gICAgPGRpdiAqbmdJZj1cImNhdGVnb3J5TmFtZUNvbnRyb2xWaXNpYmxlXCIgY2xhc3M9XCJhZGYtY2F0ZWdvcnktbmFtZS1maWVsZFwiPlxuICAgICAgICA8aW5wdXQgI2NhdGVnb3J5TmFtZUlucHV0XG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY2F0ZWdvcnlOYW1lQ29udHJvbFwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYWRkQ2F0ZWdvcnkoKVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0NBVEVHT1JJRVNfTUFOQUdFTUVOVC5DQVRFR09SSUVTX1NFQVJDSF9QTEFDRUhPTERFUicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgYWRmLWF1dG8tZm9jdXNcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJjYXRlZ29yeU5hbWVDb250cm9sLmludmFsaWRcIj57eyBjYXRlZ29yeU5hbWVFcnJvck1lc3NhZ2VLZXkgfCB0cmFuc2xhdGUgfX08L21hdC1lcnJvcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYWRmLWNhdGVnb3JpZXMtbGlzdFwiICpuZ0lmPVwiY2F0ZWdvcmllcz8ubGVuZ3RoID4gMFwiIFtjbGFzcy5hZGYtY2F0ZWdvcmllcy1saXN0LWZpeGVkXT1cIiFjYXRlZ29yeU5hbWVDb250cm9sVmlzaWJsZVwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXNcIlxuICAgICAgICAgICAgW2NsYXNzLmFkZi1jYXRlZ29yaWVzLXBhZGRlZF09XCIhaXNDUlVETW9kZVwiXG4gICAgICAgICAgICBjbGFzcz1cImFkZi1hc3NpZ25lZC1jYXRlZ29yaWVzXCI+XG4gICAgICAgICAgICB7eyBjYXRlZ29yeS5uYW1lIH19XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiY2F0ZWdvcmllcy1yZW1vdmUtY2F0ZWdvcnktYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ2F0ZWdvcnkoY2F0ZWdvcnkpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJyZW1vdmVDYXRlZ29yeVRpdGxlIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVJlbW92YWxcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+cmVtb3ZlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPHAgKm5nSWY9XCJzaG93RW1wdHlDYXRlZ29yeU1lc3NhZ2VcIiBjbGFzcz1cImFkZi1uby1jYXRlZ29yaWVzLW1lc3NhZ2VcIj5cbiAgICAgICAge3sgbm9DYXRlZ29yaWVzTXNnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9wPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYWRmLWV4aXN0aW5nLWNhdGVnb3JpZXMtcGFuZWxcIiAqbmdJZj1cImV4aXN0aW5nQ2F0ZWdvcmllc1BhbmVsVmlzaWJsZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0NSVURNb2RlICYmICghZXhpc3RpbmdDYXRlZ29yaWVzTG9hZGluZyB8fCBleGlzdGluZ0NhdGVnb3JpZXMpXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYWRmLWNyZWF0ZS1jYXRlZ29yeS1sYWJlbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWRkQ2F0ZWdvcnkoKVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYWRkQ2F0ZWdvcnkoKVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cImNhdGVnb3J5TmFtZUNvbnRyb2wuaW52YWxpZCB8fCB0eXBpbmdcIj5cbiAgICAgICAgICAgIHt7ICdDQVRFR09SSUVTX01BTkFHRU1FTlQuR0VORVJJQ19DUkVBVEUnIHwgdHJhbnNsYXRlIDogeyBuYW1lOiBjYXRlZ29yeU5hbWVDb250cm9sLnZhbHVlIH0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgKm5nSWY9XCJjYXRlZ29yeU5hbWVDb250cm9sVmlzaWJsZVwiIGNsYXNzPVwiYWRmLWNhdGVnb3JpZXMtbGlzdFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWV4aXN0aW5nQ2F0ZWdvcmllc0xvYWRpbmcgJiYgZXhpc3RpbmdDYXRlZ29yaWVzXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImFkZi1leGlzdGluZy1jYXRlZ29yaWVzLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAge3sgZXhpc3RpbmdDYXRlZ29yaWVzTXNnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8bWF0LWxpc3RcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNDUlVETW9kZSB8fCAhbXVsdGlTZWxlY3QgJiYgY2F0ZWdvcmllcy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jYXRlZ29yaWVzLW1hbmFnZW1lbnQtbGlzdFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBleGlzdGluZ0NhdGVnb3JpZXNcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9J2FkZENhdGVnb3J5VG9Bc3NpZ24oY2F0ZWdvcnkpJz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNhdGVnb3J5Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgPHAgKm5nSWY9XCIhZXhpc3RpbmdDYXRlZ29yaWVzPy5sZW5ndGggJiYgIWV4aXN0aW5nQ2F0ZWdvcmllc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cIm5vLWNhdGVnb3JpZXMtbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnQ0FURUdPUklFU19NQU5BR0VNRU5ULk5PX0VYSVNUSU5HX0NBVEVHT1JJRVMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9tYXQtbGlzdD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxtYXQtc3Bpbm5lclxuICAgICAgICAgICAgKm5nSWY9XCJleGlzdGluZ0NhdGVnb3JpZXNMb2FkaW5nXCJcbiAgICAgICAgICAgIFtkaWFtZXRlcl09XCI1MFwiXG4gICAgICAgICAgICBjbGFzcz1cImFkZi1jYXRlZ29yaWVzLW1hbmFnZW1lbnQtc3Bpbm5lclwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDQVRFR09SSUVTX01BTkFHRU1FTlQuTE9BRElORycgfCB0cmFuc2xhdGVcIiAvPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
import { NgModule } from '@angular/core';
|
|
18
|
-
import { CategoriesManagementComponent } from './categories-management/categories-management.component';
|
|
19
|
-
import * as i0 from "@angular/core";
|
|
20
|
-
/** @deprecated use `CategoriesManagementComponent` standalone component instead */
|
|
21
|
-
export class CategoriesModule {
|
|
22
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CategoriesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
23
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: CategoriesModule, imports: [CategoriesManagementComponent], exports: [CategoriesManagementComponent] }); }
|
|
24
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CategoriesModule, imports: [CategoriesManagementComponent] }); }
|
|
25
|
-
}
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CategoriesModule, decorators: [{
|
|
27
|
-
type: NgModule,
|
|
28
|
-
args: [{
|
|
29
|
-
imports: [CategoriesManagementComponent],
|
|
30
|
-
exports: [CategoriesManagementComponent]
|
|
31
|
-
}]
|
|
32
|
-
}] });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9jYXRlZ29yeS9jYXRlZ29yeS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQzs7QUFFeEcsbUZBQW1GO0FBS25GLE1BQU0sT0FBTyxnQkFBZ0I7K0dBQWhCLGdCQUFnQjtnSEFBaEIsZ0JBQWdCLFlBSGYsNkJBQTZCLGFBQzdCLDZCQUE2QjtnSEFFOUIsZ0JBQWdCLFlBSGYsNkJBQTZCOzs0RkFHOUIsZ0JBQWdCO2tCQUo1QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLDZCQUE2QixDQUFDO29CQUN4QyxPQUFPLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztpQkFDM0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYXRlZ29yaWVzTWFuYWdlbWVudENvbXBvbmVudCB9IGZyb20gJy4vY2F0ZWdvcmllcy1tYW5hZ2VtZW50L2NhdGVnb3JpZXMtbWFuYWdlbWVudC5jb21wb25lbnQnO1xuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIGBDYXRlZ29yaWVzTWFuYWdlbWVudENvbXBvbmVudGAgc3RhbmRhbG9uZSBjb21wb25lbnQgaW5zdGVhZCAqL1xuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ2F0ZWdvcmllc01hbmFnZW1lbnRDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtDYXRlZ29yaWVzTWFuYWdlbWVudENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgQ2F0ZWdvcmllc01vZHVsZSB7fVxuIl19
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
export * from './public-api';
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL2NhdGVnb3J5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
export {};
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktbm9kZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL2NhdGVnb3J5L21vZGVscy9jYXRlZ29yeS1ub2RlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUciLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFRyZWVOb2RlIH0gZnJvbSAnLi4vLi4vdHJlZS9tb2RlbHMvdHJlZS1ub2RlLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2F0ZWdvcnlOb2RlIGV4dGVuZHMgVHJlZU5vZGUge1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuIl19
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
export * from './services/category.service';
|
|
18
|
-
export * from './services/category-tree-datasource.service';
|
|
19
|
-
export * from './models/category-node.interface';
|
|
20
|
-
export * from './category.module';
|
|
21
|
-
export * from './categories-management/categories-management.component';
|
|
22
|
-
export * from './categories-management/categories-management-mode';
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvY2F0ZWdvcnkvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyxvREFBb0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jYXRlZ29yeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvY2F0ZWdvcnktdHJlZS1kYXRhc291cmNlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvY2F0ZWdvcnktbm9kZS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXRlZ29yeS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXRlZ29yaWVzLW1hbmFnZW1lbnQvY2F0ZWdvcmllcy1tYW5hZ2VtZW50LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NhdGVnb3JpZXMtbWFuYWdlbWVudC9jYXRlZ29yaWVzLW1hbmFnZW1lbnQtbW9kZSc7XG4iXX0=
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
import { Injectable } from '@angular/core';
|
|
18
|
-
import { TreeNodeType, TreeService } from '../../tree';
|
|
19
|
-
import { CategoryService } from './category.service';
|
|
20
|
-
import { from } from 'rxjs';
|
|
21
|
-
import { map, mergeMap, toArray } from 'rxjs/operators';
|
|
22
|
-
import * as i0 from "@angular/core";
|
|
23
|
-
import * as i1 from "./category.service";
|
|
24
|
-
export class CategoryTreeDatasourceService extends TreeService {
|
|
25
|
-
constructor(categoryService) {
|
|
26
|
-
super();
|
|
27
|
-
this.categoryService = categoryService;
|
|
28
|
-
}
|
|
29
|
-
getSubNodes(parentNodeId, skipCount, maxItems, name) {
|
|
30
|
-
return !name
|
|
31
|
-
? this.categoryService.getSubcategories(parentNodeId, skipCount, maxItems).pipe(map((response) => {
|
|
32
|
-
const parentNode = this.getParentNode(parentNodeId);
|
|
33
|
-
const nodesList = response.list.entries.map((entry) => ({
|
|
34
|
-
id: entry.entry.id,
|
|
35
|
-
nodeName: entry.entry.name,
|
|
36
|
-
parentId: entry.entry.parentId,
|
|
37
|
-
hasChildren: entry.entry.hasChildren,
|
|
38
|
-
level: parentNode ? parentNode.level + 1 : 0,
|
|
39
|
-
isLoading: false,
|
|
40
|
-
nodeType: TreeNodeType.RegularNode
|
|
41
|
-
}));
|
|
42
|
-
if (response.list.pagination.hasMoreItems && parentNode) {
|
|
43
|
-
const loadMoreNode = {
|
|
44
|
-
id: 'loadMore',
|
|
45
|
-
nodeName: '',
|
|
46
|
-
parentId: parentNode.id,
|
|
47
|
-
hasChildren: false,
|
|
48
|
-
level: parentNode.level + 1,
|
|
49
|
-
isLoading: false,
|
|
50
|
-
nodeType: TreeNodeType.LoadMoreNode
|
|
51
|
-
};
|
|
52
|
-
nodesList.push(loadMoreNode);
|
|
53
|
-
}
|
|
54
|
-
return { entries: nodesList, pagination: response.list.pagination };
|
|
55
|
-
}))
|
|
56
|
-
: this.categoryService.searchCategories(name, skipCount, maxItems).pipe(mergeMap((pagingResult) => {
|
|
57
|
-
const nextAfterGeneralPathPartIndex = 3;
|
|
58
|
-
const pathSeparator = '/';
|
|
59
|
-
return from(pagingResult.list.entries).pipe(mergeMap((category) => {
|
|
60
|
-
const path = category.entry.path.name.split(pathSeparator).slice(nextAfterGeneralPathPartIndex).join(pathSeparator);
|
|
61
|
-
return this.categoryService.getCategory(category.entry.id).pipe(map((res) => ({
|
|
62
|
-
id: category.entry.id,
|
|
63
|
-
nodeName: path ? `${path}/${category.entry.name}` : category.entry.name,
|
|
64
|
-
parentId: category.entry.parentId,
|
|
65
|
-
level: 0,
|
|
66
|
-
nodeType: TreeNodeType.RegularNode,
|
|
67
|
-
hasChildren: res.entry.hasChildren,
|
|
68
|
-
isLoading: false
|
|
69
|
-
})));
|
|
70
|
-
}), toArray(), map((res) => ({ entries: res, pagination: pagingResult.list.pagination })));
|
|
71
|
-
}));
|
|
72
|
-
}
|
|
73
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CategoryTreeDatasourceService, deps: [{ token: i1.CategoryService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
74
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CategoryTreeDatasourceService, providedIn: 'root' }); }
|
|
75
|
-
}
|
|
76
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CategoryTreeDatasourceService, decorators: [{
|
|
77
|
-
type: Injectable,
|
|
78
|
-
args: [{ providedIn: 'root' }]
|
|
79
|
-
}], ctorParameters: () => [{ type: i1.CategoryService }] });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktdHJlZS1kYXRhc291cmNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL2NhdGVnb3J5L3NlcnZpY2VzL2NhdGVnb3J5LXRyZWUtZGF0YXNvdXJjZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBZ0IsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFHeEQsTUFBTSxPQUFPLDZCQUE4QixTQUFRLFdBQXlCO0lBQ3hFLFlBQW9CLGVBQWdDO1FBQ2hELEtBQUssRUFBRSxDQUFDO1FBRFEsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBRXBELENBQUM7SUFFTSxXQUFXLENBQUMsWUFBb0IsRUFBRSxTQUFrQixFQUFFLFFBQWlCLEVBQUUsSUFBYTtRQUN6RixPQUFPLENBQUMsSUFBSTtZQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUN6RSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDYixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNwRCxNQUFNLFNBQVMsR0FBbUIsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FB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RUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUM3RSxDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNaLENBQUM7K0dBM0RRLDZCQUE2QjttSEFBN0IsNkJBQTZCLGNBRGhCLE1BQU07OzRGQUNuQiw2QkFBNkI7a0JBRHpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmVlTm9kZVR5cGUsIFRyZWVSZXNwb25zZSwgVHJlZVNlcnZpY2UgfSBmcm9tICcuLi8uLi90cmVlJztcbmltcG9ydCB7IENhdGVnb3J5Tm9kZSB9IGZyb20gJy4uL21vZGVscy9jYXRlZ29yeS1ub2RlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDYXRlZ29yeVNlcnZpY2UgfSBmcm9tICcuL2NhdGVnb3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBtZXJnZU1hcCwgdG9BcnJheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBDYXRlZ29yeVRyZWVEYXRhc291cmNlU2VydmljZSBleHRlbmRzIFRyZWVTZXJ2aWNlPENhdGVnb3J5Tm9kZT4ge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2F0ZWdvcnlTZXJ2aWNlOiBDYXRlZ29yeVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3ViTm9kZXMocGFyZW50Tm9kZUlkOiBzdHJpbmcsIHNraXBDb3VudD86IG51bWJlciwgbWF4SXRlbXM/OiBudW1iZXIsIG5hbWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRyZWVSZXNwb25zZTxDYXRlZ29yeU5vZGU+PiB7XG4gICAgICAgIHJldHVybiAhbmFtZVxuICAgICAgICAgICAgPyB0aGlzLmNhdGVnb3J5U2VydmljZS5nZXRTdWJjYXRlZ29yaWVzKHBhcmVudE5vZGVJZCwgc2tpcENvdW50LCBtYXhJdGVtcykucGlwZShcbiAgICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gdGhpcy5nZXRQYXJlbnROb2RlKHBhcmVudE5vZGVJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZXNMaXN0OiBDYXRlZ29yeU5vZGVbXSA9IHJlc3BvbnNlLmxpc3QuZW50cmllcy5tYXAoKGVudHJ5KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogZW50cnkuZW50cnkuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVOYW1lOiBlbnRyeS5lbnRyeS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogZW50cnkuZW50cnkucGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0NoaWxkcmVuOiBlbnRyeS5lbnRyeS5oYXNDaGlsZHJlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IHBhcmVudE5vZGUgPyBwYXJlbnROb2RlLmxldmVsICsgMSA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVUeXBlOiBUcmVlTm9kZVR5cGUuUmVndWxhck5vZGVcbiAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmxpc3QucGFnaW5hdGlvbi5oYXNNb3JlSXRlbXMgJiYgcGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2FkTW9yZU5vZGU6IENhdGVnb3J5Tm9kZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnbG9hZE1vcmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZU5hbWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IHBhcmVudE5vZGUuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNDaGlsZHJlbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDogcGFyZW50Tm9kZS5sZXZlbCArIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZVR5cGU6IFRyZWVOb2RlVHlwZS5Mb2FkTW9yZU5vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXNMaXN0LnB1c2gobG9hZE1vcmVOb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgZW50cmllczogbm9kZXNMaXN0LCBwYWdpbmF0aW9uOiByZXNwb25zZS5saXN0LnBhZ2luYXRpb24gfTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogdGhpcy5jYXRlZ29yeVNlcnZpY2Uuc2VhcmNoQ2F0ZWdvcmllcyhuYW1lLCBza2lwQ291bnQsIG1heEl0ZW1zKS5waXBlKFxuICAgICAgICAgICAgICAgICAgbWVyZ2VNYXAoKHBhZ2luZ1Jlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRBZnRlckdlbmVyYWxQYXRoUGFydEluZGV4ID0gMztcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoU2VwYXJhdG9yID0gJy8nO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmcm9tKHBhZ2luZ1Jlc3VsdC5saXN0LmVudHJpZXMpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlTWFwKChjYXRlZ29yeSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IGNhdGVnb3J5LmVudHJ5LnBhdGgubmFtZS5zcGxpdChwYXRoU2VwYXJhdG9yKS5zbGljZShuZXh0QWZ0ZXJHZW5lcmFsUGF0aFBhcnRJbmRleCkuam9pbihwYXRoU2VwYXJhdG9yKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcnlTZXJ2aWNlLmdldENhdGVnb3J5KGNhdGVnb3J5LmVudHJ5LmlkKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgocmVzKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogY2F0ZWdvcnkuZW50cnkuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVOYW1lOiBwYXRoID8gYCR7cGF0aH0vJHtjYXRlZ29yeS5lbnRyeS5uYW1lfWAgOiBjYXRlZ29yeS5lbnRyeS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogY2F0ZWdvcnkuZW50cnkucGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlVHlwZTogVHJlZU5vZGVUeXBlLlJlZ3VsYXJOb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNDaGlsZHJlbjogcmVzLmVudHJ5Lmhhc0NoaWxkcmVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9BcnJheSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHJlcykgPT4gKHsgZW50cmllczogcmVzLCBwYWdpbmF0aW9uOiBwYWdpbmdSZXN1bHQubGlzdC5wYWdpbmF0aW9uIH0pKVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|