@alfresco/aca-shared 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.
Files changed (161) hide show
  1. package/esm2022/lib/components/document-base-page/document-base-page.component.mjs +223 -0
  2. package/esm2022/lib/components/generic-error/generic-error.component.mjs +42 -0
  3. package/esm2022/lib/components/info-drawer/info-drawer.component.mjs +138 -0
  4. package/esm2022/lib/components/locked-by/locked-by.component.mjs +57 -0
  5. package/esm2022/lib/components/open-in-app/open-in-app.component.mjs +73 -0
  6. package/esm2022/lib/components/page-layout/page-layout-content.component.mjs +49 -0
  7. package/esm2022/lib/components/page-layout/page-layout-error.component.mjs +43 -0
  8. package/esm2022/lib/components/page-layout/page-layout-header.component.mjs +43 -0
  9. package/esm2022/lib/components/page-layout/page-layout.component.mjs +58 -0
  10. package/esm2022/lib/components/page-layout/page-layout.module.mjs +43 -0
  11. package/esm2022/lib/components/toolbar/toolbar-action/toolbar-action.component.mjs +63 -0
  12. package/esm2022/lib/components/toolbar/toolbar-button/toolbar-button.component.mjs +79 -0
  13. package/esm2022/lib/components/toolbar/toolbar-menu/toolbar-menu.component.mjs +92 -0
  14. package/esm2022/lib/components/toolbar/toolbar-menu-item/toolbar-menu-item.component.mjs +76 -0
  15. package/esm2022/lib/components/toolbar/toolbar.component.mjs +46 -0
  16. package/esm2022/lib/deprecated/shared-toolbar.module.mjs +44 -0
  17. package/esm2022/lib/deprecated/shared.module.mjs +45 -0
  18. package/esm2022/lib/directives/contextmenu/contextmenu.directive.mjs +111 -0
  19. package/esm2022/lib/directives/pagination.directive.mjs +56 -0
  20. package/esm2022/lib/services/aca-mobile-app-switcher.service.mjs +130 -0
  21. package/esm2022/lib/services/app-hook.service.mjs +78 -0
  22. package/esm2022/lib/services/app-settings.service.mjs +157 -0
  23. package/esm2022/lib/services/app.extension.service.mjs +481 -0
  24. package/esm2022/lib/services/app.service.mjs +234 -0
  25. package/esm2022/lib/services/auto-download.service.mjs +59 -0
  26. package/esm2022/lib/services/content-api.service.mjs +281 -0
  27. package/esm2022/lib/services/navigation-history.service.mjs +55 -0
  28. package/esm2022/lib/services/node-permission.service.mjs +88 -0
  29. package/esm2022/lib/services/router.extension.service.mjs +108 -0
  30. package/esm2022/lib/services/user-profile.service.mjs +76 -0
  31. package/esm2022/lib/testing/lib-testing-module.mjs +163 -0
  32. package/esm2022/public-api.mjs +62 -0
  33. package/esm2022/store/actions/app.actions.mjs +116 -0
  34. package/esm2022/store/actions/context-menu-action-types.mjs +29 -0
  35. package/esm2022/store/actions/contextmenu.actions.mjs +41 -0
  36. package/esm2022/store/actions/library.actions.mjs +67 -0
  37. package/esm2022/store/actions/metadata-aspect.actions.mjs +32 -0
  38. package/esm2022/store/actions/node.actions.mjs +217 -0
  39. package/esm2022/store/actions/router.actions.mjs +56 -0
  40. package/esm2022/store/actions/search-ai.actions.mjs +45 -0
  41. package/esm2022/store/actions/search.actions.mjs +41 -0
  42. package/esm2022/store/actions/snackbar.actions.mjs +68 -0
  43. package/esm2022/store/actions/template.actions.mjs +45 -0
  44. package/esm2022/store/actions/upload.actions.mjs +53 -0
  45. package/esm2022/store/actions/viewer.actions.mjs +93 -0
  46. package/esm2022/store/effects/router.effects.mjs +110 -0
  47. package/esm2022/store/effects/snackbar.effects.mjs +80 -0
  48. package/{fesm2020 → fesm2022}/alfresco-aca-shared-store.mjs +219 -142
  49. package/fesm2022/alfresco-aca-shared-store.mjs.map +1 -0
  50. package/{fesm2020 → fesm2022}/alfresco-aca-shared.mjs +480 -336
  51. package/fesm2022/alfresco-aca-shared.mjs.map +1 -0
  52. package/lib/components/document-base-page/document-base-page.component.d.ts +10 -6
  53. package/lib/components/generic-error/generic-error.component.d.ts +1 -1
  54. package/lib/components/info-drawer/info-drawer.component.d.ts +3 -4
  55. package/lib/components/locked-by/locked-by.component.d.ts +1 -1
  56. package/lib/components/page-layout/page-layout-content.component.d.ts +1 -1
  57. package/lib/components/page-layout/page-layout.component.d.ts +2 -28
  58. package/lib/components/toolbar/toolbar-action/toolbar-action.component.d.ts +1 -1
  59. package/lib/components/toolbar/toolbar-button/toolbar-button.component.d.ts +1 -1
  60. package/lib/components/toolbar/toolbar-menu/toolbar-menu.component.d.ts +1 -1
  61. package/lib/components/toolbar/toolbar-menu-item/toolbar-menu-item.component.d.ts +1 -1
  62. package/lib/components/toolbar/toolbar.component.d.ts +1 -1
  63. package/lib/directives/contextmenu/contextmenu.directive.d.ts +7 -7
  64. package/lib/directives/pagination.directive.d.ts +4 -5
  65. package/lib/services/app-hook.service.d.ts +6 -6
  66. package/lib/services/app-settings.service.d.ts +12 -0
  67. package/lib/services/app.service.d.ts +4 -30
  68. package/lib/services/navigation-history.service.d.ts +13 -0
  69. package/lib/services/node-permission.service.d.ts +1 -1
  70. package/package.json +15 -25
  71. package/public-api.d.ts +1 -0
  72. package/store/actions/context-menu-action-types.d.ts +2 -1
  73. package/store/actions/contextmenu.actions.d.ts +7 -0
  74. package/store/actions/search-ai.actions.d.ts +2 -1
  75. package/store/effects/router.effects.d.ts +1 -5
  76. package/store/effects/snackbar.effects.d.ts +0 -29
  77. package/esm2020/lib/components/document-base-page/document-base-page.component.mjs +0 -206
  78. package/esm2020/lib/components/generic-error/generic-error.component.mjs +0 -43
  79. package/esm2020/lib/components/info-drawer/info-drawer.component.mjs +0 -132
  80. package/esm2020/lib/components/locked-by/locked-by.component.mjs +0 -54
  81. package/esm2020/lib/components/open-in-app/open-in-app.component.mjs +0 -68
  82. package/esm2020/lib/components/page-layout/page-layout-content.component.mjs +0 -50
  83. package/esm2020/lib/components/page-layout/page-layout-error.component.mjs +0 -42
  84. package/esm2020/lib/components/page-layout/page-layout-header.component.mjs +0 -42
  85. package/esm2020/lib/components/page-layout/page-layout.component.mjs +0 -61
  86. package/esm2020/lib/components/page-layout/page-layout.module.mjs +0 -42
  87. package/esm2020/lib/components/toolbar/toolbar-action/toolbar-action.component.mjs +0 -58
  88. package/esm2020/lib/components/toolbar/toolbar-button/toolbar-button.component.mjs +0 -74
  89. package/esm2020/lib/components/toolbar/toolbar-menu/toolbar-menu.component.mjs +0 -87
  90. package/esm2020/lib/components/toolbar/toolbar-menu-item/toolbar-menu-item.component.mjs +0 -71
  91. package/esm2020/lib/components/toolbar/toolbar.component.mjs +0 -44
  92. package/esm2020/lib/deprecated/shared-toolbar.module.mjs +0 -43
  93. package/esm2020/lib/deprecated/shared.module.mjs +0 -44
  94. package/esm2020/lib/directives/contextmenu/contextmenu.directive.mjs +0 -104
  95. package/esm2020/lib/directives/pagination.directive.mjs +0 -55
  96. package/esm2020/lib/services/aca-mobile-app-switcher.service.mjs +0 -129
  97. package/esm2020/lib/services/app-hook.service.mjs +0 -79
  98. package/esm2020/lib/services/app-settings.service.mjs +0 -140
  99. package/esm2020/lib/services/app.extension.service.mjs +0 -462
  100. package/esm2020/lib/services/app.service.mjs +0 -221
  101. package/esm2020/lib/services/auto-download.service.mjs +0 -60
  102. package/esm2020/lib/services/content-api.service.mjs +0 -268
  103. package/esm2020/lib/services/node-permission.service.mjs +0 -89
  104. package/esm2020/lib/services/router.extension.service.mjs +0 -105
  105. package/esm2020/lib/services/user-profile.service.mjs +0 -77
  106. package/esm2020/lib/testing/lib-testing-module.mjs +0 -161
  107. package/esm2020/public-api.mjs +0 -61
  108. package/esm2020/store/actions/app.actions.mjs +0 -108
  109. package/esm2020/store/actions/context-menu-action-types.mjs +0 -28
  110. package/esm2020/store/actions/contextmenu.actions.mjs +0 -31
  111. package/esm2020/store/actions/library.actions.mjs +0 -63
  112. package/esm2020/store/actions/metadata-aspect.actions.mjs +0 -31
  113. package/esm2020/store/actions/node.actions.mjs +0 -188
  114. package/esm2020/store/actions/router.actions.mjs +0 -54
  115. package/esm2020/store/actions/search-ai.actions.mjs +0 -41
  116. package/esm2020/store/actions/search.actions.mjs +0 -41
  117. package/esm2020/store/actions/snackbar.actions.mjs +0 -57
  118. package/esm2020/store/actions/template.actions.mjs +0 -47
  119. package/esm2020/store/actions/upload.actions.mjs +0 -49
  120. package/esm2020/store/actions/viewer.actions.mjs +0 -81
  121. package/esm2020/store/effects/router.effects.mjs +0 -114
  122. package/esm2020/store/effects/snackbar.effects.mjs +0 -85
  123. package/fesm2015/alfresco-aca-shared-rules.mjs +0 -795
  124. package/fesm2015/alfresco-aca-shared-rules.mjs.map +0 -1
  125. package/fesm2015/alfresco-aca-shared-store.mjs +0 -1278
  126. package/fesm2015/alfresco-aca-shared-store.mjs.map +0 -1
  127. package/fesm2015/alfresco-aca-shared.mjs +0 -3278
  128. package/fesm2015/alfresco-aca-shared.mjs.map +0 -1
  129. package/fesm2020/alfresco-aca-shared-store.mjs.map +0 -1
  130. package/fesm2020/alfresco-aca-shared.mjs.map +0 -1
  131. /package/{esm2020 → esm2022}/alfresco-aca-shared.mjs +0 -0
  132. /package/{esm2020 → esm2022}/lib/adf-extensions/extensions-data-loader.guard.mjs +0 -0
  133. /package/{esm2020 → esm2022}/lib/components/document-base-page/document-base-page.service.mjs +0 -0
  134. /package/{esm2020 → esm2022}/lib/constants/index.mjs +0 -0
  135. /package/{esm2020 → esm2022}/lib/constants/mime-types.mjs +0 -0
  136. /package/{esm2020 → esm2022}/lib/models/types.mjs +0 -0
  137. /package/{esm2020 → esm2022}/lib/models/viewer.rules.mjs +0 -0
  138. /package/{esm2020 → esm2022}/lib/routing/plugin-enabled.guard.mjs +0 -0
  139. /package/{esm2020 → esm2022}/lib/routing/shared.guard.mjs +0 -0
  140. /package/{esm2020 → esm2022}/lib/utils/node.utils.mjs +0 -0
  141. /package/{esm2020 → esm2022}/rules/alfresco-aca-shared-rules.mjs +0 -0
  142. /package/{esm2020 → esm2022}/rules/app.rules.mjs +0 -0
  143. /package/{esm2020 → esm2022}/rules/navigation.rules.mjs +0 -0
  144. /package/{esm2020 → esm2022}/rules/public-api.mjs +0 -0
  145. /package/{esm2020 → esm2022}/rules/repository.rules.mjs +0 -0
  146. /package/{esm2020 → esm2022}/rules/user.rules.mjs +0 -0
  147. /package/{esm2020 → esm2022}/store/actions/app-action-types.mjs +0 -0
  148. /package/{esm2020 → esm2022}/store/actions/router-action-types.mjs +0 -0
  149. /package/{esm2020 → esm2022}/store/actions/template-action-types.mjs +0 -0
  150. /package/{esm2020 → esm2022}/store/alfresco-aca-shared-store.mjs +0 -0
  151. /package/{esm2020 → esm2022}/store/models/ai-search-by-term-payload.mjs +0 -0
  152. /package/{esm2020 → esm2022}/store/models/delete-status.model.mjs +0 -0
  153. /package/{esm2020 → esm2022}/store/models/deleted-node-info.model.mjs +0 -0
  154. /package/{esm2020 → esm2022}/store/models/modal-configuration.mjs +0 -0
  155. /package/{esm2020 → esm2022}/store/models/node-info.model.mjs +0 -0
  156. /package/{esm2020 → esm2022}/store/models/search-option.model.mjs +0 -0
  157. /package/{esm2020 → esm2022}/store/public-api.mjs +0 -0
  158. /package/{esm2020 → esm2022}/store/selectors/app.selectors.mjs +0 -0
  159. /package/{esm2020 → esm2022}/store/states/app.state.mjs +0 -0
  160. /package/{fesm2020 → fesm2022}/alfresco-aca-shared-rules.mjs +0 -0
  161. /package/{fesm2020 → fesm2022}/alfresco-aca-shared-rules.mjs.map +0 -0
@@ -0,0 +1,223 @@
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 { 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
+ 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: "16.2.9", ngImport: i0, type: PageComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
211
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.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
+ export { PageComponent };
214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PageComponent, decorators: [{
215
+ type: Directive
216
+ }], propDecorators: { documentList: [{
217
+ type: ViewChild,
218
+ args: [DocumentListComponent]
219
+ }], onSortingChanged: [{
220
+ type: HostListener,
221
+ args: ['sorting-changed', ['$event']]
222
+ }] } });
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtYmFzZS1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2RvY3VtZW50LWJhc2UtcGFnZS9kb2N1bWVudC1iYXNlLXBhZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixtQkFBbUIsRUFFbkIsZUFBZSxFQUVmLGFBQWEsRUFDZCxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUErQyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEksT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdwQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBRUwsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLGNBQWMsRUFFZixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUs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R0QsZ0JBQWdCLENBQUMsS0FBVTtRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtZQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDOUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ25DO0lBQ0gsQ0FBQzt1R0FoTm1CLGFBQWE7MkZBQWIsYUFBYSxnSkFDdEIscUJBQXFCOztTQURaLGFBQWE7MkZBQWIsYUFBYTtrQkFEbEMsU0FBUzs4QkFHUixZQUFZO3NCQURYLFNBQVM7dUJBQUMscUJBQXFCO2dCQXNNaEMsZ0JBQWdCO3NCQURmLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHtcbiAgRG9jdW1lbnRMaXN0Q29tcG9uZW50LFxuICBEb2N1bWVudExpc3RTZXJ2aWNlLFxuICBTZWFyY2hBaUlucHV0U3RhdGUsXG4gIFNlYXJjaEFpU2VydmljZSxcbiAgU2hhcmVEYXRhUm93LFxuICBVcGxvYWRTZXJ2aWNlXG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBTaG93SGVhZGVyTW9kZSwgVXNlclByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBDb250ZW50QWN0aW9uUmVmLCBEb2N1bWVudExpc3RQcmVzZXRSZWYsIFNlbGVjdGlvblN0YXRlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1leHRlbnNpb25zJztcbmltcG9ydCB7IERlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBpbmplY3QsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBOb2RlLCBOb2RlRW50cnksIE5vZGVQYWdpbmcgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRG9jdW1lbnRCYXNlUGFnZVNlcnZpY2UgfSBmcm9tICcuL2RvY3VtZW50LWJhc2UtcGFnZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFwcFN0b3JlLFxuICBnZXRBcHBTZWxlY3Rpb24sXG4gIGdldEN1cnJlbnRGb2xkZXIsXG4gIGlzSW5mb0RyYXdlck9wZW5lZCxcbiAgU2V0U2VsZWN0ZWROb2Rlc0FjdGlvbixcbiAgVmlld05vZGVBY3Rpb24sXG4gIFZpZXdOb2RlRXh0cmFzXG59IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IEFwcEV4dGVuc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHAuZXh0ZW5zaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNMaWJyYXJ5LCBpc0xvY2tlZCB9IGZyb20gJy4uLy4uL3V0aWxzL25vZGUudXRpbHMnO1xuaW1wb3J0IHsgQXV0b0Rvd25sb2FkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dG8tZG93bmxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQXBwU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkhpc3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi1oaXN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeCAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBAVmlld0NoaWxkKERvY3VtZW50TGlzdENvbXBvbmVudClcbiAgZG9jdW1lbnRMaXN0OiBEb2N1bWVudExpc3RDb21wb25lbnQ7XG5cbiAgdGl0bGUgPSAnUGFnZSc7XG4gIGluZm9EcmF3ZXJPcGVuZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBub2RlOiBOb2RlO1xuICBzZWxlY3Rpb246IFNlbGVjdGlvblN0YXRlO1xuICBhY3Rpb25zOiBBcnJheTxDb250ZW50QWN0aW9uUmVmPiA9IFtdO1xuICB2aWV3ZXJUb29sYmFyQWN0aW9uczogQXJyYXk8Q29udGVudEFjdGlvblJlZj4gPSBbXTtcbiAgYnVsa0FjdGlvbnM6IENvbnRlbnRBY3Rpb25SZWZbXSA9IFtdO1xuICBjYW5VcGRhdGVOb2RlID0gZmFsc2U7XG4gIGNhblVwbG9hZCA9IGZhbHNlO1xuICBub2RlUmVzdWx0OiBOb2RlUGFnaW5nO1xuICBzaG93SGVhZGVyID0gU2hvd0hlYWRlck1vZGUuRGF0YTtcbiAgZmlsdGVyU29ydGluZyA9ICduYW1lLWFzYyc7XG4gIGNyZWF0ZUFjdGlvbnM6IENvbnRlbnRBY3Rpb25SZWZbXSA9IFtdO1xuICBpc1NtYWxsU2NyZWVuID0gZmFsc2U7XG4gIHNlbGVjdGVkUm93SXRlbXNDb3VudCA9IDA7XG4gIHNlbGVjdGVkTm9kZXNTdGF0ZTogU2VsZWN0aW9uU3RhdGU7XG5cbiAgcHJvdGVjdGVkIGRvY3VtZW50TGlzdFNlcnZpY2UgPSBpbmplY3QoRG9jdW1lbnRMaXN0U2VydmljZSk7XG4gIHByb3RlY3RlZCBzZXR0aW5ncyA9IGluamVjdChBcHBTZXR0aW5nc1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgZXh0ZW5zaW9ucyA9IGluamVjdChBcHBFeHRlbnNpb25TZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGNvbnRlbnQgPSBpbmplY3QoRG9jdW1lbnRCYXNlUGFnZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgc3RvcmUgPSBpbmplY3Q8U3RvcmU8QXBwU3RvcmU+PihTdG9yZTxBcHBTdG9yZT4pO1xuICBwcm90ZWN0ZWQgYnJlYWtwb2ludE9ic2VydmVyID0gaW5qZWN0KEJyZWFrcG9pbnRPYnNlcnZlcik7XG4gIHByb3RlY3RlZCB1cGxvYWRTZXJ2aWNlID0gaW5qZWN0KFVwbG9hZFNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByb3RlY3RlZCB1c2VyUHJlZmVyZW5jZXNTZXJ2aWNlID0gaW5qZWN0KFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgc2VhcmNoQWlTZXJ2aWNlID0gaW5qZWN0KFNlYXJjaEFpU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgcHJpdmF0ZSBhdXRvRG93bmxvYWRTZXJ2aWNlID0gaW5qZWN0KEF1dG9Eb3dubG9hZFNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgbmF2aWdhdGlvbkhpc3RvcnlTZXJ2aWNlID0gaW5qZWN0KE5hdmlnYXRpb25IaXN0b3J5U2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgcHJpdmF0ZSBfc2VhcmNoQWlJbnB1dFN0YXRlOiBTZWFyY2hBaUlucHV0U3RhdGUgPSB7XG4gICAgYWN0aXZlOiBmYWxzZVxuICB9O1xuXG4gIGdldCBzZWFyY2hBaUlucHV0U3RhdGUoKTogU2VhcmNoQWlJbnB1dFN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoQWlJbnB1dFN0YXRlO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5leHRlbnNpb25zXG4gICAgICAuZ2V0Q3JlYXRlQWN0aW9ucygpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFjdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy5jcmVhdGVBY3Rpb25zID0gYWN0aW9ucztcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5pbmZvRHJhd2VyT3BlbmVkJCA9IHRoaXMuc3RvcmUuc2VsZWN0KGlzSW5mb0RyYXdlck9wZW5lZCk7XG5cbiAgICB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KGdldEFwcFNlbGVjdGlvbilcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoc2VsZWN0aW9uKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uID0gc2VsZWN0aW9uO1xuICAgICAgICB0aGlzLmNhblVwZGF0ZU5vZGUgPSB0aGlzLnNlbGVjdGlvbi5jb3VudCA9PT0gMSAmJiB0aGlzLmNvbnRlbnQuY2FuVXBkYXRlTm9kZShzZWxlY3Rpb24uZmlyc3QpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmV4dGVuc2lvbnNcbiAgICAgIC5nZXRBbGxvd2VkVG9vbGJhckFjdGlvbnMoKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKChhY3Rpb25zKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZXh0ZW5zaW9uc1xuICAgICAgLmdldEJ1bGtBY3Rpb25zKClcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLmJ1bGtBY3Rpb25zID0gYWN0aW9ucztcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5leHRlbnNpb25zXG4gICAgICAuZ2V0Vmlld2VyVG9vbGJhckFjdGlvbnMoKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKChhY3Rpb25zKSA9PiB7XG4gICAgICAgIHRoaXMudmlld2VyVG9vbGJhckFjdGlvbnMgPSBhY3Rpb25zO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KGdldEN1cnJlbnRGb2xkZXIpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKG5vZGUpID0+IHtcbiAgICAgICAgdGhpcy5jYW5VcGxvYWQgPSBub2RlICYmIHRoaXMuY29udGVudC5jYW5VcGxvYWRDb250ZW50KG5vZGUpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgLm9ic2VydmUoW0JyZWFrcG9pbnRzLkhhbmRzZXRQb3J0cmFpdCwgQnJlYWtwb2ludHMuSGFuZHNldExhbmRzY2FwZV0pXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICB0aGlzLmlzU21hbGxTY3JlZW4gPSByZXN1bHQubWF0Y2hlcztcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5zZWFyY2hBaVNlcnZpY2UudG9nZ2xlU2VhcmNoQWlJbnB1dCRcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoc2VhcmNoQWlJbnB1dFN0YXRlKSA9PiAodGhpcy5fc2VhcmNoQWlJbnB1dFN0YXRlID0gc2VhcmNoQWlJbnB1dFN0YXRlKSk7XG5cbiAgICB0aGlzLnNldEtub3dsZWRnZVJldHJpZXZhbFN0YXRlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMubm9kZVJlc3VsdD8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLm5vZGVSZXN1bHQgPSBjaGFuZ2VzLm5vZGVSZXN1bHQuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWJzY3JpcHRpb24pID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcblxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFNlbGVjdGVkTm9kZXNBY3Rpb24oW10pKTtcbiAgfVxuXG4gIHNob3dQcmV2aWV3KG5vZGU6IE5vZGVFbnRyeSwgZXh0cmFzPzogVmlld05vZGVFeHRyYXMpIHtcbiAgICBpZiAobm9kZT8uZW50cnkpIHtcbiAgICAgIGlmICghdGhpcy5zZXR0aW5ncy5hdXRvRG93bmxvYWRFbmFibGVkIHx8ICF0aGlzLmF1dG9Eb3dubG9hZFNlcnZpY2UudHJ5RG93bmxvYWQobm9kZSwgdGhpcy5zZXR0aW5ncy5hdXRoRG93bmxvYWRUaHJlc2hvbGQpKSB7XG4gICAgICAgIGxldCBpZDogc3RyaW5nO1xuXG4gICAgICAgIGlmIChub2RlLmVudHJ5Lm5vZGVUeXBlID09PSAnYXBwOmZpbGVsaW5rJykge1xuICAgICAgICAgIGlkID0gbm9kZS5lbnRyeS5wcm9wZXJ0aWVzWydjbTpkZXN0aW5hdGlvbiddO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlkID0gKG5vZGUgYXMgYW55KS5lbnRyeS5ub2RlSWQgfHwgKG5vZGUgYXMgYW55KS5lbnRyeS5ndWlkIHx8IG5vZGUuZW50cnkuaWQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBWaWV3Tm9kZUFjdGlvbihpZCwgZXh0cmFzKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25TZWxlY3RlZEl0ZW1zQ291bnRDaGFuZ2VkKGNvdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkUm93SXRlbXNDb3VudCA9IGNvdW50O1xuICB9XG5cbiAgZ2V0UGFyZW50Tm9kZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubm9kZSA/IHRoaXMubm9kZS5pZCA6IG51bGw7XG4gIH1cblxuICBpbWFnZVJlc29sdmVyKHJvdzogU2hhcmVEYXRhUm93KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHJvdykge1xuICAgICAgaWYgKGlzTG9ja2VkKHJvdy5ub2RlKSkge1xuICAgICAgICByZXR1cm4gJ21hdGVyaWFsLWljb25zOi8vbG9jayc7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0xpYnJhcnkocm93Lm5vZGUpKSB7XG4gICAgICAgIHJldHVybiAnbWF0ZXJpYWwtaWNvbnM6Ly9saWJyYXJ5X2Jvb2tzJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJlbG9hZChzZWxlY3RlZE5vZGU/OiBOb2RlRW50cnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc091dGxldFByZXZpZXdVcmwoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZG9jdW1lbnRMaXN0U2VydmljZS5yZWxvYWQoKTtcbiAgICBpZiAoc2VsZWN0ZWROb2RlKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uKFtzZWxlY3RlZE5vZGVdKSk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeUFjdGlvbklkKF86IG51bWJlciwgYWN0aW9uOiBDb250ZW50QWN0aW9uUmVmKSB7XG4gICAgcmV0dXJuIGFjdGlvbi5pZDtcbiAgfVxuXG4gIHRyYWNrQnlJZChfOiBudW1iZXIsIG9iajogeyBpZDogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4gb2JqLmlkO1xuICB9XG5cbiAgdHJhY2tCeUNvbHVtbklkKF86IG51bWJlciwgb2JqOiBEb2N1bWVudExpc3RQcmVzZXRSZWYpOiBzdHJpbmcge1xuICAgIHJldHVybiBvYmouaWQ7XG4gIH1cblxuICBwcml2YXRlIHNldEtub3dsZWRnZVJldHJpZXZhbFN0YXRlKCkge1xuICAgIGNvbnN0IG5vZGVzID0gdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLmdldCgna25vd2xlZGdlUmV0cmlldmFsTm9kZXMnKTtcbiAgICBpZiAobm9kZXMgJiYgdGhpcy5uYXZpZ2F0aW9uSGlzdG9yeVNlcnZpY2Uuc2hvdWxkUmV0dXJuTGFzdFNlbGVjdGlvbignL2tub3dsZWRnZS1yZXRyaWV2YWwnKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzU3RhdGUgPSBKU09OLnBhcnNlKG5vZGVzKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWROb2Rlc1N0YXRlICYmICF0aGlzLnJvdXRlci51cmwuc3RhcnRzV2l0aCgnL2tub3dsZWRnZS1yZXRyaWV2YWwnKSkge1xuICAgICAgdGhpcy5zZWFyY2hBaVNlcnZpY2UudXBkYXRlU2VhcmNoQWlJbnB1dFN0YXRlKHtcbiAgICAgICAgYWN0aXZlOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc091dGxldFByZXZpZXdVcmwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJ3ZpZXdlcjp2aWV3Jyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdzb3J0aW5nLWNoYW5nZWQnLCBbJyRldmVudCddKVxuICBvblNvcnRpbmdDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZpbHRlclNvcnRpbmcgPSBldmVudC5kZXRhaWwua2V5ICsgJy0nICsgZXZlbnQuZGV0YWlsLmRpcmVjdGlvbjtcbiAgfVxuXG4gIG9uQWxsRmlsdGVyQ2xlYXJlZCgpIHtcbiAgICBpZiAoIXRoaXMuaXNPdXRsZXRQcmV2aWV3VXJsKCkpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRMaXN0Lm5vZGUgPSBudWxsO1xuICAgICAgdGhpcy5kb2N1bWVudExpc3RTZXJ2aWNlLnJlbG9hZCgpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,42 @@
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, 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
+ class GenericErrorComponent {
31
+ text = 'APP.MESSAGES.ERRORS.MISSING_CONTENT';
32
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: GenericErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
33
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.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
+ export { GenericErrorComponent };
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: GenericErrorComponent, decorators: [{
37
+ type: Component,
38
+ 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"] }]
39
+ }], propDecorators: { text: [{
40
+ type: Input
41
+ }] } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2Etc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9nZW5lcmljLWVycm9yL2dlbmVyaWMtZXJyb3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvZ2VuZXJpYy1lcnJvci9nZW5lcmljLWVycm9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQUV0RCxNQVVhLHFCQUFxQjtJQUVoQyxJQUFJLEdBQUcscUNBQXFDLENBQUM7dUdBRmxDLHFCQUFxQjsyRkFBckIscUJBQXFCLHNKQ3RDbEMsZ0lBSUEsbVhEMEJZLGFBQWEsbUxBQUUsZUFBZTs7U0FRN0IscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBVmpDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxZQUMvQixtQkFBbUIsaUJBR2QsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6QyxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRTs4QkFJcEMsSUFBSTtzQkFESCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTWF0SWNvbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdhY2EtZ2VuZXJpYy1lcnJvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9nZW5lcmljLWVycm9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2VuZXJpYy1lcnJvci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDogeyBjbGFzczogJ2FjYS1nZW5lcmljLWVycm9yJyB9XG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyaWNFcnJvckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHRleHQgPSAnQVBQLk1FU1NBR0VTLkVSUk9SUy5NSVNTSU5HX0NPTlRFTlQnO1xufVxuIiwiPG1hdC1pY29uIGNsYXNzPVwiZ2VuZXJpYy1lcnJvcl9faWNvblwiPmVycm9yPC9tYXQtaWNvbj5cbjxwIGNsYXNzPVwiZ2VuZXJpYy1lcnJvcl9fdGl0bGVcIj5cbiAge3sgdGV4dCB8IHRyYW5zbGF0ZSB9fVxuPC9wPlxuIl19
@@ -0,0 +1,138 @@
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, 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
+ 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: "16.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: "16.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
+ export { InfoDrawerComponent };
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InfoDrawerComponent, decorators: [{
128
+ type: Component,
129
+ 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" }]
130
+ }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.ContentApiService }, { type: i3.AppExtensionService }, { type: i4.NodesApiService }, { type: i4.ContentService }]; }, propDecorators: { nodeId: [{
131
+ type: Input
132
+ }], node: [{
133
+ type: Input
134
+ }], onEscapeKeyboardEvent: [{
135
+ type: HostListener,
136
+ args: ['keydown.escape']
137
+ }] } });
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby1kcmF3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvaW5mby1kcmF3ZXIvaW5mby1kcmF3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvaW5mby1kcmF3ZXIvaW5mby1kcmF3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBZ0MsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEksT0FBTyxFQUFRLFNBQVMsRUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBQzlELE9BQU8sRUFBb0IsbUJBQW1CLEVBQWlCLE1BQU0sMEJBQTBCLENBQUM7QUFDaEcsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8s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QkFFWixpQkFBaUIsQ0FBQyxJQUFJO3lOQUlyQyxNQUFNO3NCQURMLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQVlOLHFCQUFxQjtzQkFEcEIsWUFBWTt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2RlLCBOb2RlRW50cnksIFNpdGVFbnRyeSB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgQ29udGVudEFjdGlvblJlZiwgRHluYW1pY1RhYkNvbXBvbmVudCwgU2lkZWJhclRhYlJlZiB9IGZyb20gJ0BhbGZyZXNjby9hZGYtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGluZm9EcmF3ZXJQcmV2aWV3LCBTZXRJbmZvRHJhd2VyU3RhdGVBY3Rpb24sIFRvZ2dsZUluZm9EcmF3ZXJBY3Rpb24gfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBBcHBFeHRlbnNpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLmV4dGVuc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRlbnRBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGVudC1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHsgSW5mb0RyYXdlck1vZHVsZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9vbGJhci90b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250ZW50U2VydmljZSwgTm9kZXNBcGlTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsIEluZm9EcmF3ZXJNb2R1bGUsIEExMXlNb2R1bGUsIFRvb2xiYXJDb21wb25lbnQsIER5bmFtaWNUYWJDb21wb25lbnRdLFxuICBzZWxlY3RvcjogJ2FjYS1pbmZvLWRyYXdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbmZvLWRyYXdlci5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgSW5mb0RyYXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBub2RlSWQ6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBub2RlOiBOb2RlRW50cnk7XG5cbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIGRpc3BsYXlOb2RlOiBOb2RlIHwgU2l0ZUVudHJ5O1xuICB0YWJzOiBBcnJheTxTaWRlYmFyVGFiUmVmPiA9IFtdO1xuICBhY3Rpb25zOiBBcnJheTxDb250ZW50QWN0aW9uUmVmPiA9IFtdO1xuXG4gIHByZXZlbnRGcm9tQ2xvc2luZyA9IGZhbHNlO1xuICBpY29uOiBzdHJpbmcgPSBudWxsO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZXNjYXBlJylcbiAgb25Fc2NhcGVLZXlib2FyZEV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxhbnk+LFxuICAgIHByaXZhdGUgY29udGVudEFwaTogQ29udGVudEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBleHRlbnNpb25zOiBBcHBFeHRlbnNpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgbm9kZXNTZXJ2aWNlOiBOb2Rlc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZW50U2VydmljZTogQ29udGVudFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudGFicyA9IHRoaXMuZXh0ZW5zaW9ucy5nZXRTaWRlYmFyVGFicygpO1xuICAgIHRoaXMuZXh0ZW5zaW9uc1xuICAgICAgLmdldEFsbG93ZWRTaWRlYmFyQWN0aW9ucygpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFjdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy5hY3Rpb25zID0gYWN0aW9ucztcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChpbmZvRHJhd2VyUHJldmlldylcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoaXNJbmZvRHJhd2VyUHJldmlld09wZW5lZCkgPT4ge1xuICAgICAgICB0aGlzLnByZXZlbnRGcm9tQ2xvc2luZyA9IGlzSW5mb0RyYXdlclByZXZpZXdPcGVuZWQ7XG4gICAgICB9KTtcblxuICAgIHRoaXMubm9kZXNTZXJ2aWNlLm5vZGVVcGRhdGVkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgobm9kZTogYW55KSA9PiB7XG4gICAgICB0aGlzLm5vZGUuZW50cnkgPSBub2RlO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRGcm9tQ2xvc2luZykge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0SW5mb0RyYXdlclN0YXRlQWN0aW9uKGZhbHNlKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMubm9kZSkge1xuICAgICAgaWYgKHRoaXMubm9kZVsnaXNMaWJyYXJ5J10pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0RGlzcGxheU5vZGUodGhpcy5ub2RlKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW50cnk6IGFueSA9IHRoaXMubm9kZS5lbnRyeTtcblxuICAgICAgY29uc3QgaWQgPSBlbnRyeS5ub2RlSWQgfHwgZW50cnkuaWQ7XG4gICAgICByZXR1cm4gdGhpcy5sb2FkTm9kZUluZm8oaWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xvc2UoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVG9nZ2xlSW5mb0RyYXdlckFjdGlvbigpKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZE5vZGVJbmZvKG5vZGVJZDogc3RyaW5nKSB7XG4gICAgaWYgKG5vZGVJZCkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuXG4gICAgICB0aGlzLmNvbnRlbnRBcGkuZ2V0Tm9kZUluZm8obm9kZUlkKS5zdWJzY3JpYmUoXG4gICAgICAgIChlbnRpdHkpID0+IHtcbiAgICAgICAgICB0aGlzLnNldERpc3BsYXlOb2RlKGVudGl0eSk7XG4gICAgICAgICAgdGhpcy5ub2RlLmVudHJ5ID0gZW50aXR5O1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgICgpID0+ICh0aGlzLmlzTG9hZGluZyA9IGZhbHNlKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldERpc3BsYXlOb2RlKG5vZGU6IGFueSkge1xuICAgIHRoaXMuZGlzcGxheU5vZGUgPSBub2RlO1xuICAgIHRoaXMuaWNvbiA9IHRoaXMuY29udGVudFNlcnZpY2UuZ2V0Tm9kZUljb24obm9kZSk7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJpc0xvYWRpbmdcIj5cbiAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidBUFAuSU5GT19EUkFXRVIuREFUQV9MT0FESU5HJyB8IHRyYW5zbGF0ZVwiIC8+XG48L2Rpdj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nICYmICEhZGlzcGxheU5vZGVcIj5cbiAgPGFkZi1pbmZvLWRyYXdlciBbaWNvbl09XCJpY29uXCIgW3RpdGxlXT1cIm5vZGU/LmVudHJ5Py5uYW1lIHx8ICdBUFAuSU5GT19EUkFXRVIuVElUTEUnXCIgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmU+XG4gICAgPGFjYS10b29sYmFyIFtpdGVtc109XCJhY3Rpb25zXCIgaW5mby1kcmF3ZXItYnV0dG9ucyAvPlxuXG4gICAgPGFkZi1pbmZvLWRyYXdlci10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzXCIgW2ljb25dPVwidGFiLmljb25cIiBbbGFiZWxdPVwidGFiLnRpdGxlXCI+XG4gICAgICA8YWRmLWR5bmFtaWMtdGFiIFtub2RlXT1cIiRhbnkoZGlzcGxheU5vZGUpXCIgW2lkXT1cInRhYi5jb21wb25lbnRcIiBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwidGFiLmNvbXBvbmVudFwiIC8+XG4gICAgPC9hZGYtaW5mby1kcmF3ZXItdGFiPlxuICA8L2FkZi1pbmZvLWRyYXdlcj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -0,0 +1,57 @@
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, Input, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
25
+ import { NodeEntry } from '@alfresco/js-api';
26
+ import { TranslateModule } from '@ngx-translate/core';
27
+ import { MatIconModule } from '@angular/material/icon';
28
+ import * as i0 from "@angular/core";
29
+ import * as i1 from "@ngx-translate/core";
30
+ import * as i2 from "@angular/material/icon";
31
+ class LockedByComponent {
32
+ node;
33
+ text;
34
+ ngOnInit() {
35
+ this.text = this.node?.entry?.properties?.['cm:lockOwner']?.displayName;
36
+ }
37
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: LockedByComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
38
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: LockedByComponent, isStandalone: true, selector: "aca-locked-by", inputs: { node: "node" }, host: { classAttribute: "aca-locked-by" }, ngImport: i0, template: `
39
+ <mat-icon class="aca-locked-by--icon">lock</mat-icon>
40
+ <span class="aca-locked-by--label">{{ 'APP.LOCKED_BY' | translate }}</span>
41
+ <span class="aca-locked-by--name">{{ text }}</span>
42
+ `, isInline: true, styles: [".aca-locked-by{display:flex;align-items:center;color:var(--theme-text-color, rgba(0, 0, 0, .54))}.aca-locked-by--icon{font-size:14px;width:14px;height:14px;min-width:14px}.aca-locked-by--label,.aca-locked-by--name{font-size:12px;padding:0 2px}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
43
+ }
44
+ export { LockedByComponent };
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: LockedByComponent, decorators: [{
46
+ type: Component,
47
+ args: [{ standalone: true, imports: [TranslateModule, MatIconModule], selector: 'aca-locked-by', template: `
48
+ <mat-icon class="aca-locked-by--icon">lock</mat-icon>
49
+ <span class="aca-locked-by--label">{{ 'APP.LOCKED_BY' | translate }}</span>
50
+ <span class="aca-locked-by--name">{{ text }}</span>
51
+ `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
52
+ class: 'aca-locked-by'
53
+ }, styles: [".aca-locked-by{display:flex;align-items:center;color:var(--theme-text-color, rgba(0, 0, 0, .54))}.aca-locked-by--icon{font-size:14px;width:14px;height:14px;min-width:14px}.aca-locked-by--label,.aca-locked-by--name{font-size:12px;padding:0 2px}\n"] }]
54
+ }], propDecorators: { node: [{
55
+ type: Input
56
+ }] } });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ja2VkLWJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2xvY2tlZC1ieS9sb2NrZWQtYnkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7QUFFdkQsTUFnQmEsaUJBQWlCO0lBRTVCLElBQUksQ0FBWTtJQUVULElBQUksQ0FBUztJQUVwQixRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxXQUFXLENBQUM7SUFDMUUsQ0FBQzt1R0FSVSxpQkFBaUI7MkZBQWpCLGlCQUFpQiw4SUFabEI7Ozs7R0FJVCw4VEFOUyxlQUFlLDJGQUFFLGFBQWE7O1NBYzdCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQWhCN0IsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLFlBQy9CLGVBQWUsWUFDZjs7OztHQUlULG1CQUVnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLEtBQUssRUFBRSxlQUFlO3FCQUN2Qjs4QkFJRCxJQUFJO3NCQURILEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGVFbnRyeSB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBNYXRJY29uTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdhY2EtbG9ja2VkLWJ5JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWF0LWljb24gY2xhc3M9XCJhY2EtbG9ja2VkLWJ5LS1pY29uXCI+bG9jazwvbWF0LWljb24+XG4gICAgPHNwYW4gY2xhc3M9XCJhY2EtbG9ja2VkLWJ5LS1sYWJlbFwiPnt7ICdBUFAuTE9DS0VEX0JZJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cImFjYS1sb2NrZWQtYnktLW5hbWVcIj57eyB0ZXh0IH19PC9zcGFuPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9sb2NrZWQtYnkuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2FjYS1sb2NrZWQtYnknXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgTG9ja2VkQnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBub2RlOiBOb2RlRW50cnk7XG5cbiAgcHVibGljIHRleHQ6IHN0cmluZztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRleHQgPSB0aGlzLm5vZGU/LmVudHJ5Py5wcm9wZXJ0aWVzPy5bJ2NtOmxvY2tPd25lciddPy5kaXNwbGF5TmFtZTtcbiAgfVxufVxuIl19