@alfresco/aca-shared 7.0.0-15437658909 → 7.0.0-15464606457
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/esm2022/alfresco-aca-shared.mjs +5 -0
- package/esm2022/lib/adf-extensions/extensions-data-loader.guard.mjs +59 -0
- package/esm2022/lib/components/document-base-page/document-base-page.component.mjs +222 -0
- package/esm2022/lib/components/document-base-page/document-base-page.service.mjs +26 -0
- package/esm2022/lib/components/generic-error/generic-error.component.mjs +41 -0
- package/esm2022/lib/components/info-drawer/info-drawer.component.mjs +138 -0
- package/esm2022/lib/components/locked-by/locked-by.component.mjs +56 -0
- package/esm2022/lib/components/open-in-app/open-in-app.component.mjs +72 -0
- package/esm2022/lib/components/page-layout/page-layout-content.component.mjs +48 -0
- package/esm2022/lib/components/page-layout/page-layout-error.component.mjs +42 -0
- package/esm2022/lib/components/page-layout/page-layout-header.component.mjs +42 -0
- package/esm2022/lib/components/page-layout/page-layout.component.mjs +57 -0
- package/esm2022/lib/components/page-layout/page-layout.module.mjs +42 -0
- package/esm2022/lib/components/toolbar/toolbar-action/toolbar-action.component.mjs +62 -0
- package/esm2022/lib/components/toolbar/toolbar-button/toolbar-button.component.mjs +78 -0
- package/esm2022/lib/components/toolbar/toolbar-menu/toolbar-menu.component.mjs +91 -0
- package/esm2022/lib/components/toolbar/toolbar-menu-item/toolbar-menu-item.component.mjs +84 -0
- package/esm2022/lib/components/toolbar/toolbar.component.mjs +46 -0
- package/esm2022/lib/constants/index.mjs +25 -0
- package/esm2022/lib/constants/mime-types.mjs +213 -0
- package/esm2022/lib/deprecated/shared-toolbar.module.mjs +43 -0
- package/esm2022/lib/deprecated/shared.module.mjs +44 -0
- package/esm2022/lib/directives/contextmenu/contextmenu.directive.mjs +110 -0
- package/esm2022/lib/directives/pagination.directive.mjs +55 -0
- package/esm2022/lib/models/types.mjs +25 -0
- package/esm2022/lib/models/viewer.rules.mjs +25 -0
- package/esm2022/lib/routing/plugin-enabled.guard.mjs +36 -0
- package/esm2022/lib/routing/shared.guard.mjs +31 -0
- package/esm2022/lib/services/aca-mobile-app-switcher.service.mjs +129 -0
- package/esm2022/lib/services/app-hook.service.mjs +77 -0
- package/esm2022/lib/services/app-settings.service.mjs +156 -0
- package/esm2022/lib/services/app.extension.service.mjs +489 -0
- package/esm2022/lib/services/app.service.mjs +237 -0
- package/esm2022/lib/services/auto-download.service.mjs +58 -0
- package/esm2022/lib/services/content-api.service.mjs +280 -0
- package/esm2022/lib/services/navigation-history.service.mjs +56 -0
- package/esm2022/lib/services/node-permission.service.mjs +87 -0
- package/esm2022/lib/services/router.extension.service.mjs +107 -0
- package/esm2022/lib/services/user-profile.service.mjs +75 -0
- package/esm2022/lib/testing/lib-testing-module.mjs +161 -0
- package/esm2022/lib/utils/node.utils.mjs +42 -0
- package/esm2022/public-api.mjs +62 -0
- package/esm2022/rules/alfresco-aca-shared-rules.mjs +5 -0
- package/esm2022/rules/app.rules.mjs +423 -0
- package/esm2022/rules/navigation.rules.mjs +98 -0
- package/esm2022/rules/public-api.mjs +28 -0
- package/esm2022/rules/repository.rules.mjs +33 -0
- package/esm2022/rules/user.rules.mjs +29 -0
- package/esm2022/store/actions/app-action-types.mjs +42 -0
- package/esm2022/store/actions/app.actions.mjs +116 -0
- package/esm2022/store/actions/context-menu-action-types.mjs +29 -0
- package/esm2022/store/actions/contextmenu.actions.mjs +41 -0
- package/esm2022/store/actions/library.actions.mjs +67 -0
- package/esm2022/store/actions/metadata-aspect.actions.mjs +32 -0
- package/esm2022/store/actions/node.actions.mjs +227 -0
- package/esm2022/store/actions/router-action-types.mjs +32 -0
- package/esm2022/store/actions/router.actions.mjs +56 -0
- package/esm2022/store/actions/search-ai.actions.mjs +45 -0
- package/esm2022/store/actions/search.actions.mjs +41 -0
- package/esm2022/store/actions/snackbar.actions.mjs +68 -0
- package/esm2022/store/actions/template-action-types.mjs +31 -0
- package/esm2022/store/actions/template.actions.mjs +45 -0
- package/esm2022/store/actions/upload.actions.mjs +53 -0
- package/esm2022/store/actions/viewer.actions.mjs +93 -0
- package/esm2022/store/alfresco-aca-shared-store.mjs +5 -0
- package/esm2022/store/effects/router.effects.mjs +109 -0
- package/esm2022/store/effects/snackbar.effects.mjs +79 -0
- package/esm2022/store/models/ai-search-by-term-payload.mjs +25 -0
- package/esm2022/store/models/delete-status.model.mjs +25 -0
- package/esm2022/store/models/deleted-node-info.model.mjs +25 -0
- package/esm2022/store/models/modal-configuration.mjs +25 -0
- package/esm2022/store/models/node-info.model.mjs +25 -0
- package/esm2022/store/models/search-option.model.mjs +30 -0
- package/esm2022/store/public-api.mjs +50 -0
- package/esm2022/store/selectors/app.selectors.mjs +53 -0
- package/esm2022/store/states/app.state.mjs +60 -0
- package/fesm2022/alfresco-aca-shared-store.mjs +6 -6
- package/fesm2022/alfresco-aca-shared.mjs +117 -116
- package/fesm2022/alfresco-aca-shared.mjs.map +1 -1
- package/lib/components/document-base-page/document-base-page.component.d.ts +1 -1
- package/lib/testing/lib-testing-module.d.ts +8 -7
- package/package.json +7 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxmcmVzY28tYWNhLXNoYXJlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1zaGFyZWQvc3JjL2FsZnJlc2NvLWFjYS1zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright © 2005-2025 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 { InjectionToken, inject } from '@angular/core';
|
|
25
|
+
import { forkJoin, of } from 'rxjs';
|
|
26
|
+
import { tap, map, catchError } from 'rxjs/operators';
|
|
27
|
+
export const DefaultExtensionLoaderFactory = () => [];
|
|
28
|
+
export const EXTENSION_DATA_LOADERS = new InjectionToken('EXTENSION_DATA_LOADERS', {
|
|
29
|
+
providedIn: 'root',
|
|
30
|
+
factory: DefaultExtensionLoaderFactory
|
|
31
|
+
});
|
|
32
|
+
let invoked = false;
|
|
33
|
+
export const ExtensionsDataLoaderGuard = (route) => {
|
|
34
|
+
const extensionDataLoaders = inject(EXTENSION_DATA_LOADERS);
|
|
35
|
+
if (!invoked) {
|
|
36
|
+
if (!extensionDataLoaders.length) {
|
|
37
|
+
invoked = true;
|
|
38
|
+
return of(true);
|
|
39
|
+
}
|
|
40
|
+
const dataLoaderCallbacks = extensionDataLoaders.map((callback) => callback(route));
|
|
41
|
+
// Undocumented forkJoin behaviour/bug:
|
|
42
|
+
// https://github.com/ReactiveX/rxjs/issues/3246
|
|
43
|
+
// So all callbacks need to emit before completion, otherwise forkJoin will short circuit
|
|
44
|
+
return forkJoin(...dataLoaderCallbacks).pipe(map(() => true), tap(() => (invoked = true)), catchError((e) => {
|
|
45
|
+
// eslint-disable-next-line no-console
|
|
46
|
+
console.error('Some of the extension data loader guards has been errored.');
|
|
47
|
+
// eslint-disable-next-line no-console
|
|
48
|
+
console.error(e);
|
|
49
|
+
return of(true);
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
return of(true);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
export const resetInvoked = () => {
|
|
57
|
+
invoked = false;
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy1kYXRhLWxvYWRlci5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1zaGFyZWQvc3JjL2xpYi9hZGYtZXh0ZW5zaW9ucy9leHRlbnNpb25zLWRhdGEtbG9hZGVyLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkQsT0FBTyxFQUFjLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJdEQsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUE0Qix3QkFBd0IsRUFBRTtJQUM1RyxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsNkJBQTZCO0NBQ3ZDLENBQUMsQ0FBQztBQUVILElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztBQUVwQixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBa0IsQ0FBQyxLQUE2QixFQUF1QixFQUFFO0lBQzdHLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDNUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDZixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDO1FBRUQsTUFBTSxtQkFBbUIsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXBGLHVDQUF1QztRQUN2QyxnREFBZ0Q7UUFDaEQseUZBQXlGO1FBQ3pGLE9BQU8sUUFBUSxDQUFDLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQzFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFDZixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFDM0IsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZixzQ0FBc0M7WUFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO1lBQzVFLHNDQUFzQztZQUN0QyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFO0lBQy9CLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDbEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IEluamVjdGlvblRva2VuLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlRm4gfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZm9ya0pvaW4sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAsIG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IHR5cGUgRXh0ZW5zaW9uTG9hZGVyQ2FsbGJhY2sgPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpID0+IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0RXh0ZW5zaW9uTG9hZGVyRmFjdG9yeSA9ICgpID0+IFtdO1xuXG5leHBvcnQgY29uc3QgRVhURU5TSU9OX0RBVEFfTE9BREVSUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFeHRlbnNpb25Mb2FkZXJDYWxsYmFja1tdPignRVhURU5TSU9OX0RBVEFfTE9BREVSUycsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiBEZWZhdWx0RXh0ZW5zaW9uTG9hZGVyRmFjdG9yeVxufSk7XG5cbmxldCBpbnZva2VkID0gZmFsc2U7XG5cbmV4cG9ydCBjb25zdCBFeHRlbnNpb25zRGF0YUxvYWRlckd1YXJkOiBDYW5BY3RpdmF0ZUZuID0gKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IGV4dGVuc2lvbkRhdGFMb2FkZXJzID0gaW5qZWN0KEVYVEVOU0lPTl9EQVRBX0xPQURFUlMpO1xuICBpZiAoIWludm9rZWQpIHtcbiAgICBpZiAoIWV4dGVuc2lvbkRhdGFMb2FkZXJzLmxlbmd0aCkge1xuICAgICAgaW52b2tlZCA9IHRydWU7XG4gICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YUxvYWRlckNhbGxiYWNrcyA9IGV4dGVuc2lvbkRhdGFMb2FkZXJzLm1hcCgoY2FsbGJhY2spID0+IGNhbGxiYWNrKHJvdXRlKSk7XG5cbiAgICAvLyBVbmRvY3VtZW50ZWQgZm9ya0pvaW4gYmVoYXZpb3VyL2J1ZzpcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vUmVhY3RpdmVYL3J4anMvaXNzdWVzLzMyNDZcbiAgICAvLyBTbyBhbGwgY2FsbGJhY2tzIG5lZWQgdG8gZW1pdCBiZWZvcmUgY29tcGxldGlvbiwgb3RoZXJ3aXNlIGZvcmtKb2luIHdpbGwgc2hvcnQgY2lyY3VpdFxuICAgIHJldHVybiBmb3JrSm9pbiguLi5kYXRhTG9hZGVyQ2FsbGJhY2tzKS5waXBlKFxuICAgICAgbWFwKCgpID0+IHRydWUpLFxuICAgICAgdGFwKCgpID0+IChpbnZva2VkID0gdHJ1ZSkpLFxuICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmVycm9yKCdTb21lIG9mIHRoZSBleHRlbnNpb24gZGF0YSBsb2FkZXIgZ3VhcmRzIGhhcyBiZWVuIGVycm9yZWQuJyk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gb2YodHJ1ZSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEludm9rZWQgPSAoKSA9PiB7XG4gIGludm9rZWQgPSBmYWxzZTtcbn07XG4iXX0=
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright © 2005-2025 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 { DocumentListComponent, DocumentListService, SearchAiService, UploadService } from '@alfresco/adf-content-services';
|
|
25
|
+
import { ShowHeaderMode, UserPreferencesService } from '@alfresco/adf-core';
|
|
26
|
+
import { DestroyRef, Directive, HostListener, inject, ViewChild } from '@angular/core';
|
|
27
|
+
import { Store } from '@ngrx/store';
|
|
28
|
+
import { DocumentBasePageService } from './document-base-page.service';
|
|
29
|
+
import { getAppSelection, getCurrentFolder, isInfoDrawerOpened, SetSelectedNodesAction, ViewNodeAction } from '@alfresco/aca-shared/store';
|
|
30
|
+
import { AppExtensionService } from '../../services/app.extension.service';
|
|
31
|
+
import { isLibrary, isLocked } from '../../utils/node.utils';
|
|
32
|
+
import { AutoDownloadService } from '../../services/auto-download.service';
|
|
33
|
+
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
|
|
34
|
+
import { Router } from '@angular/router';
|
|
35
|
+
import { AppSettingsService } from '../../services/app-settings.service';
|
|
36
|
+
import { NavigationHistoryService } from '../../services/navigation-history.service';
|
|
37
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
38
|
+
import * as i0 from "@angular/core";
|
|
39
|
+
/* eslint-disable @angular-eslint/directive-class-suffix */
|
|
40
|
+
export class PageComponent {
|
|
41
|
+
documentList;
|
|
42
|
+
title = 'Page';
|
|
43
|
+
infoDrawerOpened$;
|
|
44
|
+
node;
|
|
45
|
+
selection;
|
|
46
|
+
actions = [];
|
|
47
|
+
viewerToolbarActions = [];
|
|
48
|
+
bulkActions = [];
|
|
49
|
+
canUpdateNode = false;
|
|
50
|
+
canUpload = false;
|
|
51
|
+
nodeResult;
|
|
52
|
+
showHeader = ShowHeaderMode.Data;
|
|
53
|
+
filterSorting = 'name-asc';
|
|
54
|
+
createActions = [];
|
|
55
|
+
isSmallScreen = false;
|
|
56
|
+
selectedRowItemsCount = 0;
|
|
57
|
+
selectedNodesState;
|
|
58
|
+
documentListService = inject(DocumentListService);
|
|
59
|
+
settings = inject(AppSettingsService);
|
|
60
|
+
extensions = inject(AppExtensionService);
|
|
61
|
+
content = inject(DocumentBasePageService);
|
|
62
|
+
store = inject((Store));
|
|
63
|
+
breakpointObserver = inject(BreakpointObserver);
|
|
64
|
+
uploadService = inject(UploadService);
|
|
65
|
+
router = inject(Router);
|
|
66
|
+
userPreferencesService = inject(UserPreferencesService);
|
|
67
|
+
searchAiService = inject(SearchAiService);
|
|
68
|
+
destroyRef = inject(DestroyRef);
|
|
69
|
+
autoDownloadService = inject(AutoDownloadService, { optional: true });
|
|
70
|
+
navigationHistoryService = inject(NavigationHistoryService);
|
|
71
|
+
subscriptions = [];
|
|
72
|
+
_searchAiInputState = {
|
|
73
|
+
active: false
|
|
74
|
+
};
|
|
75
|
+
get searchAiInputState() {
|
|
76
|
+
return this._searchAiInputState;
|
|
77
|
+
}
|
|
78
|
+
ngOnInit() {
|
|
79
|
+
this.extensions
|
|
80
|
+
.getCreateActions()
|
|
81
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
82
|
+
.subscribe((actions) => {
|
|
83
|
+
this.createActions = actions;
|
|
84
|
+
});
|
|
85
|
+
this.infoDrawerOpened$ = this.store.select(isInfoDrawerOpened);
|
|
86
|
+
this.store
|
|
87
|
+
.select(getAppSelection)
|
|
88
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
89
|
+
.subscribe((selection) => {
|
|
90
|
+
this.selection = selection;
|
|
91
|
+
this.canUpdateNode = this.selection.count === 1 && this.content.canUpdateNode(selection.first);
|
|
92
|
+
});
|
|
93
|
+
this.extensions
|
|
94
|
+
.getAllowedToolbarActions()
|
|
95
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
96
|
+
.subscribe((actions) => {
|
|
97
|
+
this.actions = actions;
|
|
98
|
+
});
|
|
99
|
+
this.extensions
|
|
100
|
+
.getBulkActions()
|
|
101
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
102
|
+
.subscribe((actions) => {
|
|
103
|
+
this.bulkActions = actions;
|
|
104
|
+
});
|
|
105
|
+
this.extensions
|
|
106
|
+
.getViewerToolbarActions()
|
|
107
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
108
|
+
.subscribe((actions) => {
|
|
109
|
+
this.viewerToolbarActions = actions;
|
|
110
|
+
});
|
|
111
|
+
this.store
|
|
112
|
+
.select(getCurrentFolder)
|
|
113
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
114
|
+
.subscribe((node) => {
|
|
115
|
+
this.canUpload = node && this.content.canUploadContent(node);
|
|
116
|
+
});
|
|
117
|
+
this.breakpointObserver
|
|
118
|
+
.observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape])
|
|
119
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
120
|
+
.subscribe((result) => {
|
|
121
|
+
this.isSmallScreen = result.matches;
|
|
122
|
+
});
|
|
123
|
+
this.searchAiService.toggleSearchAiInput$
|
|
124
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
125
|
+
.subscribe((searchAiInputState) => (this._searchAiInputState = searchAiInputState));
|
|
126
|
+
this.setKnowledgeRetrievalState();
|
|
127
|
+
}
|
|
128
|
+
ngOnChanges(changes) {
|
|
129
|
+
if (changes.nodeResult?.currentValue) {
|
|
130
|
+
this.nodeResult = changes.nodeResult.currentValue;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
ngOnDestroy() {
|
|
134
|
+
this.subscriptions.forEach((subscription) => subscription.unsubscribe());
|
|
135
|
+
this.subscriptions = [];
|
|
136
|
+
this.store.dispatch(new SetSelectedNodesAction([]));
|
|
137
|
+
}
|
|
138
|
+
showPreview(node, extras) {
|
|
139
|
+
if (node?.entry) {
|
|
140
|
+
if (!this.settings.autoDownloadEnabled || !this.autoDownloadService.tryDownload(node, this.settings.authDownloadThreshold)) {
|
|
141
|
+
let id;
|
|
142
|
+
if (node.entry.nodeType === 'app:filelink') {
|
|
143
|
+
id = node.entry.properties['cm:destination'];
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
id = node.entry.nodeId || node.entry.guid || node.entry.id;
|
|
147
|
+
}
|
|
148
|
+
this.store.dispatch(new ViewNodeAction(id, extras));
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
onSelectedItemsCountChanged(count) {
|
|
153
|
+
this.selectedRowItemsCount = count;
|
|
154
|
+
}
|
|
155
|
+
getParentNodeId() {
|
|
156
|
+
return this.node ? this.node.id : null;
|
|
157
|
+
}
|
|
158
|
+
imageResolver(row) {
|
|
159
|
+
if (row) {
|
|
160
|
+
if (isLocked(row.node)) {
|
|
161
|
+
return 'material-icons://lock';
|
|
162
|
+
}
|
|
163
|
+
if (isLibrary(row.node)) {
|
|
164
|
+
return 'material-icons://library_books';
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
reload(selectedNode) {
|
|
170
|
+
if (this.isOutletPreviewUrl()) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
this.documentListService.reload();
|
|
174
|
+
if (selectedNode) {
|
|
175
|
+
this.store.dispatch(new SetSelectedNodesAction([selectedNode]));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
trackByActionId(_, action) {
|
|
179
|
+
return action.id;
|
|
180
|
+
}
|
|
181
|
+
trackById(_, obj) {
|
|
182
|
+
return obj.id;
|
|
183
|
+
}
|
|
184
|
+
trackByColumnId(_, obj) {
|
|
185
|
+
return obj.id;
|
|
186
|
+
}
|
|
187
|
+
setKnowledgeRetrievalState() {
|
|
188
|
+
const nodes = this.userPreferencesService.get('knowledgeRetrievalNodes');
|
|
189
|
+
if (nodes && this.navigationHistoryService.shouldReturnLastSelection('/knowledge-retrieval')) {
|
|
190
|
+
this.selectedNodesState = JSON.parse(nodes);
|
|
191
|
+
}
|
|
192
|
+
if (!this.selectedNodesState && !this.router.url.startsWith('/knowledge-retrieval')) {
|
|
193
|
+
this.searchAiService.updateSearchAiInputState({
|
|
194
|
+
active: false
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
isOutletPreviewUrl() {
|
|
199
|
+
return location.href.includes('viewer:view');
|
|
200
|
+
}
|
|
201
|
+
onSortingChanged(event) {
|
|
202
|
+
this.filterSorting = event.detail.key + '-' + event.detail.direction;
|
|
203
|
+
}
|
|
204
|
+
onAllFilterCleared() {
|
|
205
|
+
if (!this.isOutletPreviewUrl()) {
|
|
206
|
+
this.documentList.node = null;
|
|
207
|
+
this.documentListService.reload();
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PageComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
211
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.9", type: PageComponent, host: { listeners: { "sorting-changed": "onSortingChanged($event)" } }, viewQueries: [{ propertyName: "documentList", first: true, predicate: DocumentListComponent, descendants: true }], usesOnChanges: true, ngImport: i0 });
|
|
212
|
+
}
|
|
213
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PageComponent, decorators: [{
|
|
214
|
+
type: Directive
|
|
215
|
+
}], propDecorators: { documentList: [{
|
|
216
|
+
type: ViewChild,
|
|
217
|
+
args: [DocumentListComponent]
|
|
218
|
+
}], onSortingChanged: [{
|
|
219
|
+
type: HostListener,
|
|
220
|
+
args: ['sorting-changed', ['$event']]
|
|
221
|
+
}] } });
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtYmFzZS1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2RvY3VtZW50LWJhc2UtcGFnZS9kb2N1bWVudC1iYXNlLXBhZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixtQkFBbUIsRUFFbkIsZUFBZSxFQUVmLGFBQWEsRUFDZCxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUErQyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEksT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdwQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBRUwsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLGNBQWMsRUFFZixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUs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RUFBRSxLQUFLO2FBQ2QsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBR0QsZ0JBQWdCLENBQUMsS0FBVTtRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUM5QixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7dUdBaE5tQixhQUFhOzJGQUFiLGFBQWEsZ0pBQ3RCLHFCQUFxQjs7MkZBRFosYUFBYTtrQkFEbEMsU0FBUzs4QkFHUixZQUFZO3NCQURYLFNBQVM7dUJBQUMscUJBQXFCO2dCQXNNaEMsZ0JBQWdCO3NCQURmLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHtcbiAgRG9jdW1lbnRMaXN0Q29tcG9uZW50LFxuICBEb2N1bWVudExpc3RTZXJ2aWNlLFxuICBTZWFyY2hBaUlucHV0U3RhdGUsXG4gIFNlYXJjaEFpU2VydmljZSxcbiAgU2hhcmVEYXRhUm93LFxuICBVcGxvYWRTZXJ2aWNlXG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBTaG93SGVhZGVyTW9kZSwgVXNlclByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBDb250ZW50QWN0aW9uUmVmLCBEb2N1bWVudExpc3RQcmVzZXRSZWYsIFNlbGVjdGlvblN0YXRlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1leHRlbnNpb25zJztcbmltcG9ydCB7IERlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBpbmplY3QsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBOb2RlLCBOb2RlRW50cnksIE5vZGVQYWdpbmcgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRG9jdW1lbnRCYXNlUGFnZVNlcnZpY2UgfSBmcm9tICcuL2RvY3VtZW50LWJhc2UtcGFnZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFwcFN0b3JlLFxuICBnZXRBcHBTZWxlY3Rpb24sXG4gIGdldEN1cnJlbnRGb2xkZXIsXG4gIGlzSW5mb0RyYXdlck9wZW5lZCxcbiAgU2V0U2VsZWN0ZWROb2Rlc0FjdGlvbixcbiAgVmlld05vZGVBY3Rpb24sXG4gIFZpZXdOb2RlRXh0cmFzXG59IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IEFwcEV4dGVuc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHAuZXh0ZW5zaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNMaWJyYXJ5LCBpc0xvY2tlZCB9IGZyb20gJy4uLy4uL3V0aWxzL25vZGUudXRpbHMnO1xuaW1wb3J0IHsgQXV0b0Rvd25sb2FkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dG8tZG93bmxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQXBwU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkhpc3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi1oaXN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeCAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBAVmlld0NoaWxkKERvY3VtZW50TGlzdENvbXBvbmVudClcbiAgZG9jdW1lbnRMaXN0OiBEb2N1bWVudExpc3RDb21wb25lbnQ7XG5cbiAgdGl0bGUgPSAnUGFnZSc7XG4gIGluZm9EcmF3ZXJPcGVuZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBub2RlOiBOb2RlO1xuICBzZWxlY3Rpb246IFNlbGVjdGlvblN0YXRlO1xuICBhY3Rpb25zOiBBcnJheTxDb250ZW50QWN0aW9uUmVmPiA9IFtdO1xuICB2aWV3ZXJUb29sYmFyQWN0aW9uczogQXJyYXk8Q29udGVudEFjdGlvblJlZj4gPSBbXTtcbiAgYnVsa0FjdGlvbnM6IENvbnRlbnRBY3Rpb25SZWZbXSA9IFtdO1xuICBjYW5VcGRhdGVOb2RlID0gZmFsc2U7XG4gIGNhblVwbG9hZCA9IGZhbHNlO1xuICBub2RlUmVzdWx0OiBOb2RlUGFnaW5nO1xuICBzaG93SGVhZGVyID0gU2hvd0hlYWRlck1vZGUuRGF0YTtcbiAgZmlsdGVyU29ydGluZyA9ICduYW1lLWFzYyc7XG4gIGNyZWF0ZUFjdGlvbnM6IENvbnRlbnRBY3Rpb25SZWZbXSA9IFtdO1xuICBpc1NtYWxsU2NyZWVuID0gZmFsc2U7XG4gIHNlbGVjdGVkUm93SXRlbXNDb3VudCA9IDA7XG4gIHNlbGVjdGVkTm9kZXNTdGF0ZTogU2VsZWN0aW9uU3RhdGU7XG5cbiAgcHJvdGVjdGVkIGRvY3VtZW50TGlzdFNlcnZpY2UgPSBpbmplY3QoRG9jdW1lbnRMaXN0U2VydmljZSk7XG4gIHByb3RlY3RlZCBzZXR0aW5ncyA9IGluamVjdChBcHBTZXR0aW5nc1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgZXh0ZW5zaW9ucyA9IGluamVjdChBcHBFeHRlbnNpb25TZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGNvbnRlbnQgPSBpbmplY3QoRG9jdW1lbnRCYXNlUGFnZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgc3RvcmUgPSBpbmplY3Q8U3RvcmU8QXBwU3RvcmU+PihTdG9yZTxBcHBTdG9yZT4pO1xuICBwcm90ZWN0ZWQgYnJlYWtwb2ludE9ic2VydmVyID0gaW5qZWN0KEJyZWFrcG9pbnRPYnNlcnZlcik7XG4gIHByb3RlY3RlZCB1cGxvYWRTZXJ2aWNlID0gaW5qZWN0KFVwbG9hZFNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByb3RlY3RlZCB1c2VyUHJlZmVyZW5jZXNTZXJ2aWNlID0gaW5qZWN0KFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgc2VhcmNoQWlTZXJ2aWNlID0gaW5qZWN0KFNlYXJjaEFpU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgcHJpdmF0ZSBhdXRvRG93bmxvYWRTZXJ2aWNlID0gaW5qZWN0KEF1dG9Eb3dubG9hZFNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgbmF2aWdhdGlvbkhpc3RvcnlTZXJ2aWNlID0gaW5qZWN0KE5hdmlnYXRpb25IaXN0b3J5U2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgcHJpdmF0ZSBfc2VhcmNoQWlJbnB1dFN0YXRlOiBTZWFyY2hBaUlucHV0U3RhdGUgPSB7XG4gICAgYWN0aXZlOiBmYWxzZVxuICB9O1xuXG4gIGdldCBzZWFyY2hBaUlucHV0U3RhdGUoKTogU2VhcmNoQWlJbnB1dFN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoQWlJbnB1dFN0YXRlO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5leHRlbnNpb25zXG4gICAgICAuZ2V0Q3JlYXRlQWN0aW9ucygpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFjdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy5jcmVhdGVBY3Rpb25zID0gYWN0aW9ucztcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5pbmZvRHJhd2VyT3BlbmVkJCA9IHRoaXMuc3RvcmUuc2VsZWN0KGlzSW5mb0RyYXdlck9wZW5lZCk7XG5cbiAgICB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KGdldEFwcFNlbGVjdGlvbilcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoc2VsZWN0aW9uKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uID0gc2VsZWN0aW9uO1xuICAgICAgICB0aGlzLmNhblVwZGF0ZU5vZGUgPSB0aGlzLnNlbGVjdGlvbi5jb3VudCA9PT0gMSAmJiB0aGlzLmNvbnRlbnQuY2FuVXBkYXRlTm9kZShzZWxlY3Rpb24uZmlyc3QpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmV4dGVuc2lvbnNcbiAgICAgIC5nZXRBbGxvd2VkVG9vbGJhckFjdGlvbnMoKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKChhY3Rpb25zKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZXh0ZW5zaW9uc1xuICAgICAgLmdldEJ1bGtBY3Rpb25zKClcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLmJ1bGtBY3Rpb25zID0gYWN0aW9ucztcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5leHRlbnNpb25zXG4gICAgICAuZ2V0Vmlld2VyVG9vbGJhckFjdGlvbnMoKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKChhY3Rpb25zKSA9PiB7XG4gICAgICAgIHRoaXMudmlld2VyVG9vbGJhckFjdGlvbnMgPSBhY3Rpb25zO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KGdldEN1cnJlbnRGb2xkZXIpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKG5vZGUpID0+IHtcbiAgICAgICAgdGhpcy5jYW5VcGxvYWQgPSBub2RlICYmIHRoaXMuY29udGVudC5jYW5VcGxvYWRDb250ZW50KG5vZGUpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgLm9ic2VydmUoW0JyZWFrcG9pbnRzLkhhbmRzZXRQb3J0cmFpdCwgQnJlYWtwb2ludHMuSGFuZHNldExhbmRzY2FwZV0pXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICB0aGlzLmlzU21hbGxTY3JlZW4gPSByZXN1bHQubWF0Y2hlcztcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5zZWFyY2hBaVNlcnZpY2UudG9nZ2xlU2VhcmNoQWlJbnB1dCRcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoc2VhcmNoQWlJbnB1dFN0YXRlKSA9PiAodGhpcy5fc2VhcmNoQWlJbnB1dFN0YXRlID0gc2VhcmNoQWlJbnB1dFN0YXRlKSk7XG5cbiAgICB0aGlzLnNldEtub3dsZWRnZVJldHJpZXZhbFN0YXRlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMubm9kZVJlc3VsdD8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLm5vZGVSZXN1bHQgPSBjaGFuZ2VzLm5vZGVSZXN1bHQuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWJzY3JpcHRpb24pID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcblxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFNlbGVjdGVkTm9kZXNBY3Rpb24oW10pKTtcbiAgfVxuXG4gIHNob3dQcmV2aWV3KG5vZGU6IE5vZGVFbnRyeSwgZXh0cmFzPzogVmlld05vZGVFeHRyYXMpIHtcbiAgICBpZiAobm9kZT8uZW50cnkpIHtcbiAgICAgIGlmICghdGhpcy5zZXR0aW5ncy5hdXRvRG93bmxvYWRFbmFibGVkIHx8ICF0aGlzLmF1dG9Eb3dubG9hZFNlcnZpY2UudHJ5RG93bmxvYWQobm9kZSwgdGhpcy5zZXR0aW5ncy5hdXRoRG93bmxvYWRUaHJlc2hvbGQpKSB7XG4gICAgICAgIGxldCBpZDogc3RyaW5nO1xuXG4gICAgICAgIGlmIChub2RlLmVudHJ5Lm5vZGVUeXBlID09PSAnYXBwOmZpbGVsaW5rJykge1xuICAgICAgICAgIGlkID0gbm9kZS5lbnRyeS5wcm9wZXJ0aWVzWydjbTpkZXN0aW5hdGlvbiddO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlkID0gKG5vZGUgYXMgYW55KS5lbnRyeS5ub2RlSWQgfHwgKG5vZGUgYXMgYW55KS5lbnRyeS5ndWlkIHx8IG5vZGUuZW50cnkuaWQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBWaWV3Tm9kZUFjdGlvbihpZCwgZXh0cmFzKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25TZWxlY3RlZEl0ZW1zQ291bnRDaGFuZ2VkKGNvdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkUm93SXRlbXNDb3VudCA9IGNvdW50O1xuICB9XG5cbiAgZ2V0UGFyZW50Tm9kZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubm9kZSA/IHRoaXMubm9kZS5pZCA6IG51bGw7XG4gIH1cblxuICBpbWFnZVJlc29sdmVyKHJvdzogU2hhcmVEYXRhUm93KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHJvdykge1xuICAgICAgaWYgKGlzTG9ja2VkKHJvdy5ub2RlKSkge1xuICAgICAgICByZXR1cm4gJ21hdGVyaWFsLWljb25zOi8vbG9jayc7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0xpYnJhcnkocm93Lm5vZGUpKSB7XG4gICAgICAgIHJldHVybiAnbWF0ZXJpYWwtaWNvbnM6Ly9saWJyYXJ5X2Jvb2tzJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJlbG9hZChzZWxlY3RlZE5vZGU/OiBOb2RlRW50cnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc091dGxldFByZXZpZXdVcmwoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZG9jdW1lbnRMaXN0U2VydmljZS5yZWxvYWQoKTtcbiAgICBpZiAoc2VsZWN0ZWROb2RlKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uKFtzZWxlY3RlZE5vZGVdKSk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeUFjdGlvbklkKF86IG51bWJlciwgYWN0aW9uOiBDb250ZW50QWN0aW9uUmVmKSB7XG4gICAgcmV0dXJuIGFjdGlvbi5pZDtcbiAgfVxuXG4gIHRyYWNrQnlJZChfOiBudW1iZXIsIG9iajogeyBpZDogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4gb2JqLmlkO1xuICB9XG5cbiAgdHJhY2tCeUNvbHVtbklkKF86IG51bWJlciwgb2JqOiBEb2N1bWVudExpc3RQcmVzZXRSZWYpOiBzdHJpbmcge1xuICAgIHJldHVybiBvYmouaWQ7XG4gIH1cblxuICBwcml2YXRlIHNldEtub3dsZWRnZVJldHJpZXZhbFN0YXRlKCkge1xuICAgIGNvbnN0IG5vZGVzID0gdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLmdldCgna25vd2xlZGdlUmV0cmlldmFsTm9kZXMnKTtcbiAgICBpZiAobm9kZXMgJiYgdGhpcy5uYXZpZ2F0aW9uSGlzdG9yeVNlcnZpY2Uuc2hvdWxkUmV0dXJuTGFzdFNlbGVjdGlvbignL2tub3dsZWRnZS1yZXRyaWV2YWwnKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzU3RhdGUgPSBKU09OLnBhcnNlKG5vZGVzKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWROb2Rlc1N0YXRlICYmICF0aGlzLnJvdXRlci51cmwuc3RhcnRzV2l0aCgnL2tub3dsZWRnZS1yZXRyaWV2YWwnKSkge1xuICAgICAgdGhpcy5zZWFyY2hBaVNlcnZpY2UudXBkYXRlU2VhcmNoQWlJbnB1dFN0YXRlKHtcbiAgICAgICAgYWN0aXZlOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc091dGxldFByZXZpZXdVcmwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJ3ZpZXdlcjp2aWV3Jyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdzb3J0aW5nLWNoYW5nZWQnLCBbJyRldmVudCddKVxuICBvblNvcnRpbmdDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZpbHRlclNvcnRpbmcgPSBldmVudC5kZXRhaWwua2V5ICsgJy0nICsgZXZlbnQuZGV0YWlsLmRpcmVjdGlvbjtcbiAgfVxuXG4gIG9uQWxsRmlsdGVyQ2xlYXJlZCgpIHtcbiAgICBpZiAoIXRoaXMuaXNPdXRsZXRQcmV2aWV3VXJsKCkpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRMaXN0Lm5vZGUgPSBudWxsO1xuICAgICAgdGhpcy5kb2N1bWVudExpc3RTZXJ2aWNlLnJlbG9hZCgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright © 2005-2025 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
|
+
export class DocumentBasePageService {
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtYmFzZS1wYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2Etc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9kb2N1bWVudC1iYXNlLXBhZ2UvZG9jdW1lbnQtYmFzZS1wYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFJSCxNQUFNLE9BQWdCLHVCQUF1QjtDQUc1QyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBOb2RlRW50cnksIE5vZGUgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERvY3VtZW50QmFzZVBhZ2VTZXJ2aWNlIHtcbiAgYWJzdHJhY3QgY2FuVXBkYXRlTm9kZShub2RlOiBOb2RlRW50cnkpOiBib29sZWFuO1xuICBhYnN0cmFjdCBjYW5VcGxvYWRDb250ZW50KG5vZGU6IE5vZGUpOiBib29sZWFuO1xufVxuIl19
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright © 2005-2025 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, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';
|
|
25
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
26
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
27
|
+
import * as i0 from "@angular/core";
|
|
28
|
+
import * as i1 from "@angular/material/icon";
|
|
29
|
+
import * as i2 from "@ngx-translate/core";
|
|
30
|
+
export class GenericErrorComponent {
|
|
31
|
+
text = 'APP.MESSAGES.ERRORS.MISSING_CONTENT';
|
|
32
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: GenericErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
33
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: GenericErrorComponent, isStandalone: true, selector: "aca-generic-error", inputs: { text: "text" }, host: { classAttribute: "aca-generic-error" }, ngImport: i0, template: "<mat-icon class=\"generic-error__icon\">error</mat-icon>\n<p class=\"generic-error__title\">\n {{ text | translate }}\n</p>\n", styles: [".aca-generic-error{color:var(--theme-text-color, rgba(0, 0, 0, .54));display:flex;align-items:center;justify-content:center;flex-direction:column;width:100%;height:100%}.aca-generic-error__title{font-size:16px}.aca-generic-error__icon{color:var(--theme-warn-color, #f44336);font-size:52px;height:52px;width:52px}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
34
|
+
}
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: GenericErrorComponent, decorators: [{
|
|
36
|
+
type: Component,
|
|
37
|
+
args: [{ standalone: true, imports: [MatIconModule, TranslateModule], selector: 'aca-generic-error', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'aca-generic-error' }, template: "<mat-icon class=\"generic-error__icon\">error</mat-icon>\n<p class=\"generic-error__title\">\n {{ text | translate }}\n</p>\n", styles: [".aca-generic-error{color:var(--theme-text-color, rgba(0, 0, 0, .54));display:flex;align-items:center;justify-content:center;flex-direction:column;width:100%;height:100%}.aca-generic-error__title{font-size:16px}.aca-generic-error__icon{color:var(--theme-warn-color, #f44336);font-size:52px;height:52px;width:52px}\n"] }]
|
|
38
|
+
}], propDecorators: { text: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}] } });
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2Etc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9nZW5lcmljLWVycm9yL2dlbmVyaWMtZXJyb3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvZ2VuZXJpYy1lcnJvci9nZW5lcmljLWVycm9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQVl0RCxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLElBQUksR0FBRyxxQ0FBcUMsQ0FBQzt1R0FGbEMscUJBQXFCOzJGQUFyQixxQkFBcUIsc0pDdENsQyxnSUFJQSxtWEQwQlksYUFBYSxtTEFBRSxlQUFlOzsyRkFRN0IscUJBQXFCO2tCQVZqQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUMsWUFDL0IsbUJBQW1CLGlCQUdkLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sUUFDekMsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUU7OEJBSXBDLElBQUk7c0JBREgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdEljb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gIHNlbGVjdG9yOiAnYWNhLWdlbmVyaWMtZXJyb3InLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy1lcnJvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dlbmVyaWMtZXJyb3IuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhY2EtZ2VuZXJpYy1lcnJvcicgfVxufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmljRXJyb3JDb21wb25lbnQge1xuICBASW5wdXQoKVxuICB0ZXh0ID0gJ0FQUC5NRVNTQUdFUy5FUlJPUlMuTUlTU0lOR19DT05URU5UJztcbn1cbiIsIjxtYXQtaWNvbiBjbGFzcz1cImdlbmVyaWMtZXJyb3JfX2ljb25cIj5lcnJvcjwvbWF0LWljb24+XG48cCBjbGFzcz1cImdlbmVyaWMtZXJyb3JfX3RpdGxlXCI+XG4gIHt7IHRleHQgfCB0cmFuc2xhdGUgfX1cbjwvcD5cbiJdfQ==
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright © 2005-2025 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, DestroyRef, HostListener, inject, Input, ViewEncapsulation } from '@angular/core';
|
|
25
|
+
import { NodeEntry } from '@alfresco/js-api';
|
|
26
|
+
import { DynamicTabComponent } from '@alfresco/adf-extensions';
|
|
27
|
+
import { Store } from '@ngrx/store';
|
|
28
|
+
import { infoDrawerPreview, SetInfoDrawerStateAction, ToggleInfoDrawerAction } from '@alfresco/aca-shared/store';
|
|
29
|
+
import { AppExtensionService } from '../../services/app.extension.service';
|
|
30
|
+
import { ContentApiService } from '../../services/content-api.service';
|
|
31
|
+
import { CommonModule } from '@angular/common';
|
|
32
|
+
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
33
|
+
import { InfoDrawerModule } from '@alfresco/adf-core';
|
|
34
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
35
|
+
import { A11yModule } from '@angular/cdk/a11y';
|
|
36
|
+
import { ToolbarComponent } from '../toolbar/toolbar.component';
|
|
37
|
+
import { ContentService, NodesApiService } from '@alfresco/adf-content-services';
|
|
38
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
39
|
+
import * as i0 from "@angular/core";
|
|
40
|
+
import * as i1 from "@ngrx/store";
|
|
41
|
+
import * as i2 from "../../services/content-api.service";
|
|
42
|
+
import * as i3 from "../../services/app.extension.service";
|
|
43
|
+
import * as i4 from "@alfresco/adf-content-services";
|
|
44
|
+
import * as i5 from "@angular/common";
|
|
45
|
+
import * as i6 from "@ngx-translate/core";
|
|
46
|
+
import * as i7 from "@angular/material/progress-bar";
|
|
47
|
+
import * as i8 from "@alfresco/adf-core";
|
|
48
|
+
export class InfoDrawerComponent {
|
|
49
|
+
store;
|
|
50
|
+
contentApi;
|
|
51
|
+
extensions;
|
|
52
|
+
nodesService;
|
|
53
|
+
contentService;
|
|
54
|
+
nodeId;
|
|
55
|
+
node;
|
|
56
|
+
isLoading = false;
|
|
57
|
+
displayNode;
|
|
58
|
+
tabs = [];
|
|
59
|
+
actions = [];
|
|
60
|
+
preventFromClosing = false;
|
|
61
|
+
icon = null;
|
|
62
|
+
onEscapeKeyboardEvent() {
|
|
63
|
+
this.close();
|
|
64
|
+
}
|
|
65
|
+
destroyRef = inject(DestroyRef);
|
|
66
|
+
constructor(store, contentApi, extensions, nodesService, contentService) {
|
|
67
|
+
this.store = store;
|
|
68
|
+
this.contentApi = contentApi;
|
|
69
|
+
this.extensions = extensions;
|
|
70
|
+
this.nodesService = nodesService;
|
|
71
|
+
this.contentService = contentService;
|
|
72
|
+
}
|
|
73
|
+
ngOnInit() {
|
|
74
|
+
this.tabs = this.extensions.getSidebarTabs();
|
|
75
|
+
this.extensions
|
|
76
|
+
.getAllowedSidebarActions()
|
|
77
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
78
|
+
.subscribe((actions) => {
|
|
79
|
+
this.actions = actions;
|
|
80
|
+
});
|
|
81
|
+
this.store
|
|
82
|
+
.select(infoDrawerPreview)
|
|
83
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
84
|
+
.subscribe((isInfoDrawerPreviewOpened) => {
|
|
85
|
+
this.preventFromClosing = isInfoDrawerPreviewOpened;
|
|
86
|
+
});
|
|
87
|
+
this.nodesService.nodeUpdated.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((node) => {
|
|
88
|
+
this.node.entry = node;
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
ngOnDestroy() {
|
|
92
|
+
if (!this.preventFromClosing) {
|
|
93
|
+
this.store.dispatch(new SetInfoDrawerStateAction(false));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
ngOnChanges() {
|
|
97
|
+
if (this.node) {
|
|
98
|
+
if (this.node['isLibrary']) {
|
|
99
|
+
return this.setDisplayNode(this.node);
|
|
100
|
+
}
|
|
101
|
+
const entry = this.node.entry;
|
|
102
|
+
const id = entry.nodeId || entry.id;
|
|
103
|
+
return this.loadNodeInfo(id);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
close() {
|
|
107
|
+
this.store.dispatch(new ToggleInfoDrawerAction());
|
|
108
|
+
}
|
|
109
|
+
loadNodeInfo(nodeId) {
|
|
110
|
+
if (nodeId) {
|
|
111
|
+
this.isLoading = true;
|
|
112
|
+
this.contentApi.getNodeInfo(nodeId).subscribe((entity) => {
|
|
113
|
+
this.setDisplayNode(entity);
|
|
114
|
+
this.node.entry = entity;
|
|
115
|
+
this.isLoading = false;
|
|
116
|
+
}, () => (this.isLoading = false));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
setDisplayNode(node) {
|
|
120
|
+
this.displayNode = node;
|
|
121
|
+
this.icon = this.contentService.getNodeIcon(node);
|
|
122
|
+
}
|
|
123
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: InfoDrawerComponent, deps: [{ token: i1.Store }, { token: i2.ContentApiService }, { token: i3.AppExtensionService }, { token: i4.NodesApiService }, { token: i4.ContentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
124
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: InfoDrawerComponent, isStandalone: true, selector: "aca-info-drawer", inputs: { nodeId: "nodeId", node: "node" }, host: { listeners: { "keydown.escape": "onEscapeKeyboardEvent()" } }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"isLoading\">\n <mat-progress-bar mode=\"indeterminate\" [attr.aria-label]=\"'APP.INFO_DRAWER.DATA_LOADING' | translate\" />\n</div>\n<ng-container *ngIf=\"!isLoading && !!displayNode\">\n <adf-info-drawer [icon]=\"icon\" [title]=\"node?.entry?.name || 'APP.INFO_DRAWER.TITLE'\" cdkTrapFocusAutoCapture>\n <aca-toolbar [items]=\"actions\" info-drawer-buttons />\n\n <adf-info-drawer-tab *ngFor=\"let tab of tabs\" [icon]=\"tab.icon\" [label]=\"tab.title\">\n <adf-dynamic-tab [node]=\"$any(displayNode)\" [id]=\"tab.component\" [attr.data-automation-id]=\"tab.component\" />\n </adf-info-drawer-tab>\n </adf-info-drawer>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i7.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: InfoDrawerModule }, { kind: "component", type: i8.InfoDrawerTabComponent, selector: "adf-info-drawer-tab", inputs: ["label", "icon"] }, { kind: "component", type: i8.InfoDrawerComponent, selector: "adf-info-drawer", inputs: ["title", "icon", "selectedIndex", "showHeader"], outputs: ["currentTab"] }, { kind: "directive", type: i8.InfoDrawerButtonsDirective, selector: "[adf-info-drawer-buttons], [info-drawer-buttons]" }, { kind: "ngmodule", type: A11yModule }, { kind: "component", type: ToolbarComponent, selector: "aca-toolbar", inputs: ["items"] }, { kind: "component", type: DynamicTabComponent, selector: "adf-dynamic-tab", inputs: ["id", "node"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
125
|
+
}
|
|
126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: InfoDrawerComponent, decorators: [{
|
|
127
|
+
type: Component,
|
|
128
|
+
args: [{ standalone: true, imports: [CommonModule, TranslateModule, MatProgressBarModule, InfoDrawerModule, A11yModule, ToolbarComponent, DynamicTabComponent], selector: 'aca-info-drawer', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"isLoading\">\n <mat-progress-bar mode=\"indeterminate\" [attr.aria-label]=\"'APP.INFO_DRAWER.DATA_LOADING' | translate\" />\n</div>\n<ng-container *ngIf=\"!isLoading && !!displayNode\">\n <adf-info-drawer [icon]=\"icon\" [title]=\"node?.entry?.name || 'APP.INFO_DRAWER.TITLE'\" cdkTrapFocusAutoCapture>\n <aca-toolbar [items]=\"actions\" info-drawer-buttons />\n\n <adf-info-drawer-tab *ngFor=\"let tab of tabs\" [icon]=\"tab.icon\" [label]=\"tab.title\">\n <adf-dynamic-tab [node]=\"$any(displayNode)\" [id]=\"tab.component\" [attr.data-automation-id]=\"tab.component\" />\n </adf-info-drawer-tab>\n </adf-info-drawer>\n</ng-container>\n" }]
|
|
129
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.ContentApiService }, { type: i3.AppExtensionService }, { type: i4.NodesApiService }, { type: i4.ContentService }], propDecorators: { nodeId: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], node: [{
|
|
132
|
+
type: Input,
|
|
133
|
+
args: [{ required: true }]
|
|
134
|
+
}], onEscapeKeyboardEvent: [{
|
|
135
|
+
type: HostListener,
|
|
136
|
+
args: ['keydown.escape']
|
|
137
|
+
}] } });
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby1kcmF3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvaW5mby1kcmF3ZXIvaW5mby1kcmF3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvaW5mby1kcmF3ZXIvaW5mby1kcmF3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBZ0MsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEksT0FBTyxFQUFRLFNBQVMsRUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBQzlELE9BQU8sRUFBb0IsbUJBQW1CLEVBQWlCLE1BQU0sMEJBQTBCLENBQUM7QUFDaEcsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8s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LEVBQUUsbUJBQW1CLENBQUMsWUFDekgsaUJBQWlCLGlCQUVaLGlCQUFpQixDQUFDLElBQUk7dU1BSXJDLE1BQU07c0JBREwsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQVl6QixxQkFBcUI7c0JBRHBCLFlBQVk7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRGVzdHJveVJlZiwgSG9zdExpc3RlbmVyLCBpbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm9kZSwgTm9kZUVudHJ5LCBTaXRlRW50cnkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IENvbnRlbnRBY3Rpb25SZWYsIER5bmFtaWNUYWJDb21wb25lbnQsIFNpZGViYXJUYWJSZWYgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBpbmZvRHJhd2VyUHJldmlldywgU2V0SW5mb0RyYXdlclN0YXRlQWN0aW9uLCBUb2dnbGVJbmZvRHJhd2VyQWN0aW9uIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHsgQXBwRXh0ZW5zaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcC5leHRlbnNpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZW50QXBpU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbnRlbnQtYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcbmltcG9ydCB7IEluZm9EcmF3ZXJNb2R1bGUgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4uL3Rvb2xiYXIvdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGVudFNlcnZpY2UsIE5vZGVzQXBpU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIE1hdFByb2dyZXNzQmFyTW9kdWxlLCBJbmZvRHJhd2VyTW9kdWxlLCBBMTF5TW9kdWxlLCBUb29sYmFyQ29tcG9uZW50LCBEeW5hbWljVGFiQ29tcG9uZW50XSxcbiAgc2VsZWN0b3I6ICdhY2EtaW5mby1kcmF3ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5mby1kcmF3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEluZm9EcmF3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgbm9kZUlkOiBzdHJpbmc7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgbm9kZTogTm9kZUVudHJ5O1xuXG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICBkaXNwbGF5Tm9kZTogTm9kZSB8IFNpdGVFbnRyeTtcbiAgdGFiczogQXJyYXk8U2lkZWJhclRhYlJlZj4gPSBbXTtcbiAgYWN0aW9uczogQXJyYXk8Q29udGVudEFjdGlvblJlZj4gPSBbXTtcblxuICBwcmV2ZW50RnJvbUNsb3NpbmcgPSBmYWxzZTtcbiAgaWNvbjogc3RyaW5nID0gbnVsbDtcblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVzY2FwZScpXG4gIG9uRXNjYXBlS2V5Ym9hcmRFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIGNvbnRlbnRBcGk6IENvbnRlbnRBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXh0ZW5zaW9uczogQXBwRXh0ZW5zaW9uU2VydmljZSxcbiAgICBwcml2YXRlIG5vZGVzU2VydmljZTogTm9kZXNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGVudFNlcnZpY2U6IENvbnRlbnRTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnRhYnMgPSB0aGlzLmV4dGVuc2lvbnMuZ2V0U2lkZWJhclRhYnMoKTtcbiAgICB0aGlzLmV4dGVuc2lvbnNcbiAgICAgIC5nZXRBbGxvd2VkU2lkZWJhckFjdGlvbnMoKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKChhY3Rpb25zKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgICB9KTtcblxuICAgIHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoaW5mb0RyYXdlclByZXZpZXcpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGlzSW5mb0RyYXdlclByZXZpZXdPcGVuZWQpID0+IHtcbiAgICAgICAgdGhpcy5wcmV2ZW50RnJvbUNsb3NpbmcgPSBpc0luZm9EcmF3ZXJQcmV2aWV3T3BlbmVkO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLm5vZGVzU2VydmljZS5ub2RlVXBkYXRlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKG5vZGU6IGFueSkgPT4ge1xuICAgICAgdGhpcy5ub2RlLmVudHJ5ID0gbm9kZTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICghdGhpcy5wcmV2ZW50RnJvbUNsb3NpbmcpIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldEluZm9EcmF3ZXJTdGF0ZUFjdGlvbihmYWxzZSkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLm5vZGUpIHtcbiAgICAgIGlmICh0aGlzLm5vZGVbJ2lzTGlicmFyeSddKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldERpc3BsYXlOb2RlKHRoaXMubm9kZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVudHJ5OiBhbnkgPSB0aGlzLm5vZGUuZW50cnk7XG5cbiAgICAgIGNvbnN0IGlkID0gZW50cnkubm9kZUlkIHx8IGVudHJ5LmlkO1xuICAgICAgcmV0dXJuIHRoaXMubG9hZE5vZGVJbmZvKGlkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFRvZ2dsZUluZm9EcmF3ZXJBY3Rpb24oKSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWROb2RlSW5mbyhub2RlSWQ6IHN0cmluZykge1xuICAgIGlmIChub2RlSWQpIHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgdGhpcy5jb250ZW50QXBpLmdldE5vZGVJbmZvKG5vZGVJZCkuc3Vic2NyaWJlKFxuICAgICAgICAoZW50aXR5KSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXREaXNwbGF5Tm9kZShlbnRpdHkpO1xuICAgICAgICAgIHRoaXMubm9kZS5lbnRyeSA9IGVudGl0eTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICAoKSA9PiAodGhpcy5pc0xvYWRpbmcgPSBmYWxzZSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXREaXNwbGF5Tm9kZShub2RlOiBhbnkpIHtcbiAgICB0aGlzLmRpc3BsYXlOb2RlID0gbm9kZTtcbiAgICB0aGlzLmljb24gPSB0aGlzLmNvbnRlbnRTZXJ2aWNlLmdldE5vZGVJY29uKG5vZGUpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nXCI+XG4gIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInQVBQLklORk9fRFJBV0VSLkRBVEFfTE9BRElORycgfCB0cmFuc2xhdGVcIiAvPlxuPC9kaXY+XG48bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZyAmJiAhIWRpc3BsYXlOb2RlXCI+XG4gIDxhZGYtaW5mby1kcmF3ZXIgW2ljb25dPVwiaWNvblwiIFt0aXRsZV09XCJub2RlPy5lbnRyeT8ubmFtZSB8fCAnQVBQLklORk9fRFJBV0VSLlRJVExFJ1wiIGNka1RyYXBGb2N1c0F1dG9DYXB0dXJlPlxuICAgIDxhY2EtdG9vbGJhciBbaXRlbXNdPVwiYWN0aW9uc1wiIGluZm8tZHJhd2VyLWJ1dHRvbnMgLz5cblxuICAgIDxhZGYtaW5mby1kcmF3ZXItdGFiICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFic1wiIFtpY29uXT1cInRhYi5pY29uXCIgW2xhYmVsXT1cInRhYi50aXRsZVwiPlxuICAgICAgPGFkZi1keW5hbWljLXRhYiBbbm9kZV09XCIkYW55KGRpc3BsYXlOb2RlKVwiIFtpZF09XCJ0YWIuY29tcG9uZW50XCIgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cInRhYi5jb21wb25lbnRcIiAvPlxuICAgIDwvYWRmLWluZm8tZHJhd2VyLXRhYj5cbiAgPC9hZGYtaW5mby1kcmF3ZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|