@alfresco/adf-content-services 8.1.0-16024893197 → 8.1.0-16047635687
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 +744 -761
- 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 +3 -5
- package/esm2022/adf-content-services.mjs +0 -5
- package/esm2022/lib/agent/index.mjs +0 -18
- package/esm2022/lib/agent/public-api.mjs +0 -18
- package/esm2022/lib/agent/services/agent.service.mjs +0 -60
- package/esm2022/lib/alfresco-icon/alfresco-icon.component.mjs +0 -27
- package/esm2022/lib/api-factories/alfresco-api-no-auth.service.mjs +0 -42
- package/esm2022/lib/api-factories/alfresco-api-v2-loader.service.mjs +0 -77
- package/esm2022/lib/api-factories/index.mjs +0 -18
- package/esm2022/lib/api-factories/public-api.mjs +0 -19
- package/esm2022/lib/aspect-list/aspect-list-dialog-data.interface.mjs +0 -18
- package/esm2022/lib/aspect-list/aspect-list-dialog.component.mjs +0 -77
- package/esm2022/lib/aspect-list/aspect-list.component.mjs +0 -139
- package/esm2022/lib/aspect-list/aspect-list.module.mjs +0 -35
- package/esm2022/lib/aspect-list/index.mjs +0 -18
- package/esm2022/lib/aspect-list/public-api.mjs +0 -24
- package/esm2022/lib/aspect-list/services/aspect-list.service.mjs +0 -83
- package/esm2022/lib/aspect-list/services/dialog-aspect-list.service.mjs +0 -86
- package/esm2022/lib/aspect-list/services/node-aspect.service.mjs +0 -52
- package/esm2022/lib/auth-loader/content-auth-loader-factory.mjs +0 -26
- package/esm2022/lib/auth-loader/content-auth-loader.service.mjs +0 -42
- package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +0 -166
- package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +0 -35
- package/esm2022/lib/breadcrumb/dropdown-breadcrumb.component.mjs +0 -65
- package/esm2022/lib/breadcrumb/index.mjs +0 -18
- package/esm2022/lib/breadcrumb/public-api.mjs +0 -20
- package/esm2022/lib/category/categories-management/categories-management-mode.mjs +0 -22
- package/esm2022/lib/category/categories-management/categories-management.component.mjs +0 -308
- package/esm2022/lib/category/category.module.mjs +0 -33
- package/esm2022/lib/category/index.mjs +0 -18
- package/esm2022/lib/category/models/category-node.interface.mjs +0 -18
- package/esm2022/lib/category/public-api.mjs +0 -23
- package/esm2022/lib/category/services/category-tree-datasource.service.mjs +0 -80
- package/esm2022/lib/category/services/category.service.mjs +0 -159
- package/esm2022/lib/common/events/file.event.mjs +0 -46
- package/esm2022/lib/common/index.mjs +0 -18
- package/esm2022/lib/common/interfaces/saved-search.interface.mjs +0 -18
- package/esm2022/lib/common/interfaces/search-configuration.interface.mjs +0 -18
- package/esm2022/lib/common/mocks/ecm-user.service.mock.mjs +0 -37
- package/esm2022/lib/common/models/allowable-operations.enum.mjs +0 -30
- package/esm2022/lib/common/models/ecm-company.model.mjs +0 -19
- package/esm2022/lib/common/models/ecm-user.model.mjs +0 -45
- package/esm2022/lib/common/models/file.model.mjs +0 -53
- package/esm2022/lib/common/models/node-metadata.model.mjs +0 -23
- package/esm2022/lib/common/models/permissions.enum.mjs +0 -32
- package/esm2022/lib/common/public-api.mjs +0 -37
- package/esm2022/lib/common/services/card-view-content-update.service.mjs +0 -55
- package/esm2022/lib/common/services/content.service.mjs +0 -180
- package/esm2022/lib/common/services/discovery-api.service.mjs +0 -79
- package/esm2022/lib/common/services/favorites-api.service.mjs +0 -84
- package/esm2022/lib/common/services/nodes-api.service.mjs +0 -251
- package/esm2022/lib/common/services/people-content.service.mjs +0 -138
- package/esm2022/lib/common/services/rendition.service.mjs +0 -270
- package/esm2022/lib/common/services/saved-searches.service.mjs +0 -206
- package/esm2022/lib/common/services/sites.service.mjs +0 -243
- package/esm2022/lib/common/services/upload.service.mjs +0 -391
- package/esm2022/lib/content-metadata/components/content-metadata/content-metadata-header.component.mjs +0 -54
- package/esm2022/lib/content-metadata/components/content-metadata/content-metadata.component.mjs +0 -490
- package/esm2022/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.mjs +0 -128
- package/esm2022/lib/content-metadata/content-metadata.module.mjs +0 -36
- package/esm2022/lib/content-metadata/index.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/aspect-oriented-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/card-view-group.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/content-metadata-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/content-metadata-custom-panel.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/content-metadata-panel.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/content-metadata.interfaces.mjs +0 -28
- package/esm2022/lib/content-metadata/interfaces/indifferent-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/layout-oriented-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/organised-property-group.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/preset-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/property-group.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/property.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/public-api.mjs +0 -31
- package/esm2022/lib/content-metadata/services/basic-properties.service.mjs +0 -107
- package/esm2022/lib/content-metadata/services/config/aspect-oriented-config.service.mjs +0 -106
- package/esm2022/lib/content-metadata/services/config/content-metadata-config.factory.mjs +0 -76
- package/esm2022/lib/content-metadata/services/config/indifferent-config.service.mjs +0 -40
- package/esm2022/lib/content-metadata/services/config/layout-oriented-config.service.mjs +0 -108
- package/esm2022/lib/content-metadata/services/config/property-group-reader.mjs +0 -33
- package/esm2022/lib/content-metadata/services/content-metadata.service.mjs +0 -99
- package/esm2022/lib/content-metadata/services/content-type-property.service.mjs +0 -134
- package/esm2022/lib/content-metadata/services/property-descriptors.service.mjs +0 -52
- package/esm2022/lib/content-metadata/services/property-groups-translator.service.mjs +0 -169
- package/esm2022/lib/content-node-selector/content-node-dialog.service.mjs +0 -256
- package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.component.mjs +0 -617
- package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.service.mjs +0 -66
- package/esm2022/lib/content-node-selector/content-node-selector.component-data.interface.mjs +0 -18
- package/esm2022/lib/content-node-selector/content-node-selector.component.mjs +0 -205
- package/esm2022/lib/content-node-selector/content-node-selector.module.mjs +0 -50
- package/esm2022/lib/content-node-selector/index.mjs +0 -18
- package/esm2022/lib/content-node-selector/name-location-cell/name-location-cell.component.mjs +0 -48
- package/esm2022/lib/content-node-selector/public-api.mjs +0 -25
- package/esm2022/lib/content-node-selector/site-dropdown/sites-dropdown.component.mjs +0 -168
- package/esm2022/lib/content-node-share/content-node-share.dialog.mjs +0 -287
- package/esm2022/lib/content-node-share/content-node-share.directive.mjs +0 -102
- package/esm2022/lib/content-node-share/content-node-share.module.mjs +0 -35
- package/esm2022/lib/content-node-share/content-node-share.settings.mjs +0 -18
- package/esm2022/lib/content-node-share/index.mjs +0 -18
- package/esm2022/lib/content-node-share/public-api.mjs +0 -22
- package/esm2022/lib/content-node-share/services/shared-links-api.service.mjs +0 -83
- package/esm2022/lib/content-type/content-type-dialog.component.mjs +0 -57
- package/esm2022/lib/content-type/content-type-metadata.interface.mjs +0 -18
- package/esm2022/lib/content-type/content-type.service.mjs +0 -52
- package/esm2022/lib/content-type/index.mjs +0 -20
- package/esm2022/lib/content.module.mjs +0 -277
- package/esm2022/lib/dialogs/category-selector/category-selector.dialog.mjs +0 -51
- package/esm2022/lib/dialogs/dialog.module.mjs +0 -52
- package/esm2022/lib/dialogs/download-zip/download-zip.dialog.mjs +0 -111
- package/esm2022/lib/dialogs/download-zip/download-zip.dialog.module.mjs +0 -38
- package/esm2022/lib/dialogs/download-zip/services/download-zip.service.mjs +0 -66
- package/esm2022/lib/dialogs/folder/folder-name.validators.mjs +0 -44
- package/esm2022/lib/dialogs/folder/folder.dialog.mjs +0 -146
- package/esm2022/lib/dialogs/index.mjs +0 -18
- package/esm2022/lib/dialogs/library/library.dialog.mjs +0 -224
- package/esm2022/lib/dialogs/node-lock/node-lock.dialog.mjs +0 -115
- package/esm2022/lib/dialogs/public-api.mjs +0 -25
- package/esm2022/lib/directives/auto-focus.directive.mjs +0 -38
- package/esm2022/lib/directives/check-allowable-operation.directive.mjs +0 -126
- package/esm2022/lib/directives/content-directive.module.mjs +0 -75
- package/esm2022/lib/directives/index.mjs +0 -18
- package/esm2022/lib/directives/library-favorite.directive.mjs +0 -119
- package/esm2022/lib/directives/library-membership.directive.mjs +0 -202
- package/esm2022/lib/directives/node-counter.directive.mjs +0 -59
- package/esm2022/lib/directives/node-delete.directive.mjs +0 -177
- package/esm2022/lib/directives/node-download.directive.mjs +0 -138
- package/esm2022/lib/directives/node-favorite.directive.mjs +0 -193
- package/esm2022/lib/directives/node-lock.directive.mjs +0 -57
- package/esm2022/lib/directives/node-restore.directive.mjs +0 -218
- package/esm2022/lib/directives/public-api.mjs +0 -28
- package/esm2022/lib/document-list/components/content-action/content-action-list.component.mjs +0 -60
- package/esm2022/lib/document-list/components/content-action/content-action.component.mjs +0 -196
- package/esm2022/lib/document-list/components/document-list.component.mjs +0 -965
- package/esm2022/lib/document-list/components/document-list.token.mjs +0 -21
- package/esm2022/lib/document-list/components/file-auto-download/file-auto-download.component.mjs +0 -42
- package/esm2022/lib/document-list/components/filter-header/filter-header.component.mjs +0 -107
- package/esm2022/lib/document-list/components/library-name-column/library-name-column.component.mjs +0 -131
- package/esm2022/lib/document-list/components/library-role-column/library-role-column.component.mjs +0 -91
- package/esm2022/lib/document-list/components/library-status-column/library-status-column.component.mjs +0 -86
- package/esm2022/lib/document-list/components/name-column/name-column.component.mjs +0 -118
- package/esm2022/lib/document-list/components/node.event.mjs +0 -30
- package/esm2022/lib/document-list/components/trashcan-name-column/trashcan-name-column.component.mjs +0 -83
- package/esm2022/lib/document-list/data/image-resolver.model.mjs +0 -18
- package/esm2022/lib/document-list/data/row-filter.model.mjs +0 -18
- package/esm2022/lib/document-list/data/share-data-row.model.mjs +0 -102
- package/esm2022/lib/document-list/data/share-datatable-adapter.mjs +0 -258
- package/esm2022/lib/document-list/document-list.module.mjs +0 -75
- package/esm2022/lib/document-list/index.mjs +0 -18
- package/esm2022/lib/document-list/interfaces/document-list-loader.interface.mjs +0 -18
- package/esm2022/lib/document-list/models/content-action.model.mjs +0 -59
- package/esm2022/lib/document-list/models/document-folder.model.mjs +0 -23
- package/esm2022/lib/document-list/models/node-action.enum.mjs +0 -27
- package/esm2022/lib/document-list/models/permissions-style.model.mjs +0 -27
- package/esm2022/lib/document-list/models/permissions.model.mjs +0 -26
- package/esm2022/lib/document-list/models/preset.model.mjs +0 -257
- package/esm2022/lib/document-list/public-api.mjs +0 -47
- package/esm2022/lib/document-list/services/custom-resources.service.mjs +0 -378
- package/esm2022/lib/document-list/services/document-actions.service.mjs +0 -142
- package/esm2022/lib/document-list/services/document-list.service.mjs +0 -175
- package/esm2022/lib/document-list/services/folder-actions.service.mjs +0 -137
- package/esm2022/lib/document-list/services/lock.service.mjs +0 -72
- package/esm2022/lib/document-list/services/node-actions.service.mjs +0 -122
- package/esm2022/lib/group/index.mjs +0 -18
- package/esm2022/lib/group/public-api.mjs +0 -18
- package/esm2022/lib/group/services/group.service.mjs +0 -84
- package/esm2022/lib/infinite-scroll-datasource/index.mjs +0 -18
- package/esm2022/lib/infinite-scroll-datasource/infinite-scroll-datasource.mjs +0 -69
- package/esm2022/lib/infinite-scroll-datasource/public-api.mjs +0 -18
- package/esm2022/lib/interfaces/base-card-view-content-update.interface.mjs +0 -18
- package/esm2022/lib/interfaces/index.mjs +0 -18
- package/esm2022/lib/interfaces/library-entity.interface.mjs +0 -18
- package/esm2022/lib/interfaces/library-membership-error-event.interface.mjs +0 -18
- package/esm2022/lib/interfaces/library-membership-toggle-event.interface.mjs +0 -18
- package/esm2022/lib/interfaces/node-allowable-operation-subject.interface.mjs +0 -18
- package/esm2022/lib/interfaces/public-api.mjs +0 -23
- package/esm2022/lib/interfaces/restore-message-model.interface.mjs +0 -19
- package/esm2022/lib/legal-hold/index.mjs +0 -18
- package/esm2022/lib/legal-hold/public-api.mjs +0 -18
- package/esm2022/lib/legal-hold/services/legal-hold.service.mjs +0 -136
- package/esm2022/lib/material.module.mjs +0 -183
- package/esm2022/lib/mock/alfresco-api.service.mock.mjs +0 -43
- package/esm2022/lib/mock/date-range-search-filter.mock.mjs +0 -65
- package/esm2022/lib/mock/document-library.model.mock.mjs +0 -84
- package/esm2022/lib/mock/document-list.component.mock.mjs +0 -364
- package/esm2022/lib/mock/index.mjs +0 -18
- package/esm2022/lib/mock/new-version-uploader.service.mock.mjs +0 -161
- package/esm2022/lib/mock/public-api.mjs +0 -27
- package/esm2022/lib/mock/search-filter-mock.mjs +0 -637
- package/esm2022/lib/mock/search-query.mock.mjs +0 -40
- package/esm2022/lib/mock/search.component.mock.mjs +0 -165
- package/esm2022/lib/mock/search.service.mock.mjs +0 -61
- package/esm2022/lib/mock/sites-dropdown.component.mock.mjs +0 -281
- package/esm2022/lib/new-version-uploader/index.mjs +0 -18
- package/esm2022/lib/new-version-uploader/models/index.mjs +0 -18
- package/esm2022/lib/new-version-uploader/models/new-version-uploader.model.mjs +0 -24
- package/esm2022/lib/new-version-uploader/new-version-uploader.dialog.mjs +0 -74
- package/esm2022/lib/new-version-uploader/new-version-uploader.module.mjs +0 -33
- package/esm2022/lib/new-version-uploader/new-version-uploader.service.mjs +0 -103
- package/esm2022/lib/new-version-uploader/public-api.mjs +0 -21
- package/esm2022/lib/node-comments/index.mjs +0 -18
- package/esm2022/lib/node-comments/node-comments.component.mjs +0 -50
- package/esm2022/lib/node-comments/node-comments.module.mjs +0 -33
- package/esm2022/lib/node-comments/public-api.mjs +0 -20
- package/esm2022/lib/node-comments/services/node-comments.service.mjs +0 -85
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog-data.interface.mjs +0 -18
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog.component.mjs +0 -123
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-panel.component.mjs +0 -102
- package/esm2022/lib/permission-manager/components/add-permission/add-permission.component.mjs +0 -69
- package/esm2022/lib/permission-manager/components/add-permission/search-config-permission.service.mjs +0 -45
- package/esm2022/lib/permission-manager/components/inherited-button.directive.mjs +0 -67
- package/esm2022/lib/permission-manager/components/node-path-column/node-path-column.component.mjs +0 -56
- package/esm2022/lib/permission-manager/components/permission-container/permission-container.component.mjs +0 -102
- package/esm2022/lib/permission-manager/components/permission-list/permission-list.component.mjs +0 -87
- package/esm2022/lib/permission-manager/components/permission-list/permission-list.service.mjs +0 -219
- package/esm2022/lib/permission-manager/components/pop-over.directive.mjs +0 -134
- package/esm2022/lib/permission-manager/components/user-icon-column/user-icon-column.component.mjs +0 -88
- package/esm2022/lib/permission-manager/components/user-name-column/user-name-column.component.mjs +0 -82
- package/esm2022/lib/permission-manager/components/user-role-column/user-role-column.component.mjs +0 -111
- package/esm2022/lib/permission-manager/index.mjs +0 -18
- package/esm2022/lib/permission-manager/models/member.model.mjs +0 -59
- package/esm2022/lib/permission-manager/models/permission.model.mjs +0 -29
- package/esm2022/lib/permission-manager/models/role.model.mjs +0 -18
- package/esm2022/lib/permission-manager/permission-manager.module.mjs +0 -84
- package/esm2022/lib/permission-manager/public-api.mjs +0 -36
- package/esm2022/lib/permission-manager/services/node-permission-dialog.service.mjs +0 -78
- package/esm2022/lib/permission-manager/services/node-permission.service.mjs +0 -299
- package/esm2022/lib/pipes/content-pipe.module.mjs +0 -37
- package/esm2022/lib/pipes/index.mjs +0 -18
- package/esm2022/lib/pipes/node-name-tooltip.pipe.mjs +0 -69
- package/esm2022/lib/pipes/public-api.mjs +0 -19
- package/esm2022/lib/prediction/index.mjs +0 -18
- package/esm2022/lib/prediction/public-api.mjs +0 -18
- package/esm2022/lib/prediction/services/index.mjs +0 -18
- package/esm2022/lib/prediction/services/prediction.service.mjs +0 -57
- package/esm2022/lib/search/components/empty-search-result.component.mjs +0 -27
- package/esm2022/lib/search/components/index.mjs +0 -43
- package/esm2022/lib/search/components/reset-search.directive.mjs +0 -41
- package/esm2022/lib/search/components/search-check-list/index.mjs +0 -18
- package/esm2022/lib/search/components/search-check-list/search-check-list.component.mjs +0 -158
- package/esm2022/lib/search/components/search-chip-autocomplete-input/index.mjs +0 -18
- package/esm2022/lib/search/components/search-chip-autocomplete-input/search-chip-autocomplete-input.component.mjs +0 -169
- package/esm2022/lib/search/components/search-chip-list/search-chip-list.component.mjs +0 -46
- package/esm2022/lib/search/components/search-control.component.mjs +0 -180
- package/esm2022/lib/search/components/search-date-range-tabbed/index.mjs +0 -22
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/date-range-type.mjs +0 -23
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/in-last-date-type.mjs +0 -23
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.mjs +0 -196
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.mjs +0 -18
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range-tabbed.component.mjs +0 -201
- package/esm2022/lib/search/components/search-datetime-range/index.mjs +0 -18
- package/esm2022/lib/search/components/search-datetime-range/search-datetime-range.component.mjs +0 -223
- package/esm2022/lib/search/components/search-facet-field/index.mjs +0 -18
- package/esm2022/lib/search/components/search-facet-field/search-facet-field.component.mjs +0 -132
- package/esm2022/lib/search/components/search-filter/index.mjs +0 -19
- package/esm2022/lib/search/components/search-filter/search-filter-card/search-filter-card.component.mjs +0 -45
- package/esm2022/lib/search/components/search-filter/search-filter.component.mjs +0 -80
- package/esm2022/lib/search/components/search-filter-autocomplete-chips/index.mjs +0 -18
- package/esm2022/lib/search/components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component.mjs +0 -154
- package/esm2022/lib/search/components/search-filter-chips/index.mjs +0 -23
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.mjs +0 -104
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.mjs +0 -109
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component.mjs +0 -129
- package/esm2022/lib/search/components/search-filter-chips/search-filter-chips.component.mjs +0 -63
- package/esm2022/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.mjs +0 -43
- package/esm2022/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.mjs +0 -109
- package/esm2022/lib/search/components/search-filter-container/index.mjs +0 -18
- package/esm2022/lib/search/components/search-filter-container/search-filter-container.component.mjs +0 -122
- package/esm2022/lib/search/components/search-filter-tabbed/index.mjs +0 -19
- package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tab.directive.mjs +0 -36
- package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tabbed.component.mjs +0 -63
- package/esm2022/lib/search/components/search-form/index.mjs +0 -18
- package/esm2022/lib/search/components/search-form/search-form.component.mjs +0 -52
- package/esm2022/lib/search/components/search-input/index.mjs +0 -18
- package/esm2022/lib/search/components/search-input/search-input.component.mjs +0 -108
- package/esm2022/lib/search/components/search-logical-filter/index.mjs +0 -18
- package/esm2022/lib/search/components/search-logical-filter/search-logical-filter.component.mjs +0 -163
- package/esm2022/lib/search/components/search-number-range/index.mjs +0 -18
- package/esm2022/lib/search/components/search-number-range/search-number-range.component.mjs +0 -154
- package/esm2022/lib/search/components/search-panel/index.mjs +0 -18
- package/esm2022/lib/search/components/search-panel/search-panel.component.mjs +0 -44
- package/esm2022/lib/search/components/search-properties/file-size-condition.mjs +0 -18
- package/esm2022/lib/search/components/search-properties/file-size-operator.enum.mjs +0 -23
- package/esm2022/lib/search/components/search-properties/file-size-unit.enum.mjs +0 -26
- package/esm2022/lib/search/components/search-properties/index.mjs +0 -22
- package/esm2022/lib/search/components/search-properties/search-properties.component.mjs +0 -244
- package/esm2022/lib/search/components/search-properties/search-properties.mjs +0 -18
- package/esm2022/lib/search/components/search-radio/index.mjs +0 -18
- package/esm2022/lib/search/components/search-radio/search-radio.component.mjs +0 -145
- package/esm2022/lib/search/components/search-slider/index.mjs +0 -18
- package/esm2022/lib/search/components/search-slider/search-slider.component.mjs +0 -119
- package/esm2022/lib/search/components/search-sorting-picker/index.mjs +0 -18
- package/esm2022/lib/search/components/search-sorting-picker/search-sorting-picker.component.mjs +0 -77
- package/esm2022/lib/search/components/search-text/index.mjs +0 -18
- package/esm2022/lib/search/components/search-text/search-text.component.mjs +0 -134
- package/esm2022/lib/search/components/search-widget-container/index.mjs +0 -18
- package/esm2022/lib/search/components/search-widget-container/search-widget-container.component.mjs +0 -113
- package/esm2022/lib/search/components/search.component.mjs +0 -152
- package/esm2022/lib/search/forms/index.mjs +0 -19
- package/esm2022/lib/search/forms/live-error-state-matcher.mjs +0 -23
- package/esm2022/lib/search/forms/search-term-validator.mjs +0 -26
- package/esm2022/lib/search/index.mjs +0 -18
- package/esm2022/lib/search/mocks/index.mjs +0 -18
- package/esm2022/lib/search/mocks/search.service.mock.mjs +0 -56
- package/esm2022/lib/search/models/autocomplete-option.interface.mjs +0 -22
- package/esm2022/lib/search/models/facet-field-bucket.interface.mjs +0 -18
- package/esm2022/lib/search/models/facet-field.interface.mjs +0 -29
- package/esm2022/lib/search/models/facet-query.interface.mjs +0 -18
- package/esm2022/lib/search/models/facet-widget.interface.mjs +0 -18
- package/esm2022/lib/search/models/filter-query.interface.mjs +0 -18
- package/esm2022/lib/search/models/filter-search.interface.mjs +0 -18
- package/esm2022/lib/search/models/index.mjs +0 -34
- package/esm2022/lib/search/models/response-facet-query-list.model.mjs +0 -31
- package/esm2022/lib/search/models/search-category.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-configuration.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-filter-list.model.mjs +0 -148
- package/esm2022/lib/search/models/search-form.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-range.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-sorting-definition.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-widget-settings.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-widget.interface.mjs +0 -18
- package/esm2022/lib/search/models/tabbed-facet-field.interface.mjs +0 -18
- package/esm2022/lib/search/public-api.mjs +0 -24
- package/esm2022/lib/search/search-configuration.token.mjs +0 -19
- package/esm2022/lib/search/search.module.mjs +0 -192
- package/esm2022/lib/search/services/base-query-builder.service.mjs +0 -509
- package/esm2022/lib/search/services/index.mjs +0 -24
- package/esm2022/lib/search/services/search-configuration.service.mjs +0 -50
- package/esm2022/lib/search/services/search-facet-filters.service.mjs +0 -374
- package/esm2022/lib/search/services/search-filter.service.mjs +0 -56
- package/esm2022/lib/search/services/search-header-query-builder.service.mjs +0 -136
- package/esm2022/lib/search/services/search-query-builder.service.mjs +0 -48
- package/esm2022/lib/search/services/search.service.mjs +0 -89
- package/esm2022/lib/search-ai/index.mjs +0 -18
- package/esm2022/lib/search-ai/models/search-ai-input-state.mjs +0 -18
- package/esm2022/lib/search-ai/public-api.mjs +0 -19
- package/esm2022/lib/search-ai/services/search-ai.service.mjs +0 -103
- package/esm2022/lib/security/index.mjs +0 -18
- package/esm2022/lib/security/public-api.mjs +0 -18
- package/esm2022/lib/security/services/models/security-controls-group-response.interface.mjs +0 -18
- package/esm2022/lib/security/services/models/security-controls-mark-response.interface.mjs +0 -18
- package/esm2022/lib/security/services/security-controls-groups-marks-security.service.mjs +0 -274
- package/esm2022/lib/security-options-loader/security-options-loader.service.mjs +0 -43
- package/esm2022/lib/services/alfresco-api.interface.mjs +0 -18
- package/esm2022/lib/services/alfresco-api.service.mjs +0 -120
- package/esm2022/lib/services/index.mjs +0 -18
- package/esm2022/lib/services/public-api.mjs +0 -18
- package/esm2022/lib/tag/index.mjs +0 -18
- package/esm2022/lib/tag/public-api.mjs +0 -24
- package/esm2022/lib/tag/services/tag.service.mjs +0 -171
- package/esm2022/lib/tag/tag-actions/tag-actions.component.mjs +0 -114
- package/esm2022/lib/tag/tag-list/tag-list.component.mjs +0 -98
- package/esm2022/lib/tag/tag-node-list/tag-node-list.component.mjs +0 -80
- package/esm2022/lib/tag/tag.module.mjs +0 -37
- package/esm2022/lib/tag/tags-creator/tags-creator-mode.mjs +0 -27
- package/esm2022/lib/tag/tags-creator/tags-creator.component.mjs +0 -370
- package/esm2022/lib/testing/content.testing.module.mjs +0 -56
- package/esm2022/lib/tree/components/tree.component.mjs +0 -312
- package/esm2022/lib/tree/index.mjs +0 -18
- package/esm2022/lib/tree/models/tree-context-menu-result.interface.mjs +0 -18
- package/esm2022/lib/tree/models/tree-node.interface.mjs +0 -22
- package/esm2022/lib/tree/models/tree-response.interface.mjs +0 -18
- package/esm2022/lib/tree/public-api.mjs +0 -23
- package/esm2022/lib/tree/services/tree.service.mjs +0 -134
- package/esm2022/lib/tree/tree.module.mjs +0 -33
- package/esm2022/lib/tree-view/components/tree-view.component.mjs +0 -75
- package/esm2022/lib/tree-view/data/tree-view-datasource.mjs +0 -99
- package/esm2022/lib/tree-view/index.mjs +0 -18
- package/esm2022/lib/tree-view/models/tree-view.model.mjs +0 -28
- package/esm2022/lib/tree-view/public-api.mjs +0 -22
- package/esm2022/lib/tree-view/services/tree-view.service.mjs +0 -38
- package/esm2022/lib/tree-view/tree-view.module.mjs +0 -33
- package/esm2022/lib/upload/components/base-upload/upload-base.mjs +0 -176
- package/esm2022/lib/upload/components/file-uploading-dialog.component.mjs +0 -190
- package/esm2022/lib/upload/components/file-uploading-list-row.component.mjs +0 -92
- package/esm2022/lib/upload/components/file-uploading-list.component.mjs +0 -124
- package/esm2022/lib/upload/components/upload-button.component.mjs +0 -133
- package/esm2022/lib/upload/components/upload-drag-area.component.mjs +0 -112
- package/esm2022/lib/upload/components/upload-files.event.mjs +0 -41
- package/esm2022/lib/upload/components/upload-version-button.component.mjs +0 -54
- package/esm2022/lib/upload/directives/file-draggable.directive.mjs +0 -154
- package/esm2022/lib/upload/directives/toggle-icon.directive.mjs +0 -75
- package/esm2022/lib/upload/index.mjs +0 -18
- package/esm2022/lib/upload/pipes/file-upload-error.pipe.mjs +0 -39
- package/esm2022/lib/upload/public-api.mjs +0 -29
- package/esm2022/lib/upload/upload.module.mjs +0 -72
- package/esm2022/lib/version-compatibility/index.mjs +0 -18
- package/esm2022/lib/version-compatibility/public-api.mjs +0 -20
- package/esm2022/lib/version-compatibility/version-compatibility-factory.mjs +0 -26
- package/esm2022/lib/version-compatibility/version-compatibility.directive.mjs +0 -53
- package/esm2022/lib/version-compatibility/version-compatibility.module.mjs +0 -33
- package/esm2022/lib/version-compatibility/version-compatibility.service.mjs +0 -76
- package/esm2022/lib/version-manager/content-version.service.mjs +0 -53
- package/esm2022/lib/version-manager/index.mjs +0 -18
- package/esm2022/lib/version-manager/public-api.mjs +0 -23
- package/esm2022/lib/version-manager/version-comparison.component.mjs +0 -42
- package/esm2022/lib/version-manager/version-list.component.mjs +0 -215
- package/esm2022/lib/version-manager/version-manager.component.mjs +0 -145
- package/esm2022/lib/version-manager/version-manager.module.mjs +0 -48
- package/esm2022/lib/version-manager/version-upload.component.mjs +0 -154
- package/esm2022/lib/viewer/alfresco-viewer.module.mjs +0 -33
- package/esm2022/lib/viewer/components/alfresco-viewer.component.mjs +0 -408
- package/esm2022/lib/viewer/index.mjs +0 -18
- package/esm2022/lib/viewer/public-api.mjs +0 -19
- package/esm2022/public-api.mjs +0 -56
|
@@ -1,50 +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 * as i0 from "@angular/core";
|
|
19
|
-
export class SearchConfigurationService {
|
|
20
|
-
/**
|
|
21
|
-
* Generates a request object with custom search parameters.
|
|
22
|
-
*
|
|
23
|
-
* @param searchTerm Term text to search for
|
|
24
|
-
* @param maxResults Maximum number of search results to show in a page
|
|
25
|
-
* @param skipCount The offset of the start of the page within the results list
|
|
26
|
-
* @returns Query body defined by the parameters
|
|
27
|
-
*/
|
|
28
|
-
generateQueryBody(searchTerm, maxResults, skipCount) {
|
|
29
|
-
return {
|
|
30
|
-
query: {
|
|
31
|
-
query: searchTerm ? `'${searchTerm}*' OR name:'${searchTerm}*'` : searchTerm
|
|
32
|
-
},
|
|
33
|
-
include: ['path', 'allowableOperations'],
|
|
34
|
-
paging: {
|
|
35
|
-
maxItems: maxResults,
|
|
36
|
-
skipCount
|
|
37
|
-
},
|
|
38
|
-
filterQueries: [{ query: `TYPE:'cm:folder' OR TYPE:'cm:content'` }, { query: 'NOT cm:creator:System' }]
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchConfigurationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
42
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchConfigurationService, providedIn: 'root' }); }
|
|
43
|
-
}
|
|
44
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchConfigurationService, decorators: [{
|
|
45
|
-
type: Injectable,
|
|
46
|
-
args: [{
|
|
47
|
-
providedIn: 'root'
|
|
48
|
-
}]
|
|
49
|
-
}] });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWNvbmZpZ3VyYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvc2VhcmNoL3NlcnZpY2VzL3NlYXJjaC1jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPM0MsTUFBTSxPQUFPLDBCQUEwQjtJQUNuQzs7Ozs7OztPQU9HO0lBQ0gsaUJBQWlCLENBQUMsVUFBa0IsRUFBRSxVQUFrQixFQUFFLFNBQWlCO1FBQ3ZFLE9BQU87WUFDSCxLQUFLLEVBQUU7Z0JBQ0gsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLGVBQWUsVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVU7YUFDL0U7WUFDRCxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUscUJBQXFCLENBQUM7WUFDeEMsTUFBTSxFQUFFO2dCQUNKLFFBQVEsRUFBRSxVQUFVO2dCQUNwQixTQUFTO2FBQ1o7WUFDRCxhQUFhLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSx1Q0FBdUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLENBQUM7U0FDMUcsQ0FBQztJQUNOLENBQUM7K0dBckJRLDBCQUEwQjttSEFBMUIsMEJBQTBCLGNBRnZCLE1BQU07OzRGQUVULDBCQUEwQjtrQkFIdEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlYXJjaFJlcXVlc3QgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IFNlYXJjaENvbmZpZ3VyYXRpb25JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi9jb21tb24vaW50ZXJmYWNlcy9zZWFyY2gtY29uZmlndXJhdGlvbi5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaENvbmZpZ3VyYXRpb25TZXJ2aWNlIGltcGxlbWVudHMgU2VhcmNoQ29uZmlndXJhdGlvbkludGVyZmFjZSB7XG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIGEgcmVxdWVzdCBvYmplY3Qgd2l0aCBjdXN0b20gc2VhcmNoIHBhcmFtZXRlcnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2VhcmNoVGVybSBUZXJtIHRleHQgdG8gc2VhcmNoIGZvclxuICAgICAqIEBwYXJhbSBtYXhSZXN1bHRzIE1heGltdW0gbnVtYmVyIG9mIHNlYXJjaCByZXN1bHRzIHRvIHNob3cgaW4gYSBwYWdlXG4gICAgICogQHBhcmFtIHNraXBDb3VudCBUaGUgb2Zmc2V0IG9mIHRoZSBzdGFydCBvZiB0aGUgcGFnZSB3aXRoaW4gdGhlIHJlc3VsdHMgbGlzdFxuICAgICAqIEByZXR1cm5zIFF1ZXJ5IGJvZHkgZGVmaW5lZCBieSB0aGUgcGFyYW1ldGVyc1xuICAgICAqL1xuICAgIGdlbmVyYXRlUXVlcnlCb2R5KHNlYXJjaFRlcm06IHN0cmluZywgbWF4UmVzdWx0czogbnVtYmVyLCBza2lwQ291bnQ6IG51bWJlcik6IFNlYXJjaFJlcXVlc3Qge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgICAgICBxdWVyeTogc2VhcmNoVGVybSA/IGAnJHtzZWFyY2hUZXJtfSonIE9SIG5hbWU6JyR7c2VhcmNoVGVybX0qJ2AgOiBzZWFyY2hUZXJtXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5jbHVkZTogWydwYXRoJywgJ2FsbG93YWJsZU9wZXJhdGlvbnMnXSxcbiAgICAgICAgICAgIHBhZ2luZzoge1xuICAgICAgICAgICAgICAgIG1heEl0ZW1zOiBtYXhSZXN1bHRzLFxuICAgICAgICAgICAgICAgIHNraXBDb3VudFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbHRlclF1ZXJpZXM6IFt7IHF1ZXJ5OiBgVFlQRTonY206Zm9sZGVyJyBPUiBUWVBFOidjbTpjb250ZW50J2AgfSwgeyBxdWVyeTogJ05PVCBjbTpjcmVhdG9yOlN5c3RlbScgfV1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,374 +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 { FacetBucketSortBy, FacetBucketSortDirection } from '../models/facet-field.interface';
|
|
19
|
-
import { throwError } from 'rxjs';
|
|
20
|
-
import { SearchQueryBuilderService } from './search-query-builder.service';
|
|
21
|
-
import { TranslationService } from '@alfresco/adf-core';
|
|
22
|
-
import { SearchService } from './search.service';
|
|
23
|
-
import { catchError } from 'rxjs/operators';
|
|
24
|
-
import { SearchFilterList } from '../models/search-filter-list.model';
|
|
25
|
-
import { CategoryService } from '../../category/services/category.service';
|
|
26
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
27
|
-
import * as i0 from "@angular/core";
|
|
28
|
-
import * as i1 from "./search-query-builder.service";
|
|
29
|
-
import * as i2 from "./search.service";
|
|
30
|
-
import * as i3 from "@alfresco/adf-core";
|
|
31
|
-
import * as i4 from "../../category/services/category.service";
|
|
32
|
-
const DEFAULT_PAGE_SIZE = 5;
|
|
33
|
-
export class SearchFacetFiltersService {
|
|
34
|
-
constructor(queryBuilder, searchService, translationService, categoryService) {
|
|
35
|
-
this.queryBuilder = queryBuilder;
|
|
36
|
-
this.searchService = searchService;
|
|
37
|
-
this.translationService = translationService;
|
|
38
|
-
this.categoryService = categoryService;
|
|
39
|
-
/**
|
|
40
|
-
* All facet field items to be displayed in the component. These are updated according to the response.
|
|
41
|
-
* When a new search is performed, the already existing items are updated with the new bucket count values and
|
|
42
|
-
* the newly received items are added to the responseFacets.
|
|
43
|
-
*/
|
|
44
|
-
this.responseFacets = null;
|
|
45
|
-
/* tabbed facet incorporating creator and modifier facets */
|
|
46
|
-
this.tabbedFacet = null;
|
|
47
|
-
/** shows the facet chips */
|
|
48
|
-
this.selectedBuckets = [];
|
|
49
|
-
this.facetQueriesPageSize = DEFAULT_PAGE_SIZE;
|
|
50
|
-
this.getFilterByMinCount = (minCountInput) => (bucket) => {
|
|
51
|
-
let minCount = minCountInput;
|
|
52
|
-
if (minCount === undefined) {
|
|
53
|
-
minCount = 1;
|
|
54
|
-
}
|
|
55
|
-
return bucket.count >= minCount;
|
|
56
|
-
};
|
|
57
|
-
this.getBucketFilterFunction = (bucketList) => (bucket) => {
|
|
58
|
-
if (bucket && bucketList.filterText) {
|
|
59
|
-
const pattern = (bucketList.filterText || '').toLowerCase();
|
|
60
|
-
const label = (this.translationService.instant(bucket.display) || this.translationService.instant(bucket.label)).toLowerCase();
|
|
61
|
-
return this.queryBuilder.config.filterWithContains ? label.indexOf(pattern) !== -1 : label.startsWith(pattern);
|
|
62
|
-
}
|
|
63
|
-
return true;
|
|
64
|
-
};
|
|
65
|
-
if (queryBuilder.config?.facetQueries) {
|
|
66
|
-
this.facetQueriesPageSize = queryBuilder.config.facetQueries.pageSize || DEFAULT_PAGE_SIZE;
|
|
67
|
-
}
|
|
68
|
-
this.queryBuilder.configUpdated.pipe(takeUntilDestroyed()).subscribe(() => {
|
|
69
|
-
this.selectedBuckets = [];
|
|
70
|
-
this.responseFacets = null;
|
|
71
|
-
});
|
|
72
|
-
this.queryBuilder.updated.pipe(takeUntilDestroyed()).subscribe((query) => this.queryBuilder.execute(true, query));
|
|
73
|
-
this.queryBuilder.executed.pipe(takeUntilDestroyed()).subscribe((resultSetPaging) => {
|
|
74
|
-
this.onDataLoaded(resultSetPaging);
|
|
75
|
-
this.searchService.dataLoaded.next(resultSetPaging);
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
onDataLoaded(data) {
|
|
79
|
-
const context = data.list.context;
|
|
80
|
-
if (context) {
|
|
81
|
-
this.parseFacets(context);
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
this.responseFacets = null;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
parseFacets(context) {
|
|
88
|
-
this.parseFacetFields(context);
|
|
89
|
-
this.parseFacetIntervals(context);
|
|
90
|
-
this.parseFacetQueries(context);
|
|
91
|
-
this.sortFacets();
|
|
92
|
-
this.parseTabbedFacetField();
|
|
93
|
-
}
|
|
94
|
-
parseFacetItems(context, configFacetFields, itemType) {
|
|
95
|
-
configFacetFields.forEach((facetField) => {
|
|
96
|
-
const responseField = this.findFacet(context, itemType, facetField.label);
|
|
97
|
-
const responseBuckets = this.getResponseBuckets(responseField, facetField).filter(this.getFilterByMinCount(facetField.mincount));
|
|
98
|
-
this.sortFacetBuckets(responseBuckets, facetField.settings?.bucketSortBy, facetField.settings?.bucketSortDirection ?? FacetBucketSortDirection.ASCENDING);
|
|
99
|
-
const alreadyExistingField = this.findResponseFacet(itemType, facetField.label);
|
|
100
|
-
if (facetField.field === 'cm:categories') {
|
|
101
|
-
this.loadCategoryNames(responseBuckets);
|
|
102
|
-
}
|
|
103
|
-
if (alreadyExistingField) {
|
|
104
|
-
const alreadyExistingBuckets = alreadyExistingField.buckets?.items || [];
|
|
105
|
-
this.updateExistingBuckets(responseField, responseBuckets, alreadyExistingField, alreadyExistingBuckets);
|
|
106
|
-
}
|
|
107
|
-
else if (responseField) {
|
|
108
|
-
if (responseBuckets.length > 0) {
|
|
109
|
-
const bucketList = new SearchFilterList(responseBuckets, facetField.pageSize);
|
|
110
|
-
bucketList.filter = this.getBucketFilterFunction(bucketList);
|
|
111
|
-
if (!this.responseFacets) {
|
|
112
|
-
this.responseFacets = [];
|
|
113
|
-
}
|
|
114
|
-
this.responseFacets.push({
|
|
115
|
-
...facetField,
|
|
116
|
-
type: responseField.type || itemType,
|
|
117
|
-
label: facetField.label,
|
|
118
|
-
pageSize: facetField.pageSize | DEFAULT_PAGE_SIZE,
|
|
119
|
-
currentPageSize: facetField.pageSize | DEFAULT_PAGE_SIZE,
|
|
120
|
-
buckets: bucketList
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
parseTabbedFacetField() {
|
|
127
|
-
if (this.responseFacets) {
|
|
128
|
-
const fields = this.responseFacets.reduce((acc, facet) => `${acc},${facet.field}`, '');
|
|
129
|
-
const tabbedFacetField = {
|
|
130
|
-
fields: ['creator', 'modifier'],
|
|
131
|
-
label: 'SEARCH.FILTER.PEOPLE',
|
|
132
|
-
facets: {}
|
|
133
|
-
};
|
|
134
|
-
this.extractCreatorAndModifier(tabbedFacetField, fields);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
extractCreatorAndModifier(tabbedFacet, fields) {
|
|
138
|
-
if (fields.includes('creator') && fields.includes('modifier')) {
|
|
139
|
-
for (let i = this.responseFacets.length - 1; i >= 0; i--) {
|
|
140
|
-
if (this.responseFacets[i].field === 'creator' || this.responseFacets[i].field === 'modifier') {
|
|
141
|
-
const removedFacet = this.responseFacets.splice(i, 1)[0];
|
|
142
|
-
Object.defineProperty(tabbedFacet.facets, removedFacet.field, {
|
|
143
|
-
value: removedFacet,
|
|
144
|
-
writable: true
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
this.tabbedFacet = tabbedFacet;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
parseFacetFields(context) {
|
|
152
|
-
const configFacetFields = this.queryBuilder.config.facetFields?.fields || [];
|
|
153
|
-
this.parseFacetItems(context, configFacetFields, 'field');
|
|
154
|
-
}
|
|
155
|
-
parseFacetIntervals(context) {
|
|
156
|
-
const configFacetIntervals = this.queryBuilder.config.facetIntervals?.intervals || [];
|
|
157
|
-
this.parseFacetItems(context, configFacetIntervals, 'interval');
|
|
158
|
-
}
|
|
159
|
-
parseFacetQueries(context) {
|
|
160
|
-
const facetQuerySetting = this.queryBuilder.config.facetQueries?.settings || {};
|
|
161
|
-
const configFacetQueries = this.queryBuilder.config.facetQueries?.queries || [];
|
|
162
|
-
const configGroups = configFacetQueries.reduce((acc, query) => {
|
|
163
|
-
const group = this.queryBuilder.getQueryGroup(query);
|
|
164
|
-
if (acc[group]) {
|
|
165
|
-
acc[group].push(query);
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
acc[group] = [query];
|
|
169
|
-
}
|
|
170
|
-
return acc;
|
|
171
|
-
}, []);
|
|
172
|
-
const minCount = this.queryBuilder.config.facetQueries?.mincount;
|
|
173
|
-
const minCountFilter = this.getFilterByMinCount(minCount);
|
|
174
|
-
Object.keys(configGroups).forEach((group) => {
|
|
175
|
-
const responseField = this.findFacet(context, 'query', group);
|
|
176
|
-
const responseBuckets = this.getResponseQueryBuckets(responseField, configGroups[group]).filter(minCountFilter);
|
|
177
|
-
this.sortFacetBuckets(responseBuckets, facetQuerySetting?.bucketSortBy, facetQuerySetting.bucketSortDirection ?? FacetBucketSortDirection.ASCENDING);
|
|
178
|
-
const alreadyExistingField = this.findResponseFacet('query', group);
|
|
179
|
-
if (alreadyExistingField) {
|
|
180
|
-
const alreadyExistingBuckets = alreadyExistingField.buckets?.items || [];
|
|
181
|
-
this.updateExistingBuckets(responseField, responseBuckets, alreadyExistingField, alreadyExistingBuckets);
|
|
182
|
-
}
|
|
183
|
-
else if (responseField) {
|
|
184
|
-
if (responseBuckets.length > 0) {
|
|
185
|
-
const bucketList = new SearchFilterList(responseBuckets, this.facetQueriesPageSize);
|
|
186
|
-
bucketList.filter = this.getBucketFilterFunction(bucketList);
|
|
187
|
-
if (!this.responseFacets) {
|
|
188
|
-
this.responseFacets = [];
|
|
189
|
-
}
|
|
190
|
-
this.responseFacets.push({
|
|
191
|
-
field: group,
|
|
192
|
-
type: responseField.type || 'query',
|
|
193
|
-
label: group,
|
|
194
|
-
pageSize: DEFAULT_PAGE_SIZE,
|
|
195
|
-
currentPageSize: DEFAULT_PAGE_SIZE,
|
|
196
|
-
buckets: bucketList,
|
|
197
|
-
settings: facetQuerySetting
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
sortFacets() {
|
|
204
|
-
this.responseFacets?.sort((facet1, facet2) => (facet1.settings?.facetOrder ?? 0) - (facet2.settings?.facetOrder ?? 0));
|
|
205
|
-
}
|
|
206
|
-
getResponseBuckets(responseField, configField) {
|
|
207
|
-
return (responseField?.buckets || []).map((respBucket) => {
|
|
208
|
-
respBucket['count'] = this.getCountValue(respBucket);
|
|
209
|
-
respBucket.filterQuery = respBucket.filterQuery || this.getCorrespondingFilterQuery(configField, respBucket.label);
|
|
210
|
-
return {
|
|
211
|
-
...respBucket,
|
|
212
|
-
checked: false,
|
|
213
|
-
display: respBucket.display,
|
|
214
|
-
label: respBucket.label
|
|
215
|
-
};
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
getResponseQueryBuckets(responseField, configGroup) {
|
|
219
|
-
return (configGroup || []).map((query) => {
|
|
220
|
-
const respBucket = (responseField?.buckets || []).find((bucket) => bucket.label === query.label) || {};
|
|
221
|
-
respBucket['count'] = this.getCountValue(respBucket);
|
|
222
|
-
return {
|
|
223
|
-
...respBucket,
|
|
224
|
-
checked: false,
|
|
225
|
-
display: respBucket.display,
|
|
226
|
-
label: respBucket.label
|
|
227
|
-
};
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
sortFacetBuckets(buckets, sortBy, sortDirection) {
|
|
231
|
-
switch (sortBy) {
|
|
232
|
-
case FacetBucketSortBy.LABEL:
|
|
233
|
-
buckets.sort((bucket1, bucket2) => sortDirection === FacetBucketSortDirection.ASCENDING
|
|
234
|
-
? bucket1.label.localeCompare(bucket2.label)
|
|
235
|
-
: bucket2.label.localeCompare(bucket1.label));
|
|
236
|
-
break;
|
|
237
|
-
case FacetBucketSortBy.COUNT:
|
|
238
|
-
buckets.sort((bucket1, bucket2) => sortDirection === FacetBucketSortDirection.ASCENDING ? bucket1.count - bucket2.count : bucket2.count - bucket1.count);
|
|
239
|
-
break;
|
|
240
|
-
default:
|
|
241
|
-
return;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
getCountValue(bucket) {
|
|
245
|
-
return (!!bucket && !!bucket.metrics && bucket.metrics[0]?.value?.count) || 0;
|
|
246
|
-
}
|
|
247
|
-
getBucketCountDisplay(bucket) {
|
|
248
|
-
return bucket.count === null ? '' : `(${bucket.count})`;
|
|
249
|
-
}
|
|
250
|
-
getCorrespondingFilterQuery(configFacetItem, bucketLabel) {
|
|
251
|
-
let filterQuery = null;
|
|
252
|
-
if (configFacetItem.field && bucketLabel) {
|
|
253
|
-
if (configFacetItem.sets) {
|
|
254
|
-
const configSet = configFacetItem.sets.find((set) => bucketLabel === set.label);
|
|
255
|
-
if (configSet) {
|
|
256
|
-
filterQuery = this.buildIntervalQuery(configFacetItem.field, configSet);
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
else {
|
|
260
|
-
filterQuery = `${configFacetItem.field}:"${bucketLabel}"`;
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
return filterQuery;
|
|
264
|
-
}
|
|
265
|
-
buildIntervalQuery(fieldName, interval) {
|
|
266
|
-
const start = interval.start;
|
|
267
|
-
const end = interval.end;
|
|
268
|
-
const startLimit = interval.startInclusive === undefined || interval.startInclusive === true ? '[' : '<';
|
|
269
|
-
const endLimit = interval.endInclusive === undefined || interval.endInclusive === true ? ']' : '>';
|
|
270
|
-
return `${fieldName}:${startLimit}"${start}" TO "${end}"${endLimit}`;
|
|
271
|
-
}
|
|
272
|
-
findFacet(context, itemType, fieldLabel) {
|
|
273
|
-
return (context.facets || []).find((response) => response.type === itemType && response.label === fieldLabel) || {};
|
|
274
|
-
}
|
|
275
|
-
findResponseFacet(itemType, fieldLabel) {
|
|
276
|
-
return (this.responseFacets || []).find((response) => response.type === itemType && response.label === fieldLabel);
|
|
277
|
-
}
|
|
278
|
-
updateExistingBuckets(responseField, responseBuckets, alreadyExistingField, alreadyExistingBuckets) {
|
|
279
|
-
const bucketsToDelete = [];
|
|
280
|
-
alreadyExistingBuckets.forEach((bucket) => {
|
|
281
|
-
const responseBucket = (responseField?.buckets || []).find((respBucket) => respBucket.label === bucket.label);
|
|
282
|
-
if (!responseBucket) {
|
|
283
|
-
bucketsToDelete.push(bucket);
|
|
284
|
-
}
|
|
285
|
-
bucket.count = this.getCountValue(responseBucket);
|
|
286
|
-
return bucket;
|
|
287
|
-
});
|
|
288
|
-
const hasSelection = !!this.selectedBuckets.find((selBuckets) => alreadyExistingField.label === selBuckets.field.label && alreadyExistingField.type === selBuckets.field.type);
|
|
289
|
-
if (!hasSelection && bucketsToDelete.length) {
|
|
290
|
-
bucketsToDelete.forEach((bucket) => {
|
|
291
|
-
alreadyExistingField.buckets.deleteItem(bucket);
|
|
292
|
-
});
|
|
293
|
-
}
|
|
294
|
-
responseBuckets.forEach((respBucket) => {
|
|
295
|
-
const existingBucket = alreadyExistingBuckets.find((oldBucket) => oldBucket.label === respBucket.label);
|
|
296
|
-
if (!existingBucket) {
|
|
297
|
-
alreadyExistingField.buckets.addItem(respBucket);
|
|
298
|
-
}
|
|
299
|
-
});
|
|
300
|
-
}
|
|
301
|
-
loadCategoryNames(bucketList) {
|
|
302
|
-
bucketList.forEach((item) => {
|
|
303
|
-
const categoryId = item.label.split('/').pop();
|
|
304
|
-
this.categoryService
|
|
305
|
-
.getCategory(categoryId, { include: ['path'] })
|
|
306
|
-
.pipe(catchError((error) => throwError(error)))
|
|
307
|
-
.subscribe((category) => {
|
|
308
|
-
const nextAfterGeneralPathPartIndex = 3;
|
|
309
|
-
const pathSeparator = '/';
|
|
310
|
-
const path = category.entry.path.split(pathSeparator).slice(nextAfterGeneralPathPartIndex).join('/');
|
|
311
|
-
item.display = path ? `${path}/${category.entry.name}` : category.entry.name;
|
|
312
|
-
});
|
|
313
|
-
});
|
|
314
|
-
}
|
|
315
|
-
unselectFacetBucket(facetField, bucket) {
|
|
316
|
-
if (bucket) {
|
|
317
|
-
bucket.checked = false;
|
|
318
|
-
this.queryBuilder.removeUserFacetBucket(facetField.field, bucket);
|
|
319
|
-
this.updateSelectedBuckets();
|
|
320
|
-
this.queryBuilder.update();
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
/* update adf-search-chip-list component view */
|
|
324
|
-
updateSelectedBuckets() {
|
|
325
|
-
if (this.responseFacets) {
|
|
326
|
-
this.selectedBuckets = [];
|
|
327
|
-
let facetFields = this.tabbedFacet === null ? [] : Object.keys(this.tabbedFacet?.fields).map((field) => this.tabbedFacet.facets[field]);
|
|
328
|
-
facetFields = [...facetFields, ...this.responseFacets];
|
|
329
|
-
for (const facetField of facetFields) {
|
|
330
|
-
if (facetField?.buckets) {
|
|
331
|
-
this.selectedBuckets.push(...this.queryBuilder
|
|
332
|
-
.getUserFacetBuckets(facetField.field)
|
|
333
|
-
.filter((bucket) => bucket.checked)
|
|
334
|
-
.map((bucket) => ({ field: facetField, bucket })));
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
else {
|
|
339
|
-
this.selectedBuckets = [];
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
resetAllSelectedBuckets() {
|
|
343
|
-
this.responseFacets.forEach((facetField) => {
|
|
344
|
-
if (facetField?.buckets) {
|
|
345
|
-
for (const bucket of facetField.buckets.items) {
|
|
346
|
-
bucket.checked = false;
|
|
347
|
-
this.queryBuilder.removeUserFacetBucket(facetField.field, bucket);
|
|
348
|
-
}
|
|
349
|
-
this.updateSelectedBuckets();
|
|
350
|
-
}
|
|
351
|
-
});
|
|
352
|
-
this.queryBuilder.update();
|
|
353
|
-
}
|
|
354
|
-
resetQueryFragments() {
|
|
355
|
-
this.queryBuilder.queryFragments = {};
|
|
356
|
-
this.queryBuilder.resetToDefaults();
|
|
357
|
-
}
|
|
358
|
-
reset() {
|
|
359
|
-
this.responseFacets = [];
|
|
360
|
-
this.selectedBuckets = [];
|
|
361
|
-
this.tabbedFacet = null;
|
|
362
|
-
this.queryBuilder.resetToDefaults(true);
|
|
363
|
-
this.queryBuilder.update();
|
|
364
|
-
}
|
|
365
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchFacetFiltersService, deps: [{ token: i1.SearchQueryBuilderService }, { token: i2.SearchService }, { token: i3.TranslationService }, { token: i4.CategoryService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
366
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchFacetFiltersService, providedIn: 'root' }); }
|
|
367
|
-
}
|
|
368
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchFacetFiltersService, decorators: [{
|
|
369
|
-
type: Injectable,
|
|
370
|
-
args: [{
|
|
371
|
-
providedIn: 'root'
|
|
372
|
-
}]
|
|
373
|
-
}], ctorParameters: () => [{ type: i1.SearchQueryBuilderService }, { type: i2.SearchService }, { type: i3.TranslationService }, { type: i4.CategoryService }] });
|
|
374
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZhY2V0LWZpbHRlcnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvc2VhcmNoL3NlcnZpY2VzL3NlYXJjaC1mYWNldC1maWx0ZXJzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQWMsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFPaEUsTUFBTSxpQkFBaUIsR0FBVyxDQUFDLENBQUM7QUFLcEMsTUFBTSxPQUFPLHlCQUF5QjtJQWNsQyxZQUNZLFlBQXVDLEVBQ3ZDLGFBQTRCLEVBQzVCLGtCQUFzQyxFQUN0QyxlQUFnQztRQUhoQyxpQkFBWSxHQUFaLFlBQVksQ0FBMkI7UUFDdkMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxvQkFBZSxHQUFmLGVBQWUs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TUFBTSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELG1CQUFtQjtRQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMvQixDQUFDOytHQXBaUSx5QkFBeUI7bUhBQXpCLHlCQUF5QixjQUZ0QixNQUFNOzs0RkFFVCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGYWNldEJ1Y2tldFNvcnRCeSwgRmFjZXRCdWNrZXRTb3J0RGlyZWN0aW9uLCBGYWNldEZpZWxkIH0gZnJvbSAnLi4vbW9kZWxzL2ZhY2V0LWZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWFyY2hRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZWFyY2gtcXVlcnktYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgR2VuZXJpY0J1Y2tldCwgR2VuZXJpY0ZhY2V0UmVzcG9uc2UsIFJlc3VsdFNldENvbnRleHQsIFJlc3VsdFNldFBhZ2luZyB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgU2VhcmNoRmlsdGVyTGlzdCB9IGZyb20gJy4uL21vZGVscy9zZWFyY2gtZmlsdGVyLWxpc3QubW9kZWwnO1xuaW1wb3J0IHsgRmFjZXRGaWVsZEJ1Y2tldCB9IGZyb20gJy4uL21vZGVscy9mYWNldC1maWVsZC1idWNrZXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IENhdGVnb3J5U2VydmljZSB9IGZyb20gJy4uLy4uL2NhdGVnb3J5L3NlcnZpY2VzL2NhdGVnb3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFiYmVkRmFjZXRGaWVsZCB9IGZyb20gJy4uL21vZGVscy90YWJiZWQtZmFjZXQtZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RlZEJ1Y2tldCB7XG4gICAgZmllbGQ6IEZhY2V0RmllbGQ7XG4gICAgYnVja2V0OiBGYWNldEZpZWxkQnVja2V0O1xufVxuXG5jb25zdCBERUZBVUxUX1BBR0VfU0laRTogbnVtYmVyID0gNTtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hGYWNldEZpbHRlcnNTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiBBbGwgZmFjZXQgZmllbGQgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBjb21wb25lbnQuIFRoZXNlIGFyZSB1cGRhdGVkIGFjY29yZGluZyB0byB0aGUgcmVzcG9uc2UuXG4gICAgICogV2hlbiBhIG5ldyBzZWFyY2ggaXMgcGVyZm9ybWVkLCB0aGUgYWxyZWFkeSBleGlzdGluZyBpdGVtcyBhcmUgdXBkYXRlZCB3aXRoIHRoZSBuZXcgYnVja2V0IGNvdW50IHZhbHVlcyBhbmRcbiAgICAgKiB0aGUgbmV3bHkgcmVjZWl2ZWQgaXRlbXMgYXJlIGFkZGVkIHRvIHRoZSByZXNwb25zZUZhY2V0cy5cbiAgICAgKi9cbiAgICByZXNwb25zZUZhY2V0czogRmFjZXRGaWVsZFtdID0gbnVsbDtcbiAgICAvKiB0YWJiZWQgZmFjZXQgaW5jb3Jwb3JhdGluZyBjcmVhdG9yIGFuZCBtb2RpZmllciBmYWNldHMgKi9cbiAgICB0YWJiZWRGYWNldDogVGFiYmVkRmFjZXRGaWVsZCA9IG51bGw7XG5cbiAgICAvKiogc2hvd3MgdGhlIGZhY2V0IGNoaXBzICovXG4gICAgc2VsZWN0ZWRCdWNrZXRzOiBTZWxlY3RlZEJ1Y2tldFtdID0gW107XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGZhY2V0UXVlcmllc1BhZ2VTaXplID0gREVGQVVMVF9QQUdFX1NJWkU7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcXVlcnlCdWlsZGVyOiBTZWFyY2hRdWVyeUJ1aWxkZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2F0ZWdvcnlTZXJ2aWNlOiBDYXRlZ29yeVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgaWYgKHF1ZXJ5QnVpbGRlci5jb25maWc/LmZhY2V0UXVlcmllcykge1xuICAgICAgICAgICAgdGhpcy5mYWNldFF1ZXJpZXNQYWdlU2l6ZSA9IHF1ZXJ5QnVpbGRlci5jb25maWcuZmFjZXRRdWVyaWVzLnBhZ2VTaXplIHx8IERFRkFVTFRfUEFHRV9TSVpFO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIuY29uZmlnVXBkYXRlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEJ1Y2tldHMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2VGYWNldHMgPSBudWxsO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci51cGRhdGVkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgocXVlcnkpID0+IHRoaXMucXVlcnlCdWlsZGVyLmV4ZWN1dGUodHJ1ZSwgcXVlcnkpKTtcblxuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci5leGVjdXRlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKHJlc3VsdFNldFBhZ2luZzogUmVzdWx0U2V0UGFnaW5nKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uRGF0YUxvYWRlZChyZXN1bHRTZXRQYWdpbmcpO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmRhdGFMb2FkZWQubmV4dChyZXN1bHRTZXRQYWdpbmcpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkRhdGFMb2FkZWQoZGF0YTogYW55KSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBkYXRhLmxpc3QuY29udGV4dDtcblxuICAgICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICAgICAgdGhpcy5wYXJzZUZhY2V0cyhjb250ZXh0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2VGYWNldHMgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZUZhY2V0cyhjb250ZXh0OiBSZXN1bHRTZXRDb250ZXh0KSB7XG4gICAgICAgIHRoaXMucGFyc2VGYWNldEZpZWxkcyhjb250ZXh0KTtcbiAgICAgICAgdGhpcy5wYXJzZUZhY2V0SW50ZXJ2YWxzKGNvbnRleHQpO1xuICAgICAgICB0aGlzLnBhcnNlRmFjZXRRdWVyaWVzKGNvbnRleHQpO1xuICAgICAgICB0aGlzLnNvcnRGYWNldHMoKTtcbiAgICAgICAgdGhpcy5wYXJzZVRhYmJlZEZhY2V0RmllbGQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlRmFjZXRJdGVtcyhjb250ZXh0OiBSZXN1bHRTZXRDb250ZXh0LCBjb25maWdGYWNldEZpZWxkczogRmFjZXRGaWVsZFtdLCBpdGVtVHlwZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbmZpZ0ZhY2V0RmllbGRzLmZvckVhY2goKGZhY2V0RmllbGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlRmllbGQgPSB0aGlzLmZpbmRGYWNldChjb250ZXh0LCBpdGVtVHlwZSwgZmFjZXRGaWVsZC5sYWJlbCk7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZUJ1Y2tldHMgPSB0aGlzLmdldFJlc3BvbnNlQnVja2V0cyhyZXNwb25zZUZpZWxkLCBmYWNldEZpZWxkKS5maWx0ZXIodGhpcy5nZXRGaWx0ZXJCeU1pbkNvdW50KGZhY2V0RmllbGQubWluY291bnQpKTtcbiAgICAgICAgICAgIHRoaXMuc29ydEZhY2V0QnVja2V0cyhcbiAgICAgICAgICAgICAgICByZXNwb25zZUJ1Y2tldHMsXG4gICAgICAgICAgICAgICAgZmFjZXRGaWVsZC5zZXR0aW5ncz8uYnVja2V0U29ydEJ5LFxuICAgICAgICAgICAgICAgIGZhY2V0RmllbGQuc2V0dGluZ3M/LmJ1Y2tldFNvcnREaXJlY3Rpb24gPz8gRmFjZXRCdWNrZXRTb3J0RGlyZWN0aW9uLkFTQ0VORElOR1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGFscmVhZHlFeGlzdGluZ0ZpZWxkID0gdGhpcy5maW5kUmVzcG9uc2VGYWNldChpdGVtVHlwZSwgZmFjZXRGaWVsZC5sYWJlbCk7XG5cbiAgICAgICAgICAgIGlmIChmYWNldEZpZWxkLmZpZWxkID09PSAnY206Y2F0ZWdvcmllcycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRDYXRlZ29yeU5hbWVzKHJlc3BvbnNlQnVja2V0cyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChhbHJlYWR5RXhpc3RpbmdGaWVsZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFscmVhZHlFeGlzdGluZ0J1Y2tldHMgPSBhbHJlYWR5RXhpc3RpbmdGaWVsZC5idWNrZXRzPy5pdGVtcyB8fCBbXTtcblxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRXhpc3RpbmdCdWNrZXRzKHJlc3BvbnNlRmllbGQsIHJlc3BvbnNlQnVja2V0cywgYWxyZWFkeUV4aXN0aW5nRmllbGQsIGFscmVhZHlFeGlzdGluZ0J1Y2tldHMpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZUZpZWxkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlQnVja2V0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1Y2tldExpc3QgPSBuZXcgU2VhcmNoRmlsdGVyTGlzdDxGYWNldEZpZWxkQnVja2V0PihyZXNwb25zZUJ1Y2tldHMsIGZhY2V0RmllbGQucGFnZVNpemUpO1xuICAgICAgICAgICAgICAgICAgICBidWNrZXRMaXN0LmZpbHRlciA9IHRoaXMuZ2V0QnVja2V0RmlsdGVyRnVuY3Rpb24oYnVja2V0TGlzdCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnJlc3BvbnNlRmFjZXRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRmFjZXRzID0gW107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZUZhY2V0cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZhY2V0RmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiByZXNwb25zZUZpZWxkLnR5cGUgfHwgaXRlbVR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZmFjZXRGaWVsZC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VTaXplOiBmYWNldEZpZWxkLnBhZ2VTaXplIHwgREVGQVVMVF9QQUdFX1NJWkUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZVNpemU6IGZhY2V0RmllbGQucGFnZVNpemUgfCBERUZBVUxUX1BBR0VfU0laRSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1Y2tldHM6IGJ1Y2tldExpc3RcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlVGFiYmVkRmFjZXRGaWVsZCgpIHtcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VGYWNldHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMucmVzcG9uc2VGYWNldHMucmVkdWNlKChhY2MsIGZhY2V0KSA9PiBgJHthY2N9LCR7ZmFjZXQuZmllbGR9YCwgJycpO1xuICAgICAgICAgICAgY29uc3QgdGFiYmVkRmFjZXRGaWVsZDogVGFiYmVkRmFjZXRGaWVsZCA9IHtcbiAgICAgICAgICAgICAgICBmaWVsZHM6IFsnY3JlYXRvcicsICdtb2RpZmllciddLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnU0VBUkNILkZJTFRFUi5QRU9QTEUnLFxuICAgICAgICAgICAgICAgIGZhY2V0czoge31cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmV4dHJhY3RDcmVhdG9yQW5kTW9kaWZpZXIodGFiYmVkRmFjZXRGaWVsZCwgZmllbGRzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZXh0cmFjdENyZWF0b3JBbmRNb2RpZmllcih0YWJiZWRGYWNldDogVGFiYmVkRmFjZXRGaWVsZCwgZmllbGRzOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGZpZWxkcy5pbmNsdWRlcygnY3JlYXRvcicpICYmIGZpZWxkcy5pbmNsdWRlcygnbW9kaWZpZXInKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMucmVzcG9uc2VGYWNldHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXNwb25zZUZhY2V0c1tpXS5maWVsZCA9PT0gJ2NyZWF0b3InIHx8IHRoaXMucmVzcG9uc2VGYWNldHNbaV0uZmllbGQgPT09ICdtb2RpZmllcicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlZEZhY2V0ID0gdGhpcy5yZXNwb25zZUZhY2V0cy5zcGxpY2UoaSwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YWJiZWRGYWNldC5mYWNldHMsIHJlbW92ZWRGYWNldC5maWVsZCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJlbW92ZWRGYWNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudGFiYmVkRmFjZXQgPSB0YWJiZWRGYWNldDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VGYWNldEZpZWxkcyhjb250ZXh0OiBSZXN1bHRTZXRDb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0ZhY2V0RmllbGRzID0gdGhpcy5xdWVyeUJ1aWxkZXIuY29uZmlnLmZhY2V0RmllbGRzPy5maWVsZHMgfHwgW107XG4gICAgICAgIHRoaXMucGFyc2VGYWNldEl0ZW1zKGNvbnRleHQsIGNvbmZpZ0ZhY2V0RmllbGRzLCAnZmllbGQnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlRmFjZXRJbnRlcnZhbHMoY29udGV4dDogUmVzdWx0U2V0Q29udGV4dCkge1xuICAgICAgICBjb25zdCBjb25maWdGYWNldEludGVydmFscyA9IHRoaXMucXVlcnlCdWlsZGVyLmNvbmZpZy5mYWNldEludGVydmFscz8uaW50ZXJ2YWxzIHx8IFtdO1xuICAgICAgICB0aGlzLnBhcnNlRmFjZXRJdGVtcyhjb250ZXh0LCBjb25maWdGYWNldEludGVydmFscywgJ2ludGVydmFsJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZUZhY2V0UXVlcmllcyhjb250ZXh0OiBSZXN1bHRTZXRDb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IGZhY2V0UXVlcnlTZXR0aW5nID0gdGhpcy5xdWVyeUJ1aWxkZXIuY29uZmlnLmZhY2V0UXVlcmllcz8uc2V0dGluZ3MgfHwge307XG4gICAgICAgIGNvbnN0IGNvbmZpZ0ZhY2V0UXVlcmllcyA9IHRoaXMucXVlcnlCdWlsZGVyLmNvbmZpZy5mYWNldFF1ZXJpZXM/LnF1ZXJpZXMgfHwgW107XG4gICAgICAgIGNvbnN0IGNvbmZpZ0dyb3VwcyA9IGNvbmZpZ0ZhY2V0UXVlcmllcy5yZWR1Y2UoKGFjYywgcXVlcnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5xdWVyeUJ1aWxkZXIuZ2V0UXVlcnlHcm91cChxdWVyeSk7XG4gICAgICAgICAgICBpZiAoYWNjW2dyb3VwXSkge1xuICAgICAgICAgICAgICAgIGFjY1tncm91cF0ucHVzaChxdWVyeSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFjY1tncm91cF0gPSBbcXVlcnldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwgW10pO1xuXG4gICAgICAgIGNvbnN0IG1pbkNvdW50ID0gdGhpcy5xdWVyeUJ1aWxkZXIuY29uZmlnLmZhY2V0UXVlcmllcz8ubWluY291bnQ7XG4gICAgICAgIGNvbnN0IG1pbkNvdW50RmlsdGVyID0gdGhpcy5nZXRGaWx0ZXJCeU1pbkNvdW50KG1pbkNvdW50KTtcblxuICAgICAgICBPYmplY3Qua2V5cyhjb25maWdHcm91cHMpLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZUZpZWxkID0gdGhpcy5maW5kRmFjZXQoY29udGV4dCwgJ3F1ZXJ5JywgZ3JvdXApO1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VCdWNrZXRzID0gdGhpcy5nZXRSZXNwb25zZVF1ZXJ5QnVja2V0cyhyZXNwb25zZUZpZWxkLCBjb25maWdHcm91cHNbZ3JvdXBdKS5maWx0ZXIobWluQ291bnRGaWx0ZXIpO1xuICAgICAgICAgICAgdGhpcy5zb3J0RmFjZXRCdWNrZXRzKFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlQnVja2V0cyxcbiAgICAgICAgICAgICAgICBmYWNldFF1ZXJ5U2V0dGluZz8uYnVja2V0U29ydEJ5LFxuICAgICAgICAgICAgICAgIGZhY2V0UXVlcnlTZXR0aW5nLmJ1Y2tldFNvcnREaXJlY3Rpb24gPz8gRmFjZXRCdWNrZXRTb3J0RGlyZWN0aW9uLkFTQ0VORElOR1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGFscmVhZHlFeGlzdGluZ0ZpZWxkID0gdGhpcy5maW5kUmVzcG9uc2VGYWNldCgncXVlcnknLCBncm91cCk7XG5cbiAgICAgICAgICAgIGlmIChhbHJlYWR5RXhpc3RpbmdGaWVsZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFscmVhZHlFeGlzdGluZ0J1Y2tldHMgPSBhbHJlYWR5RXhpc3RpbmdGaWVsZC5idWNrZXRzPy5pdGVtcyB8fCBbXTtcblxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRXhpc3RpbmdCdWNrZXRzKHJlc3BvbnNlRmllbGQsIHJlc3BvbnNlQnVja2V0cywgYWxyZWFkeUV4aXN0aW5nRmllbGQsIGFscmVhZHlFeGlzdGluZ0J1Y2tldHMpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZUZpZWxkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlQnVja2V0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1Y2tldExpc3QgPSBuZXcgU2VhcmNoRmlsdGVyTGlzdDxGYWNldEZpZWxkQnVja2V0PihyZXNwb25zZUJ1Y2tldHMsIHRoaXMuZmFjZXRRdWVyaWVzUGFnZVNpemUpO1xuICAgICAgICAgICAgICAgICAgICBidWNrZXRMaXN0LmZpbHRlciA9IHRoaXMuZ2V0QnVja2V0RmlsdGVyRnVuY3Rpb24oYnVja2V0TGlzdCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnJlc3BvbnNlRmFjZXRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRmFjZXRzID0gW107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZUZhY2V0cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHJlc3BvbnNlRmllbGQudHlwZSB8fCAncXVlcnknLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVNpemU6IERFRkFVTFRfUEFHRV9TSVpFLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2VTaXplOiBERUZBVUxUX1BBR0VfU0laRSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1Y2tldHM6IGJ1Y2tldExpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nczogZmFjZXRRdWVyeVNldHRpbmdcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRGYWNldHMoKSB7XG4gICAgICAgIHRoaXMucmVzcG9uc2VGYWNldHM/LnNvcnQoKGZhY2V0MSwgZmFjZXQyKSA9PiAoZmFjZXQxLnNldHRpbmdzPy5mYWNldE9yZGVyID8/IDApIC0gKGZhY2V0Mi5zZXR0aW5ncz8uZmFjZXRPcmRlciA/PyAwKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSZXNwb25zZUJ1Y2tldHMocmVzcG9uc2VGaWVsZDogR2VuZXJpY0ZhY2V0UmVzcG9uc2UsIGNvbmZpZ0ZpZWxkOiBGYWNldEZpZWxkKTogRmFjZXRGaWVsZEJ1Y2tldFtdIHtcbiAgICAgICAgcmV0dXJuIChyZXNwb25zZUZpZWxkPy5idWNrZXRzIHx8IFtdKS5tYXAoKHJlc3BCdWNrZXQpID0+IHtcbiAgICAgICAgICAgIHJlc3BCdWNrZXRbJ2NvdW50J10gPSB0aGlzLmdldENvdW50VmFsdWUocmVzcEJ1Y2tldCk7XG4gICAgICAgICAgICByZXNwQnVja2V0LmZpbHRlclF1ZXJ5ID0gcmVzcEJ1Y2tldC5maWx0ZXJRdWVyeSB8fCB0aGlzLmdldENvcnJlc3BvbmRpbmdGaWx0ZXJRdWVyeShjb25maWdGaWVsZCwgcmVzcEJ1Y2tldC5sYWJlbCk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLnJlc3BCdWNrZXQsXG4gICAgICAgICAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGlzcGxheTogcmVzcEJ1Y2tldC5kaXNwbGF5LFxuICAgICAgICAgICAgICAgIGxhYmVsOiByZXNwQnVja2V0LmxhYmVsXG4gICAgICAgICAgICB9IGFzIEZhY2V0RmllbGRCdWNrZXQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UmVzcG9uc2VRdWVyeUJ1Y2tldHMocmVzcG9uc2VGaWVsZDogR2VuZXJpY0ZhY2V0UmVzcG9uc2UsIGNvbmZpZ0dyb3VwOiBhbnkpOiBGYWNldEZpZWxkQnVja2V0W10ge1xuICAgICAgICByZXR1cm4gKGNvbmZpZ0dyb3VwIHx8IFtdKS5tYXAoKHF1ZXJ5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNwQnVja2V0ID0gKHJlc3BvbnNlRmllbGQ/LmJ1Y2tldHMgfHwgW10pLmZpbmQoKGJ1Y2tldCkgPT4gYnVja2V0LmxhYmVsID09PSBxdWVyeS5sYWJlbCkgfHwge307XG5cbiAgICAgICAgICAgIHJlc3BCdWNrZXRbJ2NvdW50J10gPSB0aGlzLmdldENvdW50VmFsdWUocmVzcEJ1Y2tldCk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLnJlc3BCdWNrZXQsXG4gICAgICAgICAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGlzcGxheTogcmVzcEJ1Y2tldC5kaXNwbGF5LFxuICAgICAgICAgICAgICAgIGxhYmVsOiByZXNwQnVja2V0LmxhYmVsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRGYWNldEJ1Y2tldHMoYnVja2V0czogRmFjZXRGaWVsZEJ1Y2tldFtdLCBzb3J0Qnk6IEZhY2V0QnVja2V0U29ydEJ5LCBzb3J0RGlyZWN0aW9uOiBGYWNldEJ1Y2tldFNvcnREaXJlY3Rpb24pIHtcbiAgICAgICAgc3dpdGNoIChzb3J0QnkpIHtcbiAgICAgICAgICAgIGNhc2UgRmFjZXRCdWNrZXRTb3J0QnkuTEFCRUw6XG4gICAgICAgICAgICAgICAgYnVja2V0cy5zb3J0KChidWNrZXQxLCBidWNrZXQyKSA9PlxuICAgICAgICAgICAgICAgICAgICBzb3J0RGlyZWN0aW9uID09PSBGYWNldEJ1Y2tldFNvcnREaXJlY3Rpb24uQVNDRU5ESU5HXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGJ1Y2tldDEubGFiZWwubG9jYWxlQ29tcGFyZShidWNrZXQyLmxhYmVsKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBidWNrZXQyLmxhYmVsLmxvY2FsZUNvbXBhcmUoYnVja2V0MS5sYWJlbClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGYWNldEJ1Y2tldFNvcnRCeS5DT1VOVDpcbiAgICAgICAgICAgICAgICBidWNrZXRzLnNvcnQoKGJ1Y2tldDEsIGJ1Y2tldDIpID0+XG4gICAgICAgICAgICAgICAgICAgIHNvcnREaXJlY3Rpb24gPT09IEZhY2V0QnVja2V0U29ydERpcmVjdGlvbi5BU0NFTkRJTkcgPyBidWNrZXQxLmNvdW50IC0gYnVja2V0Mi5jb3VudCA6IGJ1Y2tldDIuY291bnQgLSBidWNrZXQxLmNvdW50XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb3VudFZhbHVlKGJ1Y2tldDogR2VuZXJpY0J1Y2tldCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAoISFidWNrZXQgJiYgISFidWNrZXQubWV0cmljcyAmJiBidWNrZXQubWV0cmljc1swXT8udmFsdWU/LmNvdW50KSB8fCAwO1xuICAgIH1cblxuICAgIGdldEJ1Y2tldENvdW50RGlzcGxheShidWNrZXQ6IEZhY2V0RmllbGRCdWNrZXQpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYnVja2V0LmNvdW50ID09PSBudWxsID8gJycgOiBgKCR7YnVja2V0LmNvdW50fSlgO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RmlsdGVyQnlNaW5Db3VudCA9XG4gICAgICAgIChtaW5Db3VudElucHV0OiBudW1iZXIpID0+XG4gICAgICAgIChidWNrZXQ6IEZhY2V0RmllbGRCdWNrZXQpOiBib29sZWFuID0+IHtcbiAgICAgICAgICAgIGxldCBtaW5Db3VudCA9IG1pbkNvdW50SW5wdXQ7XG4gICAgICAgICAgICBpZiAobWluQ291bnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG1pbkNvdW50ID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBidWNrZXQuY291bnQgPj0gbWluQ291bnQ7XG4gICAgICAgIH07XG5cbiAgICBwcml2YXRlIGdldENvcnJlc3BvbmRpbmdGaWx0ZXJRdWVyeShjb25maWdGYWNldEl0ZW06IEZhY2V0RmllbGQsIGJ1Y2tldExhYmVsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBsZXQgZmlsdGVyUXVlcnkgPSBudWxsO1xuXG4gICAgICAgIGlmIChjb25maWdGYWNldEl0ZW0uZmllbGQgJiYgYnVja2V0TGFiZWwpIHtcbiAgICAgICAgICAgIGlmIChjb25maWdGYWNldEl0ZW0uc2V0cykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZ1NldCA9IGNvbmZpZ0ZhY2V0SXRlbS5zZXRzLmZpbmQoKHNldCkgPT4gYnVja2V0TGFiZWwgPT09IHNldC5sYWJlbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnU2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclF1ZXJ5ID0gdGhpcy5idWlsZEludGVydmFsUXVlcnkoY29uZmlnRmFjZXRJdGVtLmZpZWxkLCBjb25maWdTZXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyUXVlcnkgPSBgJHtjb25maWdGYWNldEl0ZW0uZmllbGR9OlwiJHtidWNrZXRMYWJlbH1cImA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyUXVlcnk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZEludGVydmFsUXVlcnkoZmllbGROYW1lOiBzdHJpbmcsIGludGVydmFsOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBzdGFydCA9IGludGVydmFsLnN0YXJ0O1xuICAgICAgICBjb25zdCBlbmQgPSBpbnRlcnZhbC5lbmQ7XG4gICAgICAgIGNvbnN0IHN0YXJ0TGltaXQgPSBpbnRlcnZhbC5zdGFydEluY2x1c2l2ZSA9PT0gdW5kZWZpbmVkIHx8IGludGVydmFsLnN0YXJ0SW5jbHVzaXZlID09PSB0cnVlID8gJ1snIDogJzwnO1xuICAgICAgICBjb25zdCBlbmRMaW1pdCA9IGludGVydmFsLmVuZEluY2x1c2l2ZSA9PT0gdW5kZWZpbmVkIHx8IGludGVydmFsLmVuZEluY2x1c2l2ZSA9PT0gdHJ1ZSA/ICddJyA6ICc+JztcblxuICAgICAgICByZXR1cm4gYCR7ZmllbGROYW1lfToke3N0YXJ0TGltaXR9XCIke3N0YXJ0fVwiIFRPIFwiJHtlbmR9XCIke2VuZExpbWl0fWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kRmFjZXQoY29udGV4dDogUmVzdWx0U2V0Q29udGV4dCwgaXRlbVR5cGU6IHN0cmluZywgZmllbGRMYWJlbDogc3RyaW5nKTogR2VuZXJpY0ZhY2V0UmVzcG9uc2Uge1xuICAgICAgICByZXR1cm4gKGNvbnRleHQuZmFjZXRzIHx8IFtdKS5maW5kKChyZXNwb25zZSkgPT4gcmVzcG9uc2UudHlwZSA9PT0gaXRlbVR5cGUgJiYgcmVzcG9uc2UubGFiZWwgPT09IGZpZWxkTGFiZWwpIHx8IHt9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZFJlc3BvbnNlRmFjZXQoaXRlbVR5cGU6IHN0cmluZywgZmllbGRMYWJlbDogc3RyaW5nKTogRmFjZXRGaWVsZCB7XG4gICAgICAgIHJldHVybiAodGhpcy5yZXNwb25zZUZhY2V0cyB8fCBbXSkuZmluZCgocmVzcG9uc2UpID0+IHJlc3BvbnNlLnR5cGUgPT09IGl0ZW1UeXBlICYmIHJlc3BvbnNlLmxhYmVsID09PSBmaWVsZExhYmVsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUV4aXN0aW5nQnVja2V0cyhcbiAgICAgICAgcmVzcG9uc2VGaWVsZDogR2VuZXJpY0ZhY2V0UmVzcG9uc2UsXG4gICAgICAgIHJlc3BvbnNlQnVja2V0czogRmFjZXRGaWVsZEJ1Y2tldFtdLFxuICAgICAgICBhbHJlYWR5RXhpc3RpbmdGaWVsZDogRmFjZXRGaWVsZCxcbiAgICAgICAgYWxyZWFkeUV4aXN0aW5nQnVja2V0czogRmFjZXRGaWVsZEJ1Y2tldFtdXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGJ1Y2tldHNUb0RlbGV0ZSA9IFtdO1xuXG4gICAgICAgIGFscmVhZHlFeGlzdGluZ0J1Y2tldHMuZm9yRWFjaCgoYnVja2V0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZUJ1Y2tldCA9IChyZXNwb25zZUZpZWxkPy5idWNrZXRzIHx8IFtdKS5maW5kKChyZXNwQnVja2V0KSA9PiByZXNwQnVja2V0LmxhYmVsID09PSBidWNrZXQubGFiZWwpO1xuXG4gICAgICAgICAgICBpZiAoIXJlc3BvbnNlQnVja2V0KSB7XG4gICAgICAgICAgICAgICAgYnVja2V0c1RvRGVsZXRlLnB1c2goYnVja2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ1Y2tldC5jb3VudCA9IHRoaXMuZ2V0Q291bnRWYWx1ZShyZXNwb25zZUJ1Y2tldCk7XG4gICAgICAgICAgICByZXR1cm4gYnVja2V0O1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBoYXNTZWxlY3Rpb24gPSAhIXRoaXMuc2VsZWN0ZWRCdWNrZXRzLmZpbmQoXG4gICAgICAgICAgICAoc2VsQnVja2V0cykgPT4gYWxyZWFkeUV4aXN0aW5nRmllbGQubGFiZWwgPT09IHNlbEJ1Y2tldHMuZmllbGQubGFiZWwgJiYgYWxyZWFkeUV4aXN0aW5nRmllbGQudHlwZSA9PT0gc2VsQnVja2V0cy5maWVsZC50eXBlXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFoYXNTZWxlY3Rpb24gJiYgYnVja2V0c1RvRGVsZXRlLmxlbmd0aCkge1xuICAgICAgICAgICAgYnVja2V0c1RvRGVsZXRlLmZvckVhY2goKGJ1Y2tldCkgPT4ge1xuICAgICAgICAgICAgICAgIGFscmVhZHlFeGlzdGluZ0ZpZWxkLmJ1Y2tldHMuZGVsZXRlSXRlbShidWNrZXQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXNwb25zZUJ1Y2tldHMuZm9yRWFjaCgocmVzcEJ1Y2tldCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdCdWNrZXQgPSBhbHJlYWR5RXhpc3RpbmdCdWNrZXRzLmZpbmQoKG9sZEJ1Y2tldCkgPT4gb2xkQnVja2V0LmxhYmVsID09PSByZXNwQnVja2V0LmxhYmVsKTtcblxuICAgICAgICAgICAgaWYgKCFleGlzdGluZ0J1Y2tldCkge1xuICAgICAgICAgICAgICAgIGFscmVhZHlFeGlzdGluZ0ZpZWxkLmJ1Y2tldHMuYWRkSXRlbShyZXNwQnVja2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRCdWNrZXRGaWx0ZXJGdW5jdGlvbiA9XG4gICAgICAgIChidWNrZXRMaXN0OiBTZWFyY2hGaWx0ZXJMaXN0PEZhY2V0RmllbGRCdWNrZXQ+KSA9PlxuICAgICAgICAoYnVja2V0OiBGYWNldEZpZWxkQnVja2V0KTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICBpZiAoYnVja2V0ICYmIGJ1Y2tldExpc3QuZmlsdGVyVGV4dCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdHRlcm4gPSAoYnVja2V0TGlzdC5maWx0ZXJUZXh0IHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gKHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQoYnVja2V0LmRpc3BsYXkpIHx8IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQoYnVja2V0LmxhYmVsKSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5xdWVyeUJ1aWxkZXIuY29uZmlnLmZpbHRlcldpdGhDb250YWlucyA/IGxhYmVsLmluZGV4T2YocGF0dGVybikgIT09IC0xIDogbGFiZWwuc3RhcnRzV2l0aChwYXR0ZXJuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9O1xuXG4gICAgcHJpdmF0ZSBsb2FkQ2F0ZWdvcnlOYW1lcyhidWNrZXRMaXN0OiBGYWNldEZpZWxkQnVja2V0W10pIHtcbiAgICAgICAgYnVja2V0TGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yeUlkID0gaXRlbS5sYWJlbC5zcGxpdCgnLycpLnBvcCgpO1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yeVNlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0Q2F0ZWdvcnkoY2F0ZWdvcnlJZCwgeyBpbmNsdWRlOiBbJ3BhdGgnXSB9KVxuICAgICAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycm9yKSA9PiB0aHJvd0Vycm9yKGVycm9yKSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoY2F0ZWdvcnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dEFmdGVyR2VuZXJhbFBhdGhQYXJ0SW5kZXggPSAzO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoU2VwYXJhdG9yID0gJy8nO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gY2F0ZWdvcnkuZW50cnkucGF0aC5zcGxpdChwYXRoU2VwYXJhdG9yKS5zbGljZShuZXh0QWZ0ZXJHZW5lcmFsUGF0aFBhcnRJbmRleCkuam9pbignLycpO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmRpc3BsYXkgPSBwYXRoID8gYCR7cGF0aH0vJHtjYXRlZ29yeS5lbnRyeS5uYW1lfWAgOiBjYXRlZ29yeS5lbnRyeS5uYW1lO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1bnNlbGVjdEZhY2V0QnVja2V0KGZhY2V0RmllbGQ6IEZhY2V0RmllbGQsIGJ1Y2tldDogRmFjZXRGaWVsZEJ1Y2tldCkge1xuICAgICAgICBpZiAoYnVja2V0KSB7XG4gICAgICAgICAgICBidWNrZXQuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIucmVtb3ZlVXNlckZhY2V0QnVja2V0KGZhY2V0RmllbGQuZmllbGQsIGJ1Y2tldCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkQnVja2V0cygpO1xuICAgICAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIudXBkYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiB1cGRhdGUgYWRmLXNlYXJjaC1jaGlwLWxpc3QgY29tcG9uZW50IHZpZXcgKi9cbiAgICB1cGRhdGVTZWxlY3RlZEJ1Y2tldHMoKSB7XG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNlRmFjZXRzKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQnVja2V0cyA9IFtdO1xuICAgICAgICAgICAgbGV0IGZhY2V0RmllbGRzID0gdGhpcy50YWJiZWRGYWNldCA9PT0gbnVsbCA/IFtdIDogT2JqZWN0LmtleXModGhpcy50YWJiZWRGYWNldD8uZmllbGRzKS5tYXAoKGZpZWxkKSA9PiB0aGlzLnRhYmJlZEZhY2V0LmZhY2V0c1tmaWVsZF0pO1xuICAgICAgICAgICAgZmFjZXRGaWVsZHMgPSBbLi4uZmFjZXRGaWVsZHMsIC4uLnRoaXMucmVzcG9uc2VGYWNldHNdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBmYWNldEZpZWxkIG9mIGZhY2V0RmllbGRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZhY2V0RmllbGQ/LmJ1Y2tldHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEJ1Y2tldHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMucXVlcnlCdWlsZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldFVzZXJGYWNldEJ1Y2tldHMoZmFjZXRGaWVsZC5maWVsZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChidWNrZXQpID0+IGJ1Y2tldC5jaGVja2VkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGJ1Y2tldCkgPT4gKHsgZmllbGQ6IGZhY2V0RmllbGQsIGJ1Y2tldCB9KSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQnVja2V0cyA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVzZXRBbGxTZWxlY3RlZEJ1Y2tldHMoKSB7XG4gICAgICAgIHRoaXMucmVzcG9uc2VGYWNldHMuZm9yRWFjaCgoZmFjZXRGaWVsZCkgPT4ge1xuICAgICAgICAgICAgaWYgKGZhY2V0RmllbGQ/LmJ1Y2tldHMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGJ1Y2tldCBvZiBmYWNldEZpZWxkLmJ1Y2tldHMuaXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVja2V0LmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIucmVtb3ZlVXNlckZhY2V0QnVja2V0KGZhY2V0RmllbGQuZmllbGQsIGJ1Y2tldCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRCdWNrZXRzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci51cGRhdGUoKTtcbiAgICB9XG5cbiAgICByZXNldFF1ZXJ5RnJhZ21lbnRzKCkge1xuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci5xdWVyeUZyYWdtZW50cyA9IHt9O1xuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci5yZXNldFRvRGVmYXVsdHMoKTtcbiAgICB9XG5cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5yZXNwb25zZUZhY2V0cyA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQnVja2V0cyA9IFtdO1xuICAgICAgICB0aGlzLnRhYmJlZEZhY2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIucmVzZXRUb0RlZmF1bHRzKHRydWUpO1xuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci51cGRhdGUoKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,56 +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 { SearchTextComponent } from '../components/search-text/search-text.component';
|
|
19
|
-
import { SearchRadioComponent } from '../components/search-radio/search-radio.component';
|
|
20
|
-
import { SearchSliderComponent } from '../components/search-slider/search-slider.component';
|
|
21
|
-
import { SearchNumberRangeComponent } from '../components/search-number-range/search-number-range.component';
|
|
22
|
-
import { SearchCheckListComponent } from '../components/search-check-list/search-check-list.component';
|
|
23
|
-
import { SearchDatetimeRangeComponent } from '../components/search-datetime-range/search-datetime-range.component';
|
|
24
|
-
import { SearchLogicalFilterComponent } from '../components/search-logical-filter/search-logical-filter.component';
|
|
25
|
-
import { SearchFilterAutocompleteChipsComponent } from '../components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component';
|
|
26
|
-
import { SearchPropertiesComponent } from '../components/search-properties/search-properties.component';
|
|
27
|
-
import { SearchDateRangeTabbedComponent } from '../components/search-date-range-tabbed/search-date-range-tabbed.component';
|
|
28
|
-
import * as i0 from "@angular/core";
|
|
29
|
-
export class SearchFilterService {
|
|
30
|
-
constructor() {
|
|
31
|
-
/**
|
|
32
|
-
* Contains string-to-type mappings for registered widgets.
|
|
33
|
-
*/
|
|
34
|
-
this.widgets = {
|
|
35
|
-
text: SearchTextComponent,
|
|
36
|
-
radio: SearchRadioComponent,
|
|
37
|
-
slider: SearchSliderComponent,
|
|
38
|
-
properties: SearchPropertiesComponent,
|
|
39
|
-
'number-range': SearchNumberRangeComponent,
|
|
40
|
-
'check-list': SearchCheckListComponent,
|
|
41
|
-
'datetime-range': SearchDatetimeRangeComponent,
|
|
42
|
-
'logical-filter': SearchLogicalFilterComponent,
|
|
43
|
-
'autocomplete-chips': SearchFilterAutocompleteChipsComponent,
|
|
44
|
-
'date-range': SearchDateRangeTabbedComponent
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchFilterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
48
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchFilterService, providedIn: 'root' }); }
|
|
49
|
-
}
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchFilterService, decorators: [{
|
|
51
|
-
type: Injectable,
|
|
52
|
-
args: [{
|
|
53
|
-
providedIn: 'root'
|
|
54
|
-
}]
|
|
55
|
-
}] });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpbHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9zZWFyY2gvc2VydmljZXMvc2VhcmNoLWZpbHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDdEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDekYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDNUYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDN0csT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDdkcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDbkgsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDbkgsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sMkZBQTJGLENBQUM7QUFDbkosT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDeEcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMkVBQTJFLENBQUM7O0FBSzNILE1BQU0sT0FBTyxtQkFBbUI7SUFIaEM7UUFJSTs7V0FFRztRQUNILFlBQU8sR0FBZ0M7WUFDbkMsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixLQUFLLEVBQUUsb0JBQW9CO1lBQzNCLE1BQU0sRUFBRSxxQkFBcUI7WUFDN0IsVUFBVSxFQUFFLHlCQUF5QjtZQUNyQyxjQUFjLEVBQUUsMEJBQTBCO1lBQzFDLFlBQVksRUFBRSx3QkFBd0I7WUFDdEMsZ0JBQWdCLEVBQUUsNEJBQTRCO1lBQzlDLGdCQUFnQixFQUFFLDRCQUE0QjtZQUM5QyxvQkFBb0IsRUFBRSxzQ0FBc0M7WUFDNUQsWUFBWSxFQUFFLDhCQUE4QjtTQUMvQyxDQUFDO0tBQ0w7K0dBaEJZLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRmhCLE1BQU07OzRGQUVULG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlYXJjaFRleHRDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL3NlYXJjaC10ZXh0L3NlYXJjaC10ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hSYWRpb0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvc2VhcmNoLXJhZGlvL3NlYXJjaC1yYWRpby5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoU2xpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9zZWFyY2gtc2xpZGVyL3NlYXJjaC1zbGlkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaE51bWJlclJhbmdlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9zZWFyY2gtbnVtYmVyLXJhbmdlL3NlYXJjaC1udW1iZXItcmFuZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaENoZWNrTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvc2VhcmNoLWNoZWNrLWxpc3Qvc2VhcmNoLWNoZWNrLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaERhdGV0aW1lUmFuZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL3NlYXJjaC1kYXRldGltZS1yYW5nZS9zZWFyY2gtZGF0ZXRpbWUtcmFuZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaExvZ2ljYWxGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL3NlYXJjaC1sb2dpY2FsLWZpbHRlci9zZWFyY2gtbG9naWNhbC1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaEZpbHRlckF1dG9jb21wbGV0ZUNoaXBzQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9zZWFyY2gtZmlsdGVyLWF1dG9jb21wbGV0ZS1jaGlwcy9zZWFyY2gtZmlsdGVyLWF1dG9jb21wbGV0ZS1jaGlwcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoUHJvcGVydGllc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvc2VhcmNoLXByb3BlcnRpZXMvc2VhcmNoLXByb3BlcnRpZXMuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaERhdGVSYW5nZVRhYmJlZENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvc2VhcmNoLWRhdGUtcmFuZ2UtdGFiYmVkL3NlYXJjaC1kYXRlLXJhbmdlLXRhYmJlZC5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaEZpbHRlclNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIENvbnRhaW5zIHN0cmluZy10by10eXBlIG1hcHBpbmdzIGZvciByZWdpc3RlcmVkIHdpZGdldHMuXG4gICAgICovXG4gICAgd2lkZ2V0czogeyBbaWQ6IHN0cmluZ106IFR5cGU8YW55PiB9ID0ge1xuICAgICAgICB0ZXh0OiBTZWFyY2hUZXh0Q29tcG9uZW50LFxuICAgICAgICByYWRpbzogU2VhcmNoUmFkaW9Db21wb25lbnQsXG4gICAgICAgIHNsaWRlcjogU2VhcmNoU2xpZGVyQ29tcG9uZW50LFxuICAgICAgICBwcm9wZXJ0aWVzOiBTZWFyY2hQcm9wZXJ0aWVzQ29tcG9uZW50LFxuICAgICAgICAnbnVtYmVyLXJhbmdlJzogU2VhcmNoTnVtYmVyUmFuZ2VDb21wb25lbnQsXG4gICAgICAgICdjaGVjay1saXN0JzogU2VhcmNoQ2hlY2tMaXN0Q29tcG9uZW50LFxuICAgICAgICAnZGF0ZXRpbWUtcmFuZ2UnOiBTZWFyY2hEYXRldGltZVJhbmdlQ29tcG9uZW50LFxuICAgICAgICAnbG9naWNhbC1maWx0ZXInOiBTZWFyY2hMb2dpY2FsRmlsdGVyQ29tcG9uZW50LFxuICAgICAgICAnYXV0b2NvbXBsZXRlLWNoaXBzJzogU2VhcmNoRmlsdGVyQXV0b2NvbXBsZXRlQ2hpcHNDb21wb25lbnQsXG4gICAgICAgICdkYXRlLXJhbmdlJzogU2VhcmNoRGF0ZVJhbmdlVGFiYmVkQ29tcG9uZW50XG4gICAgfTtcbn1cbiJdfQ==
|