@alfresco/aca-content 5.1.1 → 5.2.0-11950694546
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/assets/app.extensions.json +9 -0
- package/assets/i18n/ar.json +600 -599
- package/assets/i18n/cs.json +600 -599
- package/assets/i18n/da.json +600 -599
- package/assets/i18n/de.json +600 -599
- package/assets/i18n/en.json +40 -1
- package/assets/i18n/es.json +600 -599
- package/assets/i18n/fi.json +600 -599
- package/assets/i18n/fr.json +600 -599
- package/assets/i18n/it.json +600 -599
- package/assets/i18n/ja.json +600 -599
- package/assets/i18n/nb.json +600 -599
- package/assets/i18n/nl.json +600 -599
- package/assets/i18n/pl.json +600 -599
- package/assets/i18n/pt-BR.json +600 -599
- package/assets/i18n/ru.json +600 -599
- package/assets/i18n/sv.json +600 -599
- package/assets/i18n/zh-CN.json +600 -599
- package/esm2022/about/about.component.mjs +70 -0
- package/esm2022/about/aca-about.module.mjs +47 -0
- package/esm2022/folder-rules/folder-rules.module.mjs +116 -0
- package/esm2022/folder-rules/manage-rules/manage-rules.smart-component.mjs +276 -0
- package/esm2022/folder-rules/rule-details/actions/rule-action-list.ui-component.mjs +117 -0
- package/esm2022/folder-rules/rule-details/actions/rule-action.ui-component.mjs +356 -0
- package/esm2022/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.mjs +171 -0
- package/esm2022/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.mjs +233 -0
- package/esm2022/folder-rules/rule-details/edit-rule-dialog.ui-component.mjs +80 -0
- package/esm2022/folder-rules/rule-details/options/rule-options.ui-component.mjs +129 -0
- package/esm2022/folder-rules/rule-details/rule-details.ui-component.mjs +188 -0
- package/esm2022/folder-rules/rule-details/triggers/rule-triggers.ui-component.mjs +87 -0
- package/esm2022/folder-rules/rule-details/validators/rule-actions.validator.mjs +36 -0
- package/esm2022/folder-rules/rule-list/rule-list/rule-list.ui-component.mjs +164 -0
- package/esm2022/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.mjs +80 -0
- package/esm2022/folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.mjs +59 -0
- package/esm2022/folder-rules/rule-set-picker/rule-set-picker.smart-component.mjs +122 -0
- package/esm2022/folder-rules/services/actions.service.mjs +117 -0
- package/esm2022/folder-rules/services/folder-rule-sets.service.mjs +230 -0
- package/esm2022/folder-rules/services/folder-rules.service.mjs +195 -0
- package/esm2022/lib/aca-content.module.mjs +303 -0
- package/esm2022/lib/aca-content.routes.mjs +369 -0
- package/esm2022/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.mjs +79 -0
- package/{esm2020 → esm2022}/lib/components/common/language-picker/language-picker.component.mjs +9 -8
- package/esm2022/lib/components/common/location-link/location-link.component.mjs +182 -0
- package/{esm2020 → esm2022}/lib/components/common/logout/logout.component.mjs +8 -6
- package/esm2022/lib/components/common/toggle-shared/toggle-shared.component.mjs +76 -0
- package/esm2022/lib/components/common/user-info/user-info.component.mjs +46 -0
- package/esm2022/lib/components/context-menu/base-context-menu.directive.mjs +77 -0
- package/esm2022/lib/components/context-menu/context-menu-item.component.mjs +65 -0
- package/esm2022/lib/components/context-menu/context-menu-outside-event.directive.mjs +57 -0
- package/esm2022/lib/components/context-menu/context-menu-overlay.mjs +33 -0
- package/esm2022/lib/components/context-menu/context-menu.component.mjs +84 -0
- package/esm2022/lib/components/context-menu/context-menu.service.mjs +127 -0
- package/esm2022/lib/components/context-menu/custom-context-menu-actions.token.mjs +26 -0
- package/esm2022/lib/components/context-menu/custom-context-menu.component.mjs +79 -0
- package/esm2022/lib/components/details/details.component.mjs +155 -0
- package/esm2022/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.mjs +70 -0
- package/esm2022/lib/components/dl-custom-components/name-column/name-column.component.mjs +102 -0
- package/esm2022/lib/components/dl-custom-components/tags-column/tags-column.component.mjs +52 -0
- package/esm2022/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.mjs +77 -0
- package/esm2022/lib/components/favorite-libraries/favorite-libraries.component.mjs +126 -0
- package/esm2022/lib/components/favorites/favorites.component.mjs +105 -0
- package/esm2022/lib/components/files/files.component.mjs +337 -0
- package/esm2022/lib/components/home/home.component.mjs +46 -0
- package/esm2022/lib/components/info-drawer/comments-tab/comments-tab.component.mjs +62 -0
- package/esm2022/lib/components/info-drawer/info.drawer.module.mjs +74 -0
- package/esm2022/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.mjs +210 -0
- package/esm2022/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.mjs +47 -0
- package/esm2022/lib/components/info-drawer/metadata-tab/metadata-tab.component.mjs +141 -0
- package/esm2022/lib/components/info-drawer/versions-tab/versions-tab.component.mjs +107 -0
- package/esm2022/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.mjs +132 -0
- package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.mjs +176 -0
- package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component.mjs +77 -0
- package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.mjs +207 -0
- package/esm2022/lib/components/libraries/libraries.component.mjs +81 -0
- package/esm2022/lib/components/recent-files/recent-files.component.mjs +80 -0
- package/esm2022/lib/components/search/search-action-menu/search-action-menu.component.mjs +66 -0
- package/esm2022/lib/components/search/search-input/search-input.component.mjs +294 -0
- package/esm2022/lib/components/search/search-input-control/search-input-control.component.mjs +88 -0
- package/esm2022/lib/components/search/search-libraries-results/search-libraries-query-builder.service.mjs +93 -0
- package/esm2022/lib/components/search/search-libraries-results/search-libraries-results.component.mjs +155 -0
- package/esm2022/lib/components/search/search-navigation.service.mjs +62 -0
- package/esm2022/lib/components/search/search-results/search-results.component.mjs +278 -0
- package/esm2022/lib/components/search/search-results-row/search-results-row.component.mjs +145 -0
- package/esm2022/lib/components/search/search-save/dialog/delete/saved-search-delete-dialog.component.mjs +82 -0
- package/esm2022/lib/components/search/search-save/dialog/edit/saved-search-edit-dialog.component.mjs +116 -0
- package/esm2022/lib/components/search/search-save/dialog/save-search-dialog.component.mjs +125 -0
- package/esm2022/lib/components/search/search-save/dialog/saved-search-form.interface.mjs +25 -0
- package/esm2022/lib/components/search/search-save/dialog/unique-search-name-validator.mjs +45 -0
- package/esm2022/lib/components/search/search-save/directive/save-search.directive.mjs +64 -0
- package/esm2022/lib/components/search/search-save/list/saved-searches-list-ui.service.mjs +51 -0
- package/esm2022/lib/components/search/search-save/list/smart-list/saved-searches-list-schema.mjs +44 -0
- package/esm2022/lib/components/search/search-save/list/smart-list/saved-searches-smart-list.component.mjs +50 -0
- package/esm2022/lib/components/search/search-save/list/ui-list/saved-searches-list.ui-component.mjs +153 -0
- package/esm2022/lib/components/search/search-save/sidenav/save-search-sidenav.component.mjs +89 -0
- package/esm2022/lib/components/shared-files/shared-files.component.mjs +85 -0
- package/esm2022/lib/components/shared-link-view/shared-link-view.component.mjs +86 -0
- package/esm2022/lib/components/sidenav/components/button-menu.component.mjs +66 -0
- package/esm2022/lib/components/sidenav/components/expand-menu.component.mjs +73 -0
- package/esm2022/lib/components/sidenav/components/sidenav-header.component.mjs +60 -0
- package/esm2022/lib/components/sidenav/directives/action.directive.mjs +86 -0
- package/esm2022/lib/components/sidenav/directives/active-link.directive.mjs +100 -0
- package/esm2022/lib/components/sidenav/directives/expansion-panel.directive.mjs +103 -0
- package/esm2022/lib/components/sidenav/directives/menu-panel.directive.mjs +99 -0
- package/esm2022/lib/components/sidenav/sidenav.component.mjs +97 -0
- package/esm2022/lib/components/sidenav/user-menu/user-menu.component.mjs +57 -0
- package/esm2022/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.mjs +143 -0
- package/esm2022/lib/components/toolbar/toggle-favorite/toggle-favorite.component.mjs +91 -0
- package/esm2022/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.mjs +108 -0
- package/esm2022/lib/components/toolbar/toggle-info-drawer/toggle-info-drawer.component.mjs +77 -0
- package/esm2022/lib/components/toolbar/toggle-join-library/toggle-join-library-button.component.mjs +107 -0
- package/{esm2020 → esm2022}/lib/components/toolbar/toggle-join-library/toggle-join-library-menu.component.mjs +7 -6
- package/esm2022/lib/components/toolbar/view-node/view-node.component.mjs +128 -0
- package/esm2022/lib/components/trashcan/trashcan.component.mjs +66 -0
- package/esm2022/lib/components/upload-files-dialog/upload-files-dialog.component.mjs +50 -0
- package/esm2022/lib/components/view-profile/view-profile.component.mjs +195 -0
- package/esm2022/lib/dialogs/node-template/create-from-template.dialog.mjs +127 -0
- package/esm2022/lib/directives/document-list.directive.mjs +203 -0
- package/esm2022/lib/extensions/core.extensions.module.mjs +56 -0
- package/esm2022/lib/services/content-management.service.mjs +892 -0
- package/esm2022/lib/services/content-url.service.mjs +74 -0
- package/esm2022/lib/services/modal-ai.service.mjs +65 -0
- package/esm2022/lib/services/node-actions.service.mjs +609 -0
- package/esm2022/lib/services/node-template.service.mjs +145 -0
- package/esm2022/lib/services/search-ai-navigation.service.mjs +63 -0
- package/esm2022/lib/store/app-store.module.mjs +101 -0
- package/esm2022/lib/store/effects/app.effects.mjs +46 -0
- package/esm2022/lib/store/effects/contextmenu.effects.mjs +65 -0
- package/esm2022/lib/store/effects/download.effects.mjs +153 -0
- package/esm2022/lib/store/effects/favorite.effects.mjs +72 -0
- package/esm2022/lib/store/effects/library.effects.mjs +108 -0
- package/esm2022/lib/store/effects/node.effects.mjs +318 -0
- package/esm2022/lib/store/effects/search-ai.effects.mjs +54 -0
- package/esm2022/lib/store/effects/search.effects.mjs +52 -0
- package/esm2022/lib/store/effects/template.effects.mjs +116 -0
- package/esm2022/lib/store/effects/upload.effects.mjs +166 -0
- package/esm2022/lib/store/effects/viewer.effects.mjs +169 -0
- package/esm2022/lib/utils/aca-search-utils.mjs +129 -0
- package/esm2022/ms-office/actions/aos.actions.mjs +32 -0
- package/esm2022/ms-office/aos-extension.module.mjs +53 -0
- package/esm2022/ms-office/aos-extension.service.mjs +136 -0
- package/esm2022/ms-office/effects/aos.effects.mjs +45 -0
- package/esm2022/public-api.mjs +33 -0
- package/esm2022/viewer/lib/components/preview/preview.component.mjs +244 -0
- package/esm2022/viewer/lib/components/viewer/viewer.component.mjs +260 -0
- package/esm2022/viewer/lib/services/viewer.service.mjs +229 -0
- package/esm2022/viewer/lib/viewer.module.mjs +53 -0
- package/{fesm2015 → fesm2022}/alfresco-aca-content-about.mjs +17 -19
- package/fesm2022/alfresco-aca-content-about.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/alfresco-aca-content-folder-rules.mjs +376 -357
- package/fesm2022/alfresco-aca-content-folder-rules.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/alfresco-aca-content-ms-office.mjs +28 -26
- package/fesm2022/alfresco-aca-content-ms-office.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/alfresco-aca-content-viewer.mjs +110 -83
- package/fesm2022/alfresco-aca-content-viewer.mjs.map +1 -0
- package/fesm2022/alfresco-aca-content.mjs +10996 -0
- package/fesm2022/alfresco-aca-content.mjs.map +1 -0
- package/folder-rules/manage-rules/manage-rules.smart-component.d.ts +3 -5
- package/folder-rules/rule-details/actions/rule-action-list.ui-component.d.ts +1 -1
- package/folder-rules/rule-details/actions/rule-action.ui-component.d.ts +5 -6
- package/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.d.ts +1 -1
- package/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.d.ts +4 -5
- package/folder-rules/rule-details/options/rule-options.ui-component.d.ts +1 -1
- package/folder-rules/rule-details/rule-details.ui-component.d.ts +5 -6
- package/folder-rules/rule-list/rule-list/rule-list.ui-component.d.ts +4 -5
- package/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.d.ts +1 -1
- package/folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.d.ts +1 -1
- package/folder-rules/rule-set-picker/rule-set-picker.smart-component.d.ts +3 -5
- package/folder-rules/services/folder-rule-sets.service.d.ts +4 -4
- package/folder-rules/services/folder-rules.service.d.ts +1 -1
- package/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.d.ts +7 -13
- package/lib/components/common/location-link/location-link.component.d.ts +1 -1
- package/lib/components/common/toggle-shared/toggle-shared.component.d.ts +5 -6
- package/lib/components/context-menu/base-context-menu.directive.d.ts +20 -0
- package/lib/components/context-menu/context-menu-item.component.d.ts +1 -1
- package/lib/components/context-menu/context-menu-outside-event.directive.d.ts +4 -5
- package/lib/components/context-menu/context-menu.component.d.ts +4 -15
- package/lib/components/context-menu/context-menu.service.d.ts +4 -1
- package/lib/components/{knowledge-retrieval/search-ai/search-ai-utils.d.ts → context-menu/custom-context-menu-actions.token.d.ts} +2 -2
- package/lib/components/context-menu/custom-context-menu.component.d.ts +36 -0
- package/lib/components/details/details.component.d.ts +1 -2
- package/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.d.ts +4 -5
- package/lib/components/dl-custom-components/name-column/name-column.component.d.ts +3 -4
- package/lib/components/dl-custom-components/tags-column/tags-column.component.d.ts +1 -1
- package/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.d.ts +1 -1
- package/lib/components/files/files.component.d.ts +1 -1
- package/lib/components/info-drawer/comments-tab/comments-tab.component.d.ts +1 -1
- package/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.d.ts +5 -7
- package/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.d.ts +1 -1
- package/lib/components/info-drawer/metadata-tab/metadata-tab.component.d.ts +7 -8
- package/lib/components/info-drawer/versions-tab/versions-tab.component.d.ts +1 -1
- package/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.d.ts +4 -6
- package/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.d.ts +6 -8
- package/lib/components/knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component.d.ts +8 -8
- package/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.d.ts +4 -6
- package/lib/components/search/search-input/search-input.component.d.ts +13 -16
- package/lib/components/search/search-input-control/search-input-control.component.d.ts +3 -6
- package/lib/components/search/search-libraries-results/search-libraries-results.component.d.ts +0 -1
- package/lib/components/search/search-results/search-results.component.d.ts +14 -9
- package/lib/components/search/search-results-row/search-results-row.component.d.ts +4 -5
- package/lib/components/search/search-save/dialog/delete/saved-search-delete-dialog.component.d.ts +16 -0
- package/lib/components/search/search-save/dialog/edit/saved-search-edit-dialog.component.d.ts +22 -0
- package/lib/components/search/search-save/dialog/save-search-dialog.component.d.ts +23 -0
- package/lib/components/search/search-save/dialog/saved-search-form.interface.d.ts +28 -0
- package/lib/components/search/search-save/dialog/unique-search-name-validator.d.ts +34 -0
- package/lib/components/search/search-save/directive/save-search.directive.d.ts +13 -0
- package/lib/components/search/search-save/list/saved-searches-list-ui.service.d.ts +9 -0
- package/lib/components/search/search-save/list/smart-list/saved-searches-list-schema.d.ts +33 -0
- package/lib/components/search/search-save/list/smart-list/saved-searches-smart-list.component.d.ts +13 -0
- package/lib/components/search/search-save/list/ui-list/saved-searches-list.ui-component.d.ts +66 -0
- package/lib/components/search/search-save/sidenav/save-search-sidenav.component.d.ts +42 -0
- package/lib/components/shared-link-view/shared-link-view.component.d.ts +4 -5
- package/lib/components/sidenav/components/button-menu.component.d.ts +1 -1
- package/lib/components/sidenav/components/expand-menu.component.d.ts +3 -2
- package/lib/components/sidenav/components/sidenav-header.component.d.ts +3 -4
- package/lib/components/sidenav/directives/action.directive.d.ts +28 -1
- package/lib/components/sidenav/directives/active-link.directive.d.ts +3 -3
- package/lib/components/sidenav/directives/expansion-panel.directive.d.ts +4 -5
- package/lib/components/sidenav/directives/menu-panel.directive.d.ts +4 -5
- package/lib/components/sidenav/sidenav.component.d.ts +7 -7
- package/lib/components/sidenav/user-menu/user-menu.component.d.ts +1 -1
- package/lib/components/toolbar/toggle-favorite/toggle-favorite.component.d.ts +1 -1
- package/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.d.ts +3 -4
- package/lib/components/toolbar/view-node/view-node.component.d.ts +1 -1
- package/lib/components/upload-files-dialog/upload-files-dialog.component.d.ts +1 -27
- package/lib/components/view-profile/view-profile.component.d.ts +2 -4
- package/lib/directives/document-list.directive.d.ts +3 -5
- package/lib/services/search-ai-navigation.service.d.ts +4 -2
- package/lib/store/effects/app.effects.d.ts +2 -3
- package/lib/store/effects/contextmenu.effects.d.ts +3 -3
- package/lib/store/effects/download.effects.d.ts +0 -30
- package/lib/store/effects/favorite.effects.d.ts +0 -28
- package/lib/store/effects/library.effects.d.ts +2 -7
- package/lib/store/effects/node.effects.d.ts +7 -38
- package/lib/store/effects/search-ai.effects.d.ts +0 -4
- package/lib/store/effects/search.effects.d.ts +3 -30
- package/lib/store/effects/template.effects.d.ts +5 -7
- package/lib/store/effects/upload.effects.d.ts +8 -32
- package/lib/store/effects/viewer.effects.d.ts +0 -29
- package/lib/utils/aca-search-utils.d.ts +67 -0
- package/ms-office/effects/aos.effects.d.ts +0 -3
- package/package.json +21 -35
- package/public-api.d.ts +1 -0
- package/ui/overrides/adf-pagination.theme.scss +0 -4
- package/ui/theme.scss +9 -4
- package/viewer/lib/components/preview/preview.component.d.ts +3 -4
- package/viewer/lib/components/viewer/viewer.component.d.ts +2 -2
- package/assets/images/agent-avatar-blue.png +0 -0
- package/assets/images/agent-avatar-gold.png +0 -0
- package/assets/images/agent-avatar-pink.png +0 -0
- package/esm2020/about/about.component.mjs +0 -71
- package/esm2020/about/aca-about.module.mjs +0 -46
- package/esm2020/folder-rules/folder-rules.module.mjs +0 -115
- package/esm2020/folder-rules/manage-rules/manage-rules.smart-component.mjs +0 -261
- package/esm2020/folder-rules/rule-details/actions/rule-action-list.ui-component.mjs +0 -117
- package/esm2020/folder-rules/rule-details/actions/rule-action.ui-component.mjs +0 -351
- package/esm2020/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.mjs +0 -172
- package/esm2020/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.mjs +0 -234
- package/esm2020/folder-rules/rule-details/edit-rule-dialog.ui-component.mjs +0 -74
- package/esm2020/folder-rules/rule-details/options/rule-options.ui-component.mjs +0 -129
- package/esm2020/folder-rules/rule-details/rule-details.ui-component.mjs +0 -185
- package/esm2020/folder-rules/rule-details/triggers/rule-triggers.ui-component.mjs +0 -88
- package/esm2020/folder-rules/rule-details/validators/rule-actions.validator.mjs +0 -37
- package/esm2020/folder-rules/rule-list/rule-list/rule-list.ui-component.mjs +0 -164
- package/esm2020/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.mjs +0 -81
- package/esm2020/folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.mjs +0 -58
- package/esm2020/folder-rules/rule-set-picker/rule-set-picker.smart-component.mjs +0 -120
- package/esm2020/folder-rules/services/actions.service.mjs +0 -114
- package/esm2020/folder-rules/services/folder-rule-sets.service.mjs +0 -225
- package/esm2020/folder-rules/services/folder-rules.service.mjs +0 -193
- package/esm2020/lib/aca-content.module.mjs +0 -299
- package/esm2020/lib/aca-content.routes.mjs +0 -359
- package/esm2020/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.mjs +0 -83
- package/esm2020/lib/components/common/location-link/location-link.component.mjs +0 -180
- package/esm2020/lib/components/common/toggle-shared/toggle-shared.component.mjs +0 -76
- package/esm2020/lib/components/common/user-info/user-info.component.mjs +0 -47
- package/esm2020/lib/components/context-menu/context-menu-item.component.mjs +0 -62
- package/esm2020/lib/components/context-menu/context-menu-outside-event.directive.mjs +0 -63
- package/esm2020/lib/components/context-menu/context-menu-overlay.mjs +0 -32
- package/esm2020/lib/components/context-menu/context-menu.component.mjs +0 -114
- package/esm2020/lib/components/context-menu/context-menu.service.mjs +0 -99
- package/esm2020/lib/components/details/details.component.mjs +0 -147
- package/esm2020/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.mjs +0 -71
- package/esm2020/lib/components/dl-custom-components/name-column/name-column.component.mjs +0 -101
- package/esm2020/lib/components/dl-custom-components/tags-column/tags-column.component.mjs +0 -48
- package/esm2020/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.mjs +0 -75
- package/esm2020/lib/components/favorite-libraries/favorite-libraries.component.mjs +0 -120
- package/esm2020/lib/components/favorites/favorites.component.mjs +0 -103
- package/esm2020/lib/components/files/files.component.mjs +0 -330
- package/esm2020/lib/components/home/home.component.mjs +0 -47
- package/esm2020/lib/components/info-drawer/comments-tab/comments-tab.component.mjs +0 -59
- package/esm2020/lib/components/info-drawer/info.drawer.module.mjs +0 -73
- package/esm2020/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.mjs +0 -206
- package/esm2020/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.mjs +0 -45
- package/esm2020/lib/components/info-drawer/metadata-tab/metadata-tab.component.mjs +0 -134
- package/esm2020/lib/components/info-drawer/versions-tab/versions-tab.component.mjs +0 -95
- package/esm2020/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.mjs +0 -129
- package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.mjs +0 -171
- package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component.mjs +0 -82
- package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.mjs +0 -199
- package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-utils.mjs +0 -33
- package/esm2020/lib/components/libraries/libraries.component.mjs +0 -79
- package/esm2020/lib/components/recent-files/recent-files.component.mjs +0 -82
- package/esm2020/lib/components/search/search-action-menu/search-action-menu.component.mjs +0 -64
- package/esm2020/lib/components/search/search-input/search-input.component.mjs +0 -301
- package/esm2020/lib/components/search/search-input-control/search-input-control.component.mjs +0 -94
- package/esm2020/lib/components/search/search-libraries-results/search-libraries-query-builder.service.mjs +0 -90
- package/esm2020/lib/components/search/search-libraries-results/search-libraries-results.component.mjs +0 -153
- package/esm2020/lib/components/search/search-navigation.service.mjs +0 -60
- package/esm2020/lib/components/search/search-results/search-results.component.mjs +0 -255
- package/esm2020/lib/components/search/search-results-row/search-results-row.component.mjs +0 -142
- package/esm2020/lib/components/shared-files/shared-files.component.mjs +0 -83
- package/esm2020/lib/components/shared-link-view/shared-link-view.component.mjs +0 -82
- package/esm2020/lib/components/sidenav/components/button-menu.component.mjs +0 -62
- package/esm2020/lib/components/sidenav/components/expand-menu.component.mjs +0 -67
- package/esm2020/lib/components/sidenav/components/sidenav-header.component.mjs +0 -66
- package/esm2020/lib/components/sidenav/directives/action.directive.mjs +0 -75
- package/esm2020/lib/components/sidenav/directives/active-link.directive.mjs +0 -93
- package/esm2020/lib/components/sidenav/directives/expansion-panel.directive.mjs +0 -102
- package/esm2020/lib/components/sidenav/directives/menu-panel.directive.mjs +0 -99
- package/esm2020/lib/components/sidenav/sidenav.component.mjs +0 -89
- package/esm2020/lib/components/sidenav/user-menu/user-menu.component.mjs +0 -56
- package/esm2020/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.mjs +0 -137
- package/esm2020/lib/components/toolbar/toggle-favorite/toggle-favorite.component.mjs +0 -86
- package/esm2020/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.mjs +0 -107
- package/esm2020/lib/components/toolbar/toggle-info-drawer/toggle-info-drawer.component.mjs +0 -74
- package/esm2020/lib/components/toolbar/toggle-join-library/toggle-join-library-button.component.mjs +0 -105
- package/esm2020/lib/components/toolbar/view-node/view-node.component.mjs +0 -122
- package/esm2020/lib/components/trashcan/trashcan.component.mjs +0 -68
- package/esm2020/lib/components/upload-files-dialog/upload-files-dialog.component.mjs +0 -52
- package/esm2020/lib/components/view-profile/view-profile.component.mjs +0 -193
- package/esm2020/lib/dialogs/node-template/create-from-template.dialog.mjs +0 -120
- package/esm2020/lib/directives/document-list.directive.mjs +0 -199
- package/esm2020/lib/extensions/core.extensions.module.mjs +0 -55
- package/esm2020/lib/services/content-management.service.mjs +0 -873
- package/esm2020/lib/services/content-url.service.mjs +0 -71
- package/esm2020/lib/services/modal-ai.service.mjs +0 -66
- package/esm2020/lib/services/node-actions.service.mjs +0 -600
- package/esm2020/lib/services/node-template.service.mjs +0 -144
- package/esm2020/lib/services/search-ai-navigation.service.mjs +0 -52
- package/esm2020/lib/store/app-store.module.mjs +0 -102
- package/esm2020/lib/store/effects/app.effects.mjs +0 -49
- package/esm2020/lib/store/effects/contextmenu.effects.mjs +0 -55
- package/esm2020/lib/store/effects/download.effects.mjs +0 -159
- package/esm2020/lib/store/effects/favorite.effects.mjs +0 -76
- package/esm2020/lib/store/effects/library.effects.mjs +0 -113
- package/esm2020/lib/store/effects/node.effects.mjs +0 -325
- package/esm2020/lib/store/effects/search-ai.effects.mjs +0 -57
- package/esm2020/lib/store/effects/search.effects.mjs +0 -60
- package/esm2020/lib/store/effects/template.effects.mjs +0 -121
- package/esm2020/lib/store/effects/upload.effects.mjs +0 -166
- package/esm2020/lib/store/effects/viewer.effects.mjs +0 -175
- package/esm2020/ms-office/actions/aos.actions.mjs +0 -31
- package/esm2020/ms-office/aos-extension.module.mjs +0 -52
- package/esm2020/ms-office/aos-extension.service.mjs +0 -132
- package/esm2020/ms-office/effects/aos.effects.mjs +0 -48
- package/esm2020/public-api.mjs +0 -32
- package/esm2020/viewer/lib/components/preview/preview.component.mjs +0 -236
- package/esm2020/viewer/lib/components/viewer/viewer.component.mjs +0 -240
- package/esm2020/viewer/lib/services/viewer.service.mjs +0 -226
- package/esm2020/viewer/lib/viewer.module.mjs +0 -52
- package/fesm2015/alfresco-aca-content-about.mjs.map +0 -1
- package/fesm2015/alfresco-aca-content-folder-rules.mjs +0 -2662
- package/fesm2015/alfresco-aca-content-folder-rules.mjs.map +0 -1
- package/fesm2015/alfresco-aca-content-ms-office.mjs +0 -256
- package/fesm2015/alfresco-aca-content-ms-office.mjs.map +0 -1
- package/fesm2015/alfresco-aca-content-viewer.mjs +0 -700
- package/fesm2015/alfresco-aca-content-viewer.mjs.map +0 -1
- package/fesm2015/alfresco-aca-content.mjs +0 -9835
- package/fesm2015/alfresco-aca-content.mjs.map +0 -1
- package/fesm2020/alfresco-aca-content-about.mjs +0 -193
- package/fesm2020/alfresco-aca-content-about.mjs.map +0 -1
- package/fesm2020/alfresco-aca-content-folder-rules.mjs.map +0 -1
- package/fesm2020/alfresco-aca-content-ms-office.mjs.map +0 -1
- package/fesm2020/alfresco-aca-content-viewer.mjs.map +0 -1
- package/fesm2020/alfresco-aca-content.mjs +0 -9934
- package/fesm2020/alfresco-aca-content.mjs.map +0 -1
- /package/{esm2020 → esm2022}/about/alfresco-aca-content-about.mjs +0 -0
- /package/{esm2020 → esm2022}/about/dev-mode.tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/about/package-json.token.mjs +0 -0
- /package/{esm2020 → esm2022}/about/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/alfresco-aca-content.mjs +0 -0
- /package/{esm2020 → esm2022}/folder-rules/alfresco-aca-content-folder-rules.mjs +0 -0
- /package/{esm2020 → esm2022}/folder-rules/folder-rules.rules.mjs +0 -0
- /package/{esm2020 → esm2022}/folder-rules/model/action-parameter-constraint.model.mjs +0 -0
- /package/{esm2020 → esm2022}/folder-rules/model/rule-action.model.mjs +0 -0
- /package/{esm2020 → esm2022}/folder-rules/model/rule-composite-condition.model.mjs +0 -0
- /package/{esm2020 → esm2022}/folder-rules/model/rule-grouping-item.model.mjs +0 -0
- /package/{esm2020 → esm2022}/folder-rules/model/rule-set.model.mjs +0 -0
- /package/{esm2020 → esm2022}/folder-rules/model/rule-simple-condition.model.mjs +0 -0
- /package/{esm2020 → esm2022}/folder-rules/model/rule.model.mjs +0 -0
- /package/{esm2020 → esm2022}/folder-rules/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/folder-rules/rule-details/conditions/rule-condition-comparators.mjs +0 -0
- /package/{esm2020 → esm2022}/folder-rules/rule-details/conditions/rule-condition-fields.mjs +0 -0
- /package/{esm2020 → esm2022}/folder-rules/rule-details/validators/rule-composite-condition.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/common/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/context-menu/direction.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/context-menu/interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/search/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/sidenav/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/toolbar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/view-profile/view-profile.guard.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/effects.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/initial-state.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/reducers/app.reducer.mjs +0 -0
- /package/{esm2020 → esm2022}/ms-office/alfresco-aca-content-ms-office.mjs +0 -0
- /package/{esm2020 → esm2022}/ms-office/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/viewer/alfresco-aca-content-viewer.mjs +0 -0
- /package/{esm2020 → esm2022}/viewer/public-api.mjs +0 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Alfresco Example Content Application
|
|
5
|
+
*
|
|
6
|
+
* This file is part of the Alfresco Example Content Application.
|
|
7
|
+
* If the software was purchased under a paid Alfresco license, the terms of
|
|
8
|
+
* the paid license agreement will prevail. Otherwise, the software is
|
|
9
|
+
* provided under the following open source license terms:
|
|
10
|
+
*
|
|
11
|
+
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
|
12
|
+
* it under the terms of the GNU Lesser General Public License as published by
|
|
13
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
14
|
+
* (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
|
17
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
* GNU Lesser General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
22
|
+
* from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
|
|
23
|
+
*/
|
|
24
|
+
import { Component, HostListener, ViewEncapsulation } from '@angular/core';
|
|
25
|
+
import { CommonModule, Location } from '@angular/common';
|
|
26
|
+
import { ActivatedRoute, PRIMARY_OUTLET } from '@angular/router';
|
|
27
|
+
import { debounceTime, map } from 'rxjs/operators';
|
|
28
|
+
import { ViewerModule } from '@alfresco/adf-core';
|
|
29
|
+
import { SetSelectedNodesAction, ViewerActionTypes } from '@alfresco/aca-shared/store';
|
|
30
|
+
import { AppHookService, ContentApiService, InfoDrawerComponent, PageComponent, ToolbarComponent, ToolbarMenuItemComponent } from '@alfresco/aca-shared';
|
|
31
|
+
import { from } from 'rxjs';
|
|
32
|
+
import { Actions, ofType } from '@ngrx/effects';
|
|
33
|
+
import { AlfrescoViewerModule, NodesApiService } from '@alfresco/adf-content-services';
|
|
34
|
+
import { ViewerService } from '../../services/viewer.service';
|
|
35
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
36
|
+
import * as i0 from "@angular/core";
|
|
37
|
+
import * as i1 from "@ngrx/effects";
|
|
38
|
+
import * as i2 from "@alfresco/aca-shared";
|
|
39
|
+
import * as i3 from "@angular/common";
|
|
40
|
+
import * as i4 from "@alfresco/adf-content-services";
|
|
41
|
+
import * as i5 from "@angular/router";
|
|
42
|
+
import * as i6 from "../../services/viewer.service";
|
|
43
|
+
import * as i7 from "@alfresco/adf-core";
|
|
44
|
+
class PreviewComponent extends PageComponent {
|
|
45
|
+
actions$;
|
|
46
|
+
appHookService;
|
|
47
|
+
contentApi;
|
|
48
|
+
location;
|
|
49
|
+
nodesApiService;
|
|
50
|
+
route;
|
|
51
|
+
viewerService;
|
|
52
|
+
folderId = null;
|
|
53
|
+
navigateBackAsClose = false;
|
|
54
|
+
navigateMultiple = false;
|
|
55
|
+
navigateSource = null;
|
|
56
|
+
navigationSources = ['favorites', 'libraries', 'personal-files', 'recent-files', 'shared'];
|
|
57
|
+
nextNodeId;
|
|
58
|
+
nodeId = null;
|
|
59
|
+
openWith = [];
|
|
60
|
+
previewLocation = null;
|
|
61
|
+
previousNodeId;
|
|
62
|
+
routesSkipNavigation = ['favorites', 'recent-files', 'shared'];
|
|
63
|
+
showRightSide = false;
|
|
64
|
+
simplestMode = false;
|
|
65
|
+
containersSkipNavigation = ['adf-viewer__sidebar', 'cdk-overlay-container', 'adf-image-viewer'];
|
|
66
|
+
constructor(actions$, appHookService, contentApi, location, nodesApiService, route, viewerService) {
|
|
67
|
+
super();
|
|
68
|
+
this.actions$ = actions$;
|
|
69
|
+
this.appHookService = appHookService;
|
|
70
|
+
this.contentApi = contentApi;
|
|
71
|
+
this.location = location;
|
|
72
|
+
this.nodesApiService = nodesApiService;
|
|
73
|
+
this.route = route;
|
|
74
|
+
this.viewerService = viewerService;
|
|
75
|
+
}
|
|
76
|
+
ngOnInit() {
|
|
77
|
+
super.ngOnInit();
|
|
78
|
+
from(this.infoDrawerOpened$)
|
|
79
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
80
|
+
.subscribe((val) => {
|
|
81
|
+
this.showRightSide = val;
|
|
82
|
+
});
|
|
83
|
+
this.previewLocation = this.router.url.substr(0, this.router.url.indexOf('/', 1)).replace(/\//g, '');
|
|
84
|
+
const routeData = this.route.snapshot.data;
|
|
85
|
+
this.navigateBackAsClose = !!routeData.navigateBackAsClose;
|
|
86
|
+
this.simplestMode = !!routeData.simplestMode;
|
|
87
|
+
if (routeData.navigateMultiple) {
|
|
88
|
+
this.navigateMultiple = true;
|
|
89
|
+
}
|
|
90
|
+
if (routeData.navigateSource) {
|
|
91
|
+
const source = routeData.navigateSource.toLowerCase();
|
|
92
|
+
if (this.navigationSources.includes(source)) {
|
|
93
|
+
this.navigateSource = routeData.navigateSource;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
this.route.params.subscribe((params) => {
|
|
97
|
+
this.folderId = params.folderId;
|
|
98
|
+
const id = params.nodeId;
|
|
99
|
+
if (id) {
|
|
100
|
+
void this.displayNode(id);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
this.subscriptions = this.subscriptions.concat([
|
|
104
|
+
this.appHookService.nodesDeleted.subscribe(() => this.navigateToFileLocation(true)),
|
|
105
|
+
this.uploadService.fileUploadDeleted.subscribe(() => this.navigateToFileLocation(true)),
|
|
106
|
+
this.uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe((file) => this.nodesApiService.nodeUpdated.next(file.data.entry)),
|
|
107
|
+
this.actions$
|
|
108
|
+
.pipe(ofType(ViewerActionTypes.ClosePreview), map(() => this.navigateToFileLocation(true)))
|
|
109
|
+
.subscribe(() => { })
|
|
110
|
+
]);
|
|
111
|
+
this.extensions
|
|
112
|
+
.getOpenWithActions()
|
|
113
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
114
|
+
.subscribe((actions) => {
|
|
115
|
+
this.openWith = actions;
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Loads the particular node into the Viewer
|
|
120
|
+
*
|
|
121
|
+
* @param id Unique identifier for the Node to display
|
|
122
|
+
*/
|
|
123
|
+
async displayNode(id) {
|
|
124
|
+
if (id) {
|
|
125
|
+
try {
|
|
126
|
+
this.node = await this.contentApi.getNodeInfo(id).toPromise();
|
|
127
|
+
this.store.dispatch(new SetSelectedNodesAction([{ entry: this.node }]));
|
|
128
|
+
if (this.node?.isFile) {
|
|
129
|
+
this.nodeId = this.node.id;
|
|
130
|
+
if (this.navigateMultiple) {
|
|
131
|
+
const nearest = await this.viewerService.getNearestNodes(this.node.id, this.node.parentId, this.navigateSource);
|
|
132
|
+
this.previousNodeId = nearest.left;
|
|
133
|
+
this.nextNodeId = nearest.right;
|
|
134
|
+
}
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
await this.router.navigate([this.previewLocation, id]);
|
|
138
|
+
}
|
|
139
|
+
catch (err) {
|
|
140
|
+
if (!err || err.status !== 401) {
|
|
141
|
+
await this.router.navigate([this.previewLocation, id]);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
handleKeyboardEvent(event) {
|
|
147
|
+
const key = event.key;
|
|
148
|
+
if (key === 'ArrowRight' || key === 'ArrowLeft') {
|
|
149
|
+
event.preventDefault();
|
|
150
|
+
event.stopImmediatePropagation();
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Handles the visibility change of the Viewer component.
|
|
155
|
+
*
|
|
156
|
+
* @param isVisible Indicator whether Viewer is visible or hidden.
|
|
157
|
+
*/
|
|
158
|
+
onVisibilityChanged(isVisible) {
|
|
159
|
+
const shouldNavigate = !isVisible;
|
|
160
|
+
this.navigateToFileLocation(shouldNavigate);
|
|
161
|
+
}
|
|
162
|
+
navigateToFileLocation(shouldNavigate) {
|
|
163
|
+
if (shouldNavigate) {
|
|
164
|
+
if (this.navigateBackAsClose) {
|
|
165
|
+
this.location.back();
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
const shouldSkipNavigation = this.routesSkipNavigation.includes(this.previewLocation);
|
|
169
|
+
const route = this.getNavigationCommands(this.previewLocation);
|
|
170
|
+
if (!shouldSkipNavigation && this.folderId) {
|
|
171
|
+
route.push(this.folderId);
|
|
172
|
+
}
|
|
173
|
+
void this.router.navigate(route);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/** Handles navigation to a previous document */
|
|
178
|
+
onNavigateBefore(event) {
|
|
179
|
+
if (event.type !== 'click' && this.shouldNavigate(event.target)) {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
if (this.previousNodeId) {
|
|
183
|
+
void this.router.navigate(this.getPreviewPath(this.folderId, this.previousNodeId));
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/** Handles navigation to a next document */
|
|
187
|
+
onNavigateNext(event) {
|
|
188
|
+
if (event.type !== 'click' && this.shouldNavigate(event.target)) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
if (this.nextNodeId) {
|
|
192
|
+
void this.router.navigate(this.getPreviewPath(this.folderId, this.nextNodeId));
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Generates a node preview route based on folder and node IDs.
|
|
197
|
+
*
|
|
198
|
+
* @param folderId Folder ID
|
|
199
|
+
* @param nodeId Node ID
|
|
200
|
+
*/
|
|
201
|
+
getPreviewPath(folderId, nodeId) {
|
|
202
|
+
const route = [this.previewLocation];
|
|
203
|
+
if (folderId) {
|
|
204
|
+
route.push(folderId);
|
|
205
|
+
}
|
|
206
|
+
if (nodeId) {
|
|
207
|
+
route.push('preview', nodeId);
|
|
208
|
+
}
|
|
209
|
+
return route;
|
|
210
|
+
}
|
|
211
|
+
getNavigationCommands(url) {
|
|
212
|
+
const urlTree = this.router.parseUrl(url);
|
|
213
|
+
const urlSegmentGroup = urlTree.root.children[PRIMARY_OUTLET];
|
|
214
|
+
if (!urlSegmentGroup) {
|
|
215
|
+
return [url];
|
|
216
|
+
}
|
|
217
|
+
const urlSegments = urlSegmentGroup.segments;
|
|
218
|
+
return urlSegments.reduce(function (acc, item) {
|
|
219
|
+
acc.push(item.path, item.parameters);
|
|
220
|
+
return acc;
|
|
221
|
+
}, []);
|
|
222
|
+
}
|
|
223
|
+
shouldNavigate(element) {
|
|
224
|
+
let currentElement = element.parentElement;
|
|
225
|
+
while (currentElement && !this.isChild(currentElement.classList)) {
|
|
226
|
+
currentElement = currentElement.parentElement;
|
|
227
|
+
}
|
|
228
|
+
return !!currentElement;
|
|
229
|
+
}
|
|
230
|
+
isChild(list) {
|
|
231
|
+
return Array.from(list).some((className) => this.containersSkipNavigation.includes(className));
|
|
232
|
+
}
|
|
233
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PreviewComponent, deps: [{ token: i1.Actions }, { token: i2.AppHookService }, { token: i2.ContentApiService }, { token: i3.Location }, { token: i4.NodesApiService }, { token: i5.ActivatedRoute }, { token: i6.ViewerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
234
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: PreviewComponent, isStandalone: true, selector: "app-preview", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "app-preview" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"nodeId\">\n <adf-alfresco-viewer\n [ngClass]=\"{\n 'aca-right_side--hide': !showRightSide\n }\"\n [nodeId]=\"nodeId\"\n [allowNavigate]=\"navigateMultiple\"\n [allowRightSidebar]=\"true\"\n [allowPrint]=\"false\"\n [showRightSidebar]=\"true\"\n [allowDownload]=\"false\"\n [allowFullScreen]=\"false\"\n [canNavigateBefore]=\"!!previousNodeId\"\n [canNavigateNext]=\"!!nextNodeId\"\n [overlayMode]=\"true\"\n (showViewerChange)=\"onVisibilityChanged($event)\"\n (navigateBefore)=\"onNavigateBefore($event)\"\n (navigateNext)=\"onNavigateNext($event)\"\n >\n <adf-viewer-sidebar *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.file\" />\n </adf-viewer-sidebar>\n\n <adf-viewer-open-with *ngIf=\"openWith.length\">\n <ng-container *ngFor=\"let action of openWith; trackBy: trackByActionId\">\n <app-toolbar-menu-item [actionRef]=\"action\" />\n </ng-container>\n </adf-viewer-open-with>\n\n <adf-viewer-toolbar-actions *ngIf=\"!simplestMode\">\n <aca-toolbar [items]=\"viewerToolbarActions\" />\n </adf-viewer-toolbar-actions>\n </adf-alfresco-viewer>\n</ng-container>\n", styles: [".app-preview{width:100%;height:100%}.adf-viewer-toolbar .adf-toolbar-divider{display:none}.adf-viewer-toolbar-actions{display:flex;flex-direction:row;align-items:center}.adf-viewer-toolbar-actions .adf-toolbar-divider{display:inline}.adf-viewer-toolbar>*>button:last-child{display:none}.adf-alfresco-viewer.aca-right_side--hide .adf-viewer__sidebar__right{width:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ViewerModule }, { kind: "component", type: i7.ViewerSidebarComponent, selector: "adf-viewer-sidebar" }, { kind: "component", type: i7.ViewerOpenWithComponent, selector: "adf-viewer-open-with" }, { kind: "component", type: i7.ViewerToolbarActionsComponent, selector: "adf-viewer-toolbar-actions" }, { kind: "ngmodule", type: AlfrescoViewerModule }, { kind: "component", type: i4.AlfrescoViewerComponent, selector: "adf-alfresco-viewer", inputs: ["nodeId", "versionId", "sharedLinkId", "showViewer", "maxRetries", "allowGoBack", "showToolbar", "overlayMode", "allowNavigate", "canNavigateBefore", "canNavigateNext", "allowLeftSidebar", "allowRightSidebar", "showRightSidebar", "showLeftSidebar", "allowDownload", "allowPrint", "allowFullScreen", "hideInfoButton", "closeButtonPosition", "sidebarRightTemplate", "sidebarLeftTemplate"], outputs: ["invalidSharedLink", "navigateBefore", "navigateNext", "showViewerChange"] }, { kind: "component", type: InfoDrawerComponent, selector: "aca-info-drawer", inputs: ["nodeId", "node"] }, { kind: "component", type: ToolbarMenuItemComponent, selector: "app-toolbar-menu-item", inputs: ["actionRef", "menuId"] }, { kind: "component", type: ToolbarComponent, selector: "aca-toolbar", inputs: ["items"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
235
|
+
}
|
|
236
|
+
export { PreviewComponent };
|
|
237
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PreviewComponent, decorators: [{
|
|
238
|
+
type: Component,
|
|
239
|
+
args: [{ standalone: true, imports: [CommonModule, ViewerModule, AlfrescoViewerModule, InfoDrawerComponent, ToolbarMenuItemComponent, ToolbarComponent], selector: 'app-preview', encapsulation: ViewEncapsulation.None, host: { class: 'app-preview' }, template: "<ng-container *ngIf=\"nodeId\">\n <adf-alfresco-viewer\n [ngClass]=\"{\n 'aca-right_side--hide': !showRightSide\n }\"\n [nodeId]=\"nodeId\"\n [allowNavigate]=\"navigateMultiple\"\n [allowRightSidebar]=\"true\"\n [allowPrint]=\"false\"\n [showRightSidebar]=\"true\"\n [allowDownload]=\"false\"\n [allowFullScreen]=\"false\"\n [canNavigateBefore]=\"!!previousNodeId\"\n [canNavigateNext]=\"!!nextNodeId\"\n [overlayMode]=\"true\"\n (showViewerChange)=\"onVisibilityChanged($event)\"\n (navigateBefore)=\"onNavigateBefore($event)\"\n (navigateNext)=\"onNavigateNext($event)\"\n >\n <adf-viewer-sidebar *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.file\" />\n </adf-viewer-sidebar>\n\n <adf-viewer-open-with *ngIf=\"openWith.length\">\n <ng-container *ngFor=\"let action of openWith; trackBy: trackByActionId\">\n <app-toolbar-menu-item [actionRef]=\"action\" />\n </ng-container>\n </adf-viewer-open-with>\n\n <adf-viewer-toolbar-actions *ngIf=\"!simplestMode\">\n <aca-toolbar [items]=\"viewerToolbarActions\" />\n </adf-viewer-toolbar-actions>\n </adf-alfresco-viewer>\n</ng-container>\n", styles: [".app-preview{width:100%;height:100%}.adf-viewer-toolbar .adf-toolbar-divider{display:none}.adf-viewer-toolbar-actions{display:flex;flex-direction:row;align-items:center}.adf-viewer-toolbar-actions .adf-toolbar-divider{display:inline}.adf-viewer-toolbar>*>button:last-child{display:none}.adf-alfresco-viewer.aca-right_side--hide .adf-viewer__sidebar__right{width:0}\n"] }]
|
|
240
|
+
}], ctorParameters: function () { return [{ type: i1.Actions }, { type: i2.AppHookService }, { type: i2.ContentApiService }, { type: i3.Location }, { type: i4.NodesApiService }, { type: i5.ActivatedRoute }, { type: i6.ViewerService }]; }, propDecorators: { handleKeyboardEvent: [{
|
|
241
|
+
type: HostListener,
|
|
242
|
+
args: ['document:keydown', ['$event']]
|
|
243
|
+
}] } });
|
|
244
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC92aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC92aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQXdDLE1BQU0saUJBQWlCLENBQUM7QUFDdkcsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFzQixzQkFBc0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNHLE9BQU8sRUFDTCxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN6QixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFn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SUFDekcsQ0FBQzt1R0E3TlUsZ0JBQWdCOzJGQUFoQixnQkFBZ0IseU1DdEQ3Qixnc0NBa0NBLHVhRGFZLFlBQVksa1pBQUUsWUFBWSx3VEFBRSxvQkFBb0IsNGxCQUFFLG1CQUFtQix3RkFBRSx3QkFBd0IsbUdBQUUsZ0JBQWdCOztTQU9oSCxnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFUNUIsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixDQUFDLFlBQ2xILGFBQWEsaUJBR1IsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7eVFBc0g5QixtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBSSU1BUllfT1VUTEVULCBVcmxTZWdtZW50LCBVcmxTZWdtZW50R3JvdXAsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBWaWV3ZXJNb2R1bGUgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQ2xvc2VQcmV2aWV3QWN0aW9uLCBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uLCBWaWV3ZXJBY3Rpb25UeXBlcyB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7XG4gIEFwcEhvb2tTZXJ2aWNlLFxuICBDb250ZW50QXBpU2VydmljZSxcbiAgSW5mb0RyYXdlckNvbXBvbmVudCxcbiAgUGFnZUNvbXBvbmVudCxcbiAgVG9vbGJhckNvbXBvbmVudCxcbiAgVG9vbGJhck1lbnVJdGVtQ29tcG9uZW50XG59IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkJztcbmltcG9ydCB7IENvbnRlbnRBY3Rpb25SZWYgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWN0aW9ucywgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBBbGZyZXNjb1ZpZXdlck1vZHVsZSwgTm9kZXNBcGlTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IFZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3ZXIuc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBWaWV3ZXJNb2R1bGUsIEFsZnJlc2NvVmlld2VyTW9kdWxlLCBJbmZvRHJhd2VyQ29tcG9uZW50LCBUb29sYmFyTWVudUl0ZW1Db21wb25lbnQsIFRvb2xiYXJDb21wb25lbnRdLFxuICBzZWxlY3RvcjogJ2FwcC1wcmV2aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcmV2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhcHAtcHJldmlldycgfVxufSlcbmV4cG9ydCBjbGFzcyBQcmV2aWV3Q29tcG9uZW50IGV4dGVuZHMgUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGZvbGRlcklkOiBzdHJpbmcgPSBudWxsO1xuICBuYXZpZ2F0ZUJhY2tBc0Nsb3NlID0gZmFsc2U7XG4gIG5hdmlnYXRlTXVsdGlwbGUgPSBmYWxzZTtcbiAgbmF2aWdhdGVTb3VyY2U6IHN0cmluZyA9IG51bGw7XG4gIG5hdmlnYXRpb25Tb3VyY2VzID0gWydmYXZvcml0ZXMnLCAnbGlicmFyaWVzJywgJ3BlcnNvbmFsLWZpbGVzJywgJ3JlY2VudC1maWxlcycsICdzaGFyZWQnXTtcbiAgbmV4dE5vZGVJZDogc3RyaW5nO1xuICBub2RlSWQ6IHN0cmluZyA9IG51bGw7XG4gIG9wZW5XaXRoOiBBcnJheTxDb250ZW50QWN0aW9uUmVmPiA9IFtdO1xuICBwcmV2aWV3TG9jYXRpb246IHN0cmluZyA9IG51bGw7XG4gIHByZXZpb3VzTm9kZUlkOiBzdHJpbmc7XG4gIHJvdXRlc1NraXBOYXZpZ2F0aW9uID0gWydmYXZvcml0ZXMnLCAncmVjZW50LWZpbGVzJywgJ3NoYXJlZCddO1xuICBzaG93UmlnaHRTaWRlID0gZmFsc2U7XG4gIHNpbXBsZXN0TW9kZSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgY29udGFpbmVyc1NraXBOYXZpZ2F0aW9uID0gWydhZGYtdmlld2VyX19zaWRlYmFyJywgJ2Nkay1vdmVybGF5LWNvbnRhaW5lcicsICdhZGYtaW1hZ2Utdmlld2VyJ107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIGFwcEhvb2tTZXJ2aWNlOiBBcHBIb29rU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRlbnRBcGk6IENvbnRlbnRBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgbm9kZXNBcGlTZXJ2aWNlOiBOb2Rlc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSB2aWV3ZXJTZXJ2aWNlOiBWaWV3ZXJTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgZnJvbSh0aGlzLmluZm9EcmF3ZXJPcGVuZWQkKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgICAgdGhpcy5zaG93UmlnaHRTaWRlID0gdmFsO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnByZXZpZXdMb2NhdGlvbiA9IHRoaXMucm91dGVyLnVybC5zdWJzdHIoMCwgdGhpcy5yb3V0ZXIudXJsLmluZGV4T2YoJy8nLCAxKSkucmVwbGFjZSgvXFwvL2csICcnKTtcblxuICAgIGNvbnN0IHJvdXRlRGF0YSA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YTtcbiAgICB0aGlzLm5hdmlnYXRlQmFja0FzQ2xvc2UgPSAhIXJvdXRlRGF0YS5uYXZpZ2F0ZUJhY2tBc0Nsb3NlO1xuICAgIHRoaXMuc2ltcGxlc3RNb2RlID0gISFyb3V0ZURhdGEuc2ltcGxlc3RNb2RlO1xuXG4gICAgaWYgKHJvdXRlRGF0YS5uYXZpZ2F0ZU11bHRpcGxlKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlTXVsdGlwbGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChyb3V0ZURhdGEubmF2aWdhdGVTb3VyY2UpIHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHJvdXRlRGF0YS5uYXZpZ2F0ZVNvdXJjZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKHRoaXMubmF2aWdhdGlvblNvdXJjZXMuaW5jbHVkZXMoc291cmNlKSkge1xuICAgICAgICB0aGlzLm5hdmlnYXRlU291cmNlID0gcm91dGVEYXRhLm5hdmlnYXRlU291cmNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLmZvbGRlcklkID0gcGFyYW1zLmZvbGRlcklkO1xuICAgICAgY29uc3QgaWQgPSBwYXJhbXMubm9kZUlkO1xuICAgICAgaWYgKGlkKSB7XG4gICAgICAgIHZvaWQgdGhpcy5kaXNwbGF5Tm9kZShpZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSB0aGlzLnN1YnNjcmlwdGlvbnMuY29uY2F0KFtcbiAgICAgIHRoaXMuYXBwSG9va1NlcnZpY2Uubm9kZXNEZWxldGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24odHJ1ZSkpLFxuXG4gICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZmlsZVVwbG9hZERlbGV0ZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMubmF2aWdhdGVUb0ZpbGVMb2NhdGlvbih0cnVlKSksXG5cbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5maWxlVXBsb2FkQ29tcGxldGUucGlwZShkZWJvdW5jZVRpbWUoMzAwKSkuc3Vic2NyaWJlKChmaWxlKSA9PiB0aGlzLm5vZGVzQXBpU2VydmljZS5ub2RlVXBkYXRlZC5uZXh0KGZpbGUuZGF0YS5lbnRyeSkpLFxuXG4gICAgICB0aGlzLmFjdGlvbnMkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG9mVHlwZTxDbG9zZVByZXZpZXdBY3Rpb24+KFZpZXdlckFjdGlvblR5cGVzLkNsb3NlUHJldmlldyksXG4gICAgICAgICAgbWFwKCgpID0+IHRoaXMubmF2aWdhdGVUb0ZpbGVMb2NhdGlvbih0cnVlKSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHt9KVxuICAgIF0pO1xuXG4gICAgdGhpcy5leHRlbnNpb25zXG4gICAgICAuZ2V0T3BlbldpdGhBY3Rpb25zKClcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLm9wZW5XaXRoID0gYWN0aW9ucztcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBwYXJ0aWN1bGFyIG5vZGUgaW50byB0aGUgVmlld2VyXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIE5vZGUgdG8gZGlzcGxheVxuICAgKi9cbiAgYXN5bmMgZGlzcGxheU5vZGUoaWQ6IHN0cmluZykge1xuICAgIGlmIChpZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5ub2RlID0gYXdhaXQgdGhpcy5jb250ZW50QXBpLmdldE5vZGVJbmZvKGlkKS50b1Byb21pc2UoKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U2VsZWN0ZWROb2Rlc0FjdGlvbihbeyBlbnRyeTogdGhpcy5ub2RlIH1dKSk7XG5cbiAgICAgICAgaWYgKHRoaXMubm9kZT8uaXNGaWxlKSB7XG4gICAgICAgICAgdGhpcy5ub2RlSWQgPSB0aGlzLm5vZGUuaWQ7XG4gICAgICAgICAgaWYgKHRoaXMubmF2aWdhdGVNdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgbmVhcmVzdCA9IGF3YWl0IHRoaXMudmlld2VyU2VydmljZS5nZXROZWFyZXN0Tm9kZXModGhpcy5ub2RlLmlkLCB0aGlzLm5vZGUucGFyZW50SWQsIHRoaXMubmF2aWdhdGVTb3VyY2UpO1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c05vZGVJZCA9IG5lYXJlc3QubGVmdDtcbiAgICAgICAgICAgIHRoaXMubmV4dE5vZGVJZCA9IG5lYXJlc3QucmlnaHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5wcmV2aWV3TG9jYXRpb24sIGlkXSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKCFlcnIgfHwgZXJyLnN0YXR1cyAhPT0gNDAxKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucHJldmlld0xvY2F0aW9uLCBpZF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXk7XG5cbiAgICBpZiAoa2V5ID09PSAnQXJyb3dSaWdodCcgfHwga2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSB2aXNpYmlsaXR5IGNoYW5nZSBvZiB0aGUgVmlld2VyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGlzVmlzaWJsZSBJbmRpY2F0b3Igd2hldGhlciBWaWV3ZXIgaXMgdmlzaWJsZSBvciBoaWRkZW4uXG4gICAqL1xuICBvblZpc2liaWxpdHlDaGFuZ2VkKGlzVmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IHNob3VsZE5hdmlnYXRlID0gIWlzVmlzaWJsZTtcbiAgICB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24oc2hvdWxkTmF2aWdhdGUpO1xuICB9XG5cbiAgbmF2aWdhdGVUb0ZpbGVMb2NhdGlvbihzaG91bGROYXZpZ2F0ZTogYm9vbGVhbikge1xuICAgIGlmIChzaG91bGROYXZpZ2F0ZSkge1xuICAgICAgaWYgKHRoaXMubmF2aWdhdGVCYWNrQXNDbG9zZSkge1xuICAgICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNob3VsZFNraXBOYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXNTa2lwTmF2aWdhdGlvbi5pbmNsdWRlcyh0aGlzLnByZXZpZXdMb2NhdGlvbik7XG4gICAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy5nZXROYXZpZ2F0aW9uQ29tbWFuZHModGhpcy5wcmV2aWV3TG9jYXRpb24pO1xuXG4gICAgICAgIGlmICghc2hvdWxkU2tpcE5hdmlnYXRpb24gJiYgdGhpcy5mb2xkZXJJZCkge1xuICAgICAgICAgIHJvdXRlLnB1c2godGhpcy5mb2xkZXJJZCk7XG4gICAgICAgIH1cbiAgICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShyb3V0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZXMgbmF2aWdhdGlvbiB0byBhIHByZXZpb3VzIGRvY3VtZW50ICovXG4gIG9uTmF2aWdhdGVCZWZvcmUoZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnR5cGUgIT09ICdjbGljaycgJiYgdGhpcy5zaG91bGROYXZpZ2F0ZShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJldmlvdXNOb2RlSWQpIHtcbiAgICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGUodGhpcy5nZXRQcmV2aWV3UGF0aCh0aGlzLmZvbGRlcklkLCB0aGlzLnByZXZpb3VzTm9kZUlkKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZXMgbmF2aWdhdGlvbiB0byBhIG5leHQgZG9jdW1lbnQgKi9cbiAgb25OYXZpZ2F0ZU5leHQoZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnR5cGUgIT09ICdjbGljaycgJiYgdGhpcy5zaG91bGROYXZpZ2F0ZShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmV4dE5vZGVJZCkge1xuICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZSh0aGlzLmdldFByZXZpZXdQYXRoKHRoaXMuZm9sZGVySWQsIHRoaXMubmV4dE5vZGVJZCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBub2RlIHByZXZpZXcgcm91dGUgYmFzZWQgb24gZm9sZGVyIGFuZCBub2RlIElEcy5cbiAgICpcbiAgICogQHBhcmFtIGZvbGRlcklkIEZvbGRlciBJRFxuICAgKiBAcGFyYW0gbm9kZUlkIE5vZGUgSURcbiAgICovXG4gIGdldFByZXZpZXdQYXRoKGZvbGRlcklkOiBzdHJpbmcsIG5vZGVJZDogc3RyaW5nKTogYW55W10ge1xuICAgIGNvbnN0IHJvdXRlID0gW3RoaXMucHJldmlld0xvY2F0aW9uXTtcblxuICAgIGlmIChmb2xkZXJJZCkge1xuICAgICAgcm91dGUucHVzaChmb2xkZXJJZCk7XG4gICAgfVxuXG4gICAgaWYgKG5vZGVJZCkge1xuICAgICAgcm91dGUucHVzaCgncHJldmlldycsIG5vZGVJZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvdXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROYXZpZ2F0aW9uQ29tbWFuZHModXJsOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgY29uc3QgdXJsVHJlZTogVXJsVHJlZSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHVybCk7XG4gICAgY29uc3QgdXJsU2VnbWVudEdyb3VwOiBVcmxTZWdtZW50R3JvdXAgPSB1cmxUcmVlLnJvb3QuY2hpbGRyZW5bUFJJTUFSWV9PVVRMRVRdO1xuXG4gICAgaWYgKCF1cmxTZWdtZW50R3JvdXApIHtcbiAgICAgIHJldHVybiBbdXJsXTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmxTZWdtZW50czogVXJsU2VnbWVudFtdID0gdXJsU2VnbWVudEdyb3VwLnNlZ21lbnRzO1xuXG4gICAgcmV0dXJuIHVybFNlZ21lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBpdGVtKSB7XG4gICAgICBhY2MucHVzaChpdGVtLnBhdGgsIGl0ZW0ucGFyYW1ldGVycyk7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkTmF2aWdhdGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBsZXQgY3VycmVudEVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgICB3aGlsZSAoY3VycmVudEVsZW1lbnQgJiYgIXRoaXMuaXNDaGlsZChjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QpKSB7XG4gICAgICBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuICEhY3VycmVudEVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGlzQ2hpbGQobGlzdDogRE9NVG9rZW5MaXN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20obGlzdCkuc29tZSgoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHRoaXMuY29udGFpbmVyc1NraXBOYXZpZ2F0aW9uLmluY2x1ZGVzKGNsYXNzTmFtZSkpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZUlkXCI+XG4gIDxhZGYtYWxmcmVzY28tdmlld2VyXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2FjYS1yaWdodF9zaWRlLS1oaWRlJzogIXNob3dSaWdodFNpZGVcbiAgICB9XCJcbiAgICBbbm9kZUlkXT1cIm5vZGVJZFwiXG4gICAgW2FsbG93TmF2aWdhdGVdPVwibmF2aWdhdGVNdWx0aXBsZVwiXG4gICAgW2FsbG93UmlnaHRTaWRlYmFyXT1cInRydWVcIlxuICAgIFthbGxvd1ByaW50XT1cImZhbHNlXCJcbiAgICBbc2hvd1JpZ2h0U2lkZWJhcl09XCJ0cnVlXCJcbiAgICBbYWxsb3dEb3dubG9hZF09XCJmYWxzZVwiXG4gICAgW2FsbG93RnVsbFNjcmVlbl09XCJmYWxzZVwiXG4gICAgW2Nhbk5hdmlnYXRlQmVmb3JlXT1cIiEhcHJldmlvdXNOb2RlSWRcIlxuICAgIFtjYW5OYXZpZ2F0ZU5leHRdPVwiISFuZXh0Tm9kZUlkXCJcbiAgICBbb3ZlcmxheU1vZGVdPVwidHJ1ZVwiXG4gICAgKHNob3dWaWV3ZXJDaGFuZ2UpPVwib25WaXNpYmlsaXR5Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAobmF2aWdhdGVCZWZvcmUpPVwib25OYXZpZ2F0ZUJlZm9yZSgkZXZlbnQpXCJcbiAgICAobmF2aWdhdGVOZXh0KT1cIm9uTmF2aWdhdGVOZXh0KCRldmVudClcIlxuICA+XG4gICAgPGFkZi12aWV3ZXItc2lkZWJhciAqbmdJZj1cImluZm9EcmF3ZXJPcGVuZWQkIHwgYXN5bmNcIj5cbiAgICAgIDxhY2EtaW5mby1kcmF3ZXIgW25vZGVdPVwic2VsZWN0aW9uLmZpbGVcIiAvPlxuICAgIDwvYWRmLXZpZXdlci1zaWRlYmFyPlxuXG4gICAgPGFkZi12aWV3ZXItb3Blbi13aXRoICpuZ0lmPVwib3BlbldpdGgubGVuZ3RoXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2Ygb3BlbldpdGg7IHRyYWNrQnk6IHRyYWNrQnlBY3Rpb25JZFwiPlxuICAgICAgICA8YXBwLXRvb2xiYXItbWVudS1pdGVtIFthY3Rpb25SZWZdPVwiYWN0aW9uXCIgLz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvYWRmLXZpZXdlci1vcGVuLXdpdGg+XG5cbiAgICA8YWRmLXZpZXdlci10b29sYmFyLWFjdGlvbnMgKm5nSWY9XCIhc2ltcGxlc3RNb2RlXCI+XG4gICAgICA8YWNhLXRvb2xiYXIgW2l0ZW1zXT1cInZpZXdlclRvb2xiYXJBY3Rpb25zXCIgLz5cbiAgICA8L2FkZi12aWV3ZXItdG9vbGJhci1hY3Rpb25zPlxuICA8L2FkZi1hbGZyZXNjby12aWV3ZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Alfresco Example Content Application
|
|
5
|
+
*
|
|
6
|
+
* This file is part of the Alfresco Example Content Application.
|
|
7
|
+
* If the software was purchased under a paid Alfresco license, the terms of
|
|
8
|
+
* the paid license agreement will prevail. Otherwise, the software is
|
|
9
|
+
* provided under the following open source license terms:
|
|
10
|
+
*
|
|
11
|
+
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
|
12
|
+
* it under the terms of the GNU Lesser General Public License as published by
|
|
13
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
14
|
+
* (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
|
17
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
* GNU Lesser General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
22
|
+
* from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
|
|
23
|
+
*/
|
|
24
|
+
import { AppExtensionService, AppHookService, AppSettingsService, ContentApiService, InfoDrawerComponent, ToolbarComponent, ToolbarMenuItemComponent } from '@alfresco/aca-shared';
|
|
25
|
+
import { getAppSelection, isInfoDrawerOpened, SetCurrentNodeVersionAction, SetSelectedNodesAction, ViewerActionTypes, ViewNodeAction } from '@alfresco/aca-shared/store';
|
|
26
|
+
import { VersionsApi } from '@alfresco/js-api';
|
|
27
|
+
import { Component, DestroyRef, HostListener, inject, ViewEncapsulation } from '@angular/core';
|
|
28
|
+
import { ActivatedRoute, PRIMARY_OUTLET, Router } from '@angular/router';
|
|
29
|
+
import { ViewerOpenWithComponent, ViewerSidebarComponent, ViewerToolbarActionsComponent } from '@alfresco/adf-core';
|
|
30
|
+
import { Store } from '@ngrx/store';
|
|
31
|
+
import { from } from 'rxjs';
|
|
32
|
+
import { debounceTime } from 'rxjs/operators';
|
|
33
|
+
import { Actions, ofType } from '@ngrx/effects';
|
|
34
|
+
import { AlfrescoApiService, AlfrescoViewerComponent, DocumentListService, NodesApiService, UploadService } from '@alfresco/adf-content-services';
|
|
35
|
+
import { CommonModule } from '@angular/common';
|
|
36
|
+
import { ViewerService } from '../../services/viewer.service';
|
|
37
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
38
|
+
import * as i0 from "@angular/core";
|
|
39
|
+
import * as i1 from "@ngrx/effects";
|
|
40
|
+
import * as i2 from "@alfresco/adf-content-services";
|
|
41
|
+
import * as i3 from "@alfresco/aca-shared";
|
|
42
|
+
import * as i4 from "@angular/router";
|
|
43
|
+
import * as i5 from "@ngrx/store";
|
|
44
|
+
import * as i6 from "../../services/viewer.service";
|
|
45
|
+
import * as i7 from "@angular/common";
|
|
46
|
+
class AcaViewerComponent {
|
|
47
|
+
actions$;
|
|
48
|
+
apiService;
|
|
49
|
+
appHookService;
|
|
50
|
+
contentApi;
|
|
51
|
+
extensions;
|
|
52
|
+
nodesApiService;
|
|
53
|
+
route;
|
|
54
|
+
router;
|
|
55
|
+
store;
|
|
56
|
+
uploadService;
|
|
57
|
+
viewerService;
|
|
58
|
+
settings = inject(AppSettingsService);
|
|
59
|
+
documentListService = inject(DocumentListService);
|
|
60
|
+
_versionsApi;
|
|
61
|
+
get versionsApi() {
|
|
62
|
+
this._versionsApi = this._versionsApi ?? new VersionsApi(this.apiService.getInstance());
|
|
63
|
+
return this._versionsApi;
|
|
64
|
+
}
|
|
65
|
+
fileName;
|
|
66
|
+
folderId = null;
|
|
67
|
+
infoDrawerOpened$;
|
|
68
|
+
navigateMultiple = true;
|
|
69
|
+
navigateSource = null;
|
|
70
|
+
navigationSources = ['favorites', 'libraries', 'personal-files', 'recent-files', 'shared'];
|
|
71
|
+
nextNodeId;
|
|
72
|
+
node;
|
|
73
|
+
nodeId = null;
|
|
74
|
+
openWith = [];
|
|
75
|
+
previousNodeId;
|
|
76
|
+
selection;
|
|
77
|
+
showRightSide = false;
|
|
78
|
+
toolbarActions = [];
|
|
79
|
+
versionId = null;
|
|
80
|
+
navigationPath;
|
|
81
|
+
previewLocation;
|
|
82
|
+
containersSkipNavigation = ['adf-viewer__sidebar', 'cdk-overlay-container', 'adf-image-viewer'];
|
|
83
|
+
destroyRef = inject(DestroyRef);
|
|
84
|
+
constructor(actions$, apiService, appHookService, contentApi, extensions, nodesApiService, route, router, store, uploadService, viewerService) {
|
|
85
|
+
this.actions$ = actions$;
|
|
86
|
+
this.apiService = apiService;
|
|
87
|
+
this.appHookService = appHookService;
|
|
88
|
+
this.contentApi = contentApi;
|
|
89
|
+
this.extensions = extensions;
|
|
90
|
+
this.nodesApiService = nodesApiService;
|
|
91
|
+
this.route = route;
|
|
92
|
+
this.router = router;
|
|
93
|
+
this.store = store;
|
|
94
|
+
this.uploadService = uploadService;
|
|
95
|
+
this.viewerService = viewerService;
|
|
96
|
+
}
|
|
97
|
+
ngOnInit() {
|
|
98
|
+
this.infoDrawerOpened$ = this.store.select(isInfoDrawerOpened);
|
|
99
|
+
from(this.infoDrawerOpened$)
|
|
100
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
101
|
+
.subscribe((val) => {
|
|
102
|
+
this.showRightSide = val;
|
|
103
|
+
});
|
|
104
|
+
this.store
|
|
105
|
+
.select(getAppSelection)
|
|
106
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
107
|
+
.subscribe((selection) => {
|
|
108
|
+
this.selection = selection;
|
|
109
|
+
});
|
|
110
|
+
this.extensions
|
|
111
|
+
.getViewerToolbarActions()
|
|
112
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
113
|
+
.subscribe((actions) => {
|
|
114
|
+
this.toolbarActions = actions;
|
|
115
|
+
});
|
|
116
|
+
this.extensions
|
|
117
|
+
.getOpenWithActions()
|
|
118
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
119
|
+
.subscribe((actions) => {
|
|
120
|
+
this.openWith = actions;
|
|
121
|
+
});
|
|
122
|
+
this.route.params.subscribe((params) => {
|
|
123
|
+
this.folderId = params.folderId;
|
|
124
|
+
const { nodeId } = params;
|
|
125
|
+
this.versionId = params.versionId;
|
|
126
|
+
if (this.versionId) {
|
|
127
|
+
void this.versionsApi.getVersion(nodeId, this.versionId).then((version) => {
|
|
128
|
+
if (version) {
|
|
129
|
+
this.store.dispatch(new SetCurrentNodeVersionAction(version));
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
if (nodeId) {
|
|
134
|
+
void this.displayNode(nodeId);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
this.route.queryParams.subscribe((params) => {
|
|
138
|
+
this.navigationPath = params.path || params.location;
|
|
139
|
+
});
|
|
140
|
+
if (this.route.snapshot.data?.navigateSource) {
|
|
141
|
+
const source = this.route.snapshot.data.navigateSource.toLowerCase();
|
|
142
|
+
if (this.navigationSources.includes(source)) {
|
|
143
|
+
this.navigateSource = this.route.snapshot.data.navigateSource;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
this.actions$.pipe(ofType(ViewerActionTypes.ClosePreview), takeUntilDestroyed(this.destroyRef)).subscribe(() => {
|
|
147
|
+
this.store.dispatch(new SetCurrentNodeVersionAction(null));
|
|
148
|
+
this.navigateToFileLocation();
|
|
149
|
+
});
|
|
150
|
+
this.actions$
|
|
151
|
+
.pipe(ofType(ViewerActionTypes.RefreshPreview), takeUntilDestroyed(this.destroyRef))
|
|
152
|
+
.subscribe((action) => {
|
|
153
|
+
this.nodesApiService.nodeUpdated.next(action.node);
|
|
154
|
+
void this.displayNode(action.node.id);
|
|
155
|
+
});
|
|
156
|
+
this.appHookService.nodesDeleted.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.navigateToFileLocation());
|
|
157
|
+
this.uploadService.fileUploadDeleted.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.navigateToFileLocation());
|
|
158
|
+
this.uploadService.fileUploadComplete.pipe(debounceTime(300), takeUntilDestroyed(this.destroyRef)).subscribe((file) => {
|
|
159
|
+
this.nodesApiService.nodeUpdated.next(file.data.entry);
|
|
160
|
+
void this.displayNode(file.data.entry.id);
|
|
161
|
+
});
|
|
162
|
+
this.previewLocation = this.router.url.substring(0, this.router.url.indexOf('/', 1)).replace(/\//g, '');
|
|
163
|
+
}
|
|
164
|
+
onViewerVisibilityChanged() {
|
|
165
|
+
this.documentListService.reload();
|
|
166
|
+
this.navigateToFileLocation();
|
|
167
|
+
}
|
|
168
|
+
ngOnDestroy() {
|
|
169
|
+
this.store.dispatch(new SetCurrentNodeVersionAction(null));
|
|
170
|
+
}
|
|
171
|
+
trackByActionId(_, obj) {
|
|
172
|
+
return obj.id;
|
|
173
|
+
}
|
|
174
|
+
async displayNode(nodeId) {
|
|
175
|
+
if (nodeId) {
|
|
176
|
+
try {
|
|
177
|
+
this.node = await this.contentApi.getNodeInfo(nodeId).toPromise();
|
|
178
|
+
this.store.dispatch(new SetSelectedNodesAction([{ entry: this.node }]));
|
|
179
|
+
this.navigateMultiple = this.extensions.canShowViewerNavigation({ entry: this.node });
|
|
180
|
+
if (this.node?.isFile) {
|
|
181
|
+
this.nodeId = this.node.id;
|
|
182
|
+
this.fileName = this.node.name + this.node?.properties?.['cm:versionLabel'];
|
|
183
|
+
if (this.navigateMultiple) {
|
|
184
|
+
const nearest = await this.viewerService.getNearestNodes(this.node.id, this.node.parentId, this.navigateSource);
|
|
185
|
+
this.previousNodeId = nearest.left;
|
|
186
|
+
this.nextNodeId = nearest.right;
|
|
187
|
+
}
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
this.navigateToFileLocation();
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
const statusCode = JSON.parse(error.message).error.statusCode;
|
|
194
|
+
if (statusCode !== 401) {
|
|
195
|
+
await this.router.navigate([this.previewLocation, { outlets: { viewer: null } }]).then(() => {
|
|
196
|
+
void this.router.navigate([this.previewLocation, nodeId]);
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
onNavigateBefore(event) {
|
|
203
|
+
if (event.type !== 'click' && this.shouldNavigate(event.target)) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
const location = this.getFileLocation();
|
|
207
|
+
this.store.dispatch(new ViewNodeAction(this.previousNodeId, { location }));
|
|
208
|
+
}
|
|
209
|
+
onNavigateNext(event) {
|
|
210
|
+
if (event.type !== 'click' && this.shouldNavigate(event.target)) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
const location = this.getFileLocation();
|
|
214
|
+
this.store.dispatch(new ViewNodeAction(this.nextNodeId, { location }));
|
|
215
|
+
}
|
|
216
|
+
handleKeyboardEvent(event) {
|
|
217
|
+
const key = event.key;
|
|
218
|
+
if (key === 'ArrowRight' || key === 'ArrowLeft') {
|
|
219
|
+
event.preventDefault();
|
|
220
|
+
event.stopImmediatePropagation();
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
navigateToFileLocation() {
|
|
224
|
+
const location = this.getFileLocation();
|
|
225
|
+
void this.router.navigateByUrl(location);
|
|
226
|
+
}
|
|
227
|
+
getFileLocation() {
|
|
228
|
+
return this.navigationPath || this.router.parseUrl(this.router.url).root.children[PRIMARY_OUTLET].toString();
|
|
229
|
+
}
|
|
230
|
+
shouldNavigate(element) {
|
|
231
|
+
let currentElement = element.parentElement;
|
|
232
|
+
while (currentElement && !this.isChild(currentElement.classList)) {
|
|
233
|
+
currentElement = currentElement.parentElement;
|
|
234
|
+
}
|
|
235
|
+
return !!currentElement;
|
|
236
|
+
}
|
|
237
|
+
isChild(list) {
|
|
238
|
+
return Array.from(list).some((className) => this.containersSkipNavigation.includes(className));
|
|
239
|
+
}
|
|
240
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AcaViewerComponent, deps: [{ token: i1.Actions }, { token: i2.AlfrescoApiService }, { token: i3.AppHookService }, { token: i3.ContentApiService }, { token: i3.AppExtensionService }, { token: i2.NodesApiService }, { token: i4.ActivatedRoute }, { token: i4.Router }, { token: i5.Store }, { token: i2.UploadService }, { token: i6.ViewerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
241
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AcaViewerComponent, isStandalone: true, selector: "aca-viewer", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "app-viewer" }, ngImport: i0, template: "<ng-container *ngIf=\"nodeId\">\n <adf-alfresco-viewer\n [ngClass]=\"{\n 'aca-right_side--hide': !showRightSide\n }\"\n [maxRetries]=\"settings.viewerMaxRetries\"\n [nodeId]=\"nodeId\"\n [versionId]=\"versionId\"\n [allowNavigate]=\"navigateMultiple\"\n [allowRightSidebar]=\"true\"\n [allowPrint]=\"false\"\n [showRightSidebar]=\"true\"\n [allowDownload]=\"false\"\n [allowFullScreen]=\"false\"\n [overlayMode]=\"true\"\n [hideInfoButton]=\"true\"\n [closeButtonPosition]=\"settings.viewerCloseButtonPosition\"\n (showViewerChange)=\"onViewerVisibilityChanged()\"\n [canNavigateBefore]=\"!!previousNodeId\"\n [canNavigateNext]=\"!!nextNodeId\"\n (navigateBefore)=\"onNavigateBefore($event)\"\n (navigateNext)=\"onNavigateNext($event)\"\n >\n <adf-viewer-sidebar *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.file\" />\n </adf-viewer-sidebar>\n\n <adf-viewer-open-with *ngIf=\"openWith.length\">\n <ng-container *ngFor=\"let action of openWith; trackBy: trackByActionId\">\n <app-toolbar-menu-item [actionRef]=\"action\" />\n </ng-container>\n </adf-viewer-open-with>\n\n <adf-viewer-toolbar-actions>\n <aca-toolbar [items]=\"toolbarActions\" />\n </adf-viewer-toolbar-actions>\n </adf-alfresco-viewer>\n</ng-container>\n", styles: [".app-viewer{width:100%;height:100%}.app-viewer .adf-viewer-toolbar .adf-toolbar-divider{display:none}.app-viewer .adf-viewer-toolbar-actions{display:flex;flex-direction:row;align-items:center;margin-left:auto}.app-viewer .adf-viewer-toolbar-actions .adf-toolbar-divider{display:inline}.app-viewer .adf-alfresco-viewer.aca-right_side--hide .adf-viewer__sidebar__right{width:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "component", type: InfoDrawerComponent, selector: "aca-info-drawer", inputs: ["nodeId", "node"] }, { kind: "component", type: ToolbarMenuItemComponent, selector: "app-toolbar-menu-item", inputs: ["actionRef", "menuId"] }, { kind: "component", type: ToolbarComponent, selector: "aca-toolbar", inputs: ["items"] }, { kind: "component", type: AlfrescoViewerComponent, selector: "adf-alfresco-viewer", inputs: ["nodeId", "versionId", "sharedLinkId", "showViewer", "maxRetries", "allowGoBack", "showToolbar", "overlayMode", "allowNavigate", "canNavigateBefore", "canNavigateNext", "allowLeftSidebar", "allowRightSidebar", "showRightSidebar", "showLeftSidebar", "allowDownload", "allowPrint", "allowFullScreen", "hideInfoButton", "closeButtonPosition", "sidebarRightTemplate", "sidebarLeftTemplate"], outputs: ["invalidSharedLink", "navigateBefore", "navigateNext", "showViewerChange"] }, { kind: "component", type: ViewerToolbarActionsComponent, selector: "adf-viewer-toolbar-actions" }, { kind: "component", type: ViewerOpenWithComponent, selector: "adf-viewer-open-with" }, { kind: "component", type: ViewerSidebarComponent, selector: "adf-viewer-sidebar" }], encapsulation: i0.ViewEncapsulation.None });
|
|
242
|
+
}
|
|
243
|
+
export { AcaViewerComponent };
|
|
244
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AcaViewerComponent, decorators: [{
|
|
245
|
+
type: Component,
|
|
246
|
+
args: [{ standalone: true, imports: [
|
|
247
|
+
CommonModule,
|
|
248
|
+
InfoDrawerComponent,
|
|
249
|
+
ToolbarMenuItemComponent,
|
|
250
|
+
ToolbarComponent,
|
|
251
|
+
AlfrescoViewerComponent,
|
|
252
|
+
ViewerToolbarActionsComponent,
|
|
253
|
+
ViewerOpenWithComponent,
|
|
254
|
+
ViewerSidebarComponent
|
|
255
|
+
], selector: 'aca-viewer', encapsulation: ViewEncapsulation.None, host: { class: 'app-viewer' }, template: "<ng-container *ngIf=\"nodeId\">\n <adf-alfresco-viewer\n [ngClass]=\"{\n 'aca-right_side--hide': !showRightSide\n }\"\n [maxRetries]=\"settings.viewerMaxRetries\"\n [nodeId]=\"nodeId\"\n [versionId]=\"versionId\"\n [allowNavigate]=\"navigateMultiple\"\n [allowRightSidebar]=\"true\"\n [allowPrint]=\"false\"\n [showRightSidebar]=\"true\"\n [allowDownload]=\"false\"\n [allowFullScreen]=\"false\"\n [overlayMode]=\"true\"\n [hideInfoButton]=\"true\"\n [closeButtonPosition]=\"settings.viewerCloseButtonPosition\"\n (showViewerChange)=\"onViewerVisibilityChanged()\"\n [canNavigateBefore]=\"!!previousNodeId\"\n [canNavigateNext]=\"!!nextNodeId\"\n (navigateBefore)=\"onNavigateBefore($event)\"\n (navigateNext)=\"onNavigateNext($event)\"\n >\n <adf-viewer-sidebar *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.file\" />\n </adf-viewer-sidebar>\n\n <adf-viewer-open-with *ngIf=\"openWith.length\">\n <ng-container *ngFor=\"let action of openWith; trackBy: trackByActionId\">\n <app-toolbar-menu-item [actionRef]=\"action\" />\n </ng-container>\n </adf-viewer-open-with>\n\n <adf-viewer-toolbar-actions>\n <aca-toolbar [items]=\"toolbarActions\" />\n </adf-viewer-toolbar-actions>\n </adf-alfresco-viewer>\n</ng-container>\n", styles: [".app-viewer{width:100%;height:100%}.app-viewer .adf-viewer-toolbar .adf-toolbar-divider{display:none}.app-viewer .adf-viewer-toolbar-actions{display:flex;flex-direction:row;align-items:center;margin-left:auto}.app-viewer .adf-viewer-toolbar-actions .adf-toolbar-divider{display:inline}.app-viewer .adf-alfresco-viewer.aca-right_side--hide .adf-viewer__sidebar__right{width:0}\n"] }]
|
|
256
|
+
}], ctorParameters: function () { return [{ type: i1.Actions }, { type: i2.AlfrescoApiService }, { type: i3.AppHookService }, { type: i3.ContentApiService }, { type: i3.AppExtensionService }, { type: i2.NodesApiService }, { type: i4.ActivatedRoute }, { type: i4.Router }, { type: i5.Store }, { type: i2.UploadService }, { type: i6.ViewerService }]; }, propDecorators: { handleKeyboardEvent: [{
|
|
257
|
+
type: HostListener,
|
|
258
|
+
args: ['document:keydown', ['$event']]
|
|
259
|
+
}] } });
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3ZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvdmlld2VyL3ZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC92aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL3ZpZXdlci92aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsd0JBQXdCLEVBQ3pCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUdMLGVBQWUsRUFDZixrQkFBa0IsRUFFbEIsMkJBQTJCLEVBQzNCLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsY0FBYyxFQUNmLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFzQixXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEMs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d0JBQ3hCLGdCQUFnQjt3QkFDaEIsdUJBQXVCO3dCQUN2Qiw2QkFBNkI7d0JBQzdCLHVCQUF1Qjt3QkFDdkIsc0JBQXNCO3FCQUN2QixZQUNTLFlBQVksaUJBR1AsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7MFhBZ003QixtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHtcbiAgQXBwRXh0ZW5zaW9uU2VydmljZSxcbiAgQXBwSG9va1NlcnZpY2UsXG4gIEFwcFNldHRpbmdzU2VydmljZSxcbiAgQ29udGVudEFwaVNlcnZpY2UsXG4gIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gIFRvb2xiYXJDb21wb25lbnQsXG4gIFRvb2xiYXJNZW51SXRlbUNvbXBvbmVudFxufSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZCc7XG5pbXBvcnQge1xuICBBcHBTdG9yZSxcbiAgQ2xvc2VQcmV2aWV3QWN0aW9uLFxuICBnZXRBcHBTZWxlY3Rpb24sXG4gIGlzSW5mb0RyYXdlck9wZW5lZCxcbiAgUmVmcmVzaFByZXZpZXdBY3Rpb24sXG4gIFNldEN1cnJlbnROb2RlVmVyc2lvbkFjdGlvbixcbiAgU2V0U2VsZWN0ZWROb2Rlc0FjdGlvbixcbiAgVmlld2VyQWN0aW9uVHlwZXMsXG4gIFZpZXdOb2RlQWN0aW9uXG59IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IENvbnRlbnRBY3Rpb25SZWYsIFNlbGVjdGlvblN0YXRlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1leHRlbnNpb25zJztcbmltcG9ydCB7IE5vZGUsIFZlcnNpb25FbnRyeSwgVmVyc2lvbnNBcGkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IENvbXBvbmVudCwgRGVzdHJveVJlZiwgSG9zdExpc3RlbmVyLCBpbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBSSU1BUllfT1VUTEVULCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVmlld2VyT3BlbldpdGhDb21wb25lbnQsIFZpZXdlclNpZGViYXJDb21wb25lbnQsIFZpZXdlclRvb2xiYXJBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWN0aW9ucywgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBBbGZyZXNjb0FwaVNlcnZpY2UsIEFsZnJlc2NvVmlld2VyQ29tcG9uZW50LCBEb2N1bWVudExpc3RTZXJ2aWNlLCBOb2Rlc0FwaVNlcnZpY2UsIFVwbG9hZFNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3ZXIuc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gICAgVG9vbGJhck1lbnVJdGVtQ29tcG9uZW50LFxuICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgQWxmcmVzY29WaWV3ZXJDb21wb25lbnQsXG4gICAgVmlld2VyVG9vbGJhckFjdGlvbnNDb21wb25lbnQsXG4gICAgVmlld2VyT3BlbldpdGhDb21wb25lbnQsXG4gICAgVmlld2VyU2lkZWJhckNvbXBvbmVudFxuICBdLFxuICBzZWxlY3RvcjogJ2FjYS12aWV3ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmlld2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhcHAtdmlld2VyJyB9XG59KVxuZXhwb3J0IGNsYXNzIEFjYVZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgc2V0dGluZ3MgPSBpbmplY3QoQXBwU2V0dGluZ3NTZXJ2aWNlKTtcblxuICBwcml2YXRlIGRvY3VtZW50TGlzdFNlcnZpY2UgPSBpbmplY3QoRG9jdW1lbnRMaXN0U2VydmljZSk7XG5cbiAgcHJpdmF0ZSBfdmVyc2lvbnNBcGk6IFZlcnNpb25zQXBpO1xuICBnZXQgdmVyc2lvbnNBcGkoKTogVmVyc2lvbnNBcGkge1xuICAgIHRoaXMuX3ZlcnNpb25zQXBpID0gdGhpcy5fdmVyc2lvbnNBcGkgPz8gbmV3IFZlcnNpb25zQXBpKHRoaXMuYXBpU2VydmljZS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fdmVyc2lvbnNBcGk7XG4gIH1cblxuICBmaWxlTmFtZTogc3RyaW5nO1xuICBmb2xkZXJJZDogc3RyaW5nID0gbnVsbDtcbiAgaW5mb0RyYXdlck9wZW5lZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIG5hdmlnYXRlTXVsdGlwbGUgPSB0cnVlO1xuICBuYXZpZ2F0ZVNvdXJjZTogc3RyaW5nID0gbnVsbDtcbiAgbmF2aWdhdGlvblNvdXJjZXMgPSBbJ2Zhdm9yaXRlcycsICdsaWJyYXJpZXMnLCAncGVyc29uYWwtZmlsZXMnLCAncmVjZW50LWZpbGVzJywgJ3NoYXJlZCddO1xuICBuZXh0Tm9kZUlkOiBzdHJpbmc7XG4gIG5vZGU6IE5vZGU7XG4gIG5vZGVJZDogc3RyaW5nID0gbnVsbDtcbiAgb3BlbldpdGg6IENvbnRlbnRBY3Rpb25SZWZbXSA9IFtdO1xuICBwcmV2aW91c05vZGVJZDogc3RyaW5nO1xuICBzZWxlY3Rpb246IFNlbGVjdGlvblN0YXRlO1xuICBzaG93UmlnaHRTaWRlID0gZmFsc2U7XG4gIHRvb2xiYXJBY3Rpb25zOiBDb250ZW50QWN0aW9uUmVmW10gPSBbXTtcbiAgdmVyc2lvbklkOiBzdHJpbmcgPSBudWxsO1xuXG4gIHByaXZhdGUgbmF2aWdhdGlvblBhdGg6IHN0cmluZztcbiAgcHJpdmF0ZSBwcmV2aWV3TG9jYXRpb246IHN0cmluZztcbiAgcHJpdmF0ZSBjb250YWluZXJzU2tpcE5hdmlnYXRpb24gPSBbJ2FkZi12aWV3ZXJfX3NpZGViYXInLCAnY2RrLW92ZXJsYXktY29udGFpbmVyJywgJ2FkZi1pbWFnZS12aWV3ZXInXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFsZnJlc2NvQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGFwcEhvb2tTZXJ2aWNlOiBBcHBIb29rU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRlbnRBcGk6IENvbnRlbnRBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXh0ZW5zaW9uczogQXBwRXh0ZW5zaW9uU2VydmljZSxcbiAgICBwcml2YXRlIG5vZGVzQXBpU2VydmljZTogTm9kZXNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8QXBwU3RvcmU+LFxuICAgIHByaXZhdGUgdXBsb2FkU2VydmljZTogVXBsb2FkU2VydmljZSxcbiAgICBwcml2YXRlIHZpZXdlclNlcnZpY2U6IFZpZXdlclNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5mb0RyYXdlck9wZW5lZCQgPSB0aGlzLnN0b3JlLnNlbGVjdChpc0luZm9EcmF3ZXJPcGVuZWQpO1xuXG4gICAgZnJvbSh0aGlzLmluZm9EcmF3ZXJPcGVuZWQkKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgICAgdGhpcy5zaG93UmlnaHRTaWRlID0gdmFsO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KGdldEFwcFNlbGVjdGlvbilcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoc2VsZWN0aW9uKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uID0gc2VsZWN0aW9uO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmV4dGVuc2lvbnNcbiAgICAgIC5nZXRWaWV3ZXJUb29sYmFyQWN0aW9ucygpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFjdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy50b29sYmFyQWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZXh0ZW5zaW9uc1xuICAgICAgLmdldE9wZW5XaXRoQWN0aW9ucygpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFjdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy5vcGVuV2l0aCA9IGFjdGlvbnM7XG4gICAgICB9KTtcblxuICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLmZvbGRlcklkID0gcGFyYW1zLmZvbGRlcklkO1xuICAgICAgY29uc3QgeyBub2RlSWQgfSA9IHBhcmFtcztcbiAgICAgIHRoaXMudmVyc2lvbklkID0gcGFyYW1zLnZlcnNpb25JZDtcbiAgICAgIGlmICh0aGlzLnZlcnNpb25JZCkge1xuICAgICAgICB2b2lkIHRoaXMudmVyc2lvbnNBcGkuZ2V0VmVyc2lvbihub2RlSWQsIHRoaXMudmVyc2lvbklkKS50aGVuKCh2ZXJzaW9uOiBWZXJzaW9uRW50cnkpID0+IHtcbiAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0Q3VycmVudE5vZGVWZXJzaW9uQWN0aW9uKHZlcnNpb24pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGVJZCkge1xuICAgICAgICB2b2lkIHRoaXMuZGlzcGxheU5vZGUobm9kZUlkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIHRoaXMubmF2aWdhdGlvblBhdGggPSBwYXJhbXMucGF0aCB8fCBwYXJhbXMubG9jYXRpb247XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhPy5uYXZpZ2F0ZVNvdXJjZSkge1xuICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLm5hdmlnYXRlU291cmNlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uU291cmNlcy5pbmNsdWRlcyhzb3VyY2UpKSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGVTb3VyY2UgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEubmF2aWdhdGVTb3VyY2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKG9mVHlwZTxDbG9zZVByZXZpZXdBY3Rpb24+KFZpZXdlckFjdGlvblR5cGVzLkNsb3NlUHJldmlldyksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0Q3VycmVudE5vZGVWZXJzaW9uQWN0aW9uKG51bGwpKTtcbiAgICAgIHRoaXMubmF2aWdhdGVUb0ZpbGVMb2NhdGlvbigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hY3Rpb25zJFxuICAgICAgLnBpcGUob2ZUeXBlPFJlZnJlc2hQcmV2aWV3QWN0aW9uPihWaWV3ZXJBY3Rpb25UeXBlcy5SZWZyZXNoUHJldmlldyksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aW9uOiBSZWZyZXNoUHJldmlld0FjdGlvbikgPT4ge1xuICAgICAgICB0aGlzLm5vZGVzQXBpU2VydmljZS5ub2RlVXBkYXRlZC5uZXh0KGFjdGlvbi5ub2RlKTtcbiAgICAgICAgdm9pZCB0aGlzLmRpc3BsYXlOb2RlKGFjdGlvbi5ub2RlLmlkKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5hcHBIb29rU2VydmljZS5ub2Rlc0RlbGV0ZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMubmF2aWdhdGVUb0ZpbGVMb2NhdGlvbigpKTtcblxuICAgIHRoaXMudXBsb2FkU2VydmljZS5maWxlVXBsb2FkRGVsZXRlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5uYXZpZ2F0ZVRvRmlsZUxvY2F0aW9uKCkpO1xuXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmZpbGVVcGxvYWRDb21wbGV0ZS5waXBlKGRlYm91bmNlVGltZSgzMDApLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChmaWxlKSA9PiB7XG4gICAgICB0aGlzLm5vZGVzQXBpU2VydmljZS5ub2RlVXBkYXRlZC5uZXh0KGZpbGUuZGF0YS5lbnRyeSk7XG4gICAgICB2b2lkIHRoaXMuZGlzcGxheU5vZGUoZmlsZS5kYXRhLmVudHJ5LmlkKTtcbiAgICB9KTtcblxuICAgIHRoaXMucHJldmlld0xvY2F0aW9uID0gdGhpcy5yb3V0ZXIudXJsLnN1YnN0cmluZygwLCB0aGlzLnJvdXRlci51cmwuaW5kZXhPZignLycsIDEpKS5yZXBsYWNlKC9cXC8vZywgJycpO1xuICB9XG5cbiAgb25WaWV3ZXJWaXNpYmlsaXR5Q2hhbmdlZCgpIHtcbiAgICB0aGlzLmRvY3VtZW50TGlzdFNlcnZpY2UucmVsb2FkKCk7XG4gICAgdGhpcy5uYXZpZ2F0ZVRvRmlsZUxvY2F0aW9uKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRDdXJyZW50Tm9kZVZlcnNpb25BY3Rpb24obnVsbCkpO1xuICB9XG5cbiAgdHJhY2tCeUFjdGlvbklkKF86IG51bWJlciwgb2JqOiBDb250ZW50QWN0aW9uUmVmKTogc3RyaW5nIHtcbiAgICByZXR1cm4gb2JqLmlkO1xuICB9XG5cbiAgYXN5bmMgZGlzcGxheU5vZGUobm9kZUlkOiBzdHJpbmcpIHtcbiAgICBpZiAobm9kZUlkKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLm5vZGUgPSBhd2FpdCB0aGlzLmNvbnRlbnRBcGkuZ2V0Tm9kZUluZm8obm9kZUlkKS50b1Byb21pc2UoKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U2VsZWN0ZWROb2Rlc0FjdGlvbihbeyBlbnRyeTogdGhpcy5ub2RlIH1dKSk7XG4gICAgICAgIHRoaXMubmF2aWdhdGVNdWx0aXBsZSA9IHRoaXMuZXh0ZW5zaW9ucy5jYW5TaG93Vmlld2VyTmF2aWdhdGlvbih7IGVudHJ5OiB0aGlzLm5vZGUgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMubm9kZT8uaXNGaWxlKSB7XG4gICAgICAgICAgdGhpcy5ub2RlSWQgPSB0aGlzLm5vZGUuaWQ7XG4gICAgICAgICAgdGhpcy5maWxlTmFtZSA9IHRoaXMubm9kZS5uYW1lICsgdGhpcy5ub2RlPy5wcm9wZXJ0aWVzPy5bJ2NtOnZlcnNpb25MYWJlbCddO1xuICAgICAgICAgIGlmICh0aGlzLm5hdmlnYXRlTXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5lYXJlc3QgPSBhd2FpdCB0aGlzLnZpZXdlclNlcnZpY2UuZ2V0TmVhcmVzdE5vZGVzKHRoaXMubm9kZS5pZCwgdGhpcy5ub2RlLnBhcmVudElkLCB0aGlzLm5hdmlnYXRlU291cmNlKTtcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNOb2RlSWQgPSBuZWFyZXN0LmxlZnQ7XG4gICAgICAgICAgICB0aGlzLm5leHROb2RlSWQgPSBuZWFyZXN0LnJpZ2h0O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvRmlsZUxvY2F0aW9uKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zdCBzdGF0dXNDb2RlID0gSlNPTi5wYXJzZShlcnJvci5tZXNzYWdlKS5lcnJvci5zdGF0dXNDb2RlO1xuXG4gICAgICAgIGlmIChzdGF0dXNDb2RlICE9PSA0MDEpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5wcmV2aWV3TG9jYXRpb24sIHsgb3V0bGV0czogeyB2aWV3ZXI6IG51bGwgfSB9XSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnByZXZpZXdMb2NhdGlvbiwgbm9kZUlkXSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbk5hdmlnYXRlQmVmb3JlKGV2ZW50OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC50eXBlICE9PSAnY2xpY2snICYmIHRoaXMuc2hvdWxkTmF2aWdhdGUoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5nZXRGaWxlTG9jYXRpb24oKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBWaWV3Tm9kZUFjdGlvbih0aGlzLnByZXZpb3VzTm9kZUlkLCB7IGxvY2F0aW9uIH0pKTtcbiAgfVxuXG4gIG9uTmF2aWdhdGVOZXh0KGV2ZW50OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC50eXBlICE9PSAnY2xpY2snICYmIHRoaXMuc2hvdWxkTmF2aWdhdGUoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5nZXRGaWxlTG9jYXRpb24oKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBWaWV3Tm9kZUFjdGlvbih0aGlzLm5leHROb2RlSWQsIHsgbG9jYXRpb24gfSkpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXk7XG5cbiAgICBpZiAoa2V5ID09PSAnQXJyb3dSaWdodCcgfHwga2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbmF2aWdhdGVUb0ZpbGVMb2NhdGlvbigpIHtcbiAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuZ2V0RmlsZUxvY2F0aW9uKCk7XG4gICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGxvY2F0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsZUxvY2F0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvblBhdGggfHwgdGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5yb3V0ZXIudXJsKS5yb290LmNoaWxkcmVuW1BSSU1BUllfT1VUTEVUXS50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGROYXZpZ2F0ZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGxldCBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcblxuICAgIHdoaWxlIChjdXJyZW50RWxlbWVudCAmJiAhdGhpcy5pc0NoaWxkKGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdCkpIHtcbiAgICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gISFjdXJyZW50RWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgaXNDaGlsZChsaXN0OiBET01Ub2tlbkxpc3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShsaXN0KS5zb21lKChjbGFzc05hbWU6IHN0cmluZykgPT4gdGhpcy5jb250YWluZXJzU2tpcE5hdmlnYXRpb24uaW5jbHVkZXMoY2xhc3NOYW1lKSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJub2RlSWRcIj5cbiAgPGFkZi1hbGZyZXNjby12aWV3ZXJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnYWNhLXJpZ2h0X3NpZGUtLWhpZGUnOiAhc2hvd1JpZ2h0U2lkZVxuICAgIH1cIlxuICAgIFttYXhSZXRyaWVzXT1cInNldHRpbmdzLnZpZXdlck1heFJldHJpZXNcIlxuICAgIFtub2RlSWRdPVwibm9kZUlkXCJcbiAgICBbdmVyc2lvbklkXT1cInZlcnNpb25JZFwiXG4gICAgW2FsbG93TmF2aWdhdGVdPVwibmF2aWdhdGVNdWx0aXBsZVwiXG4gICAgW2FsbG93UmlnaHRTaWRlYmFyXT1cInRydWVcIlxuICAgIFthbGxvd1ByaW50XT1cImZhbHNlXCJcbiAgICBbc2hvd1JpZ2h0U2lkZWJhcl09XCJ0cnVlXCJcbiAgICBbYWxsb3dEb3dubG9hZF09XCJmYWxzZVwiXG4gICAgW2FsbG93RnVsbFNjcmVlbl09XCJmYWxzZVwiXG4gICAgW292ZXJsYXlNb2RlXT1cInRydWVcIlxuICAgIFtoaWRlSW5mb0J1dHRvbl09XCJ0cnVlXCJcbiAgICBbY2xvc2VCdXR0b25Qb3NpdGlvbl09XCJzZXR0aW5ncy52aWV3ZXJDbG9zZUJ1dHRvblBvc2l0aW9uXCJcbiAgICAoc2hvd1ZpZXdlckNoYW5nZSk9XCJvblZpZXdlclZpc2liaWxpdHlDaGFuZ2VkKClcIlxuICAgIFtjYW5OYXZpZ2F0ZUJlZm9yZV09XCIhIXByZXZpb3VzTm9kZUlkXCJcbiAgICBbY2FuTmF2aWdhdGVOZXh0XT1cIiEhbmV4dE5vZGVJZFwiXG4gICAgKG5hdmlnYXRlQmVmb3JlKT1cIm9uTmF2aWdhdGVCZWZvcmUoJGV2ZW50KVwiXG4gICAgKG5hdmlnYXRlTmV4dCk9XCJvbk5hdmlnYXRlTmV4dCgkZXZlbnQpXCJcbiAgPlxuICAgIDxhZGYtdmlld2VyLXNpZGViYXIgKm5nSWY9XCJpbmZvRHJhd2VyT3BlbmVkJCB8IGFzeW5jXCI+XG4gICAgICA8YWNhLWluZm8tZHJhd2VyIFtub2RlXT1cInNlbGVjdGlvbi5maWxlXCIgLz5cbiAgICA8L2FkZi12aWV3ZXItc2lkZWJhcj5cblxuICAgIDxhZGYtdmlld2VyLW9wZW4td2l0aCAqbmdJZj1cIm9wZW5XaXRoLmxlbmd0aFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIG9wZW5XaXRoOyB0cmFja0J5OiB0cmFja0J5QWN0aW9uSWRcIj5cbiAgICAgICAgPGFwcC10b29sYmFyLW1lbnUtaXRlbSBbYWN0aW9uUmVmXT1cImFjdGlvblwiIC8+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2FkZi12aWV3ZXItb3Blbi13aXRoPlxuXG4gICAgPGFkZi12aWV3ZXItdG9vbGJhci1hY3Rpb25zPlxuICAgICAgPGFjYS10b29sYmFyIFtpdGVtc109XCJ0b29sYmFyQWN0aW9uc1wiIC8+XG4gICAgPC9hZGYtdmlld2VyLXRvb2xiYXItYWN0aW9ucz5cbiAgPC9hZGYtYWxmcmVzY28tdmlld2VyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|