geonetwork-ui 2.6.0-dev.ceb4be4c1 → 2.6.0-dev.d1dbf336f
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/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +8 -4
- package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +5 -2
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +2 -2
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +14 -5
- package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +266 -11
- package/esm2022/libs/ui/search/src/index.mjs +2 -1
- package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +19 -12
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +3 -3
- package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +10 -4
- package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +42 -1
- package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +24 -2
- package/esm2022/translations/de.json +28 -4
- package/esm2022/translations/en.json +28 -4
- package/esm2022/translations/es.json +27 -3
- package/esm2022/translations/fr.json +28 -4
- package/esm2022/translations/it.json +27 -3
- package/esm2022/translations/nl.json +27 -3
- package/esm2022/translations/pt.json +27 -3
- package/fesm2022/geonetwork-ui.mjs +604 -107
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +1 -0
- package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +4 -2
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +1 -0
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts +48 -3
- package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -1
- package/libs/ui/search/src/index.d.ts +1 -0
- package/libs/ui/search/src/index.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +3 -3
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/ui-search.module.d.ts +2 -1
- package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
- package/libs/util/i18n/src/lib/i18n.constants.d.ts +1 -0
- package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
- package/libs/util/i18n/src/lib/language-codes.d.ts +23 -1
- package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +13 -3
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +5 -1
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +6 -3
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +4 -1
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +16 -2
- package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +1 -0
- package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +117 -11
- package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +316 -6
- package/src/libs/ui/search/src/index.ts +1 -0
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +11 -3
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +14 -11
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +1 -1
- package/src/libs/ui/search/src/lib/ui-search.module.ts +3 -0
- package/src/libs/util/i18n/src/lib/i18n.constants.ts +42 -0
- package/src/libs/util/i18n/src/lib/language-codes.ts +23 -1
- package/tailwind.base.css +1 -1
- package/translations/de.json +28 -4
- package/translations/en.json +28 -4
- package/translations/es.json +27 -3
- package/translations/fr.json +28 -4
- package/translations/it.json +27 -3
- package/translations/nl.json +27 -3
- package/translations/pt.json +27 -3
- package/translations/sk.json +27 -3
|
@@ -1,18 +1,273 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
1
|
+
import { ChangeDetectorRef, Component, ElementRef, Input, QueryList, ViewChildren, ViewContainerRef, } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { CheckToggleComponent } from '../../../../../../../libs/ui/inputs/src';
|
|
4
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
3
|
+
import { ButtonComponent, CheckToggleComponent } from '../../../../../../../libs/ui/inputs/src';
|
|
4
|
+
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
5
|
+
import { NgIconComponent, provideIcons, provideNgIconsConfig, } from '@ng-icons/core';
|
|
6
|
+
import { iconoirCheckCircle, iconoirCircle, iconoirSettings, } from '@ng-icons/iconoir';
|
|
7
|
+
import { matMoreHorizOutline } from '@ng-icons/material-icons/outline';
|
|
8
|
+
import { EditorFacade } from '../../+state/editor.facade';
|
|
9
|
+
import { ConfirmationDialogComponent } from '../../../../../../../libs/ui/elements/src';
|
|
10
|
+
import { MatDialog } from '@angular/material/dialog';
|
|
11
|
+
import { RecordsRepositoryInterface } from '../../../../../../../libs/common/domain/src/lib/repository/records-repository.interface';
|
|
12
|
+
import { map, Subscription } from 'rxjs';
|
|
13
|
+
import { Overlay } from '@angular/cdk/overlay';
|
|
14
|
+
import { TemplatePortal } from '@angular/cdk/portal';
|
|
15
|
+
import { ActionMenuComponent } from '../../../../../../../libs/ui/search/src';
|
|
5
16
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "
|
|
17
|
+
import * as i1 from "../../+state/editor.facade";
|
|
18
|
+
import * as i2 from "@angular/material/dialog";
|
|
19
|
+
import * as i3 from "@ngx-translate/core";
|
|
20
|
+
import * as i4 from "../../../../../../../libs/common/domain/src/lib/repository/records-repository.interface";
|
|
21
|
+
import * as i5 from "@angular/cdk/overlay";
|
|
22
|
+
import * as i6 from "@angular/common";
|
|
23
|
+
const extraFlagMap = {
|
|
24
|
+
ar: 'arab',
|
|
25
|
+
en: 'gb',
|
|
26
|
+
ko: 'kr',
|
|
27
|
+
cs: 'cz',
|
|
28
|
+
zh: 'cn',
|
|
29
|
+
ca: 'es-ct',
|
|
30
|
+
rm: 'ch',
|
|
31
|
+
da: 'dk',
|
|
32
|
+
sv: 'se',
|
|
33
|
+
cy: 'gb-wls',
|
|
34
|
+
hy: 'am',
|
|
35
|
+
ka: 'ge',
|
|
36
|
+
uk: 'ua',
|
|
37
|
+
};
|
|
7
38
|
export class MultilingualPanelComponent {
|
|
8
|
-
|
|
9
|
-
this.
|
|
39
|
+
set record(value) {
|
|
40
|
+
this._record = value;
|
|
41
|
+
this.isMultilingual = value.otherLanguages.length > 0;
|
|
42
|
+
this.editTranslations = false;
|
|
43
|
+
this.recordLanguages = [...value.otherLanguages, value.defaultLanguage];
|
|
44
|
+
this.selectedLanguages = this.recordLanguages;
|
|
45
|
+
this.formLanguage = value.defaultLanguage;
|
|
10
46
|
}
|
|
11
|
-
|
|
12
|
-
|
|
47
|
+
constructor(facade, dialog, translateService, recordsRepository, overlay, viewContainerRef, cdr) {
|
|
48
|
+
this.facade = facade;
|
|
49
|
+
this.dialog = dialog;
|
|
50
|
+
this.translateService = translateService;
|
|
51
|
+
this.recordsRepository = recordsRepository;
|
|
52
|
+
this.overlay = overlay;
|
|
53
|
+
this.viewContainerRef = viewContainerRef;
|
|
54
|
+
this.cdr = cdr;
|
|
55
|
+
this.selectedLanguages = [];
|
|
56
|
+
this.recordLanguages = [];
|
|
57
|
+
this.formLanguage = '';
|
|
58
|
+
this.isActionMenuOpen = false;
|
|
59
|
+
this.subscription = new Subscription();
|
|
60
|
+
this.supportedLanguages$ = this.recordsRepository
|
|
61
|
+
.getApplicationLanguages()
|
|
62
|
+
.pipe(map((languages) => this.sortLanguages(languages)));
|
|
63
|
+
}
|
|
64
|
+
ngOnDestroy() {
|
|
65
|
+
this.subscription.unsubscribe();
|
|
66
|
+
}
|
|
67
|
+
sortLanguages(languages) {
|
|
68
|
+
return languages
|
|
69
|
+
.map((lang) => {
|
|
70
|
+
const label = this.translateService.instant('language.' + lang);
|
|
71
|
+
const isTranslated = label !== 'language.' + lang;
|
|
72
|
+
return {
|
|
73
|
+
lang,
|
|
74
|
+
label,
|
|
75
|
+
isTranslated,
|
|
76
|
+
};
|
|
77
|
+
})
|
|
78
|
+
.sort((a, b) => {
|
|
79
|
+
if (a.isTranslated && !b.isTranslated)
|
|
80
|
+
return -1;
|
|
81
|
+
if (!a.isTranslated && b.isTranslated)
|
|
82
|
+
return 1;
|
|
83
|
+
return a.label.localeCompare(b.label);
|
|
84
|
+
})
|
|
85
|
+
.map((item) => item.lang);
|
|
86
|
+
}
|
|
87
|
+
toggleLanguageSelection() {
|
|
88
|
+
this.editTranslations = !this.editTranslations;
|
|
89
|
+
}
|
|
90
|
+
getIconClass(lang) {
|
|
91
|
+
return extraFlagMap[lang]
|
|
92
|
+
? `fi fi-${extraFlagMap[lang]} w-4 h-3`
|
|
93
|
+
: `fi fi-${lang} w-4 h-3`;
|
|
94
|
+
}
|
|
95
|
+
switchMultilingual() {
|
|
96
|
+
if (this.isMultilingual && this.selectedLanguages.length > 1) {
|
|
97
|
+
this.confirmDeleteAction();
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
this.isMultilingual = true;
|
|
101
|
+
this.editTranslations = true;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
getExtraClass(lang) {
|
|
105
|
+
const baseClass = 'h-[34px] w-full font-bold justify-start hover:bg-white';
|
|
106
|
+
if (this.selectedLanguages.includes(lang)) {
|
|
107
|
+
return `${baseClass} bg-white border border-black`;
|
|
108
|
+
}
|
|
109
|
+
return baseClass;
|
|
110
|
+
}
|
|
111
|
+
toggleLanguage(lang) {
|
|
112
|
+
if (this.selectedLanguages.includes(lang)) {
|
|
113
|
+
this.removeSelectedLanguage(lang);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
this.selectedLanguages.push(lang);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
removeSelectedLanguage(lang) {
|
|
120
|
+
this.selectedLanguages = this.selectedLanguages.filter((language) => language !== lang);
|
|
121
|
+
}
|
|
122
|
+
validateTranslations() {
|
|
123
|
+
const equalLength = this.selectedLanguages.length === this.recordLanguages.length;
|
|
124
|
+
if (this.selectedLanguages.length < this.recordLanguages.length ||
|
|
125
|
+
(equalLength && this.selectedLanguages !== this.recordLanguages)) {
|
|
126
|
+
this.confirmDeleteAction(this.selectedLanguages);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
this.updateTranslations();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
updateTranslations() {
|
|
133
|
+
this.facade.updateRecordField('otherLanguages', this.selectedLanguages.filter((lang) => lang !== this.formLanguage));
|
|
134
|
+
this.recordLanguages = this.selectedLanguages;
|
|
135
|
+
this.editTranslations = false;
|
|
136
|
+
}
|
|
137
|
+
switchFormLang(lang) {
|
|
138
|
+
// TO IMPLEMENT FURTHER
|
|
139
|
+
}
|
|
140
|
+
switchDefaultLang(lang) {
|
|
141
|
+
this.formLanguage = lang;
|
|
142
|
+
this.facade.updateRecordField('defaultLanguage', lang);
|
|
143
|
+
this.facade.updateRecordField('otherLanguages', this.selectedLanguages.filter((lang) => lang !== this.formLanguage));
|
|
144
|
+
this.closeActionMenu();
|
|
145
|
+
}
|
|
146
|
+
confirmDeleteAction(lang) {
|
|
147
|
+
const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
|
|
148
|
+
data: {
|
|
149
|
+
title: this.translateService.instant('editor.record.multilingual.confirmation.title'),
|
|
150
|
+
message: this.translateService.instant('editor.record.multilingual.confirmation.message'),
|
|
151
|
+
confirmText: this.translateService.instant('editor.record.multilingual.confirmation.confirmText'),
|
|
152
|
+
cancelText: this.translateService.instant('editor.record.multilingual.confirmation.cancelText'),
|
|
153
|
+
},
|
|
154
|
+
restoreFocus: true,
|
|
155
|
+
});
|
|
156
|
+
this.subscription.add(dialogRef.afterClosed().subscribe((confirmed) => {
|
|
157
|
+
if (confirmed) {
|
|
158
|
+
if (lang) {
|
|
159
|
+
if (!Array.isArray(lang)) {
|
|
160
|
+
this.removeSelectedLanguage(lang);
|
|
161
|
+
this.closeActionMenu();
|
|
162
|
+
}
|
|
163
|
+
this.updateTranslations();
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
this.facade.updateRecordField('otherLanguages', []);
|
|
167
|
+
this.isMultilingual = false;
|
|
168
|
+
this.selectedLanguages = [];
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
this.isMultilingual = true;
|
|
173
|
+
this.selectedLanguages = this.recordLanguages;
|
|
174
|
+
}
|
|
175
|
+
this.editTranslations = false;
|
|
176
|
+
}));
|
|
177
|
+
}
|
|
178
|
+
isFirstUnsupported(index) {
|
|
179
|
+
const langs = this.sortLanguages(this.recordLanguages);
|
|
180
|
+
return (langs[index].length === 3 &&
|
|
181
|
+
langs.slice(0, index).every((lang) => lang.length !== 3));
|
|
182
|
+
}
|
|
183
|
+
isLangSupported(lang) {
|
|
184
|
+
return lang.length === 2;
|
|
185
|
+
}
|
|
186
|
+
getToggleTitle(lang) {
|
|
187
|
+
if (lang === this._record.defaultLanguage) {
|
|
188
|
+
return this.translateService.instant('editor.record.form.multilingual.forbidden');
|
|
189
|
+
}
|
|
190
|
+
return '';
|
|
191
|
+
}
|
|
192
|
+
openActionMenu(item, template) {
|
|
193
|
+
this.isActionMenuOpen = true;
|
|
194
|
+
const index = this.sortLanguages(this.selectedLanguages).indexOf(item);
|
|
195
|
+
const buttonElement = this.actionMenuButtons.toArray()[index];
|
|
196
|
+
const positionStrategy = this.overlay
|
|
197
|
+
.position()
|
|
198
|
+
.flexibleConnectedTo(buttonElement)
|
|
199
|
+
.withFlexibleDimensions(true)
|
|
200
|
+
.withPush(true)
|
|
201
|
+
.withPositions([
|
|
202
|
+
{
|
|
203
|
+
originX: 'end',
|
|
204
|
+
originY: 'bottom',
|
|
205
|
+
overlayX: 'end',
|
|
206
|
+
overlayY: 'top',
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
originX: 'end',
|
|
210
|
+
originY: 'top',
|
|
211
|
+
overlayX: 'end',
|
|
212
|
+
overlayY: 'bottom',
|
|
213
|
+
},
|
|
214
|
+
]);
|
|
215
|
+
this.overlayRef = this.overlay.create({
|
|
216
|
+
hasBackdrop: true,
|
|
217
|
+
backdropClass: 'cdk-overlay-transparent-backdrop',
|
|
218
|
+
positionStrategy: positionStrategy,
|
|
219
|
+
scrollStrategy: this.overlay.scrollStrategies.reposition(),
|
|
220
|
+
});
|
|
221
|
+
const portal = new TemplatePortal(template, this.viewContainerRef);
|
|
222
|
+
this.overlayRef.attach(portal);
|
|
223
|
+
this.subscription.add(this.overlayRef.backdropClick().subscribe(() => {
|
|
224
|
+
this.closeActionMenu();
|
|
225
|
+
}));
|
|
226
|
+
}
|
|
227
|
+
closeActionMenu() {
|
|
228
|
+
if (this.overlayRef) {
|
|
229
|
+
this.isActionMenuOpen = false;
|
|
230
|
+
this.overlayRef.dispose();
|
|
231
|
+
this.cdr.markForCheck();
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultilingualPanelComponent, deps: [{ token: i1.EditorFacade }, { token: i2.MatDialog }, { token: i3.TranslateService }, { token: i4.RecordsRepositoryInterface }, { token: i5.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
235
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MultilingualPanelComponent, isStandalone: true, selector: "gn-ui-multilingual-panel", inputs: { record: "record" }, providers: [
|
|
236
|
+
provideIcons({
|
|
237
|
+
iconoirSettings,
|
|
238
|
+
matMoreHorizOutline,
|
|
239
|
+
iconoirCheckCircle,
|
|
240
|
+
iconoirCircle,
|
|
241
|
+
}),
|
|
242
|
+
provideNgIconsConfig({
|
|
243
|
+
size: '1.25em',
|
|
244
|
+
}),
|
|
245
|
+
], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"flex flex-col h-full w-[302px] bg-neutral-100 border-l border-gray-300 py-8 px-3 gap-6 overflow-auto\"\n>\n <div class=\"flex flex-row px-2 justify-between\">\n <span class=\"text-3xl font-title text-black/80\" translate\n >editor.record.form.multilingual.title</span\n >\n <button\n [title]=\"'editor.record.form.multilingual.open' | translate\"\n (click)=\"toggleLanguageSelection()\"\n *ngIf=\"isMultilingual\"\n data-test=\"activateSelection\"\n >\n <ng-icon class=\"mt-1\" name=\"iconoirSettings\"></ng-icon>\n </button>\n </div>\n <div class=\"flex flex-col gap-2\" *ngIf=\"editTranslations || !isMultilingual\">\n <gn-ui-check-toggle\n class=\"p-2\"\n [label]=\"'editor.record.form.multilingual.enable' | translate\"\n [color]=\"'primary'\"\n [(value)]=\"isMultilingual\"\n (toggled)=\"switchMultilingual($event)\"\n ></gn-ui-check-toggle>\n <div *ngIf=\"isMultilingual\" class=\"flex flex-col gap-2\">\n <div class=\"flex flex-row justify-between border-t border-gray-300 p-3\">\n <span class=\"mt-2 text-sm text-gray-600\" translate\n >editor.record.form.multilingual.activate</span\n >\n <gn-ui-button\n extraClass=\"w-16 h-8 font-bold\"\n type=\"gray\"\n (buttonClick)=\"validateTranslations()\"\n data-test=\"validateSelection\"\n >{{ 'editor.record.form.multilingual.validate' | translate }}\n </gn-ui-button>\n </div>\n <ng-container *ngIf=\"supportedLanguages$ | async as languages\">\n <div\n class=\"flex flex-col gap-2 w-full px-2\"\n data-test=\"langAvailable\"\n *ngFor=\"let lang of languages\"\n >\n <gn-ui-button\n [extraClass]=\"getExtraClass(lang)\"\n type=\"gray\"\n (buttonClick)=\"toggleLanguage(lang)\"\n [disabled]=\"lang === _record.defaultLanguage\"\n [title]=\"getToggleTitle(lang)\"\n >\n <span [class]=\"getIconClass(lang)\"></span>\n <span class=\"ml-2\">{{ 'language.' + lang | translate }}</span>\n </gn-ui-button>\n </div>\n </ng-container>\n </div>\n </div>\n <div *ngIf=\"!editTranslations && isMultilingual\" class=\"flex flex-col gap-2\">\n <gn-ui-button\n *ngFor=\"let recordLang of sortLanguages(recordLanguages); let i = index\"\n extraClass=\"flex flex-row justify-between bg-white border border-white rounded mb-1 h-[34px] w-full\"\n [ngClass]=\"{\n 'mt-8': isFirstUnsupported(i),\n '': true,\n }\"\n (buttonClick)=\"switchFormLang(recordLang)\"\n type=\"outline\"\n data-test=\"langSwitch\"\n >\n <div class=\"flex flex-row gap-2 items-center\">\n <ng-icon\n *ngIf=\"recordLang === formLanguage\"\n class=\"text-primary mt-1\"\n name=\"iconoirCheckCircle\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"recordLang !== formLanguage\"\n class=\"text-gray-800 mt-1\"\n name=\"iconoirCircle\"\n ></ng-icon>\n <span\n *ngIf=\"recordLang.length === 2\"\n [class]=\"getIconClass(recordLang) + 'mt-1'\"\n ></span>\n <span [ngClass]=\"recordLang === formLanguage ? 'text-black' : ''\">{{\n isLangSupported(recordLang)\n ? ('language.' + recordLang | translate)\n : recordLang.toUpperCase()\n }}</span>\n </div>\n <div class=\"flex flex-row gap-2 items-center\">\n <span\n *ngIf=\"recordLang === formLanguage\"\n class=\"text-xs text-base\"\n translate\n >editor.record.form.multilingual.default</span\n >\n <button\n (click)=\"\n openActionMenu(recordLang, template); $event.stopPropagation()\n \"\n cdkOverlayOrigin\n #actionMenuButton\n >\n <ng-icon class=\"pb-5\" name=\"matMoreHorizOutline\"></ng-icon>\n </button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDelete]=\"recordLang !== _record.defaultLanguage\"\n page=\"record\"\n (delete)=\"confirmDeleteAction(recordLang)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (switch)=\"switchDefaultLang(recordLang)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </div>\n </gn-ui-button>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "component", type: CheckToggleComponent, selector: "gn-ui-check-toggle", inputs: ["title", "label", "value", "color"], outputs: ["toggled"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "canDelete", "page"], outputs: ["duplicate", "delete", "closeActionMenu", "rollback", "switch"] }] }); }
|
|
13
246
|
}
|
|
14
247
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultilingualPanelComponent, decorators: [{
|
|
15
248
|
type: Component,
|
|
16
|
-
args: [{ selector: 'gn-ui-multilingual-panel', standalone: true, imports: [
|
|
17
|
-
|
|
18
|
-
|
|
249
|
+
args: [{ selector: 'gn-ui-multilingual-panel', standalone: true, imports: [
|
|
250
|
+
CommonModule,
|
|
251
|
+
CheckToggleComponent,
|
|
252
|
+
TranslateModule,
|
|
253
|
+
ButtonComponent,
|
|
254
|
+
NgIconComponent,
|
|
255
|
+
ActionMenuComponent,
|
|
256
|
+
], providers: [
|
|
257
|
+
provideIcons({
|
|
258
|
+
iconoirSettings,
|
|
259
|
+
matMoreHorizOutline,
|
|
260
|
+
iconoirCheckCircle,
|
|
261
|
+
iconoirCircle,
|
|
262
|
+
}),
|
|
263
|
+
provideNgIconsConfig({
|
|
264
|
+
size: '1.25em',
|
|
265
|
+
}),
|
|
266
|
+
], template: "<div\n class=\"flex flex-col h-full w-[302px] bg-neutral-100 border-l border-gray-300 py-8 px-3 gap-6 overflow-auto\"\n>\n <div class=\"flex flex-row px-2 justify-between\">\n <span class=\"text-3xl font-title text-black/80\" translate\n >editor.record.form.multilingual.title</span\n >\n <button\n [title]=\"'editor.record.form.multilingual.open' | translate\"\n (click)=\"toggleLanguageSelection()\"\n *ngIf=\"isMultilingual\"\n data-test=\"activateSelection\"\n >\n <ng-icon class=\"mt-1\" name=\"iconoirSettings\"></ng-icon>\n </button>\n </div>\n <div class=\"flex flex-col gap-2\" *ngIf=\"editTranslations || !isMultilingual\">\n <gn-ui-check-toggle\n class=\"p-2\"\n [label]=\"'editor.record.form.multilingual.enable' | translate\"\n [color]=\"'primary'\"\n [(value)]=\"isMultilingual\"\n (toggled)=\"switchMultilingual($event)\"\n ></gn-ui-check-toggle>\n <div *ngIf=\"isMultilingual\" class=\"flex flex-col gap-2\">\n <div class=\"flex flex-row justify-between border-t border-gray-300 p-3\">\n <span class=\"mt-2 text-sm text-gray-600\" translate\n >editor.record.form.multilingual.activate</span\n >\n <gn-ui-button\n extraClass=\"w-16 h-8 font-bold\"\n type=\"gray\"\n (buttonClick)=\"validateTranslations()\"\n data-test=\"validateSelection\"\n >{{ 'editor.record.form.multilingual.validate' | translate }}\n </gn-ui-button>\n </div>\n <ng-container *ngIf=\"supportedLanguages$ | async as languages\">\n <div\n class=\"flex flex-col gap-2 w-full px-2\"\n data-test=\"langAvailable\"\n *ngFor=\"let lang of languages\"\n >\n <gn-ui-button\n [extraClass]=\"getExtraClass(lang)\"\n type=\"gray\"\n (buttonClick)=\"toggleLanguage(lang)\"\n [disabled]=\"lang === _record.defaultLanguage\"\n [title]=\"getToggleTitle(lang)\"\n >\n <span [class]=\"getIconClass(lang)\"></span>\n <span class=\"ml-2\">{{ 'language.' + lang | translate }}</span>\n </gn-ui-button>\n </div>\n </ng-container>\n </div>\n </div>\n <div *ngIf=\"!editTranslations && isMultilingual\" class=\"flex flex-col gap-2\">\n <gn-ui-button\n *ngFor=\"let recordLang of sortLanguages(recordLanguages); let i = index\"\n extraClass=\"flex flex-row justify-between bg-white border border-white rounded mb-1 h-[34px] w-full\"\n [ngClass]=\"{\n 'mt-8': isFirstUnsupported(i),\n '': true,\n }\"\n (buttonClick)=\"switchFormLang(recordLang)\"\n type=\"outline\"\n data-test=\"langSwitch\"\n >\n <div class=\"flex flex-row gap-2 items-center\">\n <ng-icon\n *ngIf=\"recordLang === formLanguage\"\n class=\"text-primary mt-1\"\n name=\"iconoirCheckCircle\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"recordLang !== formLanguage\"\n class=\"text-gray-800 mt-1\"\n name=\"iconoirCircle\"\n ></ng-icon>\n <span\n *ngIf=\"recordLang.length === 2\"\n [class]=\"getIconClass(recordLang) + 'mt-1'\"\n ></span>\n <span [ngClass]=\"recordLang === formLanguage ? 'text-black' : ''\">{{\n isLangSupported(recordLang)\n ? ('language.' + recordLang | translate)\n : recordLang.toUpperCase()\n }}</span>\n </div>\n <div class=\"flex flex-row gap-2 items-center\">\n <span\n *ngIf=\"recordLang === formLanguage\"\n class=\"text-xs text-base\"\n translate\n >editor.record.form.multilingual.default</span\n >\n <button\n (click)=\"\n openActionMenu(recordLang, template); $event.stopPropagation()\n \"\n cdkOverlayOrigin\n #actionMenuButton\n >\n <ng-icon class=\"pb-5\" name=\"matMoreHorizOutline\"></ng-icon>\n </button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDelete]=\"recordLang !== _record.defaultLanguage\"\n page=\"record\"\n (delete)=\"confirmDeleteAction(recordLang)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (switch)=\"switchDefaultLang(recordLang)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </div>\n </gn-ui-button>\n </div>\n</div>\n" }]
|
|
267
|
+
}], ctorParameters: () => [{ type: i1.EditorFacade }, { type: i2.MatDialog }, { type: i3.TranslateService }, { type: i4.RecordsRepositoryInterface }, { type: i5.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }], propDecorators: { record: [{
|
|
268
|
+
type: Input
|
|
269
|
+
}], actionMenuButtons: [{
|
|
270
|
+
type: ViewChildren,
|
|
271
|
+
args: ['actionMenuButton', { read: ElementRef }]
|
|
272
|
+
}] } });
|
|
273
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlsaW5ndWFsLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9lZGl0b3Ivc3JjL2xpYi9jb21wb25lbnRzL211bHRpbGluZ3VhbC1wYW5lbC9tdWx0aWxpbmd1YWwtcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2VkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGlsaW5ndWFsLXBhbmVsL211bHRpbGluZ3VhbC1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFDL0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRXZFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsWUFBWSxFQUNaLG9CQUFvQixHQUNyQixNQUFNLGdCQUFnQixDQUFBO0FBQ3ZCLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLGVBQWUsR0FDaEIsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDekQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFDdkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFN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LFFBQVE7YUFDZixDQUFDO1NBQ0gsK0dBbUJ5QyxVQUFVLDZCQzFGdEQsaTZJQXdIQSx5RERsRUksWUFBWSxtWkFDWixvQkFBb0Isa0lBQ3BCLGVBQWUsbU9BQ2YsZUFBZSwrSEFDZixlQUFlLDZHQUNmLG1CQUFtQjs7NEZBZ0JWLDBCQUEwQjtrQkF6QnRDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsbUJBQW1CO3FCQUNwQixhQUNVO3dCQUNULFlBQVksQ0FBQzs0QkFDWCxlQUFlOzRCQUNmLG1CQUFtQjs0QkFDbkIsa0JBQWtCOzRCQUNsQixhQUFhO3lCQUNkLENBQUM7d0JBQ0Ysb0JBQW9CLENBQUM7NEJBQ25CLElBQUksRUFBRSxRQUFRO3lCQUNmLENBQUM7cUJBQ0g7c1FBV1ksTUFBTTtzQkFBbEIsS0FBSztnQkFTTixpQkFBaUI7c0JBRGhCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQsIENoZWNrVG9nZ2xlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IENhdGFsb2dSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQge1xuICBOZ0ljb25Db21wb25lbnQsXG4gIHByb3ZpZGVJY29ucyxcbiAgcHJvdmlkZU5nSWNvbnNDb25maWcsXG59IGZyb20gJ0BuZy1pY29ucy9jb3JlJ1xuaW1wb3J0IHtcbiAgaWNvbm9pckNoZWNrQ2lyY2xlLFxuICBpY29ub2lyQ2lyY2xlLFxuICBpY29ub2lyU2V0dGluZ3MsXG59IGZyb20gJ0BuZy1pY29ucy9pY29ub2lyJ1xuaW1wb3J0IHsgbWF0TW9yZUhvcml6T3V0bGluZSB9IGZyb20gJ0BuZy1pY29ucy9tYXRlcmlhbC1pY29ucy9vdXRsaW5lJ1xuaW1wb3J0IHsgRWRpdG9yRmFjYWRlIH0gZnJvbSAnLi4vLi4vK3N0YXRlL2VkaXRvci5mYWNhZGUnXG5pbXBvcnQgeyBDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2VsZW1lbnRzL3NyYydcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZydcbmltcG9ydCB7IFJlY29yZHNSZXBvc2l0b3J5SW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvcmVwb3NpdG9yeS9yZWNvcmRzLXJlcG9zaXRvcnkuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgbWFwLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5J1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJ1xuaW1wb3J0IHsgQWN0aW9uTWVudUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc2VhcmNoL3NyYydcblxuY29uc3QgZXh0cmFGbGFnTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICBhcjogJ2FyYWInLFxuICBlbjogJ2diJyxcbiAga286ICdrcicsXG4gIGNzOiAnY3onLFxuICB6aDogJ2NuJyxcbiAgY2E6ICdlcy1jdCcsXG4gIHJtOiAnY2gnLFxuICBkYTogJ2RrJyxcbiAgc3Y6ICdzZScsXG4gIGN5OiAnZ2Itd2xzJyxcbiAgaHk6ICdhbScsXG4gIGthOiAnZ2UnLFxuICB1azogJ3VhJyxcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktbXVsdGlsaW5ndWFsLXBhbmVsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBDaGVja1RvZ2dsZUNvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIE5nSWNvbkNvbXBvbmVudCxcbiAgICBBY3Rpb25NZW51Q29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBwcm92aWRlSWNvbnMoe1xuICAgICAgaWNvbm9pclNldHRpbmdzLFxuICAgICAgbWF0TW9yZUhvcml6T3V0bGluZSxcbiAgICAgIGljb25vaXJDaGVja0NpcmNsZSxcbiAgICAgIGljb25vaXJDaXJjbGUsXG4gICAgfSksXG4gICAgcHJvdmlkZU5nSWNvbnNDb25maWcoe1xuICAgICAgc2l6ZTogJzEuMjVlbScsXG4gICAgfSksXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aWxpbmd1YWwtcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbXVsdGlsaW5ndWFsLXBhbmVsLmNvbXBvbmVudC5jc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBNdWx0aWxpbmd1YWxQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIGlzTXVsdGlsaW5ndWFsOiBib29sZWFuXG4gIF9yZWNvcmQ6IENhdGFsb2dSZWNvcmRcbiAgZWRpdFRyYW5zbGF0aW9uczogYm9vbGVhblxuICBzZWxlY3RlZExhbmd1YWdlcyA9IFtdXG4gIHJlY29yZExhbmd1YWdlcyA9IFtdXG4gIGZvcm1MYW5ndWFnZSA9ICcnXG4gIEBJbnB1dCgpIHNldCByZWNvcmQodmFsdWU6IENhdGFsb2dSZWNvcmQpIHtcbiAgICB0aGlzLl9yZWNvcmQgPSB2YWx1ZVxuICAgIHRoaXMuaXNNdWx0aWxpbmd1YWwgPSB2YWx1ZS5vdGhlckxhbmd1YWdlcy5sZW5ndGggPiAwXG4gICAgdGhpcy5lZGl0VHJhbnNsYXRpb25zID0gZmFsc2VcbiAgICB0aGlzLnJlY29yZExhbmd1YWdlcyA9IFsuLi52YWx1ZS5vdGhlckxhbmd1YWdlcywgdmFsdWUuZGVmYXVsdExhbmd1YWdlXVxuICAgIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZXMgPSB0aGlzLnJlY29yZExhbmd1YWdlc1xuICAgIHRoaXMuZm9ybUxhbmd1YWdlID0gdmFsdWUuZGVmYXVsdExhbmd1YWdlXG4gIH1cbiAgQFZpZXdDaGlsZHJlbignYWN0aW9uTWVudUJ1dHRvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBhY3Rpb25NZW51QnV0dG9ucyE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPlxuICBwcml2YXRlIG92ZXJsYXlSZWYhOiBPdmVybGF5UmVmXG5cbiAgaXNBY3Rpb25NZW51T3BlbiA9IGZhbHNlXG4gIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKVxuXG4gIHN1cHBvcnRlZExhbmd1YWdlcyQgPSB0aGlzLnJlY29yZHNSZXBvc2l0b3J5XG4gICAgLmdldEFwcGxpY2F0aW9uTGFuZ3VhZ2VzKClcbiAgICAucGlwZShtYXAoKGxhbmd1YWdlcykgPT4gdGhpcy5zb3J0TGFuZ3VhZ2VzKGxhbmd1YWdlcykpKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBmYWNhZGU6IEVkaXRvckZhY2FkZSxcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVjb3Jkc1JlcG9zaXRvcnk6IFJlY29yZHNSZXBvc2l0b3J5SW50ZXJmYWNlLFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXG4gIH1cblxuICBzb3J0TGFuZ3VhZ2VzKGxhbmd1YWdlczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gbGFuZ3VhZ2VzXG4gICAgICAubWFwKChsYW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2xhbmd1YWdlLicgKyBsYW5nKVxuICAgICAgICBjb25zdCBpc1RyYW5zbGF0ZWQgPSBsYWJlbCAhPT0gJ2xhbmd1YWdlLicgKyBsYW5nXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsYW5nLFxuICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgIGlzVHJhbnNsYXRlZCxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGlmIChhLmlzVHJhbnNsYXRlZCAmJiAhYi5pc1RyYW5zbGF0ZWQpIHJldHVybiAtMVxuICAgICAgICBpZiAoIWEuaXNUcmFuc2xhdGVkICYmIGIuaXNUcmFuc2xhdGVkKSByZXR1cm4gMVxuXG4gICAgICAgIHJldHVybiBhLmxhYmVsLmxvY2FsZUNvbXBhcmUoYi5sYWJlbClcbiAgICAgIH0pXG4gICAgICAubWFwKChpdGVtKSA9PiBpdGVtLmxhbmcpXG4gIH1cblxuICB0b2dnbGVMYW5ndWFnZVNlbGVjdGlvbigpIHtcbiAgICB0aGlzLmVkaXRUcmFuc2xhdGlvbnMgPSAhdGhpcy5lZGl0VHJhbnNsYXRpb25zXG4gIH1cblxuICBnZXRJY29uQ2xhc3MobGFuZzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGV4dHJhRmxhZ01hcFtsYW5nXVxuICAgICAgPyBgZmkgZmktJHtleHRyYUZsYWdNYXBbbGFuZ119IHctNCBoLTNgXG4gICAgICA6IGBmaSBmaS0ke2xhbmd9IHctNCBoLTNgXG4gIH1cblxuICBzd2l0Y2hNdWx0aWxpbmd1YWwoKSB7XG4gICAgaWYgKHRoaXMuaXNNdWx0aWxpbmd1YWwgJiYgdGhpcy5zZWxlY3RlZExhbmd1YWdlcy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLmNvbmZpcm1EZWxldGVBY3Rpb24oKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTXVsdGlsaW5ndWFsID0gdHJ1ZVxuICAgICAgdGhpcy5lZGl0VHJhbnNsYXRpb25zID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGdldEV4dHJhQ2xhc3MobGFuZzogc3RyaW5nKSB7XG4gICAgY29uc3QgYmFzZUNsYXNzID0gJ2gtWzM0cHhdIHctZnVsbCBmb250LWJvbGQganVzdGlmeS1zdGFydCBob3ZlcjpiZy13aGl0ZSdcbiAgICBpZiAodGhpcy5zZWxlY3RlZExhbmd1YWdlcy5pbmNsdWRlcyhsYW5nKSkge1xuICAgICAgcmV0dXJuIGAke2Jhc2VDbGFzc30gYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ibGFja2BcbiAgICB9XG4gICAgcmV0dXJuIGJhc2VDbGFzc1xuICB9XG5cbiAgdG9nZ2xlTGFuZ3VhZ2UobGFuZzogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRMYW5ndWFnZXMuaW5jbHVkZXMobGFuZykpIHtcbiAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWRMYW5ndWFnZShsYW5nKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTGFuZ3VhZ2VzLnB1c2gobGFuZylcbiAgICB9XG4gIH1cblxuICByZW1vdmVTZWxlY3RlZExhbmd1YWdlKGxhbmc6IHN0cmluZykge1xuICAgIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZXMgPSB0aGlzLnNlbGVjdGVkTGFuZ3VhZ2VzLmZpbHRlcihcbiAgICAgIChsYW5ndWFnZSkgPT4gbGFuZ3VhZ2UgIT09IGxhbmdcbiAgICApXG4gIH1cblxuICB2YWxpZGF0ZVRyYW5zbGF0aW9ucygpIHtcbiAgICBjb25zdCBlcXVhbExlbmd0aCA9XG4gICAgICB0aGlzLnNlbGVjdGVkTGFuZ3VhZ2VzLmxlbmd0aCA9PT0gdGhpcy5yZWNvcmRMYW5ndWFnZXMubGVuZ3RoXG4gICAgaWYgKFxuICAgICAgdGhpcy5zZWxlY3RlZExhbmd1YWdlcy5sZW5ndGggPCB0aGlzLnJlY29yZExhbmd1YWdlcy5sZW5ndGggfHxcbiAgICAgIChlcXVhbExlbmd0aCAmJiB0aGlzLnNlbGVjdGVkTGFuZ3VhZ2VzICE9PSB0aGlzLnJlY29yZExhbmd1YWdlcylcbiAgICApIHtcbiAgICAgIHRoaXMuY29uZmlybURlbGV0ZUFjdGlvbih0aGlzLnNlbGVjdGVkTGFuZ3VhZ2VzKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVRyYW5zbGF0aW9ucygpXG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVHJhbnNsYXRpb25zKCkge1xuICAgIHRoaXMuZmFjYWRlLnVwZGF0ZVJlY29yZEZpZWxkKFxuICAgICAgJ290aGVyTGFuZ3VhZ2VzJyxcbiAgICAgIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZXMuZmlsdGVyKChsYW5nKSA9PiBsYW5nICE9PSB0aGlzLmZvcm1MYW5ndWFnZSlcbiAgICApXG4gICAgdGhpcy5yZWNvcmRMYW5ndWFnZXMgPSB0aGlzLnNlbGVjdGVkTGFuZ3VhZ2VzXG4gICAgdGhpcy5lZGl0VHJhbnNsYXRpb25zID0gZmFsc2VcbiAgfVxuXG4gIHN3aXRjaEZvcm1MYW5nKGxhbmcpIHtcbiAgICAvLyBUTyBJTVBMRU1FTlQgRlVSVEhFUlxuICB9XG5cbiAgc3dpdGNoRGVmYXVsdExhbmcobGFuZzogc3RyaW5nKSB7XG4gICAgdGhpcy5mb3JtTGFuZ3VhZ2UgPSBsYW5nXG4gICAgdGhpcy5mYWNhZGUudXBkYXRlUmVjb3JkRmllbGQoJ2RlZmF1bHRMYW5ndWFnZScsIGxhbmcpXG4gICAgdGhpcy5mYWNhZGUudXBkYXRlUmVjb3JkRmllbGQoXG4gICAgICAnb3RoZXJMYW5ndWFnZXMnLFxuICAgICAgdGhpcy5zZWxlY3RlZExhbmd1YWdlcy5maWx0ZXIoKGxhbmcpID0+IGxhbmcgIT09IHRoaXMuZm9ybUxhbmd1YWdlKVxuICAgIClcbiAgICB0aGlzLmNsb3NlQWN0aW9uTWVudSgpXG4gIH1cblxuICBjb25maXJtRGVsZXRlQWN0aW9uKGxhbmc/OiBzdHJpbmdbXSB8IHN0cmluZykge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAnZWRpdG9yLnJlY29yZC5tdWx0aWxpbmd1YWwuY29uZmlybWF0aW9uLnRpdGxlJ1xuICAgICAgICApLFxuICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAnZWRpdG9yLnJlY29yZC5tdWx0aWxpbmd1YWwuY29uZmlybWF0aW9uLm1lc3NhZ2UnXG4gICAgICAgICksXG4gICAgICAgIGNvbmZpcm1UZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAnZWRpdG9yLnJlY29yZC5tdWx0aWxpbmd1YWwuY29uZmlybWF0aW9uLmNvbmZpcm1UZXh0J1xuICAgICAgICApLFxuICAgICAgICBjYW5jZWxUZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAnZWRpdG9yLnJlY29yZC5tdWx0aWxpbmd1YWwuY29uZmlybWF0aW9uLmNhbmNlbFRleHQnXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgcmVzdG9yZUZvY3VzOiB0cnVlLFxuICAgIH0pXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChjb25maXJtZWQpID0+IHtcbiAgICAgICAgaWYgKGNvbmZpcm1lZCkge1xuICAgICAgICAgIGlmIChsYW5nKSB7XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobGFuZykpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmVTZWxlY3RlZExhbmd1YWdlKGxhbmcpXG4gICAgICAgICAgICAgIHRoaXMuY2xvc2VBY3Rpb25NZW51KClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudXBkYXRlVHJhbnNsYXRpb25zKClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mYWNhZGUudXBkYXRlUmVjb3JkRmllbGQoJ290aGVyTGFuZ3VhZ2VzJywgW10pXG4gICAgICAgICAgICB0aGlzLmlzTXVsdGlsaW5ndWFsID0gZmFsc2VcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZXMgPSBbXVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmlzTXVsdGlsaW5ndWFsID0gdHJ1ZVxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZXMgPSB0aGlzLnJlY29yZExhbmd1YWdlc1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZWRpdFRyYW5zbGF0aW9ucyA9IGZhbHNlXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGlzRmlyc3RVbnN1cHBvcnRlZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGFuZ3MgPSB0aGlzLnNvcnRMYW5ndWFnZXModGhpcy5yZWNvcmRMYW5ndWFnZXMpXG4gICAgcmV0dXJuIChcbiAgICAgIGxhbmdzW2luZGV4XS5sZW5ndGggPT09IDMgJiZcbiAgICAgIGxhbmdzLnNsaWNlKDAsIGluZGV4KS5ldmVyeSgobGFuZykgPT4gbGFuZy5sZW5ndGggIT09IDMpXG4gICAgKVxuICB9XG5cbiAgaXNMYW5nU3VwcG9ydGVkKGxhbmc6IHN0cmluZykge1xuICAgIHJldHVybiBsYW5nLmxlbmd0aCA9PT0gMlxuICB9XG5cbiAgZ2V0VG9nZ2xlVGl0bGUobGFuZzogc3RyaW5nKSB7XG4gICAgaWYgKGxhbmcgPT09IHRoaXMuX3JlY29yZC5kZWZhdWx0TGFuZ3VhZ2UpIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgJ2VkaXRvci5yZWNvcmQuZm9ybS5tdWx0aWxpbmd1YWwuZm9yYmlkZGVuJ1xuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIG9wZW5BY3Rpb25NZW51KGl0ZW06IHN0cmluZywgdGVtcGxhdGUpIHtcbiAgICB0aGlzLmlzQWN0aW9uTWVudU9wZW4gPSB0cnVlXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNvcnRMYW5ndWFnZXModGhpcy5zZWxlY3RlZExhbmd1YWdlcykuaW5kZXhPZihpdGVtKVxuICAgIGNvbnN0IGJ1dHRvbkVsZW1lbnQgPSB0aGlzLmFjdGlvbk1lbnVCdXR0b25zLnRvQXJyYXkoKVtpbmRleF1cblxuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhidXR0b25FbGVtZW50KVxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnModHJ1ZSlcbiAgICAgIC53aXRoUHVzaCh0cnVlKVxuICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgIH0sXG4gICAgICBdKVxuXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICB9KVxuXG4gICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpXG5cbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbClcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VBY3Rpb25NZW51KClcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgY2xvc2VBY3Rpb25NZW51KCkge1xuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuaXNBY3Rpb25NZW51T3BlbiA9IGZhbHNlXG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKVxuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImZsZXggZmxleC1jb2wgaC1mdWxsIHctWzMwMnB4XSBiZy1uZXV0cmFsLTEwMCBib3JkZXItbCBib3JkZXItZ3JheS0zMDAgcHktOCBweC0zIGdhcC02IG92ZXJmbG93LWF1dG9cIlxuPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBweC0yIGp1c3RpZnktYmV0d2VlblwiPlxuICAgIDxzcGFuIGNsYXNzPVwidGV4dC0zeGwgZm9udC10aXRsZSB0ZXh0LWJsYWNrLzgwXCIgdHJhbnNsYXRlXG4gICAgICA+ZWRpdG9yLnJlY29yZC5mb3JtLm11bHRpbGluZ3VhbC50aXRsZTwvc3BhblxuICAgID5cbiAgICA8YnV0dG9uXG4gICAgICBbdGl0bGVdPVwiJ2VkaXRvci5yZWNvcmQuZm9ybS5tdWx0aWxpbmd1YWwub3BlbicgfCB0cmFuc2xhdGVcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUxhbmd1YWdlU2VsZWN0aW9uKClcIlxuICAgICAgKm5nSWY9XCJpc011bHRpbGluZ3VhbFwiXG4gICAgICBkYXRhLXRlc3Q9XCJhY3RpdmF0ZVNlbGVjdGlvblwiXG4gICAgPlxuICAgICAgPG5nLWljb24gY2xhc3M9XCJtdC0xXCIgbmFtZT1cImljb25vaXJTZXR0aW5nc1wiPjwvbmctaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yXCIgKm5nSWY9XCJlZGl0VHJhbnNsYXRpb25zIHx8ICFpc011bHRpbGluZ3VhbFwiPlxuICAgIDxnbi11aS1jaGVjay10b2dnbGVcbiAgICAgIGNsYXNzPVwicC0yXCJcbiAgICAgIFtsYWJlbF09XCInZWRpdG9yLnJlY29yZC5mb3JtLm11bHRpbGluZ3VhbC5lbmFibGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtjb2xvcl09XCIncHJpbWFyeSdcIlxuICAgICAgWyh2YWx1ZSldPVwiaXNNdWx0aWxpbmd1YWxcIlxuICAgICAgKHRvZ2dsZWQpPVwic3dpdGNoTXVsdGlsaW5ndWFsKCRldmVudClcIlxuICAgID48L2duLXVpLWNoZWNrLXRvZ2dsZT5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNNdWx0aWxpbmd1YWxcIiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlbiBib3JkZXItdCBib3JkZXItZ3JheS0zMDAgcC0zXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMiB0ZXh0LXNtIHRleHQtZ3JheS02MDBcIiB0cmFuc2xhdGVcbiAgICAgICAgICA+ZWRpdG9yLnJlY29yZC5mb3JtLm11bHRpbGluZ3VhbC5hY3RpdmF0ZTwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgICBleHRyYUNsYXNzPVwidy0xNiBoLTggZm9udC1ib2xkXCJcbiAgICAgICAgICB0eXBlPVwiZ3JheVwiXG4gICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cInZhbGlkYXRlVHJhbnNsYXRpb25zKClcIlxuICAgICAgICAgIGRhdGEtdGVzdD1cInZhbGlkYXRlU2VsZWN0aW9uXCJcbiAgICAgICAgICA+e3sgJ2VkaXRvci5yZWNvcmQuZm9ybS5tdWx0aWxpbmd1YWwudmFsaWRhdGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvZ24tdWktYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VwcG9ydGVkTGFuZ3VhZ2VzJCB8IGFzeW5jIGFzIGxhbmd1YWdlc1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yIHctZnVsbCBweC0yXCJcbiAgICAgICAgICBkYXRhLXRlc3Q9XCJsYW5nQXZhaWxhYmxlXCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgbGFuZyBvZiBsYW5ndWFnZXNcIlxuICAgICAgICA+XG4gICAgICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICAgICAgW2V4dHJhQ2xhc3NdPVwiZ2V0RXh0cmFDbGFzcyhsYW5nKVwiXG4gICAgICAgICAgICB0eXBlPVwiZ3JheVwiXG4gICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwidG9nZ2xlTGFuZ3VhZ2UobGFuZylcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxhbmcgPT09IF9yZWNvcmQuZGVmYXVsdExhbmd1YWdlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJnZXRUb2dnbGVUaXRsZShsYW5nKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cImdldEljb25DbGFzcyhsYW5nKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMlwiPnt7ICdsYW5ndWFnZS4nICsgbGFuZyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2duLXVpLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCIhZWRpdFRyYW5zbGF0aW9ucyAmJiBpc011bHRpbGluZ3VhbFwiIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMlwiPlxuICAgIDxnbi11aS1idXR0b25cbiAgICAgICpuZ0Zvcj1cImxldCByZWNvcmRMYW5nIG9mIHNvcnRMYW5ndWFnZXMocmVjb3JkTGFuZ3VhZ2VzKTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICBleHRyYUNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gYmctd2hpdGUgYm9yZGVyIGJvcmRlci13aGl0ZSByb3VuZGVkIG1iLTEgaC1bMzRweF0gdy1mdWxsXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ210LTgnOiBpc0ZpcnN0VW5zdXBwb3J0ZWQoaSksXG4gICAgICAgICcnOiB0cnVlLFxuICAgICAgfVwiXG4gICAgICAoYnV0dG9uQ2xpY2spPVwic3dpdGNoRm9ybUxhbmcocmVjb3JkTGFuZylcIlxuICAgICAgdHlwZT1cIm91dGxpbmVcIlxuICAgICAgZGF0YS10ZXN0PVwibGFuZ1N3aXRjaFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTIgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxuZy1pY29uXG4gICAgICAgICAgKm5nSWY9XCJyZWNvcmRMYW5nID09PSBmb3JtTGFuZ3VhZ2VcIlxuICAgICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IG10LTFcIlxuICAgICAgICAgIG5hbWU9XCJpY29ub2lyQ2hlY2tDaXJjbGVcIlxuICAgICAgICA+PC9uZy1pY29uPlxuICAgICAgICA8bmctaWNvblxuICAgICAgICAgICpuZ0lmPVwicmVjb3JkTGFuZyAhPT0gZm9ybUxhbmd1YWdlXCJcbiAgICAgICAgICBjbGFzcz1cInRleHQtZ3JheS04MDAgbXQtMVwiXG4gICAgICAgICAgbmFtZT1cImljb25vaXJDaXJjbGVcIlxuICAgICAgICA+PC9uZy1pY29uPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0lmPVwicmVjb3JkTGFuZy5sZW5ndGggPT09IDJcIlxuICAgICAgICAgIFtjbGFzc109XCJnZXRJY29uQ2xhc3MocmVjb3JkTGFuZykgKyAnbXQtMSdcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJyZWNvcmRMYW5nID09PSBmb3JtTGFuZ3VhZ2UgPyAndGV4dC1ibGFjaycgOiAnJ1wiPnt7XG4gICAgICAgICAgaXNMYW5nU3VwcG9ydGVkKHJlY29yZExhbmcpXG4gICAgICAgICAgICA/ICgnbGFuZ3VhZ2UuJyArIHJlY29yZExhbmcgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICA6IHJlY29yZExhbmcudG9VcHBlckNhc2UoKVxuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTIgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCJyZWNvcmRMYW5nID09PSBmb3JtTGFuZ3VhZ2VcIlxuICAgICAgICAgIGNsYXNzPVwidGV4dC14cyB0ZXh0LWJhc2VcIlxuICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgID5lZGl0b3IucmVjb3JkLmZvcm0ubXVsdGlsaW5ndWFsLmRlZmF1bHQ8L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgb3BlbkFjdGlvbk1lbnUocmVjb3JkTGFuZywgdGVtcGxhdGUpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICBcIlxuICAgICAgICAgIGNka092ZXJsYXlPcmlnaW5cbiAgICAgICAgICAjYWN0aW9uTWVudUJ1dHRvblxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWljb24gY2xhc3M9XCJwYi01XCIgbmFtZT1cIm1hdE1vcmVIb3Jpek91dGxpbmVcIj48L25nLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICAgICAgICAgIDxnbi11aS1hY3Rpb24tbWVudVxuICAgICAgICAgICAgW2NhbkRlbGV0ZV09XCJyZWNvcmRMYW5nICE9PSBfcmVjb3JkLmRlZmF1bHRMYW5ndWFnZVwiXG4gICAgICAgICAgICBwYWdlPVwicmVjb3JkXCJcbiAgICAgICAgICAgIChkZWxldGUpPVwiY29uZmlybURlbGV0ZUFjdGlvbihyZWNvcmRMYW5nKVwiXG4gICAgICAgICAgICAoY2xvc2VBY3Rpb25NZW51KT1cImNsb3NlQWN0aW9uTWVudSgpXCJcbiAgICAgICAgICAgIChzd2l0Y2gpPVwic3dpdGNoRGVmYXVsdExhbmcocmVjb3JkTGFuZylcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2duLXVpLWFjdGlvbi1tZW51PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9nbi11aS1idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -19,4 +19,5 @@ export * from './lib/results-list-item/results-list-item.component';
|
|
|
19
19
|
export * from './lib/results-hits-search-kind/results-hits-search-kind.component';
|
|
20
20
|
export * from './lib/results-hits-number/results-hits-number.component';
|
|
21
21
|
export * from './lib/results-table/results-table.component';
|
|
22
|
-
|
|
22
|
+
export * from './lib/results-table/action-menu/action-menu.component';
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksSUFBSSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUMzRSxjQUFjLDJCQUEyQixDQUFBO0FBQ3pDLGNBQWMsdUJBQXVCLENBQUE7QUFDckMsY0FBYyxnREFBZ0QsQ0FBQTtBQUM5RCxjQUFjLDhDQUE4QyxDQUFBO0FBQzVELGNBQWMsOENBQThDLENBQUE7QUFDNUQsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLDBDQUEwQyxDQUFBO0FBQ3hELGNBQWMsMkNBQTJDLENBQUE7QUFDekQsY0FBYywrQ0FBK0MsQ0FBQTtBQUM3RCxjQUFjLHlEQUF5RCxDQUFBO0FBQ3ZFLGNBQWMsdURBQXVELENBQUE7QUFDckUsY0FBYyx5REFBeUQsQ0FBQTtBQUN2RSxjQUFjLHlEQUF5RCxDQUFBO0FBQ3ZFLGNBQWMseURBQXlELENBQUE7QUFDdkUsY0FBYywyREFBMkQsQ0FBQTtBQUN6RSxjQUFjLDZDQUE2QyxDQUFBO0FBQzNELGNBQWMscURBQXFELENBQUE7QUFDbkUsY0FBYyxtRUFBbUUsQ0FBQTtBQUNqRixjQUFjLHlEQUF5RCxDQUFBO0FBQ3ZFLGNBQWMsNkNBQTZDLENBQUE7QUFDM0QsY0FBYyx1REFBdUQsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEZhY2V0c01vZHVsZSBhcyBVaUZhY2V0c01vZHVsZSB9IGZyb20gJy4vbGliL2ZhY2V0cy9mYWNldHMubW9kdWxlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmFjZXRzL2ZhY2V0cy5tb2RlbCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZhY2V0cy9maXh0dXJlcydcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZhY2V0cy9mYWNldC1ibG9jay9mYWNldC1ibG9jay5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9mYWNldHMvZmFjZXQtbGlzdC9mYWNldC1saXN0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZhY2V0cy9mYWNldC1pdGVtL2ZhY2V0LWl0ZW0uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktc2VhcmNoLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Jlc3VsdHMtbGlzdC9yZXN1bHRzLWxheW91dC5jb25maWcnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXN1bHRzLWxpc3QvcmVzdWx0cy1saXN0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlY29yZC1wcmV2aWV3L3JlY29yZC1wcmV2aWV3LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlY29yZC1wcmV2aWV3LWZlZWQvcmVjb3JkLXByZXZpZXctZmVlZC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWNvcmQtcHJldmlldy1yb3cvcmVjb3JkLXByZXZpZXctcm93LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlY29yZC1wcmV2aWV3LWNhcmQvcmVjb3JkLXByZXZpZXctY2FyZC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWNvcmQtcHJldmlldy1saXN0L3JlY29yZC1wcmV2aWV3LWxpc3QuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVjb3JkLXByZXZpZXctdGV4dC9yZWNvcmQtcHJldmlldy10ZXh0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlY29yZC1wcmV2aWV3LXRpdGxlL3JlY29yZC1wcmV2aWV3LXRpdGxlLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlY29yZC1tZXRyaWMvcmVjb3JkLW1ldHJpYy5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXN1bHRzLWxpc3QtaXRlbS9yZXN1bHRzLWxpc3QtaXRlbS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXN1bHRzLWhpdHMtc2VhcmNoLWtpbmQvcmVzdWx0cy1oaXRzLXNlYXJjaC1raW5kLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Jlc3VsdHMtaGl0cy1udW1iZXIvcmVzdWx0cy1oaXRzLW51bWJlci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXN1bHRzLXRhYmxlL3Jlc3VsdHMtdGFibGUuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzdWx0cy10YWJsZS9hY3Rpb24tbWVudS9hY3Rpb24tbWVudS5jb21wb25lbnQnXG4iXX0=
|
|
@@ -13,30 +13,35 @@ export class ActionMenuComponent {
|
|
|
13
13
|
constructor(dialog, cdr) {
|
|
14
14
|
this.dialog = dialog;
|
|
15
15
|
this.cdr = cdr;
|
|
16
|
+
this.canDuplicate = true;
|
|
17
|
+
this.canDelete = true;
|
|
16
18
|
this.duplicate = new EventEmitter();
|
|
17
19
|
this.delete = new EventEmitter();
|
|
18
20
|
this.closeActionMenu = new EventEmitter();
|
|
19
21
|
this.rollback = new EventEmitter();
|
|
22
|
+
this.switch = new EventEmitter();
|
|
20
23
|
this.sectionDisplayed = 'mainMenu';
|
|
21
24
|
}
|
|
22
|
-
openMenu() {
|
|
23
|
-
this.trigger.openMenu();
|
|
24
|
-
}
|
|
25
25
|
displayMainMenu() {
|
|
26
26
|
this.sectionDisplayed = 'mainMenu';
|
|
27
27
|
this.cdr.markForCheck();
|
|
28
28
|
}
|
|
29
29
|
displayDeleteMenu() {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
switch (this.page) {
|
|
31
|
+
case 'draft':
|
|
32
|
+
this.sectionDisplayed = 'rollbackMenu';
|
|
33
|
+
break;
|
|
34
|
+
case 'record':
|
|
35
|
+
this.delete.emit();
|
|
36
|
+
break;
|
|
37
|
+
case 'main':
|
|
38
|
+
default:
|
|
39
|
+
this.sectionDisplayed = 'deleteMenu';
|
|
35
40
|
}
|
|
36
41
|
this.cdr.markForCheck();
|
|
37
42
|
}
|
|
38
43
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionMenuComponent, deps: [{ token: i1.MatDialog }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActionMenuComponent, isStandalone: true, selector: "gn-ui-action-menu", inputs: { canDuplicate: "canDuplicate", canDelete: "canDelete",
|
|
44
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActionMenuComponent, isStandalone: true, selector: "gn-ui-action-menu", inputs: { canDuplicate: "canDuplicate", canDelete: "canDelete", page: "page" }, outputs: { duplicate: "duplicate", delete: "delete", closeActionMenu: "closeActionMenu", rollback: "rollback", switch: "switch" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n *ngIf=\"page === 'main'\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"duplicate.emit()\"\n [disabled]=\"!canDuplicate\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span *ngIf=\"canDuplicate\" translate>record.action.duplicate</span>\n <span *ngIf=\"!canDuplicate\" translate\n >record.action.duplicating</span\n ></gn-ui-button\n >\n <gn-ui-button\n *ngIf=\"page === 'record'\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"switch.emit()\"\n data-test=\"record-menu-switch-button\"\n ><span translate>record.action.switchLang</span></gn-ui-button\n >\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"displayDeleteMenu()\"\n [disabled]=\"!canDelete\"\n data-test=\"record-menu-delete-button\"\n ><span *ngIf=\"page !== 'draft'\" translate>record.action.delete</span>\n <span *ngIf=\"page === 'draft'\" translate\n >record.action.rollback</span\n ></gn-ui-button\n >\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'deleteMenu'\">\n <div\n data-test=\"deleteMenuSection\"\n class=\"w-72 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.delete.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.delete.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"delete.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'100px'\"\n >{{\n 'editor.record.delete.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'100px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.delete.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'rollbackMenu'\">\n <div\n data-test=\"rollbackMenuSection\"\n class=\"w-80 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.undo.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.undo.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"rollback.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'120px'\"\n >{{\n 'editor.record.undo.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'120px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.undo.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
|
|
40
45
|
}
|
|
41
46
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionMenuComponent, decorators: [{
|
|
42
47
|
type: Component,
|
|
@@ -47,12 +52,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
47
52
|
MatDialogModule,
|
|
48
53
|
ConfirmationDialogComponent,
|
|
49
54
|
TranslateModule,
|
|
50
|
-
], template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n *ngIf=\"
|
|
55
|
+
], template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n *ngIf=\"page === 'main'\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"duplicate.emit()\"\n [disabled]=\"!canDuplicate\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span *ngIf=\"canDuplicate\" translate>record.action.duplicate</span>\n <span *ngIf=\"!canDuplicate\" translate\n >record.action.duplicating</span\n ></gn-ui-button\n >\n <gn-ui-button\n *ngIf=\"page === 'record'\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"switch.emit()\"\n data-test=\"record-menu-switch-button\"\n ><span translate>record.action.switchLang</span></gn-ui-button\n >\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"displayDeleteMenu()\"\n [disabled]=\"!canDelete\"\n data-test=\"record-menu-delete-button\"\n ><span *ngIf=\"page !== 'draft'\" translate>record.action.delete</span>\n <span *ngIf=\"page === 'draft'\" translate\n >record.action.rollback</span\n ></gn-ui-button\n >\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'deleteMenu'\">\n <div\n data-test=\"deleteMenuSection\"\n class=\"w-72 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.delete.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.delete.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"delete.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'100px'\"\n >{{\n 'editor.record.delete.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'100px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.delete.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'rollbackMenu'\">\n <div\n data-test=\"rollbackMenuSection\"\n class=\"w-80 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.undo.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.undo.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"rollback.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'120px'\"\n >{{\n 'editor.record.undo.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'120px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.undo.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n</ng-container>\n" }]
|
|
51
56
|
}], ctorParameters: () => [{ type: i1.MatDialog }, { type: i0.ChangeDetectorRef }], propDecorators: { canDuplicate: [{
|
|
52
57
|
type: Input
|
|
53
58
|
}], canDelete: [{
|
|
54
59
|
type: Input
|
|
55
|
-
}],
|
|
60
|
+
}], page: [{
|
|
56
61
|
type: Input
|
|
57
62
|
}], duplicate: [{
|
|
58
63
|
type: Output
|
|
@@ -62,8 +67,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
62
67
|
type: Output
|
|
63
68
|
}], rollback: [{
|
|
64
69
|
type: Output
|
|
70
|
+
}], switch: [{
|
|
71
|
+
type: Output
|
|
65
72
|
}], trigger: [{
|
|
66
73
|
type: ViewChild,
|
|
67
74
|
args: [MatMenuTrigger]
|
|
68
75
|
}] } });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9zZWFyY2gvc3JjL2xpYi9yZXN1bHRzLXRhYmxlL2FjdGlvbi1tZW51L2FjdGlvbi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc2VhcmNoL3NyYy9saWIvcmVzdWx0cy10YWJsZS9hY3Rpb24tbWVudS9hY3Rpb24tbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQTtBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBOzs7OztBQWtCckQsTUFBTSxPQUFPLG1CQUFtQjtJQWE5QixZQUNTLE1BQWlCLEVBQ2hCLEdBQXNCO1FBRHZCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDaEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFYdEIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUE7UUFDcEMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUE7UUFDakMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFBO1FBQzFDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFBO1FBSTdDLHFCQUFnQixHQUFtQixVQUFVLENBQUE7SUFLMUMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ3pCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQTtRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFBO0lBQ3pCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsY0FBYyxDQUFBO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQTtRQUN0QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUN6QixDQUFDOytHQWxDVSxtQkFBbUI7bUdBQW5CLG1CQUFtQixxVUFTbkIsY0FBYyxnREN4QzNCLHFtSEFtR0EseURENUVJLFlBQVksK1RBQ1osZUFBZSw4SEFDZixhQUFhLDhCQUNiLGVBQWUsOEJBRWYsZUFBZTs7NEZBR04sbUJBQW1CO2tCQWQvQixTQUFTOytCQUNFLG1CQUFtQixjQUdqQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZiwyQkFBMkI7d0JBQzNCLGVBQWU7cUJBQ2hCOzhHQUdRLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFFb0IsT0FBTztzQkFBakMsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZydcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUsIE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSdcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjJ1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcblxudHlwZSBBY3Rpb25NZW51UGFnZSA9ICdtYWluTWVudScgfCAnZGVsZXRlTWVudScgfCAncm9sbGJhY2tNZW51J1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1hY3Rpb24tbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24tbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FjdGlvbi1tZW51LmNvbXBvbmVudC5jc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50LFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQWN0aW9uTWVudUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNhbkR1cGxpY2F0ZTogYm9vbGVhblxuICBASW5wdXQoKSBjYW5EZWxldGU6IGJvb2xlYW5cbiAgQElucHV0KCkgaXNEcmFmdFBhZ2U6IGJvb2xlYW5cbiAgQE91dHB1dCgpIGR1cGxpY2F0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuICBAT3V0cHV0KCkgZGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG4gIEBPdXRwdXQoKSBjbG9zZUFjdGlvbk1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcbiAgQE91dHB1dCgpIHJvbGxiYWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG5cbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlcikgdHJpZ2dlcjogTWF0TWVudVRyaWdnZXJcblxuICBzZWN0aW9uRGlzcGxheWVkOiBBY3Rpb25NZW51UGFnZSA9ICdtYWluTWVudSdcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBvcGVuTWVudSgpIHtcbiAgICB0aGlzLnRyaWdnZXIub3Blbk1lbnUoKVxuICB9XG5cbiAgZGlzcGxheU1haW5NZW51KCkge1xuICAgIHRoaXMuc2VjdGlvbkRpc3BsYXllZCA9ICdtYWluTWVudSdcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKVxuICB9XG5cbiAgZGlzcGxheURlbGV0ZU1lbnUoKSB7XG4gICAgaWYgKHRoaXMuaXNEcmFmdFBhZ2UpIHtcbiAgICAgIHRoaXMuc2VjdGlvbkRpc3BsYXllZCA9ICdyb2xsYmFja01lbnUnXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VjdGlvbkRpc3BsYXllZCA9ICdkZWxldGVNZW51J1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJzZWN0aW9uRGlzcGxheWVkXCI+XG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtYWluTWVudSdcIj5cbiAgICA8ZGl2XG4gICAgICBkYXRhLXRlc3Q9XCJtYWluTWVudVNlY3Rpb25cIlxuICAgICAgY2xhc3M9XCJtdC0yIGJvcmRlciBib3JkZXItZ3JheS0xMDAgcC0yIGZsZXggaXRlbXMtY2VudGVyIGJnLXdoaXRlIHNoYWRvdy0yeGwgcm91bmRlZC0yeGxcIlxuICAgID5cbiAgICAgIDx1bCBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTIgdy1mdWxsXCI+XG4gICAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgICAqbmdJZj1cIiFpc0RyYWZ0UGFnZVwiXG4gICAgICAgICAgdHlwZT1cImxpZ2h0XCJcbiAgICAgICAgICBleHRyYUNsYXNzPVwiZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIgZ2FwLTIgdy1mdWxsIGp1c3RpZnktc3RhcnRcIlxuICAgICAgICAgIChidXR0b25DbGljayk9XCJkdXBsaWNhdGUuZW1pdCgpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkR1cGxpY2F0ZVwiXG4gICAgICAgICAgZGF0YS10ZXN0PVwicmVjb3JkLW1lbnUtZHVwbGljYXRlLWJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImNhbkR1cGxpY2F0ZVwiIHRyYW5zbGF0ZT5yZWNvcmQuYWN0aW9uLmR1cGxpY2F0ZTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjYW5EdXBsaWNhdGVcIiB0cmFuc2xhdGVcbiAgICAgICAgICAgID5yZWNvcmQuYWN0aW9uLmR1cGxpY2F0aW5nPC9zcGFuXG4gICAgICAgICAgPjwvZ24tdWktYnV0dG9uXG4gICAgICAgID5cbiAgICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJsaWdodFwiXG4gICAgICAgICAgZXh0cmFDbGFzcz1cImZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGdhcC0yIHctZnVsbCBqdXN0aWZ5LXN0YXJ0XCJcbiAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwiZGlzcGxheURlbGV0ZU1lbnUoKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5EZWxldGVcIlxuICAgICAgICAgIGRhdGEtdGVzdD1cInJlY29yZC1tZW51LWRlbGV0ZS1idXR0b25cIlxuICAgICAgICAgID48c3BhbiAqbmdJZj1cIiFpc0RyYWZ0UGFnZVwiIHRyYW5zbGF0ZT5yZWNvcmQuYWN0aW9uLmRlbGV0ZTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzRHJhZnRQYWdlXCIgdHJhbnNsYXRlXG4gICAgICAgICAgICA+cmVjb3JkLmFjdGlvbi5yb2xsYmFjazwvc3BhblxuICAgICAgICAgID48L2duLXVpLWJ1dHRvblxuICAgICAgICA+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RlbGV0ZU1lbnUnXCI+XG4gICAgPGRpdlxuICAgICAgZGF0YS10ZXN0PVwiZGVsZXRlTWVudVNlY3Rpb25cIlxuICAgICAgY2xhc3M9XCJ3LTcyIHAtNiBmbGV4IGZsZXgtY29sIGdhcC0zIG10LTIgYm9yZGVyIGJvcmRlci1ncmF5LTEwMCBiZy13aGl0ZSBzaGFkb3ctMnhsIHJvdW5kZWQtMnhsXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGcgZm9udC1ib2xkIHRleHQtY2VudGVyXCI+e3tcbiAgICAgICAgJ2VkaXRvci5yZWNvcmQuZGVsZXRlLmNvbmZpcm1hdGlvbi50aXRsZScgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPnt7XG4gICAgICAgICdlZGl0b3IucmVjb3JkLmRlbGV0ZS5jb25maXJtYXRpb24ubWVzc2FnZScgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTgganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICAgIChidXR0b25DbGljayk9XCJkZWxldGUuZW1pdCgpXCJcbiAgICAgICAgICBjZGtGb2N1c0luaXRpYWxcbiAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXG4gICAgICAgICAgZGF0YS1jeT1cImNvbmZpcm0tYnV0dG9uXCJcbiAgICAgICAgICBbc3R5bGUuLS1nbi11aS1idXR0b24td2lkdGhdPVwiJzEwMHB4J1wiXG4gICAgICAgICAgPnt7XG4gICAgICAgICAgICAnZWRpdG9yLnJlY29yZC5kZWxldGUuY29uZmlybWF0aW9uLmNvbmZpcm1UZXh0JyB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19PC9nbi11aS1idXR0b25cbiAgICAgICAgPlxuICAgICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYnV0dG9uLXdpZHRoXT1cIicxMDBweCdcIlxuICAgICAgICAgIChidXR0b25DbGljayk9XCJjbG9zZUFjdGlvbk1lbnUuZW1pdCgpXCJcbiAgICAgICAgICA+e3tcbiAgICAgICAgICAgICdlZGl0b3IucmVjb3JkLmRlbGV0ZS5jb25maXJtYXRpb24uY2FuY2VsVGV4dCcgfCB0cmFuc2xhdGVcbiAgICAgICAgICB9fTwvZ24tdWktYnV0dG9uXG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3JvbGxiYWNrTWVudSdcIj5cbiAgICA8ZGl2XG4gICAgICBkYXRhLXRlc3Q9XCJyb2xsYmFja01lbnVTZWN0aW9uXCJcbiAgICAgIGNsYXNzPVwidy04MCBwLTYgZmxleCBmbGV4LWNvbCBnYXAtMyBtdC0yIGJvcmRlciBib3JkZXItZ3JheS0xMDAgYmctd2hpdGUgc2hhZG93LTJ4bCByb3VuZGVkLTJ4bFwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtYm9sZCB0ZXh0LWNlbnRlclwiPnt7XG4gICAgICAgICdlZGl0b3IucmVjb3JkLnVuZG8uY29uZmlybWF0aW9uLnRpdGxlJyB8IHRyYW5zbGF0ZVxuICAgICAgfX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2VudGVyXCI+e3tcbiAgICAgICAgJ2VkaXRvci5yZWNvcmQudW5kby5jb25maXJtYXRpb24ubWVzc2FnZScgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTgganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICAgIChidXR0b25DbGljayk9XCJyb2xsYmFjay5lbWl0KClcIlxuICAgICAgICAgIGNka0ZvY3VzSW5pdGlhbFxuICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcbiAgICAgICAgICBkYXRhLWN5PVwiY29uZmlybS1idXR0b25cIlxuICAgICAgICAgIFtzdHlsZS4tLWduLXVpLWJ1dHRvbi13aWR0aF09XCInMTIwcHgnXCJcbiAgICAgICAgICA+e3tcbiAgICAgICAgICAgICdlZGl0b3IucmVjb3JkLnVuZG8uY29uZmlybWF0aW9uLmNvbmZpcm1UZXh0JyB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19PC9nbi11aS1idXR0b25cbiAgICAgICAgPlxuICAgICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYnV0dG9uLXdpZHRoXT1cIicxMjBweCdcIlxuICAgICAgICAgIChidXR0b25DbGljayk9XCJjbG9zZUFjdGlvbk1lbnUuZW1pdCgpXCJcbiAgICAgICAgICA+e3tcbiAgICAgICAgICAgICdlZGl0b3IucmVjb3JkLnVuZG8uY29uZmlybWF0aW9uLmNhbmNlbFRleHQnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgfX08L2duLXVpLWJ1dHRvblxuICAgICAgICA+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9zZWFyY2gvc3JjL2xpYi9yZXN1bHRzLXRhYmxlL2FjdGlvbi1tZW51L2FjdGlvbi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc2VhcmNoL3NyYy9saWIvcmVzdWx0cy10YWJsZS9hY3Rpb24tbWVudS9hY3Rpb24tbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQTtBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBOzs7OztBQWtCckQsTUFBTSxPQUFPLG1CQUFtQjtJQWM5QixZQUNTLE1BQWlCLEVBQ2hCLEdBQXNCO1FBRHZCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDaEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFmdkIsaUJBQVksR0FBRyxJQUFJLENBQUE7UUFDbkIsY0FBUyxHQUFHLElBQUksQ0FBQTtRQUVmLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFBO1FBQ3BDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFBO1FBQ2pDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtRQUMxQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtRQUNuQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtRQUkzQyxxQkFBZ0IsR0FBbUIsVUFBVSxDQUFBO0lBSzFDLENBQUM7SUFFSixlQUFlO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQTtRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFBO0lBQ3pCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixLQUFLLE9BQU87Z0JBQ1YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGNBQWMsQ0FBQTtnQkFDdEMsTUFBSztZQUNQLEtBQUssUUFBUTtnQkFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFBO2dCQUNsQixNQUFLO1lBQ1AsS0FBSyxNQUFNLENBQUM7WUFDWjtnQkFDRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFBO1FBQ3hDLENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFBO0lBQ3pCLENBQUM7K0dBckNVLG1CQUFtQjttR0FBbkIsbUJBQW1CLHlVQVVuQixjQUFjLGdEQ3pDM0IsNDhIQTJHQSx5RERwRkksWUFBWSwrVEFDWixlQUFlLDhIQUNmLGFBQWEsOEJBQ2IsZUFBZSw4QkFFZixlQUFlOzs0RkFHTixtQkFBbUI7a0JBZC9CLFNBQVM7K0JBQ0UsbUJBQW1CLGNBR2pCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixlQUFlO3dCQUNmLDJCQUEyQjt3QkFDM0IsZUFBZTtxQkFDaEI7OEdBR1EsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUVvQixPQUFPO3NCQUFqQyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJ1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSwgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51J1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9lbGVtZW50cy9zcmMnXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMnXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuXG50eXBlIEFjdGlvbk1lbnVQYWdlID0gJ21haW5NZW51JyB8ICdkZWxldGVNZW51JyB8ICdyb2xsYmFja01lbnUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWFjdGlvbi1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWN0aW9uLW1lbnUuY29tcG9uZW50LmNzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICBDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25NZW51Q29tcG9uZW50IHtcbiAgQElucHV0KCkgY2FuRHVwbGljYXRlID0gdHJ1ZVxuICBASW5wdXQoKSBjYW5EZWxldGUgPSB0cnVlXG4gIEBJbnB1dCgpIHBhZ2U6ICdkcmFmdCcgfCAnbWFpbicgfCAncmVjb3JkJ1xuICBAT3V0cHV0KCkgZHVwbGljYXRlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcbiAgQE91dHB1dCgpIGNsb3NlQWN0aW9uTWVudSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuICBAT3V0cHV0KCkgcm9sbGJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcbiAgQE91dHB1dCgpIHN3aXRjaCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuXG4gIEBWaWV3Q2hpbGQoTWF0TWVudVRyaWdnZXIpIHRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyXG5cbiAgc2VjdGlvbkRpc3BsYXllZDogQWN0aW9uTWVudVBhZ2UgPSAnbWFpbk1lbnUnXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgZGlzcGxheU1haW5NZW51KCkge1xuICAgIHRoaXMuc2VjdGlvbkRpc3BsYXllZCA9ICdtYWluTWVudSdcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKVxuICB9XG5cbiAgZGlzcGxheURlbGV0ZU1lbnUoKSB7XG4gICAgc3dpdGNoICh0aGlzLnBhZ2UpIHtcbiAgICAgIGNhc2UgJ2RyYWZ0JzpcbiAgICAgICAgdGhpcy5zZWN0aW9uRGlzcGxheWVkID0gJ3JvbGxiYWNrTWVudSdcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3JlY29yZCc6XG4gICAgICAgIHRoaXMuZGVsZXRlLmVtaXQoKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbWFpbic6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLnNlY3Rpb25EaXNwbGF5ZWQgPSAnZGVsZXRlTWVudSdcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKClcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic2VjdGlvbkRpc3BsYXllZFwiPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbWFpbk1lbnUnXCI+XG4gICAgPGRpdlxuICAgICAgZGF0YS10ZXN0PVwibWFpbk1lbnVTZWN0aW9uXCJcbiAgICAgIGNsYXNzPVwibXQtMiBib3JkZXIgYm9yZGVyLWdyYXktMTAwIHAtMiBmbGV4IGl0ZW1zLWNlbnRlciBiZy13aGl0ZSBzaGFkb3ctMnhsIHJvdW5kZWQtMnhsXCJcbiAgICA+XG4gICAgICA8dWwgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yIHctZnVsbFwiPlxuICAgICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJwYWdlID09PSAnbWFpbidcIlxuICAgICAgICAgIHR5cGU9XCJsaWdodFwiXG4gICAgICAgICAgZXh0cmFDbGFzcz1cImZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGdhcC0yIHctZnVsbCBqdXN0aWZ5LXN0YXJ0XCJcbiAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwiZHVwbGljYXRlLmVtaXQoKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5EdXBsaWNhdGVcIlxuICAgICAgICAgIGRhdGEtdGVzdD1cInJlY29yZC1tZW51LWR1cGxpY2F0ZS1idXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJjYW5EdXBsaWNhdGVcIiB0cmFuc2xhdGU+cmVjb3JkLmFjdGlvbi5kdXBsaWNhdGU8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY2FuRHVwbGljYXRlXCIgdHJhbnNsYXRlXG4gICAgICAgICAgICA+cmVjb3JkLmFjdGlvbi5kdXBsaWNhdGluZzwvc3BhblxuICAgICAgICAgID48L2duLXVpLWJ1dHRvblxuICAgICAgICA+XG4gICAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgICAqbmdJZj1cInBhZ2UgPT09ICdyZWNvcmQnXCJcbiAgICAgICAgICB0eXBlPVwibGlnaHRcIlxuICAgICAgICAgIGV4dHJhQ2xhc3M9XCJmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAtMiB3LWZ1bGwganVzdGlmeS1zdGFydFwiXG4gICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cInN3aXRjaC5lbWl0KClcIlxuICAgICAgICAgIGRhdGEtdGVzdD1cInJlY29yZC1tZW51LXN3aXRjaC1idXR0b25cIlxuICAgICAgICAgID48c3BhbiB0cmFuc2xhdGU+cmVjb3JkLmFjdGlvbi5zd2l0Y2hMYW5nPC9zcGFuPjwvZ24tdWktYnV0dG9uXG4gICAgICAgID5cbiAgICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJsaWdodFwiXG4gICAgICAgICAgZXh0cmFDbGFzcz1cImZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGdhcC0yIHctZnVsbCBqdXN0aWZ5LXN0YXJ0XCJcbiAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwiZGlzcGxheURlbGV0ZU1lbnUoKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5EZWxldGVcIlxuICAgICAgICAgIGRhdGEtdGVzdD1cInJlY29yZC1tZW51LWRlbGV0ZS1idXR0b25cIlxuICAgICAgICAgID48c3BhbiAqbmdJZj1cInBhZ2UgIT09ICdkcmFmdCdcIiB0cmFuc2xhdGU+cmVjb3JkLmFjdGlvbi5kZWxldGU8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYWdlID09PSAnZHJhZnQnXCIgdHJhbnNsYXRlXG4gICAgICAgICAgICA+cmVjb3JkLmFjdGlvbi5yb2xsYmFjazwvc3BhblxuICAgICAgICAgID48L2duLXVpLWJ1dHRvblxuICAgICAgICA+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RlbGV0ZU1lbnUnXCI+XG4gICAgPGRpdlxuICAgICAgZGF0YS10ZXN0PVwiZGVsZXRlTWVudVNlY3Rpb25cIlxuICAgICAgY2xhc3M9XCJ3LTcyIHAtNiBmbGV4IGZsZXgtY29sIGdhcC0zIG10LTIgYm9yZGVyIGJvcmRlci1ncmF5LTEwMCBiZy13aGl0ZSBzaGFkb3ctMnhsIHJvdW5kZWQtMnhsXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGcgZm9udC1ib2xkIHRleHQtY2VudGVyXCI+e3tcbiAgICAgICAgJ2VkaXRvci5yZWNvcmQuZGVsZXRlLmNvbmZpcm1hdGlvbi50aXRsZScgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPnt7XG4gICAgICAgICdlZGl0b3IucmVjb3JkLmRlbGV0ZS5jb25maXJtYXRpb24ubWVzc2FnZScgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTgganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICAgIChidXR0b25DbGljayk9XCJkZWxldGUuZW1pdCgpXCJcbiAgICAgICAgICBjZGtGb2N1c0luaXRpYWxcbiAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXG4gICAgICAgICAgZGF0YS1jeT1cImNvbmZpcm0tYnV0dG9uXCJcbiAgICAgICAgICBbc3R5bGUuLS1nbi11aS1idXR0b24td2lkdGhdPVwiJzEwMHB4J1wiXG4gICAgICAgICAgPnt7XG4gICAgICAgICAgICAnZWRpdG9yLnJlY29yZC5kZWxldGUuY29uZmlybWF0aW9uLmNvbmZpcm1UZXh0JyB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19PC9nbi11aS1idXR0b25cbiAgICAgICAgPlxuICAgICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYnV0dG9uLXdpZHRoXT1cIicxMDBweCdcIlxuICAgICAgICAgIChidXR0b25DbGljayk9XCJjbG9zZUFjdGlvbk1lbnUuZW1pdCgpXCJcbiAgICAgICAgICA+e3tcbiAgICAgICAgICAgICdlZGl0b3IucmVjb3JkLmRlbGV0ZS5jb25maXJtYXRpb24uY2FuY2VsVGV4dCcgfCB0cmFuc2xhdGVcbiAgICAgICAgICB9fTwvZ24tdWktYnV0dG9uXG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3JvbGxiYWNrTWVudSdcIj5cbiAgICA8ZGl2XG4gICAgICBkYXRhLXRlc3Q9XCJyb2xsYmFja01lbnVTZWN0aW9uXCJcbiAgICAgIGNsYXNzPVwidy04MCBwLTYgZmxleCBmbGV4LWNvbCBnYXAtMyBtdC0yIGJvcmRlciBib3JkZXItZ3JheS0xMDAgYmctd2hpdGUgc2hhZG93LTJ4bCByb3VuZGVkLTJ4bFwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtYm9sZCB0ZXh0LWNlbnRlclwiPnt7XG4gICAgICAgICdlZGl0b3IucmVjb3JkLnVuZG8uY29uZmlybWF0aW9uLnRpdGxlJyB8IHRyYW5zbGF0ZVxuICAgICAgfX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2VudGVyXCI+e3tcbiAgICAgICAgJ2VkaXRvci5yZWNvcmQudW5kby5jb25maXJtYXRpb24ubWVzc2FnZScgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTgganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICAgIChidXR0b25DbGljayk9XCJyb2xsYmFjay5lbWl0KClcIlxuICAgICAgICAgIGNka0ZvY3VzSW5pdGlhbFxuICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcbiAgICAgICAgICBkYXRhLWN5PVwiY29uZmlybS1idXR0b25cIlxuICAgICAgICAgIFtzdHlsZS4tLWduLXVpLWJ1dHRvbi13aWR0aF09XCInMTIwcHgnXCJcbiAgICAgICAgICA+e3tcbiAgICAgICAgICAgICdlZGl0b3IucmVjb3JkLnVuZG8uY29uZmlybWF0aW9uLmNvbmZpcm1UZXh0JyB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19PC9nbi11aS1idXR0b25cbiAgICAgICAgPlxuICAgICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYnV0dG9uLXdpZHRoXT1cIicxMjBweCdcIlxuICAgICAgICAgIChidXR0b25DbGljayk9XCJjbG9zZUFjdGlvbk1lbnUuZW1pdCgpXCJcbiAgICAgICAgICA+e3tcbiAgICAgICAgICAgICdlZGl0b3IucmVjb3JkLnVuZG8uY29uZmlybWF0aW9uLmNhbmNlbFRleHQnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgfX08L2duLXVpLWJ1dHRvblxuICAgICAgICA+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|