@vendure/admin-ui 2.2.5 → 2.2.7
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/LICENSE +9 -0
- package/catalog/components/product-detail/product-detail.component.d.ts +1 -4
- package/catalog/components/product-variant-list/product-variant-list.component.d.ts +1 -1
- package/catalog/providers/product-detail/product-detail.service.d.ts +1 -3
- package/core/common/version.d.ts +1 -1
- package/core/extension/components/angular-route.component.d.ts +20 -0
- package/core/extension/register-data-table-component.d.ts +1 -1
- package/core/extension/register-route-component.d.ts +1 -1
- package/core/shared/components/facet-value-selector/facet-value-selector.component.d.ts +1 -9
- package/core/shared/components/order-state-label/order-state-label.component.d.ts +1 -1
- package/core/shared/components/timeline-entry/timeline-entry.component.d.ts +2 -1
- package/core/shared/dynamic-form-inputs/default-form-inputs.d.ts +1 -1
- package/core/shared/providers/routing/can-deactivate-detail-guard.d.ts +2 -4
- package/esm2022/catalog/catalog.module.mjs +1 -1
- package/esm2022/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.mjs +2 -2
- package/esm2022/catalog/components/facet-detail/facet-detail.component.mjs +4 -1
- package/esm2022/catalog/components/generate-product-variants/generate-product-variants.component.mjs +3 -1
- package/esm2022/catalog/components/product-detail/product-detail.component.mjs +1 -14
- package/esm2022/catalog/components/product-options-editor/product-options-editor.component.mjs +6 -2
- package/esm2022/catalog/providers/product-detail/product-detail.service.mjs +43 -27
- package/esm2022/core/common/version.mjs +2 -2
- package/esm2022/core/extension/components/angular-route.component.mjs +51 -6
- package/esm2022/core/extension/register-data-table-component.mjs +2 -2
- package/esm2022/core/shared/components/asset-file-input/asset-file-input.component.mjs +1 -1
- package/esm2022/core/shared/components/asset-gallery/asset-gallery.component.mjs +2 -2
- package/esm2022/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.mjs +2 -2
- package/esm2022/core/shared/components/dropdown/dropdown-menu.component.mjs +33 -33
- package/esm2022/core/shared/components/facet-value-selector/facet-value-selector.component.mjs +2 -10
- package/esm2022/core/shared/components/rich-text-editor/rich-text-editor.component.mjs +2 -2
- package/esm2022/core/shared/components/timeline-entry/timeline-entry.component.mjs +5 -3
- package/esm2022/core/shared/components/zone-selector/zone-selector.component.mjs +13 -13
- package/esm2022/core/shared/providers/routing/can-deactivate-detail-guard.mjs +6 -8
- package/esm2022/customer/components/customer-history/customer-history-entry-host.component.mjs +1 -1
- package/esm2022/customer/components/customer-history/customer-history.component.mjs +3 -3
- package/esm2022/customer/customer.routes.mjs +2 -2
- package/esm2022/marketing/marketing.module.mjs +1 -1
- package/esm2022/order/components/order-history/order-history-entry-host.component.mjs +1 -1
- package/esm2022/order/components/order-history/order-history.component.mjs +3 -3
- package/esm2022/react/react-components/RichTextEditor.mjs +8 -4
- package/esm2022/settings/components/channel-detail/channel-detail.component.mjs +8 -8
- package/fesm2022/vendure-admin-ui-catalog.mjs +53 -41
- package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-core.mjs +112 -73
- package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-customer.mjs +4 -4
- package/fesm2022/vendure-admin-ui-customer.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-marketing.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-order.mjs +3 -3
- package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-react.mjs +7 -3
- package/fesm2022/vendure-admin-ui-react.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-settings.mjs +7 -7
- package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
- package/marketing/components/promotion-list/promotion-list.component.d.ts +1 -1
- package/package.json +2 -2
- package/react/react-components/RichTextEditor.d.ts +2 -0
- package/static/styles/component/prosemirror.scss +511 -0
- package/static/styles/styles.scss +2 -0
|
@@ -153,49 +153,65 @@ export class ProductDetailService {
|
|
|
153
153
|
return forkJoin(updateOperations);
|
|
154
154
|
}));
|
|
155
155
|
}
|
|
156
|
-
|
|
157
|
-
const variants$ =
|
|
156
|
+
updateProductOptions(inputs, autoUpdateProductNames, product, languageCode) {
|
|
157
|
+
const variants$ = autoUpdateProductNames
|
|
158
158
|
? this.dataService.product
|
|
159
159
|
.getProductVariantsForProduct({}, product.id)
|
|
160
160
|
.mapSingle(({ productVariants }) => productVariants.items)
|
|
161
161
|
: of([]);
|
|
162
162
|
return variants$.pipe(mergeMap(variants => {
|
|
163
163
|
let updateProductVariantNames$ = of([]);
|
|
164
|
-
if (
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
164
|
+
if (autoUpdateProductNames) {
|
|
165
|
+
const replacementMap = new Map();
|
|
166
|
+
for (const input of inputs) {
|
|
167
|
+
const newOptionName = findTranslation(input, languageCode)?.name;
|
|
168
|
+
let oldOptionName;
|
|
169
|
+
for (const variant of variants) {
|
|
170
|
+
if (oldOptionName) {
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
if (variant.options.map(o => o.id).includes(input.id)) {
|
|
174
|
+
if (!oldOptionName) {
|
|
175
|
+
oldOptionName = findTranslation(variant.options.find(o => o.id === input.id), languageCode)?.name;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (oldOptionName && newOptionName) {
|
|
180
|
+
replacementMap.set(oldOptionName, newOptionName);
|
|
181
|
+
}
|
|
170
182
|
}
|
|
171
183
|
const variantsToUpdate = [];
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
184
|
+
if (replacementMap.size) {
|
|
185
|
+
const oldOptionNames = Array.from(replacementMap.keys());
|
|
186
|
+
for (const variant of variants) {
|
|
187
|
+
const variantName = findTranslation(variant, languageCode)?.name;
|
|
188
|
+
if (!variantName) {
|
|
189
|
+
continue;
|
|
176
190
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
variantsToUpdate.push({
|
|
180
|
-
id: variant.id,
|
|
181
|
-
translations: [
|
|
182
|
-
{
|
|
183
|
-
languageCode,
|
|
184
|
-
name: replaceLast(variantName, oldOptionName, newOptionName),
|
|
185
|
-
},
|
|
186
|
-
],
|
|
187
|
-
});
|
|
191
|
+
if (!oldOptionNames.some(oldOptionName => variantName.includes(oldOptionName))) {
|
|
192
|
+
continue;
|
|
188
193
|
}
|
|
194
|
+
const updatedVariantName = oldOptionNames.reduce((name, oldOptionName) => replaceLast(name, oldOptionName, replacementMap.get(oldOptionName)), variantName);
|
|
195
|
+
variantsToUpdate.push({
|
|
196
|
+
id: variant.id,
|
|
197
|
+
translations: [
|
|
198
|
+
{
|
|
199
|
+
languageCode,
|
|
200
|
+
name: updatedVariantName,
|
|
201
|
+
},
|
|
202
|
+
],
|
|
203
|
+
});
|
|
189
204
|
}
|
|
190
205
|
}
|
|
191
206
|
if (variantsToUpdate.length) {
|
|
192
207
|
updateProductVariantNames$ =
|
|
193
208
|
this.dataService.product.updateProductVariants(variantsToUpdate);
|
|
194
209
|
}
|
|
210
|
+
else {
|
|
211
|
+
updateProductVariantNames$ = of([]);
|
|
212
|
+
}
|
|
195
213
|
}
|
|
196
|
-
return this.dataService.product
|
|
197
|
-
.updateProductOption(input)
|
|
198
|
-
.pipe(mergeMap(() => updateProductVariantNames$));
|
|
214
|
+
return forkJoin(inputs.map(input => this.dataService.product.updateProductOption(input))).pipe(mergeMap(() => updateProductVariantNames$));
|
|
199
215
|
}));
|
|
200
216
|
}
|
|
201
217
|
deleteProductVariant(id, productId) {
|
|
@@ -217,4 +233,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
217
233
|
providedIn: 'root',
|
|
218
234
|
}]
|
|
219
235
|
}], ctorParameters: () => [{ type: i1.DataService }] });
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvcHJvdmlkZXJzL3Byb2R1Y3QtZGV0YWlsL3Byb2R1Y3QtZGV0YWlsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBSUgsY0FBYyxFQUVkLGVBQWUsR0FTbEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUU3Qzs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sb0JBQW9CO0lBQzdCLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUcsQ0FBQztJQUVoRCxnQkFBZ0I7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUTthQUMzQixnQkFBZ0IsRUFBRTthQUNsQixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQzthQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELHlCQUF5QixDQUNyQixLQUF5QixFQUN6QixvQkFBaUQsRUFDakQsWUFBMEI7UUFFMUIsTUFBTSxjQUFjLEdBQUcsSUFB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QUFDO2dCQUNoRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDbEUsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzRCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7OEdBbFFRLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGNBRmpCLE1BQU07OzJGQUVULG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBDcmVhdGVQcm9kdWN0SW5wdXQsXHJcbiAgICBDcmVhdGVQcm9kdWN0VmFyaWFudElucHV0LFxyXG4gICAgRGF0YVNlcnZpY2UsXHJcbiAgICBEZWxldGlvblJlc3VsdCxcclxuICAgIEZhY2V0V2l0aFZhbHVlc0ZyYWdtZW50LFxyXG4gICAgZmluZFRyYW5zbGF0aW9uLFxyXG4gICAgR2V0UHJvZHVjdERldGFpbFF1ZXJ5LFxyXG4gICAgR2V0UHJvZHVjdFdpdGhWYXJpYW50c1F1ZXJ5LFxyXG4gICAgTGFuZ3VhZ2VDb2RlLFxyXG4gICAgVXBkYXRlUHJvZHVjdElucHV0LFxyXG4gICAgVXBkYXRlUHJvZHVjdE11dGF0aW9uLFxyXG4gICAgVXBkYXRlUHJvZHVjdE9wdGlvbklucHV0LFxyXG4gICAgVXBkYXRlUHJvZHVjdFZhcmlhbnRJbnB1dCxcclxuICAgIFVwZGF0ZVByb2R1Y3RWYXJpYW50c011dGF0aW9uLFxyXG59IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xyXG5pbXBvcnQgeyBub3JtYWxpemVTdHJpbmcgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL25vcm1hbGl6ZS1zdHJpbmcnO1xyXG5pbXBvcnQgeyBub3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3NoYXJlZC11dGlscyc7XHJcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIG1lcmdlTWFwLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgQ3JlYXRlUHJvZHVjdFZhcmlhbnRzQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9nZW5lcmF0ZS1wcm9kdWN0LXZhcmlhbnRzL2dlbmVyYXRlLXByb2R1Y3QtdmFyaWFudHMuY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IHJlcGxhY2VMYXN0IH0gZnJvbSAnLi9yZXBsYWNlLWxhc3QnO1xyXG5cclxuLyoqXHJcbiAqIEhhbmRsZXMgdGhlIGxvZ2ljIGZvciBtYWtpbmcgdGhlIEFQSSBjYWxscyB0byBwZXJmb3JtIENSVUQgb3BlcmF0aW9ucyBvbiBhIFByb2R1Y3QgYW5kIGl0cyByZWxhdGVkXHJcbiAqIGVudGl0aWVzLiBUaGlzIGxvZ2ljIHdhcyBleHRyYWN0ZWQgb3V0IG9mIHRoZSBjb21wb25lbnQgYmVjYXVzZSBpdCBiZWNhbWUgdG9vIGxhcmdlIGFuZCBoYXJkIHRvIGZvbGxvdy5cclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2R1Y3REZXRhaWxTZXJ2aWNlIHtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlKSB7fVxyXG5cclxuICAgIGdldFRheENhdGVnb3JpZXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2Uuc2V0dGluZ3NcclxuICAgICAgICAgICAgLmdldFRheENhdGVnb3JpZXMoKVxyXG4gICAgICAgICAgICAubWFwU2luZ2xlKGRhdGEgPT4gZGF0YS50YXhDYXRlZ29yaWVzLml0ZW1zKVxyXG4gICAgICAgICAgICAucGlwZShzaGFyZVJlcGxheSgxKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlUHJvZHVjdFdpdGhWYXJpYW50cyhcclxuICAgICAgICBpbnB1dDogQ3JlYXRlUHJvZHVjdElucHV0LFxyXG4gICAgICAgIGNyZWF0ZVZhcmlhbnRzQ29uZmlnOiBDcmVhdGVQcm9kdWN0VmFyaWFudHNDb25maWcsXHJcbiAgICAgICAgbGFuZ3VhZ2VDb2RlOiBMYW5ndWFnZUNvZGUsXHJcbiAgICApIHtcclxuICAgICAgICBjb25zdCBjcmVhdGVQcm9kdWN0JCA9IHRoaXMuZGF0YVNlcnZpY2UucHJvZHVjdC5jcmVhdGVQcm9kdWN0KGlucHV0KTtcclxuICAgICAgICBjb25zdCBub25FbXB0eU9wdGlvbkdyb3VwcyA9IGNyZWF0ZVZhcmlhbnRzQ29uZmlnLmdyb3Vwcy5maWx0ZXIoZyA9PiAwIDwgZy52YWx1ZXMubGVuZ3RoKTtcclxuICAgICAgICBjb25zdCBjcmVhdGVPcHRpb25Hcm91cHMkID0gdGhpcy5jcmVhdGVQcm9kdWN0T3B0aW9uR3JvdXBzKG5vbkVtcHR5T3B0aW9uR3JvdXBzLCBsYW5ndWFnZUNvZGUpO1xyXG5cclxuICAgICAgICByZXR1cm4gZm9ya0pvaW4oY3JlYXRlUHJvZHVjdCQsIGNyZWF0ZU9wdGlvbkdyb3VwcyQpLnBpcGUoXHJcbiAgICAgICAgICAgIG1lcmdlTWFwKChbeyBjcmVhdGVQcm9kdWN0IH0sIG9wdGlvbkdyb3Vwc10pID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFkZE9wdGlvbnNUb1Byb2R1Y3QkID0gb3B0aW9uR3JvdXBzLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgID8gZm9ya0pvaW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uR3JvdXBzLm1hcChvcHRpb25Hcm91cCA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLnByb2R1Y3QuYWRkT3B0aW9uR3JvdXBUb1Byb2R1Y3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdElkOiBjcmVhdGVQcm9kdWN0LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uR3JvdXBJZDogb3B0aW9uR3JvdXAuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgOiBvZihbXSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYWRkT3B0aW9uc1RvUHJvZHVjdCQucGlwZShtYXAoKCkgPT4gKHsgY3JlYXRlUHJvZHVjdCwgb3B0aW9uR3JvdXBzIH0pKSk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBtZXJnZU1hcCgoeyBjcmVhdGVQcm9kdWN0LCBvcHRpb25Hcm91cHMgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFyaWFudHMgPSBjcmVhdGVWYXJpYW50c0NvbmZpZy52YXJpYW50cy5tYXAodiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uSWRzID0gb3B0aW9uR3JvdXBzLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHYub3B0aW9uVmFsdWVzLm1hcCgob3B0aW9uTmFtZSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gb3B0aW9uR3JvdXBzW2luZGV4XS5vcHRpb25zLmZpbmQobyA9PiBvLm5hbWUgPT09IG9wdGlvbk5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBDb3VsZCBub3QgZmluZCBhIG1hdGNoaW5nIFByb2R1Y3RPcHRpb24gXCIke29wdGlvbk5hbWV9XCIgd2hlbiBjcmVhdGluZyB2YXJpYW50YCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnYsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbklkcyxcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0gb3B0aW9uR3JvdXBzLm1hcChvZyA9PiBvZy5vcHRpb25zKS5yZWR1Y2UoKGZsYXQsIG8pID0+IFsuLi5mbGF0LCAuLi5vXSwgW10pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUHJvZHVjdFZhcmlhbnRzKFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVByb2R1Y3QsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudHMsXHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlVmFyaWFudHNDb25maWcuc3RvY2tMb2NhdGlvbklkLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVQcm9kdWN0T3B0aW9uR3JvdXBzKGdyb3VwczogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHZhbHVlczogc3RyaW5nW10gfT4sIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlKSB7XHJcbiAgICAgICAgcmV0dXJuIGdyb3Vwcy5sZW5ndGhcclxuICAgICAgICAgICAgPyBmb3JrSm9pbihcclxuICAgICAgICAgICAgICAgICAgZ3JvdXBzLm1hcChjID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLnByb2R1Y3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAuY3JlYXRlUHJvZHVjdE9wdGlvbkdyb3Vwcyh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IG5vcm1hbGl6ZVN0cmluZyhjLm5hbWUsICctJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uczogW3sgbGFuZ3VhZ2VDb2RlLCBuYW1lOiBjLm5hbWUgfV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGMudmFsdWVzLm1hcCh2ID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBub3JtYWxpemVTdHJpbmcodiwgJy0nKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uczogW3sgbGFuZ3VhZ2VDb2RlLCBuYW1lOiB2IH1dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShtYXAoZGF0YSA9PiBkYXRhLmNyZWF0ZVByb2R1Y3RPcHRpb25Hcm91cCkpLFxyXG4gICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgOiBvZihbXSk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlUHJvZHVjdFZhcmlhbnRzKFxyXG4gICAgICAgIHByb2R1Y3Q6IHsgbmFtZTogc3RyaW5nOyBpZDogc3RyaW5nIH0sXHJcbiAgICAgICAgdmFyaWFudERhdGE6IEFycmF5PHsgcHJpY2U6IG51bWJlcjsgc2t1OiBzdHJpbmc7IHN0b2NrOiBudW1iZXI7IG9wdGlvbklkczogc3RyaW5nW10gfT4sXHJcbiAgICAgICAgb3B0aW9uczogQXJyYXk8eyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfT4sXHJcbiAgICAgICAgbGFuZ3VhZ2VDb2RlOiBMYW5ndWFnZUNvZGUsXHJcbiAgICAgICAgc3RvY2tMb2NhdGlvbklkOiBzdHJpbmcsXHJcbiAgICApIHtcclxuICAgICAgICBjb25zdCB2YXJpYW50czogQ3JlYXRlUHJvZHVjdFZhcmlhbnRJbnB1dFtdID0gdmFyaWFudERhdGEubWFwKHYgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBuYW1lID0gb3B0aW9ucy5sZW5ndGhcclxuICAgICAgICAgICAgICAgID8gYCR7cHJvZHVjdC5uYW1lfSAke3Yub3B0aW9uSWRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAubWFwKGlkID0+IG9wdGlvbnMuZmluZChvID0+IG8uaWQgPT09IGlkKSlcclxuICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIobm90TnVsbE9yVW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgLm1hcChvID0+IG8ubmFtZSlcclxuICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcgJyl9YFxyXG4gICAgICAgICAgICAgICAgOiBwcm9kdWN0Lm5hbWU7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0SWQ6IHByb2R1Y3QuaWQsXHJcbiAgICAgICAgICAgICAgICBwcmljZTogdi5wcmljZSxcclxuICAgICAgICAgICAgICAgIHNrdTogdi5za3UsXHJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnM6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIHN0b2NrTGV2ZWxzOiBbXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9ja0xvY2F0aW9uSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b2NrT25IYW5kOiB2LnN0b2NrLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uSWRzOiB2Lm9wdGlvbklkcyxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0LmNyZWF0ZVByb2R1Y3RWYXJpYW50cyh2YXJpYW50cykucGlwZShcclxuICAgICAgICAgICAgbWFwKCh7IGNyZWF0ZVByb2R1Y3RWYXJpYW50cyB9KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgY3JlYXRlUHJvZHVjdFZhcmlhbnRzLFxyXG4gICAgICAgICAgICAgICAgcHJvZHVjdElkOiBwcm9kdWN0LmlkLFxyXG4gICAgICAgICAgICB9KSksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVQcm9kdWN0KHVwZGF0ZU9wdGlvbnM6IHtcclxuICAgICAgICBwcm9kdWN0OiBOb25OdWxsYWJsZTxHZXRQcm9kdWN0RGV0YWlsUXVlcnlbJ3Byb2R1Y3QnXT47XHJcbiAgICAgICAgbGFuZ3VhZ2VDb2RlOiBMYW5ndWFnZUNvZGU7XHJcbiAgICAgICAgYXV0b1VwZGF0ZTogYm9vbGVhbjtcclxuICAgICAgICBwcm9kdWN0SW5wdXQ/OiBVcGRhdGVQcm9kdWN0SW5wdXQ7XHJcbiAgICAgICAgdmFyaWFudHNJbnB1dD86IFVwZGF0ZVByb2R1Y3RWYXJpYW50SW5wdXRbXTtcclxuICAgIH0pIHtcclxuICAgICAgICBjb25zdCB7IHByb2R1Y3QsIGxhbmd1YWdlQ29kZSwgYXV0b1VwZGF0ZSwgcHJvZHVjdElucHV0LCB2YXJpYW50c0lucHV0IH0gPSB1cGRhdGVPcHRpb25zO1xyXG4gICAgICAgIGNvbnN0IHVwZGF0ZU9wZXJhdGlvbnM6IEFycmF5PE9ic2VydmFibGU8VXBkYXRlUHJvZHVjdE11dGF0aW9uIHwgVXBkYXRlUHJvZHVjdFZhcmlhbnRzTXV0YXRpb24+PiA9IFtdO1xyXG4gICAgICAgIGNvbnN0IHVwZGF0ZVZhcmlhbnRzSW5wdXQgPSB2YXJpYW50c0lucHV0IHx8IFtdO1xyXG5cclxuICAgICAgICBjb25zdCB2YXJpYW50cyQgPSBhdXRvVXBkYXRlXHJcbiAgICAgICAgICAgID8gdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0XHJcbiAgICAgICAgICAgICAgICAgIC5nZXRQcm9kdWN0VmFyaWFudHNGb3JQcm9kdWN0KHt9LCBwcm9kdWN0LmlkKVxyXG4gICAgICAgICAgICAgICAgICAubWFwU2luZ2xlKCh7IHByb2R1Y3RWYXJpYW50cyB9KSA9PiBwcm9kdWN0VmFyaWFudHMuaXRlbXMpXHJcbiAgICAgICAgICAgIDogb2YoW10pO1xyXG5cclxuICAgICAgICByZXR1cm4gdmFyaWFudHMkLnBpcGUoXHJcbiAgICAgICAgICAgIG1lcmdlTWFwKHZhcmlhbnRzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0SW5wdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVPcGVyYXRpb25zLnB1c2godGhpcy5kYXRhU2VydmljZS5wcm9kdWN0LnVwZGF0ZVByb2R1Y3QocHJvZHVjdElucHV0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjdE9sZE5hbWUgPSBmaW5kVHJhbnNsYXRpb24ocHJvZHVjdCwgbGFuZ3VhZ2VDb2RlKT8ubmFtZSA/PyAnJztcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9kdWN0TmV3TmFtZSA9IGZpbmRUcmFuc2xhdGlvbihwcm9kdWN0SW5wdXQsIGxhbmd1YWdlQ29kZSk/Lm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb2R1Y3ROZXdOYW1lICYmIHByb2R1Y3RPbGROYW1lICE9PSBwcm9kdWN0TmV3TmFtZSAmJiBhdXRvVXBkYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdmFyaWFudCBvZiB2YXJpYW50cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFZhcmlhbnROYW1lID0gZmluZFRyYW5zbGF0aW9uKHZhcmlhbnQsIGxhbmd1YWdlQ29kZSk/Lm5hbWUgfHwgJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFyaWFudElucHV0OiBVcGRhdGVQcm9kdWN0VmFyaWFudElucHV0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdWYXJpYW50SW5wdXQgPSB1cGRhdGVWYXJpYW50c0lucHV0LmZpbmQoaSA9PiBpLmlkID09PSB2YXJpYW50LmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ1ZhcmlhbnRJbnB1dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRJbnB1dCA9IGV4aXN0aW5nVmFyaWFudElucHV0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50SW5wdXQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB2YXJpYW50LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnM6IFt7IGxhbmd1YWdlQ29kZSwgbmFtZTogY3VycmVudFZhcmlhbnROYW1lIH1dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlVmFyaWFudHNJbnB1dC5wdXNoKHZhcmlhbnRJbnB1dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YXJpYW50VHJhbnNsYXRpb24gPSBmaW5kVHJhbnNsYXRpb24odmFyaWFudElucHV0LCBsYW5ndWFnZUNvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnRUcmFuc2xhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYW50VHJhbnNsYXRpb24ubmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50VHJhbnNsYXRpb24ubmFtZSA9IHJlcGxhY2VMYXN0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudFRyYW5zbGF0aW9uLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0T2xkTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3ROZXdOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSB2YXJpYW50IHRyYW5zbGF0aW9uIHdhcyBmYWxzeSwgd2hpY2ggb2NjdXJzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gZGVmaW5pbmcgdGhlIHByb2R1Y3QgbmFtZSBmb3IgYSBuZXcgdHJhbnNsYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGFuZ3VhZ2UgdGhhdCBoYWQgbm90IHlldCBiZWVuIGRlZmluZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRUcmFuc2xhdGlvbi5uYW1lID0gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdE5ld05hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi52YXJpYW50Lm9wdGlvbnMubWFwKG8gPT4gby5uYW1lKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5qb2luKCcgJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZVZhcmlhbnRzSW5wdXQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlT3BlcmF0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLnByb2R1Y3QudXBkYXRlUHJvZHVjdFZhcmlhbnRzKHVwZGF0ZVZhcmlhbnRzSW5wdXQpLFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ya0pvaW4odXBkYXRlT3BlcmF0aW9ucyk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUHJvZHVjdE9wdGlvbihcclxuICAgICAgICBpbnB1dDogVXBkYXRlUHJvZHVjdE9wdGlvbklucHV0ICYgeyBhdXRvVXBkYXRlOiBib29sZWFuIH0sXHJcbiAgICAgICAgcHJvZHVjdDogTm9uTnVsbGFibGU8R2V0UHJvZHVjdERldGFpbFF1ZXJ5Wydwcm9kdWN0J10+LFxyXG4gICAgICAgIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlLFxyXG4gICAgKSB7XHJcbiAgICAgICAgY29uc3QgdmFyaWFudHMkID0gaW5wdXQuYXV0b1VwZGF0ZVxyXG4gICAgICAgICAgICA/IHRoaXMuZGF0YVNlcnZpY2UucHJvZHVjdFxyXG4gICAgICAgICAgICAgICAgICAuZ2V0UHJvZHVjdFZhcmlhbnRzRm9yUHJvZHVjdCh7fSwgcHJvZHVjdC5pZClcclxuICAgICAgICAgICAgICAgICAgLm1hcFNpbmdsZSgoeyBwcm9kdWN0VmFyaWFudHMgfSkgPT4gcHJvZHVjdFZhcmlhbnRzLml0ZW1zKVxyXG4gICAgICAgICAgICA6IG9mKFtdKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHZhcmlhbnRzJC5waXBlKFxyXG4gICAgICAgICAgICBtZXJnZU1hcCh2YXJpYW50cyA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdXBkYXRlUHJvZHVjdFZhcmlhbnROYW1lcyQ6IE9ic2VydmFibGU8YW55PiA9IG9mKFtdKTtcclxuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5hdXRvVXBkYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIGFueSBQcm9kdWN0VmFyaWFudHMnIG5hbWVzIHdoaWNoIGluY2x1ZGUgdGhlIG9wdGlvbiBuYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9sZE9wdGlvbk5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdPcHRpb25OYW1lID0gZmluZFRyYW5zbGF0aW9uKGlucHV0LCBsYW5ndWFnZUNvZGUpPy5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghbmV3T3B0aW9uTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVQcm9kdWN0VmFyaWFudE5hbWVzJCA9IG9mKFtdKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFyaWFudHNUb1VwZGF0ZTogVXBkYXRlUHJvZHVjdFZhcmlhbnRJbnB1dFtdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB2YXJpYW50IG9mIHZhcmlhbnRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYW50Lm9wdGlvbnMubWFwKG8gPT4gby5pZCkuaW5jbHVkZXMoaW5wdXQuaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9sZE9wdGlvbk5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRPcHRpb25OYW1lID0gZmluZFRyYW5zbGF0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50Lm9wdGlvbnMuZmluZChvID0+IG8uaWQgPT09IGlucHV0LmlkKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/Lm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YXJpYW50TmFtZSA9IGZpbmRUcmFuc2xhdGlvbih2YXJpYW50LCBsYW5ndWFnZUNvZGUpPy5uYW1lIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZE9wdGlvbk5hbWUgJiYgbmV3T3B0aW9uTmFtZSAmJiB2YXJpYW50TmFtZS5pbmNsdWRlcyhvbGRPcHRpb25OYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRzVG9VcGRhdGUucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB2YXJpYW50LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnM6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcmVwbGFjZUxhc3QodmFyaWFudE5hbWUsIG9sZE9wdGlvbk5hbWUsIG5ld09wdGlvbk5hbWUpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFudHNUb1VwZGF0ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlUHJvZHVjdFZhcmlhbnROYW1lcyQgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0LnVwZGF0ZVByb2R1Y3RWYXJpYW50cyh2YXJpYW50c1RvVXBkYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0XHJcbiAgICAgICAgICAgICAgICAgICAgLnVwZGF0ZVByb2R1Y3RPcHRpb24oaW5wdXQpXHJcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUobWVyZ2VNYXAoKCkgPT4gdXBkYXRlUHJvZHVjdFZhcmlhbnROYW1lcyQpKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVQcm9kdWN0VmFyaWFudChpZDogc3RyaW5nLCBwcm9kdWN0SWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnByb2R1Y3QuZGVsZXRlUHJvZHVjdFZhcmlhbnQoaWQpLnBpcGUoXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcChyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5kZWxldGVQcm9kdWN0VmFyaWFudC5yZXN1bHQgPT09IERlbGV0aW9uUmVzdWx0LkRFTEVURUQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0LmdldFByb2R1Y3QocHJvZHVjdElkKS5zaW5nbGUkO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihyZXN1bHQuZGVsZXRlUHJvZHVjdFZhcmlhbnQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvcHJvdmlkZXJzL3Byb2R1Y3QtZGV0YWlsL3Byb2R1Y3QtZGV0YWlsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBSUgsY0FBYyxFQUVkLGVBQWUsR0FTbEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUU3Qzs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sb0JBQW9CO0lBQzdCLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUcsQ0FBQztJQUVoRCxnQkFBZ0I7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUTthQUMzQixnQkFBZ0IsRUFBRTthQUNsQixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQzthQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELHlCQUF5QixDQUNyQixLQUF5QixFQUN6QixvQkFBaUQsRUFDakQsWUFBMEI7UUFFMUIsTUFBTSxjQUFjLEdBQUcsSUFB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OzsyRkFFVCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgQ3JlYXRlUHJvZHVjdElucHV0LFxyXG4gICAgQ3JlYXRlUHJvZHVjdFZhcmlhbnRJbnB1dCxcclxuICAgIERhdGFTZXJ2aWNlLFxyXG4gICAgRGVsZXRpb25SZXN1bHQsXHJcbiAgICBGYWNldFdpdGhWYWx1ZXNGcmFnbWVudCxcclxuICAgIGZpbmRUcmFuc2xhdGlvbixcclxuICAgIEdldFByb2R1Y3REZXRhaWxRdWVyeSxcclxuICAgIEdldFByb2R1Y3RXaXRoVmFyaWFudHNRdWVyeSxcclxuICAgIExhbmd1YWdlQ29kZSxcclxuICAgIFVwZGF0ZVByb2R1Y3RJbnB1dCxcclxuICAgIFVwZGF0ZVByb2R1Y3RNdXRhdGlvbixcclxuICAgIFVwZGF0ZVByb2R1Y3RPcHRpb25JbnB1dCxcclxuICAgIFVwZGF0ZVByb2R1Y3RWYXJpYW50SW5wdXQsXHJcbiAgICBVcGRhdGVQcm9kdWN0VmFyaWFudHNNdXRhdGlvbixcclxufSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuaW1wb3J0IHsgbm9ybWFsaXplU3RyaW5nIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9ub3JtYWxpemUtc3RyaW5nJztcclxuaW1wb3J0IHsgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdXRpbHMnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBtZXJnZU1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IENyZWF0ZVByb2R1Y3RWYXJpYW50c0NvbmZpZyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZ2VuZXJhdGUtcHJvZHVjdC12YXJpYW50cy9nZW5lcmF0ZS1wcm9kdWN0LXZhcmlhbnRzLmNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyByZXBsYWNlTGFzdCB9IGZyb20gJy4vcmVwbGFjZS1sYXN0JztcclxuXHJcbi8qKlxyXG4gKiBIYW5kbGVzIHRoZSBsb2dpYyBmb3IgbWFraW5nIHRoZSBBUEkgY2FsbHMgdG8gcGVyZm9ybSBDUlVEIG9wZXJhdGlvbnMgb24gYSBQcm9kdWN0IGFuZCBpdHMgcmVsYXRlZFxyXG4gKiBlbnRpdGllcy4gVGhpcyBsb2dpYyB3YXMgZXh0cmFjdGVkIG91dCBvZiB0aGUgY29tcG9uZW50IGJlY2F1c2UgaXQgYmVjYW1lIHRvbyBsYXJnZSBhbmQgaGFyZCB0byBmb2xsb3cuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9kdWN0RGV0YWlsU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSkge31cclxuXHJcbiAgICBnZXRUYXhDYXRlZ29yaWVzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnNldHRpbmdzXHJcbiAgICAgICAgICAgIC5nZXRUYXhDYXRlZ29yaWVzKClcclxuICAgICAgICAgICAgLm1hcFNpbmdsZShkYXRhID0+IGRhdGEudGF4Q2F0ZWdvcmllcy5pdGVtcylcclxuICAgICAgICAgICAgLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZVByb2R1Y3RXaXRoVmFyaWFudHMoXHJcbiAgICAgICAgaW5wdXQ6IENyZWF0ZVByb2R1Y3RJbnB1dCxcclxuICAgICAgICBjcmVhdGVWYXJpYW50c0NvbmZpZzogQ3JlYXRlUHJvZHVjdFZhcmlhbnRzQ29uZmlnLFxyXG4gICAgICAgIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlLFxyXG4gICAgKSB7XHJcbiAgICAgICAgY29uc3QgY3JlYXRlUHJvZHVjdCQgPSB0aGlzLmRhdGFTZXJ2aWNlLnByb2R1Y3QuY3JlYXRlUHJvZHVjdChpbnB1dCk7XHJcbiAgICAgICAgY29uc3Qgbm9uRW1wdHlPcHRpb25Hcm91cHMgPSBjcmVhdGVWYXJpYW50c0NvbmZpZy5ncm91cHMuZmlsdGVyKGcgPT4gMCA8IGcudmFsdWVzLmxlbmd0aCk7XHJcbiAgICAgICAgY29uc3QgY3JlYXRlT3B0aW9uR3JvdXBzJCA9IHRoaXMuY3JlYXRlUHJvZHVjdE9wdGlvbkdyb3Vwcyhub25FbXB0eU9wdGlvbkdyb3VwcywgbGFuZ3VhZ2VDb2RlKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKGNyZWF0ZVByb2R1Y3QkLCBjcmVhdGVPcHRpb25Hcm91cHMkKS5waXBlKFxyXG4gICAgICAgICAgICBtZXJnZU1hcCgoW3sgY3JlYXRlUHJvZHVjdCB9LCBvcHRpb25Hcm91cHNdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhZGRPcHRpb25zVG9Qcm9kdWN0JCA9IG9wdGlvbkdyb3Vwcy5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICA/IGZvcmtKb2luKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbkdyb3Vwcy5tYXAob3B0aW9uR3JvdXAgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0LmFkZE9wdGlvbkdyb3VwVG9Qcm9kdWN0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RJZDogY3JlYXRlUHJvZHVjdC5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbkdyb3VwSWQ6IG9wdGlvbkdyb3VwLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgIDogb2YoW10pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFkZE9wdGlvbnNUb1Byb2R1Y3QkLnBpcGUobWFwKCgpID0+ICh7IGNyZWF0ZVByb2R1Y3QsIG9wdGlvbkdyb3VwcyB9KSkpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbWVyZ2VNYXAoKHsgY3JlYXRlUHJvZHVjdCwgb3B0aW9uR3JvdXBzIH0pID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhcmlhbnRzID0gY3JlYXRlVmFyaWFudHNDb25maWcudmFyaWFudHMubWFwKHYgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbklkcyA9IG9wdGlvbkdyb3Vwcy5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyB2Lm9wdGlvblZhbHVlcy5tYXAoKG9wdGlvbk5hbWUsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbkdyb3Vwc1tpbmRleF0ub3B0aW9ucy5maW5kKG8gPT4gby5uYW1lID09PSBvcHRpb25OYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgQ291bGQgbm90IGZpbmQgYSBtYXRjaGluZyBQcm9kdWN0T3B0aW9uIFwiJHtvcHRpb25OYW1lfVwiIHdoZW4gY3JlYXRpbmcgdmFyaWFudGAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb24uaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi52LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25JZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IG9wdGlvbkdyb3Vwcy5tYXAob2cgPT4gb2cub3B0aW9ucykucmVkdWNlKChmbGF0LCBvKSA9PiBbLi4uZmxhdCwgLi4ub10sIFtdKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVByb2R1Y3RWYXJpYW50cyhcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVQcm9kdWN0LFxyXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnRzLFxyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVZhcmlhbnRzQ29uZmlnLnN0b2NrTG9jYXRpb25JZCxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlUHJvZHVjdE9wdGlvbkdyb3Vwcyhncm91cHM6IEFycmF5PHsgbmFtZTogc3RyaW5nOyB2YWx1ZXM6IHN0cmluZ1tdIH0+LCBsYW5ndWFnZUNvZGU6IExhbmd1YWdlQ29kZSkge1xyXG4gICAgICAgIHJldHVybiBncm91cHMubGVuZ3RoXHJcbiAgICAgICAgICAgID8gZm9ya0pvaW4oXHJcbiAgICAgICAgICAgICAgICAgIGdyb3Vwcy5tYXAoYyA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZVByb2R1Y3RPcHRpb25Hcm91cHMoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBub3JtYWxpemVTdHJpbmcoYy5uYW1lLCAnLScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnM6IFt7IGxhbmd1YWdlQ29kZSwgbmFtZTogYy5uYW1lIH1dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBjLnZhbHVlcy5tYXAodiA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogbm9ybWFsaXplU3RyaW5nKHYsICctJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnM6IFt7IGxhbmd1YWdlQ29kZSwgbmFtZTogdiB9XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUobWFwKGRhdGEgPT4gZGF0YS5jcmVhdGVQcm9kdWN0T3B0aW9uR3JvdXApKSxcclxuICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIDogb2YoW10pO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZVByb2R1Y3RWYXJpYW50cyhcclxuICAgICAgICBwcm9kdWN0OiB7IG5hbWU6IHN0cmluZzsgaWQ6IHN0cmluZyB9LFxyXG4gICAgICAgIHZhcmlhbnREYXRhOiBBcnJheTx7IHByaWNlOiBudW1iZXI7IHNrdTogc3RyaW5nOyBzdG9jazogbnVtYmVyOyBvcHRpb25JZHM6IHN0cmluZ1tdIH0+LFxyXG4gICAgICAgIG9wdGlvbnM6IEFycmF5PHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0+LFxyXG4gICAgICAgIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlLFxyXG4gICAgICAgIHN0b2NrTG9jYXRpb25JZDogc3RyaW5nLFxyXG4gICAgKSB7XHJcbiAgICAgICAgY29uc3QgdmFyaWFudHM6IENyZWF0ZVByb2R1Y3RWYXJpYW50SW5wdXRbXSA9IHZhcmlhbnREYXRhLm1hcCh2ID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IG9wdGlvbnMubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICA/IGAke3Byb2R1Y3QubmFtZX0gJHt2Lm9wdGlvbklkc1xyXG4gICAgICAgICAgICAgICAgICAgICAgLm1hcChpZCA9PiBvcHRpb25zLmZpbmQobyA9PiBvLmlkID09PSBpZCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKG5vdE51bGxPclVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgIC5tYXAobyA9PiBvLm5hbWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAuam9pbignICcpfWBcclxuICAgICAgICAgICAgICAgIDogcHJvZHVjdC5uYW1lO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgcHJvZHVjdElkOiBwcm9kdWN0LmlkLFxyXG4gICAgICAgICAgICAgICAgcHJpY2U6IHYucHJpY2UsXHJcbiAgICAgICAgICAgICAgICBza3U6IHYuc2t1LFxyXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRpb25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICBzdG9ja0xldmVsczogW1xyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RvY2tMb2NhdGlvbklkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9ja09uSGFuZDogdi5zdG9jayxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIG9wdGlvbklkczogdi5vcHRpb25JZHMsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UucHJvZHVjdC5jcmVhdGVQcm9kdWN0VmFyaWFudHModmFyaWFudHMpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoeyBjcmVhdGVQcm9kdWN0VmFyaWFudHMgfSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIGNyZWF0ZVByb2R1Y3RWYXJpYW50cyxcclxuICAgICAgICAgICAgICAgIHByb2R1Y3RJZDogcHJvZHVjdC5pZCxcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUHJvZHVjdCh1cGRhdGVPcHRpb25zOiB7XHJcbiAgICAgICAgcHJvZHVjdDogTm9uTnVsbGFibGU8R2V0UHJvZHVjdERldGFpbFF1ZXJ5Wydwcm9kdWN0J10+O1xyXG4gICAgICAgIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlO1xyXG4gICAgICAgIGF1dG9VcGRhdGU6IGJvb2xlYW47XHJcbiAgICAgICAgcHJvZHVjdElucHV0PzogVXBkYXRlUHJvZHVjdElucHV0O1xyXG4gICAgICAgIHZhcmlhbnRzSW5wdXQ/OiBVcGRhdGVQcm9kdWN0VmFyaWFudElucHV0W107XHJcbiAgICB9KSB7XHJcbiAgICAgICAgY29uc3QgeyBwcm9kdWN0LCBsYW5ndWFnZUNvZGUsIGF1dG9VcGRhdGUsIHByb2R1Y3RJbnB1dCwgdmFyaWFudHNJbnB1dCB9ID0gdXBkYXRlT3B0aW9ucztcclxuICAgICAgICBjb25zdCB1cGRhdGVPcGVyYXRpb25zOiBBcnJheTxPYnNlcnZhYmxlPFVwZGF0ZVByb2R1Y3RNdXRhdGlvbiB8IFVwZGF0ZVByb2R1Y3RWYXJpYW50c011dGF0aW9uPj4gPSBbXTtcclxuICAgICAgICBjb25zdCB1cGRhdGVWYXJpYW50c0lucHV0ID0gdmFyaWFudHNJbnB1dCB8fCBbXTtcclxuXHJcbiAgICAgICAgY29uc3QgdmFyaWFudHMkID0gYXV0b1VwZGF0ZVxyXG4gICAgICAgICAgICA/IHRoaXMuZGF0YVNlcnZpY2UucHJvZHVjdFxyXG4gICAgICAgICAgICAgICAgICAuZ2V0UHJvZHVjdFZhcmlhbnRzRm9yUHJvZHVjdCh7fSwgcHJvZHVjdC5pZClcclxuICAgICAgICAgICAgICAgICAgLm1hcFNpbmdsZSgoeyBwcm9kdWN0VmFyaWFudHMgfSkgPT4gcHJvZHVjdFZhcmlhbnRzLml0ZW1zKVxyXG4gICAgICAgICAgICA6IG9mKFtdKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHZhcmlhbnRzJC5waXBlKFxyXG4gICAgICAgICAgICBtZXJnZU1hcCh2YXJpYW50cyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvZHVjdElucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlT3BlcmF0aW9ucy5wdXNoKHRoaXMuZGF0YVNlcnZpY2UucHJvZHVjdC51cGRhdGVQcm9kdWN0KHByb2R1Y3RJbnB1dCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2R1Y3RPbGROYW1lID0gZmluZFRyYW5zbGF0aW9uKHByb2R1Y3QsIGxhbmd1YWdlQ29kZSk/Lm5hbWUgPz8gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjdE5ld05hbWUgPSBmaW5kVHJhbnNsYXRpb24ocHJvZHVjdElucHV0LCBsYW5ndWFnZUNvZGUpPy5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0TmV3TmFtZSAmJiBwcm9kdWN0T2xkTmFtZSAhPT0gcHJvZHVjdE5ld05hbWUgJiYgYXV0b1VwZGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHZhcmlhbnQgb2YgdmFyaWFudHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYXJpYW50TmFtZSA9IGZpbmRUcmFuc2xhdGlvbih2YXJpYW50LCBsYW5ndWFnZUNvZGUpPy5uYW1lIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhcmlhbnRJbnB1dDogVXBkYXRlUHJvZHVjdFZhcmlhbnRJbnB1dDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nVmFyaWFudElucHV0ID0gdXBkYXRlVmFyaWFudHNJbnB1dC5maW5kKGkgPT4gaS5pZCA9PT0gdmFyaWFudC5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdWYXJpYW50SW5wdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50SW5wdXQgPSBleGlzdGluZ1ZhcmlhbnRJbnB1dDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudElucHV0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogdmFyaWFudC5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25zOiBbeyBsYW5ndWFnZUNvZGUsIG5hbWU6IGN1cnJlbnRWYXJpYW50TmFtZSB9XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVZhcmlhbnRzSW5wdXQucHVzaCh2YXJpYW50SW5wdXQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFyaWFudFRyYW5zbGF0aW9uID0gZmluZFRyYW5zbGF0aW9uKHZhcmlhbnRJbnB1dCwgbGFuZ3VhZ2VDb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYW50VHJhbnNsYXRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFudFRyYW5zbGF0aW9uLm5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudFRyYW5zbGF0aW9uLm5hbWUgPSByZXBsYWNlTGFzdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRUcmFuc2xhdGlvbi5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdE9sZE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0TmV3TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgdmFyaWFudCB0cmFuc2xhdGlvbiB3YXMgZmFsc3ksIHdoaWNoIG9jY3Vyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIGRlZmluaW5nIHRoZSBwcm9kdWN0IG5hbWUgZm9yIGEgbmV3IHRyYW5zbGF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxhbmd1YWdlIHRoYXQgaGFkIG5vdCB5ZXQgYmVlbiBkZWZpbmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50VHJhbnNsYXRpb24ubmFtZSA9IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3ROZXdOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udmFyaWFudC5vcHRpb25zLm1hcChvID0+IG8ubmFtZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uam9pbignICcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVWYXJpYW50c0lucHV0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZU9wZXJhdGlvbnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0LnVwZGF0ZVByb2R1Y3RWYXJpYW50cyh1cGRhdGVWYXJpYW50c0lucHV0KSxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcmtKb2luKHVwZGF0ZU9wZXJhdGlvbnMpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVByb2R1Y3RPcHRpb25zKFxyXG4gICAgICAgIGlucHV0czogVXBkYXRlUHJvZHVjdE9wdGlvbklucHV0W10sXHJcbiAgICAgICAgYXV0b1VwZGF0ZVByb2R1Y3ROYW1lczogYm9vbGVhbixcclxuICAgICAgICBwcm9kdWN0OiBOb25OdWxsYWJsZTxHZXRQcm9kdWN0RGV0YWlsUXVlcnlbJ3Byb2R1Y3QnXT4sXHJcbiAgICAgICAgbGFuZ3VhZ2VDb2RlOiBMYW5ndWFnZUNvZGUsXHJcbiAgICApIHtcclxuICAgICAgICBjb25zdCB2YXJpYW50cyQgPSBhdXRvVXBkYXRlUHJvZHVjdE5hbWVzXHJcbiAgICAgICAgICAgID8gdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0XHJcbiAgICAgICAgICAgICAgICAgIC5nZXRQcm9kdWN0VmFyaWFudHNGb3JQcm9kdWN0KHt9LCBwcm9kdWN0LmlkKVxyXG4gICAgICAgICAgICAgICAgICAubWFwU2luZ2xlKCh7IHByb2R1Y3RWYXJpYW50cyB9KSA9PiBwcm9kdWN0VmFyaWFudHMuaXRlbXMpXHJcbiAgICAgICAgICAgIDogb2YoW10pO1xyXG5cclxuICAgICAgICByZXR1cm4gdmFyaWFudHMkLnBpcGUoXHJcbiAgICAgICAgICAgIG1lcmdlTWFwKHZhcmlhbnRzID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCB1cGRhdGVQcm9kdWN0VmFyaWFudE5hbWVzJDogT2JzZXJ2YWJsZTxhbnk+ID0gb2YoW10pO1xyXG4gICAgICAgICAgICAgICAgaWYgKGF1dG9VcGRhdGVQcm9kdWN0TmFtZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXBsYWNlbWVudE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaW5wdXQgb2YgaW5wdXRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld09wdGlvbk5hbWUgPSBmaW5kVHJhbnNsYXRpb24oaW5wdXQsIGxhbmd1YWdlQ29kZSk/Lm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvbGRPcHRpb25OYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdmFyaWFudCBvZiB2YXJpYW50cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZE9wdGlvbk5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYW50Lm9wdGlvbnMubWFwKG8gPT4gby5pZCkuaW5jbHVkZXMoaW5wdXQuaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvbGRPcHRpb25OYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZE9wdGlvbk5hbWUgPSBmaW5kVHJhbnNsYXRpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50Lm9wdGlvbnMuZmluZChvID0+IG8uaWQgPT09IGlucHV0LmlkKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8ubmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZE9wdGlvbk5hbWUgJiYgbmV3T3B0aW9uTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRNYXAuc2V0KG9sZE9wdGlvbk5hbWUsIG5ld09wdGlvbk5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YXJpYW50c1RvVXBkYXRlOiBVcGRhdGVQcm9kdWN0VmFyaWFudElucHV0W10gPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVwbGFjZW1lbnRNYXAuc2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvbGRPcHRpb25OYW1lcyA9IEFycmF5LmZyb20ocmVwbGFjZW1lbnRNYXAua2V5cygpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB2YXJpYW50IG9mIHZhcmlhbnRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YXJpYW50TmFtZSA9IGZpbmRUcmFuc2xhdGlvbih2YXJpYW50LCBsYW5ndWFnZUNvZGUpPy5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YXJpYW50TmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvbGRPcHRpb25OYW1lcy5zb21lKG9sZE9wdGlvbk5hbWUgPT4gdmFyaWFudE5hbWUuaW5jbHVkZXMob2xkT3B0aW9uTmFtZSkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkVmFyaWFudE5hbWUgPSBvbGRPcHRpb25OYW1lcy5yZWR1Y2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUsIG9sZE9wdGlvbk5hbWUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VMYXN0KG5hbWUsIG9sZE9wdGlvbk5hbWUsIHJlcGxhY2VtZW50TWFwLmdldChvbGRPcHRpb25OYW1lKSEpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRzVG9VcGRhdGUucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHZhcmlhbnQuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHVwZGF0ZWRWYXJpYW50TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnRzVG9VcGRhdGUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVByb2R1Y3RWYXJpYW50TmFtZXMkID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UucHJvZHVjdC51cGRhdGVQcm9kdWN0VmFyaWFudHModmFyaWFudHNUb1VwZGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlUHJvZHVjdFZhcmlhbnROYW1lcyQgPSBvZihbXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcmtKb2luKFxyXG4gICAgICAgICAgICAgICAgICAgIGlucHV0cy5tYXAoaW5wdXQgPT4gdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0LnVwZGF0ZVByb2R1Y3RPcHRpb24oaW5wdXQpKSxcclxuICAgICAgICAgICAgICAgICkucGlwZShtZXJnZU1hcCgoKSA9PiB1cGRhdGVQcm9kdWN0VmFyaWFudE5hbWVzJCkpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZVByb2R1Y3RWYXJpYW50KGlkOiBzdHJpbmcsIHByb2R1Y3RJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UucHJvZHVjdC5kZWxldGVQcm9kdWN0VmFyaWFudChpZCkucGlwZShcclxuICAgICAgICAgICAgc3dpdGNoTWFwKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmRlbGV0ZVByb2R1Y3RWYXJpYW50LnJlc3VsdCA9PT0gRGVsZXRpb25SZXN1bHQuREVMRVRFRCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnByb2R1Y3QuZ2V0UHJvZHVjdChwcm9kdWN0SWQpLnNpbmdsZSQ7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHJlc3VsdC5kZWxldGVQcm9kdWN0VmFyaWFudC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Auto-generated by the set-version.js script.
|
|
2
|
-
export const ADMIN_UI_VERSION = '2.2.
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
export const ADMIN_UI_VERSION = '2.2.7';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tbW9uL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBzZXQtdmVyc2lvbi5qcyBzY3JpcHQuXG5leHBvcnQgY29uc3QgQURNSU5fVUlfVkVSU0lPTiA9ICcyLjIuNyc7XG4iXX0=
|
|
@@ -1,22 +1,67 @@
|
|
|
1
|
-
import { Component, inject } from '@angular/core';
|
|
1
|
+
import { Component, EventEmitter, inject, Input, Output, } from '@angular/core';
|
|
2
2
|
import { SharedModule } from '../../shared/shared.module';
|
|
3
3
|
import { ROUTE_COMPONENT_OPTIONS, RouteComponent } from './route.component';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* @description
|
|
7
|
+
* This component is used internally to allow us to dynamically load a component
|
|
8
|
+
* like with `*ngComponentOutlet`, but with the ability to get a reference to the
|
|
9
|
+
* created ComponentRef. This can then be used to delegate lifecycle events like
|
|
10
|
+
* `canDeactivate` to the loaded component.
|
|
11
|
+
*/
|
|
12
|
+
export class DynamicComponentLoaderComponent {
|
|
13
|
+
constructor(viewContainer) {
|
|
14
|
+
this.viewContainer = viewContainer;
|
|
15
|
+
this.loaded = new EventEmitter();
|
|
16
|
+
}
|
|
17
|
+
ngOnInit() {
|
|
18
|
+
const componentRef = this.viewContainer.createComponent(this.componentType);
|
|
19
|
+
this.loaded.emit(componentRef);
|
|
20
|
+
}
|
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DynamicComponentLoaderComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: DynamicComponentLoaderComponent, isStandalone: true, selector: "vdr-dynamic-component-loader", inputs: { componentType: "componentType" }, outputs: { loaded: "loaded" }, ngImport: i0, template: ``, isInline: true, dependencies: [{ kind: "ngmodule", type: SharedModule }] }); }
|
|
23
|
+
}
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DynamicComponentLoaderComponent, decorators: [{
|
|
25
|
+
type: Component,
|
|
26
|
+
args: [{
|
|
27
|
+
selector: 'vdr-dynamic-component-loader',
|
|
28
|
+
template: ``,
|
|
29
|
+
standalone: true,
|
|
30
|
+
imports: [SharedModule],
|
|
31
|
+
}]
|
|
32
|
+
}], ctorParameters: () => [{ type: i0.ViewContainerRef }], propDecorators: { componentType: [{
|
|
33
|
+
type: Input
|
|
34
|
+
}], loaded: [{
|
|
35
|
+
type: Output
|
|
36
|
+
}] } });
|
|
6
37
|
export class AngularRouteComponent {
|
|
7
38
|
constructor() {
|
|
8
39
|
this.component = inject(ROUTE_COMPONENT_OPTIONS).component;
|
|
9
40
|
}
|
|
41
|
+
componentLoaded(componentRef) {
|
|
42
|
+
this.componentRef = componentRef;
|
|
43
|
+
}
|
|
44
|
+
canDeactivate() {
|
|
45
|
+
return this.componentRef?.instance?.canDeactivate?.();
|
|
46
|
+
}
|
|
10
47
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AngularRouteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: AngularRouteComponent, isStandalone: true, selector: "vdr-angular-route-component", ngImport: i0, template: `
|
|
48
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: AngularRouteComponent, isStandalone: true, selector: "vdr-angular-route-component", ngImport: i0, template: `
|
|
49
|
+
<vdr-route-component>
|
|
50
|
+
<vdr-dynamic-component-loader [componentType]="component" (loaded)="componentLoaded($event)" />
|
|
51
|
+
</vdr-route-component>
|
|
52
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: SharedModule }, { kind: "component", type: RouteComponent, selector: "vdr-route-component" }, { kind: "component", type: DynamicComponentLoaderComponent, selector: "vdr-dynamic-component-loader", inputs: ["componentType"], outputs: ["loaded"] }] }); }
|
|
12
53
|
}
|
|
13
54
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AngularRouteComponent, decorators: [{
|
|
14
55
|
type: Component,
|
|
15
56
|
args: [{
|
|
16
57
|
selector: 'vdr-angular-route-component',
|
|
17
|
-
template: `
|
|
58
|
+
template: `
|
|
59
|
+
<vdr-route-component>
|
|
60
|
+
<vdr-dynamic-component-loader [componentType]="component" (loaded)="componentLoaded($event)" />
|
|
61
|
+
</vdr-route-component>
|
|
62
|
+
`,
|
|
18
63
|
standalone: true,
|
|
19
|
-
imports: [SharedModule, RouteComponent],
|
|
64
|
+
imports: [SharedModule, RouteComponent, DynamicComponentLoaderComponent],
|
|
20
65
|
}]
|
|
21
66
|
}] });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1yb3V0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL2V4dGVuc2lvbi9jb21wb25lbnRzL2FuZ3VsYXItcm91dGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBRTVFOzs7Ozs7R0FNRztBQU9ILE1BQU0sT0FBTywrQkFBK0I7SUFHeEMsWUFBb0IsYUFBK0I7UUFBL0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBRHpDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztJQUNILENBQUM7SUFFdkQsUUFBUTtRQUNKLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNuQyxDQUFDOzhHQVJRLCtCQUErQjtrR0FBL0IsK0JBQStCLG1LQUo5QixFQUFFLDJEQUVGLFlBQVk7OzJGQUViLCtCQUErQjtrQkFOM0MsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMxQjtxRkFFWSxhQUFhO3NCQUFyQixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTTs7QUFtQlgsTUFBTSxPQUFPLHFCQUFxQjtJQVZsQztRQVdjLGNBQVMsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxTQUFTLENBQUM7S0FVbkU7SUFQRyxlQUFlLENBQUMsWUFBK0I7UUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDckMsQ0FBQztJQUVELGFBQWE7UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQUM7SUFDMUQsQ0FBQzs4R0FWUSxxQkFBcUI7a0dBQXJCLHFCQUFxQix1RkFScEI7Ozs7S0FJVCwyREFFUyxZQUFZLCtCQUFFLGNBQWMsZ0VBbkI3QiwrQkFBK0I7OzJGQXFCL0IscUJBQXFCO2tCQVZqQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFFBQVEsRUFBRTs7OztLQUlUO29CQUNELFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLCtCQUErQixDQUFDO2lCQUMzRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBST1VURV9DT01QT05FTlRfT1BUSU9OUywgUm91dGVDb21wb25lbnQgfSBmcm9tICcuL3JvdXRlLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGlzIGNvbXBvbmVudCBpcyB1c2VkIGludGVybmFsbHkgdG8gYWxsb3cgdXMgdG8gZHluYW1pY2FsbHkgbG9hZCBhIGNvbXBvbmVudFxuICogbGlrZSB3aXRoIGAqbmdDb21wb25lbnRPdXRsZXRgLCBidXQgd2l0aCB0aGUgYWJpbGl0eSB0byBnZXQgYSByZWZlcmVuY2UgdG8gdGhlXG4gKiBjcmVhdGVkIENvbXBvbmVudFJlZi4gVGhpcyBjYW4gdGhlbiBiZSB1c2VkIHRvIGRlbGVnYXRlIGxpZmVjeWNsZSBldmVudHMgbGlrZVxuICogYGNhbkRlYWN0aXZhdGVgIHRvIHRoZSBsb2FkZWQgY29tcG9uZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Zkci1keW5hbWljLWNvbXBvbmVudC1sb2FkZXInLFxuICAgIHRlbXBsYXRlOiBgYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtTaGFyZWRNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljQ29tcG9uZW50TG9hZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBjb21wb25lbnRUeXBlOiBhbnk7XG4gICAgQE91dHB1dCgpIGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tcG9uZW50UmVmPGFueT4+KCk7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVDb21wb25lbnQodGhpcy5jb21wb25lbnRUeXBlKTtcbiAgICAgICAgdGhpcy5sb2FkZWQuZW1pdChjb21wb25lbnRSZWYpO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd2ZHItYW5ndWxhci1yb3V0ZS1jb21wb25lbnQnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDx2ZHItcm91dGUtY29tcG9uZW50PlxuICAgICAgICAgICAgPHZkci1keW5hbWljLWNvbXBvbmVudC1sb2FkZXIgW2NvbXBvbmVudFR5cGVdPVwiY29tcG9uZW50XCIgKGxvYWRlZCk9XCJjb21wb25lbnRMb2FkZWQoJGV2ZW50KVwiIC8+XG4gICAgICAgIDwvdmRyLXJvdXRlLWNvbXBvbmVudD5cbiAgICBgLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1NoYXJlZE1vZHVsZSwgUm91dGVDb21wb25lbnQsIER5bmFtaWNDb21wb25lbnRMb2FkZXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyUm91dGVDb21wb25lbnQge1xuICAgIHByb3RlY3RlZCBjb21wb25lbnQgPSBpbmplY3QoUk9VVEVfQ09NUE9ORU5UX09QVElPTlMpLmNvbXBvbmVudDtcbiAgICBwcm90ZWN0ZWQgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PjtcblxuICAgIGNvbXBvbmVudExvYWRlZChjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+KSB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gY29tcG9uZW50UmVmO1xuICAgIH1cblxuICAgIGNhbkRlYWN0aXZhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFJlZj8uaW5zdGFuY2U/LmNhbkRlYWN0aXZhdGU/LigpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -3,7 +3,7 @@ import { DataTableCustomComponentService, } from '../shared/components/data-tabl
|
|
|
3
3
|
/**
|
|
4
4
|
* @description
|
|
5
5
|
* Allows you to override the default component used to render the data of a particular column in a DataTable.
|
|
6
|
-
* The component should implement the {@link
|
|
6
|
+
* The component should implement the {@link CustomColumnComponent} interface. The tableId and columnId can
|
|
7
7
|
* be determined by pressing `ctrl + u` when running the Admin UI in dev mode.
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
@@ -48,4 +48,4 @@ export function registerDataTableComponent(config) {
|
|
|
48
48
|
deps: [DataTableCustomComponentService],
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItZGF0YS10YWJsZS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL2V4dGVuc2lvbi9yZWdpc3Rlci1kYXRhLXRhYmxlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFFSCwrQkFBK0IsR0FDbEMsTUFBTSx1RUFBdUUsQ0FBQztBQUUvRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFDRztBQUNILE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxNQUFnQztJQUN2RSxPQUFPO1FBQ0gsT0FBTyxFQUFFLGVBQWU7UUFDeEIsS0FBSyxFQUFFLElBQUk7UUFDWCxVQUFVLEVBQUUsQ0FBQywrQkFBZ0UsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFO1lBQ25GLCtCQUErQixDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFDRCxJQUFJLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztLQUMxQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBEYXRhVGFibGVDb21wb25lbnRDb25maWcsXG4gICAgRGF0YVRhYmxlQ3VzdG9tQ29tcG9uZW50U2VydmljZSxcbn0gZnJvbSAnLi4vc2hhcmVkL2NvbXBvbmVudHMvZGF0YS10YWJsZS0yL2RhdGEtdGFibGUtY3VzdG9tLWNvbXBvbmVudC5zZXJ2aWNlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFsbG93cyB5b3UgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgY29tcG9uZW50IHVzZWQgdG8gcmVuZGVyIHRoZSBkYXRhIG9mIGEgcGFydGljdWxhciBjb2x1bW4gaW4gYSBEYXRhVGFibGUuXG4gKiBUaGUgY29tcG9uZW50IHNob3VsZCBpbXBsZW1lbnQgdGhlIHtAbGluayBDdXN0b21Db2x1bW5Db21wb25lbnR9IGludGVyZmFjZS4gVGhlIHRhYmxlSWQgYW5kIGNvbHVtbklkIGNhblxuICogYmUgZGV0ZXJtaW5lZCBieSBwcmVzc2luZyBgY3RybCArIHVgIHdoZW4gcnVubmluZyB0aGUgQWRtaW4gVUkgaW4gZGV2IG1vZGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzIHRpdGxlPVwiY29tcG9uZW50cy9jdXN0b20tdGFibGUuY29tcG9uZW50LnRzXCJcbiAqIGltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdcXEBhbmd1bGFyL2NvcmUnO1xuICogaW1wb3J0IHsgQ3VzdG9tQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnXFxAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcbiAqXG4gKiBcXEBDb21wb25lbnQoe1xuICogICAgIHNlbGVjdG9yOiAnY3VzdG9tLXNsdWctY29tcG9uZW50JyxcbiAqICAgICB0ZW1wbGF0ZTogYFxuICogICAgICAgICA8YSBbaHJlZl09XCInaHR0cHM6Ly9leGFtcGxlLmNvbS9wcm9kdWN0cy8nICsgcm93SXRlbS5zbHVnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+e3sgcm93SXRlbS5zbHVnIH19PC9hPlxuICogICAgIGAsXG4gKiAgICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQ3VzdG9tVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBDdXN0b21Db2x1bW5Db21wb25lbnQge1xuICogICAgIFxcQElucHV0KCkgcm93SXRlbTogYW55O1xuICogfVxuICogYGBgXG4gKlxuICogYGBgdHMgdGl0bGU9XCJwcm92aWRlcnMudHNcIlxuICogaW1wb3J0IHsgcmVnaXN0ZXJEYXRhVGFibGVDb21wb25lbnQgfSBmcm9tICdcXEB2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xuICogaW1wb3J0IHsgQ3VzdG9tVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3VzdG9tLXRhYmxlLmNvbXBvbmVudCc7XG4gKlxuICogZXhwb3J0IGRlZmF1bHQgW1xuICogICAgIHJlZ2lzdGVyRGF0YVRhYmxlQ29tcG9uZW50KHtcbiAqICAgICAgICAgY29tcG9uZW50OiBDdXN0b21UYWJsZUNvbXBvbmVudCxcbiAqICAgICAgICAgdGFibGVJZDogJ3Byb2R1Y3QtbGlzdCcsXG4gKiAgICAgICAgIGNvbHVtbklkOiAnc2x1ZycsXG4gKiAgICAgfSksXG4gKiBdO1xuICogYGBgXG4gKlxuICogQGRvY3NDYXRlZ29yeSBjdXN0b20tdGFibGUtY29tcG9uZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEYXRhVGFibGVDb21wb25lbnQoY29uZmlnOiBEYXRhVGFibGVDb21wb25lbnRDb25maWcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB1c2VGYWN0b3J5OiAoZGF0YVRhYmxlQ3VzdG9tQ29tcG9uZW50U2VydmljZTogRGF0YVRhYmxlQ3VzdG9tQ29tcG9uZW50U2VydmljZSkgPT4gKCkgPT4ge1xuICAgICAgICAgICAgZGF0YVRhYmxlQ3VzdG9tQ29tcG9uZW50U2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudChjb25maWcpO1xuICAgICAgICB9LFxuICAgICAgICBkZXBzOiBbRGF0YVRhYmxlQ3VzdG9tQ29tcG9uZW50U2VydmljZV0sXG4gICAgfTtcbn1cbiJdfQ==
|
|
@@ -94,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
94
94
|
type: HostListener,
|
|
95
95
|
args: ['document:dragleave', ['$event']]
|
|
96
96
|
}] } });
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2Fzc2V0LWZpbGUtaW5wdXQvYXNzZXQtZmlsZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2Fzc2V0LWZpbGUtaW5wdXQvYXNzZXQtZmlsZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7QUFJdEU7O0dBRUc7QUFPSCxNQUFNLE9BQU8sdUJBQXVCO0lBa0JoQyxZQUFvQixZQUFpQztRQUFqQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFqQnJEOzs7V0FHRztRQUNNLG1CQUFjLEdBQUcsTUFBTSxDQUFDO1FBQ3hCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ25ELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsa0JBQWEsR0FBRztZQUNaLFVBQVUsRUFBRSxDQUFDO1lBQ2IsV0FBVyxFQUFFLENBQUM7WUFDZCxRQUFRLEVBQUUsQ0FBQztZQUNYLFNBQVMsRUFBRSxDQUFDO1NBQ2YsQ0FBQztJQUdzRCxDQUFDO0lBRXpELFFBQVE7UUFDSixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBR0QsV0FBVztRQUNQLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxrR0FBa0c7SUFFbEcsV0FBVyxDQUFDLEtBQVU7UUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDMUIsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQUMsS0FBVTtRQUNqQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGtHQUFrRztJQUNsRyxNQUFNLENBQUMsS0FBVTtRQUNiLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFtQixLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ3pGLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUN2QixNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQVk7UUFDZixNQUFNLEtBQUssR0FBSSxLQUFLLENBQUMsTUFBMkIsQ0FBQyxLQUFLLENBQUM7UUFDdkQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQWdCLENBQUM7UUFDMUUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM5QyxDQUFDO0lBQ0wsQ0FBQzs4R0ExRVEsdUJBQXVCO2tHQUF2Qix1QkFBdUIsd1JDdEJwQyxpbUNBMkJBOzsyRkRMYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0ksc0JBQXNCLG1CQUdmLHVCQUF1QixDQUFDLE1BQU07d0ZBT3RDLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQW1CUCxXQUFXO3NCQURWLFlBQVk7dUJBQUMsb0JBQW9CO2dCQVFsQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBIb3N0TGlzdGVuZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdXRpbHMnO1xyXG5cclxuaW1wb3J0IHsgU2VydmVyQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2RhdGEvc2VydmVyLWNvbmZpZyc7XHJcblxyXG4vKipcclxuICogQSBjb21wb25lbnQgZm9yIHNlbGVjdGluZyBmaWxlcyB0byB1cGxvYWQgYXMgbmV3IEFzc2V0cy5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItYXNzZXQtZmlsZS1pbnB1dCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXNzZXQtZmlsZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9hc3NldC1maWxlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFzc2V0RmlsZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIC8qKlxyXG4gICAgICogQ1NTIHNlbGVjdG9yIG9mIHRoZSBET00gZWxlbWVudCB3aGljaCB3aWxsIGJlIG1hc2tlZCBieSB0aGUgZmlsZVxyXG4gICAgICogZHJvcCB6b25lLiBEZWZhdWx0cyB0byBgYm9keWAuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGRyb3Bab25lVGFyZ2V0ID0gJ2JvZHknO1xyXG4gICAgQElucHV0KCkgdXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0RmlsZXMgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVbXT4oKTtcclxuICAgIGRyYWdnaW5nID0gZmFsc2U7XHJcbiAgICBvdmVyRHJvcFpvbmUgPSBmYWxzZTtcclxuICAgIGRyb3Bab25lU3R5bGUgPSB7XHJcbiAgICAgICAgJ3dpZHRoLnB4JzogMCxcclxuICAgICAgICAnaGVpZ2h0LnB4JzogMCxcclxuICAgICAgICAndG9wLnB4JzogMCxcclxuICAgICAgICAnbGVmdC5weCc6IDAsXHJcbiAgICB9O1xyXG4gICAgYWNjZXB0OiBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2ZXJDb25maWc6IFNlcnZlckNvbmZpZ1NlcnZpY2UpIHt9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5hY2NlcHQgPSB0aGlzLnNlcnZlckNvbmZpZy5zZXJ2ZXJDb25maWcucGVybWl0dGVkQXNzZXRUeXBlcy5qb2luKCcsJyk7XHJcbiAgICAgICAgdGhpcy5maXREcm9wWm9uZVRvVGFyZ2V0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6ZHJhZ2VudGVyJylcclxuICAgIG9uRHJhZ0VudGVyKCkge1xyXG4gICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZml0RHJvcFpvbmVUb1RhcmdldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIERyYWdFdmVudCBpcyBub3Qgc3VwcG9ydGVkIGluIFNhZmFyaSwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS92ZW5kdXJlLWVjb21tZXJjZS92ZW5kdXJlL3B1bGwvMjg0XHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpkcmFnbGVhdmUnLCBbJyRldmVudCddKVxyXG4gICAgb25EcmFnTGVhdmUoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGlmICghZXZlbnQuY2xpZW50WCAmJiAhZXZlbnQuY2xpZW50WSkge1xyXG4gICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJldmVudGluZyB0aGlzIGV2ZW50IGlzIHJlcXVpcmVkIHRvIG1ha2UgZHJvcHBpbmcgd29yay5cclxuICAgICAqIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTF9EcmFnX2FuZF9Ecm9wX0FQSSNEZWZpbmVfYV9kcm9wX3pvbmVcclxuICAgICAqL1xyXG4gICAgb25EcmFnT3ZlcihldmVudDogYW55KSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBEcmFnRXZlbnQgaXMgbm90IHN1cHBvcnRlZCBpbiBTYWZhcmksIHNlZSBodHRwczovL2dpdGh1Yi5jb20vdmVuZHVyZS1lY29tbWVyY2UvdmVuZHVyZS9wdWxsLzI4NFxyXG4gICAgb25Ecm9wKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm92ZXJEcm9wWm9uZSA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGZpbGVzID0gQXJyYXkuZnJvbTxEYXRhVHJhbnNmZXJJdGVtPihldmVudC5kYXRhVHJhbnNmZXIgPyBldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMgOiBbXSlcclxuICAgICAgICAgICAgLm1hcChpID0+IGkuZ2V0QXNGaWxlKCkpXHJcbiAgICAgICAgICAgIC5maWx0ZXIobm90TnVsbE9yVW5kZWZpbmVkKTtcclxuICAgICAgICB0aGlzLnNlbGVjdEZpbGVzLmVtaXQoZmlsZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdChldmVudDogRXZlbnQpIHtcclxuICAgICAgICBjb25zdCBmaWxlcyA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZmlsZXM7XHJcbiAgICAgICAgaWYgKGZpbGVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RmlsZXMuZW1pdChBcnJheS5mcm9tKGZpbGVzKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZml0RHJvcFpvbmVUb1RhcmdldCgpIHtcclxuICAgICAgICBjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuZHJvcFpvbmVUYXJnZXQpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGlmICh0YXJnZXQpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVjdCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICAgICAgdGhpcy5kcm9wWm9uZVN0eWxlWyd3aWR0aC5weCddID0gcmVjdC53aWR0aDtcclxuICAgICAgICAgICAgdGhpcy5kcm9wWm9uZVN0eWxlWydoZWlnaHQucHgnXSA9IHJlY3QuaGVpZ2h0O1xyXG4gICAgICAgICAgICB0aGlzLmRyb3Bab25lU3R5bGVbJ3RvcC5weCddID0gcmVjdC50b3A7XHJcbiAgICAgICAgICAgIHRoaXMuZHJvcFpvbmVTdHlsZVsnbGVmdC5weCddID0gcmVjdC5sZWZ0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8aW5wdXQgdHlwZT1cImZpbGVcIiBjbGFzcz1cImZpbGUtaW5wdXRcIiAjZmlsZUlucHV0IChjaGFuZ2UpPVwic2VsZWN0KCRldmVudClcIiBtdWx0aXBsZSBbYWNjZXB0XT1cImFjY2VwdFwiIC8+XHJcbjxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiBbZGlzYWJsZWRdPVwidXBsb2FkaW5nXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXBsb2FkaW5nOyBlbHNlIHNlbGVjdGFibGVcIj5cclxuICAgICAgICA8Y2xyLXNwaW5uZXIgY2xySW5saW5lPjwvY2xyLXNwaW5uZXI+XHJcbiAgICAgICAge3sgJ2Fzc2V0LnVwbG9hZGluZycgfCB0cmFuc2xhdGUgfX1cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLXRlbXBsYXRlICNzZWxlY3RhYmxlPlxyXG4gICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInVwbG9hZC1jbG91ZFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAge3sgJ2Fzc2V0LnVwbG9hZC1hc3NldHMnIHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L2J1dHRvbj5cclxuPGRpdlxyXG4gICAgY2xhc3M9XCJkcm9wLXpvbmVcIlxyXG4gICAgW25nU3R5bGVdPVwiZHJvcFpvbmVTdHlsZVwiXHJcbiAgICBbY2xhc3MudmlzaWJsZV09XCJkcmFnZ2luZ1wiXHJcbiAgICBbY2xhc3MuZHJhZ2dpbmctb3Zlcl09XCJvdmVyRHJvcFpvbmVcIlxyXG4gICAgKGRyYWdlbnRlcik9XCJvdmVyRHJvcFpvbmUgPSB0cnVlXCJcclxuICAgIChkcmFnbGVhdmUpPVwib3ZlckRyb3Bab25lID0gZmFsc2VcIlxyXG4gICAgKGRyYWdvdmVyKT1cIm9uRHJhZ092ZXIoJGV2ZW50KVwiXHJcbiAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXHJcbiAgICAjZHJvcFpvbmVcclxuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRyb3AtbGFiZWxcIiAoZHJhZ2VudGVyKT1cIm92ZXJEcm9wWm9uZSA9IHRydWVcIj5cclxuICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJ1cGxvYWQtY2xvdWRcIiBzaXplPVwiMzJcIj48L2Nsci1pY29uPlxyXG4gICAgICAgIHt7ICdjYXRhbG9nLmRyb3AtZmlsZXMtdG8tdXBsb2FkJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -75,11 +75,11 @@ export class AssetGalleryComponent {
|
|
|
75
75
|
event.stopPropagation();
|
|
76
76
|
}
|
|
77
77
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AssetGalleryComponent, deps: [{ token: i1.ModalService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
78
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: AssetGalleryComponent, selector: "vdr-asset-gallery", inputs: { assets: "assets", multiSelect: "multiSelect", canDelete: "canDelete" }, outputs: { selectionChange: "selectionChange", deleteAssets: "deleteAssets", editAssetClick: "editAssetClick" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"gallery\">\r\n <div\r\n class=\"card\"\r\n *ngFor=\"let asset of assets\"\r\n (click)=\"toggleSelection(asset, $event)\"\r\n [class.selected]=\"isSelected(asset)\"\r\n >\r\n <div class=\"card-img\">\r\n <vdr-select-toggle\r\n [selected]=\"isSelected(asset)\"\r\n [disabled]=\"true\"\r\n [hiddenWhenOff]=\"true\"\r\n ></vdr-select-toggle>\r\n <img class=\"asset-thumb\" [src]=\"asset | assetPreview : 'thumb'\" />\r\n </div>\r\n <div class=\"detail\">\r\n <vdr-entity-info\r\n [entity]=\"asset\"\r\n [small]=\"true\"\r\n (click)=\"entityInfoClick($event)\"\r\n ></vdr-entity-info>\r\n <span [title]=\"asset.name\">{{ asset.name }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"info-bar\">\r\n <div class=\"card\">\r\n <div class=\"card-img\">\r\n <div class=\"placeholder\" *ngIf=\"selectionManager.selection.length === 0\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n <div>{{ 'catalog.no-selection' | translate }}</div>\r\n </div>\r\n <img\r\n class=\"preview\"\r\n *ngIf=\"selectionManager.selection.length >= 1\"\r\n [src]=\"lastSelected().preview + '?preset=medium'\"\r\n />\r\n </div>\r\n <div class=\"card-block details\" *ngIf=\"selectionManager.selection.length >= 1\">\r\n <div class=\"name\">{{ lastSelected().name }}</div>\r\n <div>{{ 'asset.original-asset-size' | translate }}: {{ lastSelected().fileSize | filesize }}</div>\r\n\r\n <ng-container *ngIf=\"selectionManager.selection.length === 1\">\r\n <vdr-chip *ngFor=\"let tag of lastSelected().tags\" [colorFrom]=\"tag.value\"\r\n ><clr-icon shape=\"tag\" class=\"mr2\"></clr-icon> {{ tag.value }}</vdr-chip\r\n >\r\n </ng-container>\r\n <div *ngIf=\"selectionManager.selection.length === 1\">\r\n <a [routerLink]=\"['/catalog/assets/', lastSelected().id]\" (click)=\"editAssetClick.emit()\" class=\"button-ghost\">\r\n <clr-icon shape=\"pencil\"></clr-icon> {{ 'common.edit' | translate }}\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </div>\r\n <div *ngIf=\"selectionManager.selection.length === 1\">\r\n <button (click)=\"previewAsset(lastSelected())\" class=\"button-small mt-1\">\r\n <clr-icon shape=\"eye\"></clr-icon> {{ 'asset.preview' | translate }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"canDelete\">\r\n <button (click)=\"deleteAssets.emit(selectionManager.selection)\" class=\"button-small mt-1\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"mt-1\" *ngIf=\"selectionManager.selection.length === 1\">\r\n <vdr-asset-preview-links class=\"\" [asset]=\"lastSelected()\"></vdr-asset-preview-links>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card stack\" [class.visible]=\"selectionManager.selection.length > 1\"></div>\r\n <div class=\"selection-count\" [class.visible]=\"selectionManager.selection.length > 1\">\r\n {{ 'asset.assets-selected-count' | translate : { count: selectionManager.selection.length } }}\r\n <ul>\r\n <li *ngFor=\"let asset of selectionManager.selection\">{{ asset.name }}</li>\r\n </ul>\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column-reverse}@media screen and (min-width: 992px){:host{flex-direction:row}}.gallery{flex:1;display:grid;grid-template-columns:repeat(auto-fill,150px);grid-
|
|
78
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: AssetGalleryComponent, selector: "vdr-asset-gallery", inputs: { assets: "assets", multiSelect: "multiSelect", canDelete: "canDelete" }, outputs: { selectionChange: "selectionChange", deleteAssets: "deleteAssets", editAssetClick: "editAssetClick" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"gallery\">\r\n <div\r\n class=\"card\"\r\n *ngFor=\"let asset of assets\"\r\n (click)=\"toggleSelection(asset, $event)\"\r\n [class.selected]=\"isSelected(asset)\"\r\n >\r\n <div class=\"card-img\">\r\n <vdr-select-toggle\r\n [selected]=\"isSelected(asset)\"\r\n [disabled]=\"true\"\r\n [hiddenWhenOff]=\"true\"\r\n ></vdr-select-toggle>\r\n <img class=\"asset-thumb\" [src]=\"asset | assetPreview : 'thumb'\" />\r\n </div>\r\n <div class=\"detail\">\r\n <vdr-entity-info\r\n [entity]=\"asset\"\r\n [small]=\"true\"\r\n (click)=\"entityInfoClick($event)\"\r\n ></vdr-entity-info>\r\n <span [title]=\"asset.name\">{{ asset.name }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"info-bar\">\r\n <div class=\"card\">\r\n <div class=\"card-img\">\r\n <div class=\"placeholder\" *ngIf=\"selectionManager.selection.length === 0\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n <div>{{ 'catalog.no-selection' | translate }}</div>\r\n </div>\r\n <img\r\n class=\"preview\"\r\n *ngIf=\"selectionManager.selection.length >= 1\"\r\n [src]=\"lastSelected().preview + '?preset=medium'\"\r\n />\r\n </div>\r\n <div class=\"card-block details\" *ngIf=\"selectionManager.selection.length >= 1\">\r\n <div class=\"name\">{{ lastSelected().name }}</div>\r\n <div>{{ 'asset.original-asset-size' | translate }}: {{ lastSelected().fileSize | filesize }}</div>\r\n\r\n <ng-container *ngIf=\"selectionManager.selection.length === 1\">\r\n <vdr-chip *ngFor=\"let tag of lastSelected().tags\" [colorFrom]=\"tag.value\"\r\n ><clr-icon shape=\"tag\" class=\"mr2\"></clr-icon> {{ tag.value }}</vdr-chip\r\n >\r\n </ng-container>\r\n <div *ngIf=\"selectionManager.selection.length === 1\">\r\n <a [routerLink]=\"['/catalog/assets/', lastSelected().id]\" (click)=\"editAssetClick.emit()\" class=\"button-ghost\">\r\n <clr-icon shape=\"pencil\"></clr-icon> {{ 'common.edit' | translate }}\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </div>\r\n <div *ngIf=\"selectionManager.selection.length === 1\">\r\n <button (click)=\"previewAsset(lastSelected())\" class=\"button-small mt-1\">\r\n <clr-icon shape=\"eye\"></clr-icon> {{ 'asset.preview' | translate }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"canDelete\">\r\n <button (click)=\"deleteAssets.emit(selectionManager.selection)\" class=\"button-small mt-1\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"mt-1\" *ngIf=\"selectionManager.selection.length === 1\">\r\n <vdr-asset-preview-links class=\"\" [asset]=\"lastSelected()\"></vdr-asset-preview-links>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card stack\" [class.visible]=\"selectionManager.selection.length > 1\"></div>\r\n <div class=\"selection-count\" [class.visible]=\"selectionManager.selection.length > 1\">\r\n {{ 'asset.assets-selected-count' | translate : { count: selectionManager.selection.length } }}\r\n <ul>\r\n <li *ngFor=\"let asset of selectionManager.selection\">{{ asset.name }}</li>\r\n </ul>\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column-reverse}@media screen and (min-width: 992px){:host{flex-direction:row}}.gallery{flex:1;display:grid;grid-template-columns:repeat(auto-fill,150px);grid-gap:10px 20px}.gallery .card:hover{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card{margin-top:0;position:relative}img.asset-thumb{aspect-ratio:1}vdr-select-toggle{position:absolute;top:-12px;left:-12px}vdr-select-toggle ::ng-deep .toggle{box-shadow:0 5px 5px -4px #000000bf}.card.selected{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card.selected .selected-checkbox{opacity:1}.detail{display:flex;align-items:normal;gap:4px;min-height:24px;font-size:12px;margin:3px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.info-bar{padding:0 6px;overflow-y:auto}@media screen and (min-width: 992px){.info-bar{width:25%}}.info-bar .card{z-index:1}.info-bar .stack{z-index:0;opacity:0;transform:perspective(500px) translateZ(0) translateY(-16px);height:16px;transition:transform .3s,opacity 0s .3s;background-color:#fff}.info-bar .stack.visible{opacity:1;transform:perspective(500px) translateZ(-44px) translateY(0);background-color:var(--color-component-bg-100);transition:transform .3s,color .3s}.info-bar .selection-count{opacity:0;position:relative;text-align:center;visibility:hidden;transition:opacity .3s,visibility 0s .3s}.info-bar .selection-count.visible{opacity:1;visibility:visible;transition:opacity .3s,visibility 0s}.info-bar .selection-count ul{text-align:start;list-style-type:none;margin-inline-start:12px}.info-bar .selection-count ul li{font-size:12px}.info-bar .placeholder{text-align:center;color:var(--color-grey-300)}.info-bar .preview img{max-width:100%}.info-bar .details{font-size:12px;word-break:break-all}.info-bar .name{line-height:14px;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i2.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i5.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "component", type: i6.SelectToggleComponent, selector: "vdr-select-toggle", inputs: ["size", "selected", "hiddenWhenOff", "disabled", "label"], outputs: ["selectedChange"] }, { kind: "component", type: i7.EntityInfoComponent, selector: "vdr-entity-info", inputs: ["small", "entity"] }, { kind: "component", type: i8.AssetPreviewLinksComponent, selector: "vdr-asset-preview-links", inputs: ["asset"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }, { kind: "pipe", type: i10.FileSizePipe, name: "filesize" }, { kind: "pipe", type: i11.AssetPreviewPipe, name: "assetPreview" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
79
79
|
}
|
|
80
80
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AssetGalleryComponent, decorators: [{
|
|
81
81
|
type: Component,
|
|
82
|
-
args: [{ selector: 'vdr-asset-gallery', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"gallery\">\r\n <div\r\n class=\"card\"\r\n *ngFor=\"let asset of assets\"\r\n (click)=\"toggleSelection(asset, $event)\"\r\n [class.selected]=\"isSelected(asset)\"\r\n >\r\n <div class=\"card-img\">\r\n <vdr-select-toggle\r\n [selected]=\"isSelected(asset)\"\r\n [disabled]=\"true\"\r\n [hiddenWhenOff]=\"true\"\r\n ></vdr-select-toggle>\r\n <img class=\"asset-thumb\" [src]=\"asset | assetPreview : 'thumb'\" />\r\n </div>\r\n <div class=\"detail\">\r\n <vdr-entity-info\r\n [entity]=\"asset\"\r\n [small]=\"true\"\r\n (click)=\"entityInfoClick($event)\"\r\n ></vdr-entity-info>\r\n <span [title]=\"asset.name\">{{ asset.name }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"info-bar\">\r\n <div class=\"card\">\r\n <div class=\"card-img\">\r\n <div class=\"placeholder\" *ngIf=\"selectionManager.selection.length === 0\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n <div>{{ 'catalog.no-selection' | translate }}</div>\r\n </div>\r\n <img\r\n class=\"preview\"\r\n *ngIf=\"selectionManager.selection.length >= 1\"\r\n [src]=\"lastSelected().preview + '?preset=medium'\"\r\n />\r\n </div>\r\n <div class=\"card-block details\" *ngIf=\"selectionManager.selection.length >= 1\">\r\n <div class=\"name\">{{ lastSelected().name }}</div>\r\n <div>{{ 'asset.original-asset-size' | translate }}: {{ lastSelected().fileSize | filesize }}</div>\r\n\r\n <ng-container *ngIf=\"selectionManager.selection.length === 1\">\r\n <vdr-chip *ngFor=\"let tag of lastSelected().tags\" [colorFrom]=\"tag.value\"\r\n ><clr-icon shape=\"tag\" class=\"mr2\"></clr-icon> {{ tag.value }}</vdr-chip\r\n >\r\n </ng-container>\r\n <div *ngIf=\"selectionManager.selection.length === 1\">\r\n <a [routerLink]=\"['/catalog/assets/', lastSelected().id]\" (click)=\"editAssetClick.emit()\" class=\"button-ghost\">\r\n <clr-icon shape=\"pencil\"></clr-icon> {{ 'common.edit' | translate }}\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </div>\r\n <div *ngIf=\"selectionManager.selection.length === 1\">\r\n <button (click)=\"previewAsset(lastSelected())\" class=\"button-small mt-1\">\r\n <clr-icon shape=\"eye\"></clr-icon> {{ 'asset.preview' | translate }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"canDelete\">\r\n <button (click)=\"deleteAssets.emit(selectionManager.selection)\" class=\"button-small mt-1\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"mt-1\" *ngIf=\"selectionManager.selection.length === 1\">\r\n <vdr-asset-preview-links class=\"\" [asset]=\"lastSelected()\"></vdr-asset-preview-links>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card stack\" [class.visible]=\"selectionManager.selection.length > 1\"></div>\r\n <div class=\"selection-count\" [class.visible]=\"selectionManager.selection.length > 1\">\r\n {{ 'asset.assets-selected-count' | translate : { count: selectionManager.selection.length } }}\r\n <ul>\r\n <li *ngFor=\"let asset of selectionManager.selection\">{{ asset.name }}</li>\r\n </ul>\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column-reverse}@media screen and (min-width: 992px){:host{flex-direction:row}}.gallery{flex:1;display:grid;grid-template-columns:repeat(auto-fill,150px);grid-
|
|
82
|
+
args: [{ selector: 'vdr-asset-gallery', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"gallery\">\r\n <div\r\n class=\"card\"\r\n *ngFor=\"let asset of assets\"\r\n (click)=\"toggleSelection(asset, $event)\"\r\n [class.selected]=\"isSelected(asset)\"\r\n >\r\n <div class=\"card-img\">\r\n <vdr-select-toggle\r\n [selected]=\"isSelected(asset)\"\r\n [disabled]=\"true\"\r\n [hiddenWhenOff]=\"true\"\r\n ></vdr-select-toggle>\r\n <img class=\"asset-thumb\" [src]=\"asset | assetPreview : 'thumb'\" />\r\n </div>\r\n <div class=\"detail\">\r\n <vdr-entity-info\r\n [entity]=\"asset\"\r\n [small]=\"true\"\r\n (click)=\"entityInfoClick($event)\"\r\n ></vdr-entity-info>\r\n <span [title]=\"asset.name\">{{ asset.name }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"info-bar\">\r\n <div class=\"card\">\r\n <div class=\"card-img\">\r\n <div class=\"placeholder\" *ngIf=\"selectionManager.selection.length === 0\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n <div>{{ 'catalog.no-selection' | translate }}</div>\r\n </div>\r\n <img\r\n class=\"preview\"\r\n *ngIf=\"selectionManager.selection.length >= 1\"\r\n [src]=\"lastSelected().preview + '?preset=medium'\"\r\n />\r\n </div>\r\n <div class=\"card-block details\" *ngIf=\"selectionManager.selection.length >= 1\">\r\n <div class=\"name\">{{ lastSelected().name }}</div>\r\n <div>{{ 'asset.original-asset-size' | translate }}: {{ lastSelected().fileSize | filesize }}</div>\r\n\r\n <ng-container *ngIf=\"selectionManager.selection.length === 1\">\r\n <vdr-chip *ngFor=\"let tag of lastSelected().tags\" [colorFrom]=\"tag.value\"\r\n ><clr-icon shape=\"tag\" class=\"mr2\"></clr-icon> {{ tag.value }}</vdr-chip\r\n >\r\n </ng-container>\r\n <div *ngIf=\"selectionManager.selection.length === 1\">\r\n <a [routerLink]=\"['/catalog/assets/', lastSelected().id]\" (click)=\"editAssetClick.emit()\" class=\"button-ghost\">\r\n <clr-icon shape=\"pencil\"></clr-icon> {{ 'common.edit' | translate }}\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </div>\r\n <div *ngIf=\"selectionManager.selection.length === 1\">\r\n <button (click)=\"previewAsset(lastSelected())\" class=\"button-small mt-1\">\r\n <clr-icon shape=\"eye\"></clr-icon> {{ 'asset.preview' | translate }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"canDelete\">\r\n <button (click)=\"deleteAssets.emit(selectionManager.selection)\" class=\"button-small mt-1\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"mt-1\" *ngIf=\"selectionManager.selection.length === 1\">\r\n <vdr-asset-preview-links class=\"\" [asset]=\"lastSelected()\"></vdr-asset-preview-links>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card stack\" [class.visible]=\"selectionManager.selection.length > 1\"></div>\r\n <div class=\"selection-count\" [class.visible]=\"selectionManager.selection.length > 1\">\r\n {{ 'asset.assets-selected-count' | translate : { count: selectionManager.selection.length } }}\r\n <ul>\r\n <li *ngFor=\"let asset of selectionManager.selection\">{{ asset.name }}</li>\r\n </ul>\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column-reverse}@media screen and (min-width: 992px){:host{flex-direction:row}}.gallery{flex:1;display:grid;grid-template-columns:repeat(auto-fill,150px);grid-gap:10px 20px}.gallery .card:hover{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card{margin-top:0;position:relative}img.asset-thumb{aspect-ratio:1}vdr-select-toggle{position:absolute;top:-12px;left:-12px}vdr-select-toggle ::ng-deep .toggle{box-shadow:0 5px 5px -4px #000000bf}.card.selected{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card.selected .selected-checkbox{opacity:1}.detail{display:flex;align-items:normal;gap:4px;min-height:24px;font-size:12px;margin:3px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.info-bar{padding:0 6px;overflow-y:auto}@media screen and (min-width: 992px){.info-bar{width:25%}}.info-bar .card{z-index:1}.info-bar .stack{z-index:0;opacity:0;transform:perspective(500px) translateZ(0) translateY(-16px);height:16px;transition:transform .3s,opacity 0s .3s;background-color:#fff}.info-bar .stack.visible{opacity:1;transform:perspective(500px) translateZ(-44px) translateY(0);background-color:var(--color-component-bg-100);transition:transform .3s,color .3s}.info-bar .selection-count{opacity:0;position:relative;text-align:center;visibility:hidden;transition:opacity .3s,visibility 0s .3s}.info-bar .selection-count.visible{opacity:1;visibility:visible;transition:opacity .3s,visibility 0s}.info-bar .selection-count ul{text-align:start;list-style-type:none;margin-inline-start:12px}.info-bar .selection-count ul li{font-size:12px}.info-bar .placeholder{text-align:center;color:var(--color-grey-300)}.info-bar .preview img{max-width:100%}.info-bar .details{font-size:12px;word-break:break-all}.info-bar .name{line-height:14px;font-weight:700}\n"] }]
|
|
83
83
|
}], ctorParameters: () => [{ type: i1.ModalService }], propDecorators: { assets: [{
|
|
84
84
|
type: Input
|
|
85
85
|
}], multiSelect: [{
|
package/esm2022/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.mjs
CHANGED
|
@@ -129,11 +129,11 @@ export class AssetPickerDialogComponent {
|
|
|
129
129
|
});
|
|
130
130
|
}
|
|
131
131
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AssetPickerDialogComponent, deps: [{ token: i1.DataService }, { token: i2.NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
132
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: AssetPickerDialogComponent, selector: "vdr-asset-picker-dialog", viewQueries: [{ propertyName: "assetSearchInputComponent", first: true, predicate: ["assetSearchInputComponent"], descendants: true }, { propertyName: "assetGalleryComponent", first: true, predicate: ["assetGalleryComponent"], descendants: true }], ngImport: i0, template: "<ng-template vdrDialogTitle>\r\n <div class=\"title-row\">\r\n <span>{{ 'asset.select-assets' | translate }}</span>\r\n <div class=\"flex-spacer\"></div>\r\n <vdr-asset-file-input\r\n class=\"ml3\"\r\n (selectFiles)=\"createAssets($event)\"\r\n [uploading]=\"uploading\"\r\n dropZoneTarget=\".modal-content\"\r\n ></vdr-asset-file-input>\r\n </div>\r\n</ng-template>\r\n<vdr-asset-search-input\r\n class=\"mb-2\"\r\n [tags]=\"allTags$ | async\"\r\n (searchTermChange)=\"searchTerm$.next($event)\"\r\n (tagsChange)=\"filterByTags$.next($event)\"\r\n #assetSearchInputComponent\r\n></vdr-asset-search-input>\r\n<vdr-asset-gallery\r\n [assets]=\"(assets$ | async)! | paginate: paginationConfig\"\r\n [multiSelect]=\"multiSelect\"\r\n (selectionChange)=\"selection = $event\"\r\n (editAssetClick)=\"cancel()\"\r\n #assetGalleryComponent\r\n></vdr-asset-gallery>\r\n\r\n<div class=\"paging-controls\">\r\n <vdr-items-per-page-controls\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n (itemsPerPageChange)=\"itemsPerPageChange($event)\"\r\n ></vdr-items-per-page-controls>\r\n\r\n <vdr-pagination-controls\r\n [currentPage]=\"paginationConfig.currentPage\"\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n [totalItems]=\"paginationConfig.totalItems\"\r\n (pageChange)=\"pageChange($event)\"\r\n ></vdr-pagination-controls>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"selection.length === 0\">\r\n {{ 'asset.add-asset-with-count' | translate: { count: selection.length } }}\r\n </button>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow-y:auto}.title-row{display:flex;align-items:center;justify-content:space-between}vdr-asset-gallery{flex:1}.paging-controls{padding-top:6px;border-top:1px solid var(--color-component-border-100);display:flex;justify-content:space-between;flex-shrink:0}\n"], dependencies: [{ kind: "component", type: i3.AssetSearchInputComponent, selector: "vdr-asset-search-input", inputs: ["tags"], outputs: ["searchTermChange", "tagsChange"] }, { kind: "component", type: i4.ItemsPerPageControlsComponent, selector: "vdr-items-per-page-controls", inputs: ["itemsPerPage"], outputs: ["itemsPerPageChange"] }, { kind: "component", type: i5.PaginationControlsComponent, selector: "vdr-pagination-controls", inputs: ["id", "currentPage", "itemsPerPage", "totalItems"], outputs: ["pageChange"] }, { kind: "directive", type: i6.DialogButtonsDirective, selector: "[vdrDialogButtons]" }, { kind: "directive", type: i7.DialogTitleDirective, selector: "[vdrDialogTitle]" }, { kind: "component", type: i8.AssetFileInputComponent, selector: "vdr-asset-file-input", inputs: ["dropZoneTarget", "uploading"], outputs: ["selectFiles"] }, { kind: "component", type: i9.AssetGalleryComponent, selector: "vdr-asset-gallery", inputs: ["assets", "multiSelect", "canDelete"], outputs: ["selectionChange", "deleteAssets", "editAssetClick"] }, { kind: "pipe", type: i10.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.PaginatePipe, name: "paginate" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
132
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: AssetPickerDialogComponent, selector: "vdr-asset-picker-dialog", viewQueries: [{ propertyName: "assetSearchInputComponent", first: true, predicate: ["assetSearchInputComponent"], descendants: true }, { propertyName: "assetGalleryComponent", first: true, predicate: ["assetGalleryComponent"], descendants: true }], ngImport: i0, template: "<ng-template vdrDialogTitle>\r\n <div class=\"title-row\">\r\n <span>{{ 'asset.select-assets' | translate }}</span>\r\n <div class=\"flex-spacer\"></div>\r\n <vdr-asset-file-input\r\n class=\"ml3\"\r\n (selectFiles)=\"createAssets($event)\"\r\n [uploading]=\"uploading\"\r\n dropZoneTarget=\".modal-content\"\r\n ></vdr-asset-file-input>\r\n </div>\r\n</ng-template>\r\n<vdr-asset-search-input\r\n class=\"mb-2\"\r\n [tags]=\"allTags$ | async\"\r\n (searchTermChange)=\"searchTerm$.next($event)\"\r\n (tagsChange)=\"filterByTags$.next($event)\"\r\n #assetSearchInputComponent\r\n></vdr-asset-search-input>\r\n<vdr-asset-gallery\r\n [assets]=\"(assets$ | async)! | paginate: paginationConfig\"\r\n [multiSelect]=\"multiSelect\"\r\n (selectionChange)=\"selection = $event\"\r\n (editAssetClick)=\"cancel()\"\r\n #assetGalleryComponent\r\n></vdr-asset-gallery>\r\n\r\n<div class=\"paging-controls\">\r\n <vdr-items-per-page-controls\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n (itemsPerPageChange)=\"itemsPerPageChange($event)\"\r\n ></vdr-items-per-page-controls>\r\n\r\n <vdr-pagination-controls\r\n [currentPage]=\"paginationConfig.currentPage\"\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n [totalItems]=\"paginationConfig.totalItems\"\r\n (pageChange)=\"pageChange($event)\"\r\n ></vdr-pagination-controls>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"selection.length === 0\">\r\n {{ 'asset.add-asset-with-count' | translate: { count: selection.length } }}\r\n </button>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow-y:auto}.title-row{display:flex;align-items:center;justify-content:space-between}vdr-asset-gallery{flex:1}.paging-controls{padding-top:6px;margin-top:12px;margin-bottom:12px;border-top:1px solid var(--color-component-border-100);display:flex;justify-content:space-between;flex-shrink:0}\n"], dependencies: [{ kind: "component", type: i3.AssetSearchInputComponent, selector: "vdr-asset-search-input", inputs: ["tags"], outputs: ["searchTermChange", "tagsChange"] }, { kind: "component", type: i4.ItemsPerPageControlsComponent, selector: "vdr-items-per-page-controls", inputs: ["itemsPerPage"], outputs: ["itemsPerPageChange"] }, { kind: "component", type: i5.PaginationControlsComponent, selector: "vdr-pagination-controls", inputs: ["id", "currentPage", "itemsPerPage", "totalItems"], outputs: ["pageChange"] }, { kind: "directive", type: i6.DialogButtonsDirective, selector: "[vdrDialogButtons]" }, { kind: "directive", type: i7.DialogTitleDirective, selector: "[vdrDialogTitle]" }, { kind: "component", type: i8.AssetFileInputComponent, selector: "vdr-asset-file-input", inputs: ["dropZoneTarget", "uploading"], outputs: ["selectFiles"] }, { kind: "component", type: i9.AssetGalleryComponent, selector: "vdr-asset-gallery", inputs: ["assets", "multiSelect", "canDelete"], outputs: ["selectionChange", "deleteAssets", "editAssetClick"] }, { kind: "pipe", type: i10.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.PaginatePipe, name: "paginate" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
133
133
|
}
|
|
134
134
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AssetPickerDialogComponent, decorators: [{
|
|
135
135
|
type: Component,
|
|
136
|
-
args: [{ selector: 'vdr-asset-picker-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template vdrDialogTitle>\r\n <div class=\"title-row\">\r\n <span>{{ 'asset.select-assets' | translate }}</span>\r\n <div class=\"flex-spacer\"></div>\r\n <vdr-asset-file-input\r\n class=\"ml3\"\r\n (selectFiles)=\"createAssets($event)\"\r\n [uploading]=\"uploading\"\r\n dropZoneTarget=\".modal-content\"\r\n ></vdr-asset-file-input>\r\n </div>\r\n</ng-template>\r\n<vdr-asset-search-input\r\n class=\"mb-2\"\r\n [tags]=\"allTags$ | async\"\r\n (searchTermChange)=\"searchTerm$.next($event)\"\r\n (tagsChange)=\"filterByTags$.next($event)\"\r\n #assetSearchInputComponent\r\n></vdr-asset-search-input>\r\n<vdr-asset-gallery\r\n [assets]=\"(assets$ | async)! | paginate: paginationConfig\"\r\n [multiSelect]=\"multiSelect\"\r\n (selectionChange)=\"selection = $event\"\r\n (editAssetClick)=\"cancel()\"\r\n #assetGalleryComponent\r\n></vdr-asset-gallery>\r\n\r\n<div class=\"paging-controls\">\r\n <vdr-items-per-page-controls\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n (itemsPerPageChange)=\"itemsPerPageChange($event)\"\r\n ></vdr-items-per-page-controls>\r\n\r\n <vdr-pagination-controls\r\n [currentPage]=\"paginationConfig.currentPage\"\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n [totalItems]=\"paginationConfig.totalItems\"\r\n (pageChange)=\"pageChange($event)\"\r\n ></vdr-pagination-controls>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"selection.length === 0\">\r\n {{ 'asset.add-asset-with-count' | translate: { count: selection.length } }}\r\n </button>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow-y:auto}.title-row{display:flex;align-items:center;justify-content:space-between}vdr-asset-gallery{flex:1}.paging-controls{padding-top:6px;border-top:1px solid var(--color-component-border-100);display:flex;justify-content:space-between;flex-shrink:0}\n"] }]
|
|
136
|
+
args: [{ selector: 'vdr-asset-picker-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template vdrDialogTitle>\r\n <div class=\"title-row\">\r\n <span>{{ 'asset.select-assets' | translate }}</span>\r\n <div class=\"flex-spacer\"></div>\r\n <vdr-asset-file-input\r\n class=\"ml3\"\r\n (selectFiles)=\"createAssets($event)\"\r\n [uploading]=\"uploading\"\r\n dropZoneTarget=\".modal-content\"\r\n ></vdr-asset-file-input>\r\n </div>\r\n</ng-template>\r\n<vdr-asset-search-input\r\n class=\"mb-2\"\r\n [tags]=\"allTags$ | async\"\r\n (searchTermChange)=\"searchTerm$.next($event)\"\r\n (tagsChange)=\"filterByTags$.next($event)\"\r\n #assetSearchInputComponent\r\n></vdr-asset-search-input>\r\n<vdr-asset-gallery\r\n [assets]=\"(assets$ | async)! | paginate: paginationConfig\"\r\n [multiSelect]=\"multiSelect\"\r\n (selectionChange)=\"selection = $event\"\r\n (editAssetClick)=\"cancel()\"\r\n #assetGalleryComponent\r\n></vdr-asset-gallery>\r\n\r\n<div class=\"paging-controls\">\r\n <vdr-items-per-page-controls\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n (itemsPerPageChange)=\"itemsPerPageChange($event)\"\r\n ></vdr-items-per-page-controls>\r\n\r\n <vdr-pagination-controls\r\n [currentPage]=\"paginationConfig.currentPage\"\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n [totalItems]=\"paginationConfig.totalItems\"\r\n (pageChange)=\"pageChange($event)\"\r\n ></vdr-pagination-controls>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"selection.length === 0\">\r\n {{ 'asset.add-asset-with-count' | translate: { count: selection.length } }}\r\n </button>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow-y:auto}.title-row{display:flex;align-items:center;justify-content:space-between}vdr-asset-gallery{flex:1}.paging-controls{padding-top:6px;margin-top:12px;margin-bottom:12px;border-top:1px solid var(--color-component-border-100);display:flex;justify-content:space-between;flex-shrink:0}\n"] }]
|
|
137
137
|
}], ctorParameters: () => [{ type: i1.DataService }, { type: i2.NotificationService }], propDecorators: { assetSearchInputComponent: [{
|
|
138
138
|
type: ViewChild,
|
|
139
139
|
args: ['assetSearchInputComponent']
|