@provoly/dashboard 1.4.44 → 1.4.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +47 -49
- package/esm2022/toolbox/components/edit-presentation/edit-presentation.component.mjs +1 -1
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +1 -1
- package/esm2022/toolbox/shared/presentation-form/presentation-form.component.mjs +6 -3
- package/esm2022/toolbox/toolbox.module.mjs +7 -4
- package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +2 -2
- package/fesm2022/provoly-dashboard-presentation.mjs +53 -55
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +13 -7
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/package.json +31 -31
- package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +7 -6
- package/toolbox/shared/presentation-form/presentation-form.component.d.ts +2 -1
- package/toolbox/toolbox.module.d.ts +1 -1
|
@@ -292,8 +292,8 @@ export class WidgetMapUtils {
|
|
|
292
292
|
static { this.DEFAULT_RADIUS_INTENSITY_FACTOR = 10000; }
|
|
293
293
|
static { this.DEFAULT_ZOOM_MIN = 3; }
|
|
294
294
|
static { this.DEFAULT_ZOOM_START = 10; }
|
|
295
|
-
static { this.DEFAULT_ZOOM_MAX =
|
|
295
|
+
static { this.DEFAULT_ZOOM_MAX = 22; }
|
|
296
296
|
static { this.DEFAULT_MAP_CENTER = [2.2827217347381525, 48.864706031557716]; }
|
|
297
297
|
static { this.BACKGROUND_ORDER = 9999; }
|
|
298
298
|
}
|
|
299
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LW1hcC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LW1hcC91dGlscy93aWRnZXQtbWFwLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxrQkFBa0IsRUFFbEIsU0FBUyxFQUdULFNBQVMsRUFRVixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQU8sTUFBTSxJQUFJLENBQUM7QUFDbEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVMsTUFBTSxTQUFTLENBQUM7QUFFcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxhQUFhLEVBQWtCLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUUxRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU3QyxNQUFNLE9BQU8sY0FBYzthQUNsQixZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUMvQixNQUFNLENBQUMseUJBQXlCLENBQzlCLEtBQTRCLEVBQzVCLFNBQW9CLEVBQ3BCLGtCQUEyQixFQUMzQixNQUFlO1FBRWYsSUFDRSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUN6RyxLQUFLLENBQUMsSUFBSSxDQUNYO1lBQ0QsQ0FBQyxDQUFDLFNBQVM7WUFDWCxDQUFDLENBQUMsa0JBQWtCO1lBQ3BCLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQzdCLENBQUM7WUFDRCxNQUFN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Q0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9uUmVzdWx0LFxuICBBdHRyaWJ1dGUsXG4gIENsYXNzLFxuICBERUZBVUxUX1BST0pFQ1RJT04sXG4gIEZpZWxkLFxuICBGaWVsZFR5cGUsXG4gIEdldENhcGFiaWxpdGllc1Jlc3BvbnNlLFxuICBJdGVtLFxuICBJdGVtVXRpbHMsXG4gIE1hcEdlb1NlcnZlckxheWVyT3B0aW9ucyxcbiAgTWFwV2lkZ2V0QnViYmxlTGF5ZXJPcHRpb25zLFxuICBNYXBXaWRnZXRIZWF0TWFwTGF5ZXJPcHRpb25zLFxuICBNYXBXaWRnZXRMYXllck9wdGlvbnMsXG4gIE1hcFdpZGdldE1hcmtlckxheWVyT3B0aW9ucyxcbiAgUmVsYXRpb24sXG4gIFJlc3VsdFNldFxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgRmVhdHVyZSwgTWFwIH0gZnJvbSAnb2wnO1xuaW1wb3J0IHsgQ2lyY2xlLCBMaW5lU3RyaW5nLCBQb2ludCB9IGZyb20gJ29sL2dlb20nO1xuaW1wb3J0IHsgU3R5bGUgfSBmcm9tICdvbC9zdHlsZSc7XG5pbXBvcnQgeyBXaWRnZXRNYXBMYXllclNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnQvd2lkZ2V0LW1hcC1sYXllci5zZXJ2aWNlJztcbmltcG9ydCB7IGdldCBhcyBnZXRQcm9qZWN0aW9uLCBQcm9qZWN0aW9uTGlrZSwgdHJhbnNmb3JtIH0gZnJvbSAnb2wvcHJvaic7XG5pbXBvcnQgR2VvbWV0cnkgZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgeyBHZW9KU09OIH0gZnJvbSAnb2wvZm9ybWF0JztcbmltcG9ydCB7IFhNTFV0aWxzIH0gZnJvbSAnLi94bWwtdXRpbHMuY2xhc3MnO1xuXG5leHBvcnQgY2xhc3MgV2lkZ2V0TWFwVXRpbHMge1xuICBzdGF0aWMgZ2VvSlNPTiA9IG5ldyBHZW9KU09OKCk7XG4gIHN0YXRpYyBwb3B1bGF0ZUxvY2F0aW9uQXR0cmlidXRlKFxuICAgIGxheWVyOiBNYXBXaWRnZXRMYXllck9wdGlvbnMsXG4gICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgY2xhc3Nlc05vdEZpbHRlcmVkOiBDbGFzc1tdLFxuICAgIGZpZWxkczogRmllbGRbXVxuICApIHtcbiAgICBpZiAoXG4gICAgICBbJ2hlYXRtYXAnLCAnbWFya2VyJywgJ2J1YmJsZScsICdwb2ludCcsICdsaW5lJywgJ3BvbHlnb24nLCAnbXVsdGktbGluZScsICdtdWx0aS1wb2x5Z29uJywgJ2F1dG8nXS5pbmNsdWRlcyhcbiAgICAgICAgbGF5ZXIudHlwZVxuICAgICAgKSAmJlxuICAgICAgISFyZXN1bHRTZXQgJiZcbiAgICAgICEhY2xhc3Nlc05vdEZpbHRlcmVkICYmXG4gICAgICBjbGFzc2VzTm90RmlsdGVyZWQubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgY29uc3Qgc3BlY2lmaWNMYXllciA9IGxheWVyIGFzXG4gICAgICAgIHwgTWFwV2lkZ2V0SGVhdE1hcExheWVyT3B0aW9uc1xuICAgICAgICB8IE1hcFdpZGdldE1hcmtlckxheWVyT3B0aW9uc1xuICAgICAgICB8IE1hcFdpZGdldEJ1YmJsZUxheWVyT3B0aW9ucztcblxuICAgICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzZXNOb3RGaWx0ZXJlZC5maWx0ZXIoXG4gICAgICAgIChjbCkgPT4gc3BlY2lmaWNMYXllci5jbGFzc2VzPy5pbmNsdWRlcyhjbC5pZCkgfHwgIXNwZWNpZmljTGF5ZXIuY2xhc3NlcyB8fCBzcGVjaWZpY0xheWVyLmNsYXNzZXMubGVuZ3RoID09PSAwXG4gICAgICApO1xuXG4gICAgICBpZiAoIXNwZWNpZmljTGF5ZXIuYXR0cmlidXRlKSB7XG4gICAgICAgIC8vIE5vIGxvY2F0aW9uIGF0dHJpYnV0ZSBhdmFpbGFibGUsIHRoZW4gdHJ5IHRvIGd1ZXNzIG9uZSB0aGF0IHdpbGwgYmUgb2tcblxuICAgICAgICBjb25zdCBnZW9tZXRyeSA9IFdpZGdldE1hcFV0aWxzLmdlb21ldHJ5Rm9yTGF5ZXIobGF5ZXIpO1xuXG4gICAgICAgIGxldCBjYW5kaWRhdGVzOiBBdHRyaWJ1dGVbXSA9IFtdO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocmVzdWx0U2V0Lml0ZW1zKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgLy8gQmFzZWQgb24gaXRlbXMgdGhhdCB3ZSBoYXZlIHRvIGRpc3BsYXlcblxuICAgICAgICAgIGNhbmRpZGF0ZXMgPSBPYmplY3Qua2V5cyhyZXN1bHRTZXQuaXRlbXMpXG4gICAgICAgICAgICAubWFwKChrZXkpID0+ICh7IGl0ZW1zOiByZXN1bHRTZXQuaXRlbXNba2V5XSwgb0NsYXNzOiBjbGFzc2VzLmZpbmQoKGNsKSA9PiBjbC5pZCA9PT0ga2V5KSB9KSlcbiAgICAgICAgICAgIC5tYXAoKHsgaXRlbXMsIG9DbGFzcyB9KSA9PlxuICAgICAgICAgICAgICAob0NsYXNzID8/IHsgYXR0cmlidXRlczogW10gfSkuYXR0cmlidXRlcy5maWx0ZXIoKGF0dHIpID0+IGF0dHIuZmllbGQ/LnR5cGUgPT09IGdlb21ldHJ5KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gWy4uLnAsIC4uLmNdLCBbXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbnkgaXRlbXMgdG8gZGlzcGxheSwgc28gYWxsb3cgYWxsIGNvcnJlc3BvbmRpbmcgZ2VvbWV0cnkgZmllbGRzXG4gICAgICAgICAgY2FuZGlkYXRlcyA9IGNsYXNzZXNOb3RGaWx0ZXJlZFxuICAgICAgICAgICAgLm1hcCgoY2xhenopID0+IGNsYXp6LmF0dHJpYnV0ZXMpXG4gICAgICAgICAgICAuZmxhdCgpXG4gICAgICAgICAgICAuZmlsdGVyKChhdHRyKSA9PiBhdHRyLmZpZWxkLnR5cGUgPT09IGdlb21ldHJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjYW5kaWRhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBzcGVjaWZpY0xheWVyLmF0dHJpYnV0ZSA9IGNhbmRpZGF0ZXNbMF0udGVjaG5pY2FsTmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBwb3B1bGF0ZUludGVuc2l0eUF0dHJpYnV0ZShcbiAgICBsYXllcjogTWFwV2lkZ2V0TGF5ZXJPcHRpb25zLFxuICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgIGNsYXNzZXNOb3RGaWx0ZXJlZDogQ2xhc3NbXSxcbiAgICBmaWVsZHM6IEZpZWxkW11cbiAgKSB7XG4gICAgaWYgKFxuICAgICAgWydoZWF0bWFwJywgJ2J1YmJsZSddLmluY2x1ZGVzKGxheWVyLnR5cGUpICYmXG4gICAgICAhIXJlc3VsdFNldCAmJlxuICAgICAgISFjbGFzc2VzTm90RmlsdGVyZWQgJiZcbiAgICAgIGNsYXNzZXNOb3RGaWx0ZXJlZC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCBzcGVjaWZpY0xheWVyID0gbGF5ZXIgYXMgTWFwV2lkZ2V0SGVhdE1hcExheWVyT3B0aW9ucyB8IE1hcFdpZGdldEJ1YmJsZUxheWVyT3B0aW9ucztcblxuICAgICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzZXNOb3RGaWx0ZXJlZC5maWx0ZXIoXG4gICAgICAgIChjbCkgPT5cbiAgICAgICAgICAoc3BlY2lmaWNMYXllci5jbGFzc2VzPy5pbmNsdWRlcyhjbC5pZCkgfHwgIXNwZWNpZmljTGF5ZXIuY2xhc3NlcyB8fCBzcGVjaWZpY0xheWVyLmNsYXNzZXMubGVuZ3RoID09PSAwKSAmJlxuICAgICAgICAgIGNsLmF0dHJpYnV0ZXMuZmluZCgoYXR0cikgPT4gYXR0ci50ZWNobmljYWxOYW1lID09PSAoc3BlY2lmaWNMYXllcj8uYXR0cmlidXRlID8/IFtdKSlcbiAgICAgICk7XG5cbiAgICAgIGlmICghc3BlY2lmaWNMYXllci5pbnRlbnNpdHlBdHRyaWJ1dGUpIHtcbiAgICAgICAgLy8gTm8gaW50ZW5zaXR5IGF0dHJpYnV0ZSBhdmFpbGFibGUsIHRoZW4gdGFrZSB0aGUgbWF4aW11bSBpbnRlbnNpdHkgbWF0Y2hpbmcgYXR0cmlidXRlXG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZXNEcnkgPSBPYmplY3Qua2V5cyhyZXN1bHRTZXQuaXRlbXMpXG4gICAgICAgICAgLm1hcCgoa2V5KSA9PiAoeyBpdGVtczogcmVzdWx0U2V0Lml0ZW1zW2tleV0sIG9DbGFzczogY2xhc3Nlcy5maW5kKChjbCkgPT4gY2wuaWQgPT09IGtleSkgfSkpXG4gICAgICAgICAgLm1hcCgoeyBpdGVtcywgb0NsYXNzIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiAob0NsYXNzID8/IHsgYXR0cmlidXRlczogW10gfSkuYXR0cmlidXRlc1xuICAgICAgICAgICAgICAuZmlsdGVyKChhdHRyKSA9PiBhdHRyLmZpZWxkPy50eXBlID09PSBGaWVsZFR5cGUuREVDSU1BTCB8fCBhdHRyLmZpZWxkPy50eXBlID09PSBGaWVsZFR5cGUuSU5URUdFUilcbiAgICAgICAgICAgICAgLm1hcCgoYXR0cikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJWYWx1ZXMgPSBJdGVtVXRpbHMucGVydGluZW50VmFsdWUoaXRlbXMsIGF0dHIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBtaW46IE1hdGgubWluKC4uLmF0dHJWYWx1ZXMpLFxuICAgICAgICAgICAgICAgICAgbWF4OiBNYXRoLm1heCguLi5hdHRyVmFsdWVzKSxcbiAgICAgICAgICAgICAgICAgIHRlY2huaWNhbE5hbWU6IGF0dHIudGVjaG5pY2FsTmFtZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gWy4uLnAsIC4uLmNdLCBbXSlcbiAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYi5tYXggLSBhLm1heCk7XG5cbiAgICAgICAgaWYgKGNhbmRpZGF0ZXNEcnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHNwZWNpZmljTGF5ZXIuaW50ZW5zaXR5QXR0cmlidXRlID0gY2FuZGlkYXRlc0RyeVswXS50ZWNobmljYWxOYW1lO1xuICAgICAgICAgIHNwZWNpZmljTGF5ZXIuaW50ZW5zaXR5QXNjID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXRGZWF0dXJlRnJvbUl0ZW0oXG4gICAgcHJvamVjdGlvbjogUHJvamVjdGlvbkxpa2UsXG4gICAgaXRlbTogSXRlbSxcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgbG9jYXRpb25BdHRyaWJ1dGU6IEF0dHJpYnV0ZSxcbiAgICBpY29uU3R5bGU/OiBTdHlsZSxcbiAgICBzZWxlY3RlZEljb25TdHlsZT86IFN0eWxlXG4gICkge1xuICAgIHJldHVybiBuZXcgRmVhdHVyZSh7XG4gICAgICAuLi5pdGVtLFxuICAgICAgdHlwZSxcbiAgICAgIGdlb21ldHJ5OiBXaWRnZXRNYXBVdGlscy5yZWFkR2VvbWV0cnkocHJvamVjdGlvbiwgaXRlbSwgJ3BvaW50JywgbG9jYXRpb25BdHRyaWJ1dGUpID8/IHVuZGVmaW5lZCxcbiAgICAgIGNsYXNzaWNTdHlsZTogaWNvblN0eWxlID8/IG51bGwsXG4gICAgICBzZWxlY3RlZFN0eWxlOiBzZWxlY3RlZEljb25TdHlsZSA/PyBudWxsXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0Q2lyY2xlRmVhdHVyZUZyb21JdGVtKFxuICAgIHByb2plY3Rpb246IFByb2plY3Rpb25MaWtlLFxuICAgIGl0ZW06IEl0ZW0sXG4gICAgbG9jYXRpb25BdHRyaWJ1dGU6IEF0dHJpYnV0ZSxcbiAgICByYWRpdXM6IG51bWJlcixcbiAgICBpY29uU3R5bGU6IFN0eWxlLFxuICAgIHNlbGVjdGVkSWNvblN0eWxlOiBTdHlsZVxuICApIHtcbiAgICByZXR1cm4gbmV3IEZlYXR1cmUoe1xuICAgICAgLi4uaXRlbSxcbiAgICAgIGdlb21ldHJ5OiBuZXcgQ2lyY2xlKFxuICAgICAgICAoV2lkZ2V0TWFwVXRpbHMucmVhZEdlb21ldHJ5KHByb2plY3Rpb24sIGl0ZW0sICdwb2ludCcsIGxvY2F0aW9uQXR0cmlidXRlKSBhcyBQb2ludCkuZ2V0Q29vcmRpbmF0ZXMoKSxcbiAgICAgICAgcmFkaXVzXG4gICAgICApLFxuICAgICAgY2xhc3NpY1N0eWxlOiBpY29uU3R5bGUsXG4gICAgICBzZWxlY3RlZFN0eWxlOiBzZWxlY3RlZEljb25TdHlsZSxcbiAgICAgIHR5cGU6ICdidWJibGUnXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0TGlua0ZlYXR1cmUocmVsYXRpb246IFJlbGF0aW9uLCBmZWF0dXJlU291cmNlOiBGZWF0dXJlPFBvaW50PiwgZmVhdHVyZURlc3RpbmF0aW9uOiBGZWF0dXJlPFBvaW50Pikge1xuICAgIHJldHVybiBuZXcgRmVhdHVyZSh7XG4gICAgICAuLi5yZWxhdGlvbixcbiAgICAgIGdlb21ldHJ5OiBuZXcgTGluZVN0cmluZyhbXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZmVhdHVyZVNvdXJjZS5nZXRHZW9tZXRyeSgpPy5nZXRDb29yZGluYXRlcygpID8/IGZlYXR1cmVTb3VyY2UuZ2V0R2VvbWV0cnkoKT8uZ2V0Q2VudGVyKCkgPz8gWzAsIDBdLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGZlYXR1cmVEZXN0aW5hdGlvbi5nZXRHZW9tZXRyeSgpPy5nZXRDb29yZGluYXRlcygpID8/IGZlYXR1cmVEZXN0aW5hdGlvbi5nZXRHZW9tZXRyeSgpPy5nZXRDZW50ZXIoKSA/PyBbMCwgMF1cbiAgICAgIF0pLFxuICAgICAgc291cmNlOiBmZWF0dXJlU291cmNlLFxuICAgICAgZGVzdGluYXRpb246IGZlYXR1cmVEZXN0aW5hdGlvbixcbiAgICAgIHR5cGU6ICdsaW5rJ1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGdldE1hcEFzUG5nKG1hcDogTWFwKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgbWFwLm9uY2UoJ3JlbmRlcmNvbXBsZXRlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBtYXBDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IG1hcC5nZXRTaXplKCkgfHwgWzEwMCwgMTAwXTtcbiAgICAgICAgbWFwQ2FudmFzLndpZHRoID0gc2l6ZVswXTtcbiAgICAgICAgbWFwQ2FudmFzLmhlaWdodCA9IHNpemVbMV07XG4gICAgICAgIGNvbnN0IG1hcENvbnRleHQgPSBtYXBDYW52YXMuZ2V0Q29udGV4dCgnMmQnKSB8fCAobnVsbCBhcyB1bmtub3duIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk7XG4gICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm9sLWxheWVyIGNhbnZhcywgY2FudmFzLm9sLWxheWVyJyksIChjYW52YXMpID0+IHtcbiAgICAgICAgICBpZiAoY2FudmFzLndpZHRoID4gMCkge1xuICAgICAgICAgICAgY29uc3Qgb3BhY2l0eSA9IGNhbnZhcy5wYXJlbnROb2RlLnN0eWxlLm9wYWNpdHkgfHwgY2FudmFzLnN0eWxlLm9wYWNpdHk7XG4gICAgICAgICAgICBtYXBDb250ZXh0Lmdsb2JhbEFscGhhID0gb3BhY2l0eSA9PT0gJycgPyAxIDogTnVtYmVyKG9wYWNpdHkpO1xuXG4gICAgICAgICAgICBjb25zdCBiYWNrZ3JvdW5kQ29sb3IgPSBjYW52YXMucGFyZW50Tm9kZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgICAgICBpZiAoYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICAgICAgICAgIG1hcENvbnRleHQuZmlsbFN0eWxlID0gYmFja2dyb3VuZENvbG9yO1xuICAgICAgICAgICAgICBtYXBDb250ZXh0LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBtYXRyaXg7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm0gPSBjYW52YXMuc3R5bGUudHJhbnNmb3JtO1xuICAgICAgICAgICAgaWYgKHRyYW5zZm9ybSkge1xuICAgICAgICAgICAgICAvLyBHZXQgdGhlIHRyYW5zZm9ybSBwYXJhbWV0ZXJzIGZyb20gdGhlIHN0eWxlJ3MgdHJhbnNmb3JtIG1hdHJpeFxuICAgICAgICAgICAgICBtYXRyaXggPSB0cmFuc2Zvcm1cbiAgICAgICAgICAgICAgICAubWF0Y2goL15tYXRyaXhcXCgoW14oXSopXFwpJC8pWzFdXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAubWFwKE51bWJlcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtYXRyaXggPSBbXG4gICAgICAgICAgICAgICAgcGFyc2VGbG9hdChjYW52YXMuc3R5bGUud2lkdGgpIC8gY2FudmFzLndpZHRoLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KGNhbnZhcy5zdHlsZS5oZWlnaHQpIC8gY2FudmFzLmhlaWdodCxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEFwcGx5IHRoZSB0cmFuc2Zvcm0gdG8gdGhlIGV4cG9ydCBtYXAgY29udGV4dFxuICAgICAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnByb3RvdHlwZS5zZXRUcmFuc2Zvcm0uYXBwbHkobWFwQ29udGV4dCwgbWF0cml4KTtcbiAgICAgICAgICAgIG1hcENvbnRleHQuZHJhd0ltYWdlKGNhbnZhcywgMCwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbWFwQ29udGV4dC5nbG9iYWxBbHBoYSA9IDE7XG4gICAgICAgIHJlc29sdmUobWFwQ2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJykpO1xuICAgICAgfSk7XG4gICAgICBtYXAucmVuZGVyU3luYygpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGV4cG9ydE1hcEFzSW1hZ2UobWFwOiBNYXAsIGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICBXaWRnZXRNYXBVdGlscy5nZXRNYXBBc1BuZyhtYXApLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICBsaW5rLmRvd25sb2FkID0gZmlsZW5hbWU7XG4gICAgICBsaW5rLmhyZWYgPSBkYXRhO1xuICAgICAgbGluay5jbGljaygpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGdlb21ldHJ5Rm9yTGF5ZXIobGF5ZXI6IE1hcFdpZGdldExheWVyT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChsYXllci50eXBlKSB7XG4gICAgICBjYXNlICdtYXJrZXInOlxuICAgICAgY2FzZSAnaGVhdG1hcCc6XG4gICAgICBjYXNlICdidWJibGUnOlxuICAgICAgY2FzZSAncG9pbnQnOlxuICAgICAgICByZXR1cm4gRmllbGRUeXBlLlBPSU5UO1xuICAgICAgY2FzZSAnbGluZSc6XG4gICAgICAgIHJldHVybiBGaWVsZFR5cGUuTElORTtcbiAgICAgIGNhc2UgJ3BvbHlnb24nOlxuICAgICAgICByZXR1cm4gRmllbGRUeXBlLlBPTFlHT047XG4gICAgICBjYXNlICdtdWx0aS1saW5lJzpcbiAgICAgICAgcmV0dXJuIEZpZWxkVHlwZS5NVUxUSUxJTkU7XG4gICAgICBjYXNlICdtdWx0aS1wb2x5Z29uJzpcbiAgICAgICAgcmV0dXJuIEZpZWxkVHlwZS5NVUxUSVBPTFlHT047XG4gICAgICBjYXNlICdhdXRvJzpcbiAgICAgICAgcmV0dXJuIFdpZGdldE1hcFV0aWxzLmdlb21ldHJ5Rm9yTGF5ZXIoe1xuICAgICAgICAgIHR5cGU6IFdpZGdldE1hcExheWVyU2VydmljZS50cmFuc2xhdGVGaWVsZFR5cGVUb0xheWVyVHlwZShsYXllci5zdWJUeXBlKVxuICAgICAgICB9IGFzIE1hcFdpZGdldExheWVyT3B0aW9ucyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gRmllbGRUeXBlLlBPSU5UO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBhc3NpZ25MYXllcnNPcmRlcihfbGF5ZXJzOiBNYXBXaWRnZXRMYXllck9wdGlvbnNbXSkge1xuICAgIGNvbnN0IGxheWVycyA9IHN0cnVjdHVyZWRDbG9uZShfbGF5ZXJzKSBhcyBNYXBXaWRnZXRMYXllck9wdGlvbnNbXTtcblxuICAgIGxheWVycy5zb3J0KChsMSwgbDIpID0+IChsMi5iYWNrZ3JvdW5kID8gMCA6IDEpIC0gKGwxLmJhY2tncm91bmQgPyAwIDogMSkpO1xuXG4gICAgLy8gQXNzaWduIHN1cmUgdGhpbmdzXG4gICAgbGF5ZXJzLmZvckVhY2goKGxheWVyLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGxheWVyLmJhY2tncm91bmQpIHtcbiAgICAgICAgbGF5ZXIub3JkZXIgPSBXaWRnZXRNYXBVdGlscy5CQUNLR1JPVU5EX09SREVSO1xuICAgICAgfVxuICAgICAgaWYgKGluZGV4ID09PSAwICYmICFsYXllci5vcmRlcikge1xuICAgICAgICBsYXllci5vcmRlciA9IDA7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsYXllcnMuZm9yRWFjaCgobGF5ZXIsIGluZGV4KSA9PiB7XG4gICAgICBpZiAobGF5ZXIub3JkZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZXQgW2Rpc3RhbmNlVG9GaXJzdFByZXZpb3VzT3JkZXIsIGRpc3RhbmNlVG9GaXJzdE5leHRPcmRlcl0gPSBbXG4gICAgICAgICAgbGF5ZXJzXG4gICAgICAgICAgICAuc2xpY2UoMCwgaW5kZXgpXG4gICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICAuZmluZEluZGV4KChlbGVtZW50KSA9PiBlbGVtZW50Lm9yZGVyICE9PSB1bmRlZmluZWQpICsgMSxcbiAgICAgICAgICBsYXllcnMuc2xpY2UoaW5kZXggKyAxKS5maW5kSW5kZXgoKGVsZW1lbnQpID0+IGVsZW1lbnQub3JkZXIgIT09IHVuZGVmaW5lZClcbiAgICAgICAgXTtcblxuICAgICAgICBsZXQgW3ByZXZpb3VzT3JkZXJJbmRleCwgbmV4dE9yZGVySW5kZXhdID0gW1xuICAgICAgICAgIGRpc3RhbmNlVG9GaXJzdFByZXZpb3VzT3JkZXIgPiAtMSA/IGluZGV4IC0gZGlzdGFuY2VUb0ZpcnN0UHJldmlvdXNPcmRlciA6IDAsXG4gICAgICAgICAgZGlzdGFuY2VUb0ZpcnN0TmV4dE9yZGVyICsgaW5kZXggKyAxXG4gICAgICAgIF07XG4gICAgICAgIGxldCBbcHJldmlvdXNPcmRlciwgbmV4dE9yZGVyXSA9IFtcbiAgICAgICAgICBkaXN0YW5jZVRvRmlyc3RQcmV2aW91c09yZGVyID4gLTEgPyBsYXllcnNbcHJldmlvdXNPcmRlckluZGV4XS5vcmRlciEgOiAwLFxuICAgICAgICAgIGRpc3RhbmNlVG9GaXJzdE5leHRPcmRlciA+IC0xID8gbGF5ZXJzW25leHRPcmRlckluZGV4XS5vcmRlciEgOiAtMVxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChuZXh0T3JkZXIgPiAwICYmIG5leHRPcmRlciA8IHByZXZpb3VzT3JkZXIpIHtcbiAgICAgICAgICBjb25zdCBuZXdPcmRlciA9IHByZXZpb3VzT3JkZXIgKyAobmV4dE9yZGVySW5kZXggLSBwcmV2aW91c09yZGVySW5kZXgpO1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGB0aGUgb3JkZXIgcHJvcGVydHkgb2YgbGF5ZXIgbm8gJHtpbmRleCArIDJ9IHdhcyBwcmVzZXQgYnV0IGRvZXNuJ3QgZm9sbG93IHRoZSBvcmRlciBvZiB0aGUgb3RoZXIgbGF5ZXJzYFxuICAgICAgICAgICk7XG4gICAgICAgICAgbmV4dE9yZGVyID0gbmV3T3JkZXI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dE9yZGVyID4gMCkge1xuICAgICAgICAgIGxldCByZWxhdGl2ZUluZGV4ID0gaW5kZXggLSBwcmV2aW91c09yZGVySW5kZXg7XG4gICAgICAgICAgbGF5ZXIub3JkZXIgPVxuICAgICAgICAgICAgcHJldmlvdXNPcmRlciArICgobmV4dE9yZGVyIC0gcHJldmlvdXNPcmRlcikgLyAobmV4dE9yZGVySW5kZXggLSBwcmV2aW91c09yZGVySW5kZXgpKSAqIHJlbGF0aXZlSW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGF5ZXIub3JkZXIgPSBwcmV2aW91c09yZGVyICsgZGlzdGFuY2VUb0ZpcnN0UHJldmlvdXNPcmRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxheWVycy5zb3J0KChsMSwgbDIpID0+IChsMS5vcmRlciA/PyAxKSAtIChsMi5vcmRlciEgPz8gMSkpO1xuICB9XG5cbiAgc3RhdGljIHJlYWRHZW9tZXRyeTxUIGV4dGVuZHMgJ3BvaW50JyB8ICdsaW5lJyB8ICdtdWx0aS1saW5lJyB8ICdwb2x5Z29uJyB8ICdtdWx0aS1wb2x5Z29uJz4oXG4gICAgcHJvamVjdGlvbjogUHJvamVjdGlvbkxpa2UsXG4gICAgaXRlbTogSXRlbSxcbiAgICB0eXBlOiBULFxuICAgIGF0dHJpYnV0ZTogQXR0cmlidXRlIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIGlmICghYXR0cmlidXRlKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgdmFsdWUgPSBpdGVtLmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIGNvbnNvbGUud2FybihgR2VvbWV0cnkgYXR0cmlidXRlIGV4Y2x1ZGVkIGZvciBpdGVtICR7aXRlbS5pZH1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnR5cGUgPT09ICdNVUxUSScpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUudmFsdWVzWzBdO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS52aXNpYmxlID09PSBmYWxzZSkge1xuICAgICAgY29uc29sZS53YXJuKGBHZW9tZXRyeSBub3QgdmlzaWJsZSBmb3IgaXRlbSAke2l0ZW0uaWR9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGdlb21ldHJ5O1xuICAgIHRyeSB7XG4gICAgICBnZW9tZXRyeSA9IFdpZGdldE1hcFV0aWxzLmdlb0pTT04ucmVhZEdlb21ldHJ5KHZhbHVlLnZhbHVlIGFzIGFueSwge1xuICAgICAgICBmZWF0dXJlUHJvamVjdGlvbjogcHJvamVjdGlvblxuICAgICAgfSkgYXMgR2VvbWV0cnk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdlcnJvciByZWFkaW5nIEdlb21ldHJ5JywgdmFsdWUudmFsdWUsIGUpO1xuICAgIH1cblxuICAgIHJldHVybiBnZW9tZXRyeTtcbiAgfVxuXG4gIHN0YXRpYyBwcm9qZWN0RXh0ZW50QWdncmVnYXRpb25SZXNwb25zZShcbiAgICBmaWVsZDogRmllbGQsXG4gICAgZXh0ZW50UmVzcG9uc2U6IEFnZ3JlZ2F0aW9uUmVzdWx0LFxuICAgIGxheWVyOiBNYXBHZW9TZXJ2ZXJMYXllck9wdGlvbnMsXG4gICAgd21zQ2FwYWJpbGl0aWVzOiB7IFtwOiBzdHJpbmddOiBHZXRDYXBhYmlsaXRpZXNSZXNwb25zZSB8IG51bGwgfSB8IHVuZGVmaW5lZCxcbiAgICBtYXA6IE1hcFxuICApIHtcbiAgICBjb25zdCBwcm9qQm94ID0gZ2V0UHJvamVjdGlvbihmaWVsZCEuY3JzID8/IERFRkFVTFRfUFJPSkVDVElPTik7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBleHRlbnRSZXNwb25zZS52YWx1ZXMgYXMge1xuICAgICAgdmFsdWU6IHtcbiAgICAgICAgdG9wX2xlZnQ6IHtcbiAgICAgICAgICBsb246IHN0cmluZztcbiAgICAgICAgICBsYXQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgICAgYm90dG9tX3JpZ2h0OiB7XG4gICAgICAgICAgbG9uOiBzdHJpbmc7XG4gICAgICAgICAgbGF0OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH1bXTtcbiAgICBpZiAoXG4gICAgICBwcm9qQm94ICYmXG4gICAgICByZXNwb25zZS5sZW5ndGggPiAwICYmXG4gICAgICByZXNwb25zZVswXS52YWx1ZSAmJlxuICAgICAgcmVzcG9uc2VbMF0udmFsdWUudG9wX2xlZnQgJiZcbiAgICAgIHJlc3BvbnNlWzBdLnZhbHVlLnRvcF9sZWZ0LmxhdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICByZXNwb25zZVswXS52YWx1ZS50b3BfbGVmdC5sb24gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcmVzcG9uc2VbMF0udmFsdWUuYm90dG9tX3JpZ2h0ICYmXG4gICAgICByZXNwb25zZVswXS52YWx1ZS5ib3R0b21fcmlnaHQubGF0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHJlc3BvbnNlWzBdLnZhbHVlLmJvdHRvbV9yaWdodC5sb24gIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YXNvdXJjZTogbGF5ZXIuZGF0YXNvdXJjZUlkLFxuICAgICAgICBlcnJvcjogZmFsc2UsXG4gICAgICAgIGV4dGVudDogW1xuICAgICAgICAgIHRyYW5zZm9ybShcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgcGFyc2VGbG9hdChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBleHRlbnRSZXNwb25zZS52YWx1ZXNbMF0gYXMge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgIHRvcF9sZWZ0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb246IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICkudmFsdWUudG9wX2xlZnQubG9uXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHBhcnNlRmxvYXQoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgZXh0ZW50UmVzcG9uc2UudmFsdWVzWzBdIGFzIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0b3BfbGVmdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF0OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApLnZhbHVlLnRvcF9sZWZ0LmxhdFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcHJvakJveCxcbiAgICAgICAgICAgIG1hcC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0cmFuc2Zvcm0oXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIHBhcnNlRmxvYXQoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgZXh0ZW50UmVzcG9uc2UudmFsdWVzWzBdIGFzIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICBib3R0b21fcmlnaHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvbjogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKS52YWx1ZS5ib3R0b21fcmlnaHQubG9uXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHBhcnNlRmxvYXQoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgZXh0ZW50UmVzcG9uc2UudmFsdWVzWzBdIGFzIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICBib3R0b21fcmlnaHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhdDogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKS52YWx1ZS5ib3R0b21fcmlnaHQubGF0XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBwcm9qQm94LFxuICAgICAgICAgICAgbWFwLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKClcbiAgICAgICAgICApXG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGFzb3VyY2U6IGxheWVyLmRhdGFzb3VyY2VJZCxcbiAgICAgIGV4dGVudDogWE1MVXRpbHMuZ2V0TGF5ZXJFeHRlbnQobGF5ZXIucGFyYW1MYXllciwgbWFwLCB3bXNDYXBhYmlsaXRpZXMhW2xheWVyLnVybF0/LmRvYykgPz8gW10sXG4gICAgICBlcnJvcjogZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIERFRkFVTFRfSEVBVE1BUF9SQURJVVMgPSAyNTtcbiAgc3RhdGljIERFRkFVTFRfUkFESVVTX0lOVEVOU0lUWV9GQUNUT1IgPSAxMDAwMDtcbiAgc3RhdGljIERFRkFVTFRfWk9PTV9NSU4gPSAzO1xuICBzdGF0aWMgREVGQVVMVF9aT09NX1NUQVJUID0gMTA7XG4gIHN0YXRpYyBERUZBVUxUX1pPT01fTUFYID0gMTg7XG4gIHN0YXRpYyBERUZBVUxUX01BUF9DRU5URVIgPSBbMi4yODI3MjE3MzQ3MzgxNTI1LCA0OC44NjQ3MDYwMzE1NTc3MTZdO1xuXG4gIHN0YXRpYyBCQUNLR1JPVU5EX09SREVSID0gOTk5OTtcbn1cbiJdfQ==
|
|
299
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LW1hcC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LW1hcC91dGlscy93aWRnZXQtbWFwLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxrQkFBa0IsRUFFbEIsU0FBUyxFQUdULFNBQVMsRUFRVixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQU8sTUFBTSxJQUFJLENBQUM7QUFDbEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVMsTUFBTSxTQUFTLENBQUM7QUFFcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxhQUFhLEVBQWtCLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUUxRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU3QyxNQUFNLE9BQU8sY0FBYzthQUNsQixZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUMvQixNQUFNLENBQUMseUJBQXlCLENBQzlCLEtBQTRCLEVBQzVCLFNBQW9CLEVBQ3BCLGtCQUEyQixFQUMzQixNQUFlO1FBRWYsSUFDRSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUN6RyxLQUFLLENBQUMsSUFBSSxDQUNYO1lBQ0QsQ0FBQyxDQUFDLFNBQVM7WUFDWCxDQUFDLENBQUMsa0JBQWtCO1lBQ3BCLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQzdCLENBQUM7WUFDRCxNQUFN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Q0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9uUmVzdWx0LFxuICBBdHRyaWJ1dGUsXG4gIENsYXNzLFxuICBERUZBVUxUX1BST0pFQ1RJT04sXG4gIEZpZWxkLFxuICBGaWVsZFR5cGUsXG4gIEdldENhcGFiaWxpdGllc1Jlc3BvbnNlLFxuICBJdGVtLFxuICBJdGVtVXRpbHMsXG4gIE1hcEdlb1NlcnZlckxheWVyT3B0aW9ucyxcbiAgTWFwV2lkZ2V0QnViYmxlTGF5ZXJPcHRpb25zLFxuICBNYXBXaWRnZXRIZWF0TWFwTGF5ZXJPcHRpb25zLFxuICBNYXBXaWRnZXRMYXllck9wdGlvbnMsXG4gIE1hcFdpZGdldE1hcmtlckxheWVyT3B0aW9ucyxcbiAgUmVsYXRpb24sXG4gIFJlc3VsdFNldFxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgRmVhdHVyZSwgTWFwIH0gZnJvbSAnb2wnO1xuaW1wb3J0IHsgQ2lyY2xlLCBMaW5lU3RyaW5nLCBQb2ludCB9IGZyb20gJ29sL2dlb20nO1xuaW1wb3J0IHsgU3R5bGUgfSBmcm9tICdvbC9zdHlsZSc7XG5pbXBvcnQgeyBXaWRnZXRNYXBMYXllclNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnQvd2lkZ2V0LW1hcC1sYXllci5zZXJ2aWNlJztcbmltcG9ydCB7IGdldCBhcyBnZXRQcm9qZWN0aW9uLCBQcm9qZWN0aW9uTGlrZSwgdHJhbnNmb3JtIH0gZnJvbSAnb2wvcHJvaic7XG5pbXBvcnQgR2VvbWV0cnkgZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgeyBHZW9KU09OIH0gZnJvbSAnb2wvZm9ybWF0JztcbmltcG9ydCB7IFhNTFV0aWxzIH0gZnJvbSAnLi94bWwtdXRpbHMuY2xhc3MnO1xuXG5leHBvcnQgY2xhc3MgV2lkZ2V0TWFwVXRpbHMge1xuICBzdGF0aWMgZ2VvSlNPTiA9IG5ldyBHZW9KU09OKCk7XG4gIHN0YXRpYyBwb3B1bGF0ZUxvY2F0aW9uQXR0cmlidXRlKFxuICAgIGxheWVyOiBNYXBXaWRnZXRMYXllck9wdGlvbnMsXG4gICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgY2xhc3Nlc05vdEZpbHRlcmVkOiBDbGFzc1tdLFxuICAgIGZpZWxkczogRmllbGRbXVxuICApIHtcbiAgICBpZiAoXG4gICAgICBbJ2hlYXRtYXAnLCAnbWFya2VyJywgJ2J1YmJsZScsICdwb2ludCcsICdsaW5lJywgJ3BvbHlnb24nLCAnbXVsdGktbGluZScsICdtdWx0aS1wb2x5Z29uJywgJ2F1dG8nXS5pbmNsdWRlcyhcbiAgICAgICAgbGF5ZXIudHlwZVxuICAgICAgKSAmJlxuICAgICAgISFyZXN1bHRTZXQgJiZcbiAgICAgICEhY2xhc3Nlc05vdEZpbHRlcmVkICYmXG4gICAgICBjbGFzc2VzTm90RmlsdGVyZWQubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgY29uc3Qgc3BlY2lmaWNMYXllciA9IGxheWVyIGFzXG4gICAgICAgIHwgTWFwV2lkZ2V0SGVhdE1hcExheWVyT3B0aW9uc1xuICAgICAgICB8IE1hcFdpZGdldE1hcmtlckxheWVyT3B0aW9uc1xuICAgICAgICB8IE1hcFdpZGdldEJ1YmJsZUxheWVyT3B0aW9ucztcblxuICAgICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzZXNOb3RGaWx0ZXJlZC5maWx0ZXIoXG4gICAgICAgIChjbCkgPT4gc3BlY2lmaWNMYXllci5jbGFzc2VzPy5pbmNsdWRlcyhjbC5pZCkgfHwgIXNwZWNpZmljTGF5ZXIuY2xhc3NlcyB8fCBzcGVjaWZpY0xheWVyLmNsYXNzZXMubGVuZ3RoID09PSAwXG4gICAgICApO1xuXG4gICAgICBpZiAoIXNwZWNpZmljTGF5ZXIuYXR0cmlidXRlKSB7XG4gICAgICAgIC8vIE5vIGxvY2F0aW9uIGF0dHJpYnV0ZSBhdmFpbGFibGUsIHRoZW4gdHJ5IHRvIGd1ZXNzIG9uZSB0aGF0IHdpbGwgYmUgb2tcblxuICAgICAgICBjb25zdCBnZW9tZXRyeSA9IFdpZGdldE1hcFV0aWxzLmdlb21ldHJ5Rm9yTGF5ZXIobGF5ZXIpO1xuXG4gICAgICAgIGxldCBjYW5kaWRhdGVzOiBBdHRyaWJ1dGVbXSA9IFtdO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocmVzdWx0U2V0Lml0ZW1zKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgLy8gQmFzZWQgb24gaXRlbXMgdGhhdCB3ZSBoYXZlIHRvIGRpc3BsYXlcblxuICAgICAgICAgIGNhbmRpZGF0ZXMgPSBPYmplY3Qua2V5cyhyZXN1bHRTZXQuaXRlbXMpXG4gICAgICAgICAgICAubWFwKChrZXkpID0+ICh7IGl0ZW1zOiByZXN1bHRTZXQuaXRlbXNba2V5XSwgb0NsYXNzOiBjbGFzc2VzLmZpbmQoKGNsKSA9PiBjbC5pZCA9PT0ga2V5KSB9KSlcbiAgICAgICAgICAgIC5tYXAoKHsgaXRlbXMsIG9DbGFzcyB9KSA9PlxuICAgICAgICAgICAgICAob0NsYXNzID8/IHsgYXR0cmlidXRlczogW10gfSkuYXR0cmlidXRlcy5maWx0ZXIoKGF0dHIpID0+IGF0dHIuZmllbGQ/LnR5cGUgPT09IGdlb21ldHJ5KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gWy4uLnAsIC4uLmNdLCBbXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbnkgaXRlbXMgdG8gZGlzcGxheSwgc28gYWxsb3cgYWxsIGNvcnJlc3BvbmRpbmcgZ2VvbWV0cnkgZmllbGRzXG4gICAgICAgICAgY2FuZGlkYXRlcyA9IGNsYXNzZXNOb3RGaWx0ZXJlZFxuICAgICAgICAgICAgLm1hcCgoY2xhenopID0+IGNsYXp6LmF0dHJpYnV0ZXMpXG4gICAgICAgICAgICAuZmxhdCgpXG4gICAgICAgICAgICAuZmlsdGVyKChhdHRyKSA9PiBhdHRyLmZpZWxkLnR5cGUgPT09IGdlb21ldHJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjYW5kaWRhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBzcGVjaWZpY0xheWVyLmF0dHJpYnV0ZSA9IGNhbmRpZGF0ZXNbMF0udGVjaG5pY2FsTmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBwb3B1bGF0ZUludGVuc2l0eUF0dHJpYnV0ZShcbiAgICBsYXllcjogTWFwV2lkZ2V0TGF5ZXJPcHRpb25zLFxuICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgIGNsYXNzZXNOb3RGaWx0ZXJlZDogQ2xhc3NbXSxcbiAgICBmaWVsZHM6IEZpZWxkW11cbiAgKSB7XG4gICAgaWYgKFxuICAgICAgWydoZWF0bWFwJywgJ2J1YmJsZSddLmluY2x1ZGVzKGxheWVyLnR5cGUpICYmXG4gICAgICAhIXJlc3VsdFNldCAmJlxuICAgICAgISFjbGFzc2VzTm90RmlsdGVyZWQgJiZcbiAgICAgIGNsYXNzZXNOb3RGaWx0ZXJlZC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCBzcGVjaWZpY0xheWVyID0gbGF5ZXIgYXMgTWFwV2lkZ2V0SGVhdE1hcExheWVyT3B0aW9ucyB8IE1hcFdpZGdldEJ1YmJsZUxheWVyT3B0aW9ucztcblxuICAgICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzZXNOb3RGaWx0ZXJlZC5maWx0ZXIoXG4gICAgICAgIChjbCkgPT5cbiAgICAgICAgICAoc3BlY2lmaWNMYXllci5jbGFzc2VzPy5pbmNsdWRlcyhjbC5pZCkgfHwgIXNwZWNpZmljTGF5ZXIuY2xhc3NlcyB8fCBzcGVjaWZpY0xheWVyLmNsYXNzZXMubGVuZ3RoID09PSAwKSAmJlxuICAgICAgICAgIGNsLmF0dHJpYnV0ZXMuZmluZCgoYXR0cikgPT4gYXR0ci50ZWNobmljYWxOYW1lID09PSAoc3BlY2lmaWNMYXllcj8uYXR0cmlidXRlID8/IFtdKSlcbiAgICAgICk7XG5cbiAgICAgIGlmICghc3BlY2lmaWNMYXllci5pbnRlbnNpdHlBdHRyaWJ1dGUpIHtcbiAgICAgICAgLy8gTm8gaW50ZW5zaXR5IGF0dHJpYnV0ZSBhdmFpbGFibGUsIHRoZW4gdGFrZSB0aGUgbWF4aW11bSBpbnRlbnNpdHkgbWF0Y2hpbmcgYXR0cmlidXRlXG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZXNEcnkgPSBPYmplY3Qua2V5cyhyZXN1bHRTZXQuaXRlbXMpXG4gICAgICAgICAgLm1hcCgoa2V5KSA9PiAoeyBpdGVtczogcmVzdWx0U2V0Lml0ZW1zW2tleV0sIG9DbGFzczogY2xhc3Nlcy5maW5kKChjbCkgPT4gY2wuaWQgPT09IGtleSkgfSkpXG4gICAgICAgICAgLm1hcCgoeyBpdGVtcywgb0NsYXNzIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiAob0NsYXNzID8/IHsgYXR0cmlidXRlczogW10gfSkuYXR0cmlidXRlc1xuICAgICAgICAgICAgICAuZmlsdGVyKChhdHRyKSA9PiBhdHRyLmZpZWxkPy50eXBlID09PSBGaWVsZFR5cGUuREVDSU1BTCB8fCBhdHRyLmZpZWxkPy50eXBlID09PSBGaWVsZFR5cGUuSU5URUdFUilcbiAgICAgICAgICAgICAgLm1hcCgoYXR0cikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJWYWx1ZXMgPSBJdGVtVXRpbHMucGVydGluZW50VmFsdWUoaXRlbXMsIGF0dHIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBtaW46IE1hdGgubWluKC4uLmF0dHJWYWx1ZXMpLFxuICAgICAgICAgICAgICAgICAgbWF4OiBNYXRoLm1heCguLi5hdHRyVmFsdWVzKSxcbiAgICAgICAgICAgICAgICAgIHRlY2huaWNhbE5hbWU6IGF0dHIudGVjaG5pY2FsTmFtZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gWy4uLnAsIC4uLmNdLCBbXSlcbiAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYi5tYXggLSBhLm1heCk7XG5cbiAgICAgICAgaWYgKGNhbmRpZGF0ZXNEcnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHNwZWNpZmljTGF5ZXIuaW50ZW5zaXR5QXR0cmlidXRlID0gY2FuZGlkYXRlc0RyeVswXS50ZWNobmljYWxOYW1lO1xuICAgICAgICAgIHNwZWNpZmljTGF5ZXIuaW50ZW5zaXR5QXNjID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXRGZWF0dXJlRnJvbUl0ZW0oXG4gICAgcHJvamVjdGlvbjogUHJvamVjdGlvbkxpa2UsXG4gICAgaXRlbTogSXRlbSxcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgbG9jYXRpb25BdHRyaWJ1dGU6IEF0dHJpYnV0ZSxcbiAgICBpY29uU3R5bGU/OiBTdHlsZSxcbiAgICBzZWxlY3RlZEljb25TdHlsZT86IFN0eWxlXG4gICkge1xuICAgIHJldHVybiBuZXcgRmVhdHVyZSh7XG4gICAgICAuLi5pdGVtLFxuICAgICAgdHlwZSxcbiAgICAgIGdlb21ldHJ5OiBXaWRnZXRNYXBVdGlscy5yZWFkR2VvbWV0cnkocHJvamVjdGlvbiwgaXRlbSwgJ3BvaW50JywgbG9jYXRpb25BdHRyaWJ1dGUpID8/IHVuZGVmaW5lZCxcbiAgICAgIGNsYXNzaWNTdHlsZTogaWNvblN0eWxlID8/IG51bGwsXG4gICAgICBzZWxlY3RlZFN0eWxlOiBzZWxlY3RlZEljb25TdHlsZSA/PyBudWxsXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0Q2lyY2xlRmVhdHVyZUZyb21JdGVtKFxuICAgIHByb2plY3Rpb246IFByb2plY3Rpb25MaWtlLFxuICAgIGl0ZW06IEl0ZW0sXG4gICAgbG9jYXRpb25BdHRyaWJ1dGU6IEF0dHJpYnV0ZSxcbiAgICByYWRpdXM6IG51bWJlcixcbiAgICBpY29uU3R5bGU6IFN0eWxlLFxuICAgIHNlbGVjdGVkSWNvblN0eWxlOiBTdHlsZVxuICApIHtcbiAgICByZXR1cm4gbmV3IEZlYXR1cmUoe1xuICAgICAgLi4uaXRlbSxcbiAgICAgIGdlb21ldHJ5OiBuZXcgQ2lyY2xlKFxuICAgICAgICAoV2lkZ2V0TWFwVXRpbHMucmVhZEdlb21ldHJ5KHByb2plY3Rpb24sIGl0ZW0sICdwb2ludCcsIGxvY2F0aW9uQXR0cmlidXRlKSBhcyBQb2ludCkuZ2V0Q29vcmRpbmF0ZXMoKSxcbiAgICAgICAgcmFkaXVzXG4gICAgICApLFxuICAgICAgY2xhc3NpY1N0eWxlOiBpY29uU3R5bGUsXG4gICAgICBzZWxlY3RlZFN0eWxlOiBzZWxlY3RlZEljb25TdHlsZSxcbiAgICAgIHR5cGU6ICdidWJibGUnXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0TGlua0ZlYXR1cmUocmVsYXRpb246IFJlbGF0aW9uLCBmZWF0dXJlU291cmNlOiBGZWF0dXJlPFBvaW50PiwgZmVhdHVyZURlc3RpbmF0aW9uOiBGZWF0dXJlPFBvaW50Pikge1xuICAgIHJldHVybiBuZXcgRmVhdHVyZSh7XG4gICAgICAuLi5yZWxhdGlvbixcbiAgICAgIGdlb21ldHJ5OiBuZXcgTGluZVN0cmluZyhbXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZmVhdHVyZVNvdXJjZS5nZXRHZW9tZXRyeSgpPy5nZXRDb29yZGluYXRlcygpID8/IGZlYXR1cmVTb3VyY2UuZ2V0R2VvbWV0cnkoKT8uZ2V0Q2VudGVyKCkgPz8gWzAsIDBdLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGZlYXR1cmVEZXN0aW5hdGlvbi5nZXRHZW9tZXRyeSgpPy5nZXRDb29yZGluYXRlcygpID8/IGZlYXR1cmVEZXN0aW5hdGlvbi5nZXRHZW9tZXRyeSgpPy5nZXRDZW50ZXIoKSA/PyBbMCwgMF1cbiAgICAgIF0pLFxuICAgICAgc291cmNlOiBmZWF0dXJlU291cmNlLFxuICAgICAgZGVzdGluYXRpb246IGZlYXR1cmVEZXN0aW5hdGlvbixcbiAgICAgIHR5cGU6ICdsaW5rJ1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGdldE1hcEFzUG5nKG1hcDogTWFwKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgbWFwLm9uY2UoJ3JlbmRlcmNvbXBsZXRlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBtYXBDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IG1hcC5nZXRTaXplKCkgfHwgWzEwMCwgMTAwXTtcbiAgICAgICAgbWFwQ2FudmFzLndpZHRoID0gc2l6ZVswXTtcbiAgICAgICAgbWFwQ2FudmFzLmhlaWdodCA9IHNpemVbMV07XG4gICAgICAgIGNvbnN0IG1hcENvbnRleHQgPSBtYXBDYW52YXMuZ2V0Q29udGV4dCgnMmQnKSB8fCAobnVsbCBhcyB1bmtub3duIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk7XG4gICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm9sLWxheWVyIGNhbnZhcywgY2FudmFzLm9sLWxheWVyJyksIChjYW52YXMpID0+IHtcbiAgICAgICAgICBpZiAoY2FudmFzLndpZHRoID4gMCkge1xuICAgICAgICAgICAgY29uc3Qgb3BhY2l0eSA9IGNhbnZhcy5wYXJlbnROb2RlLnN0eWxlLm9wYWNpdHkgfHwgY2FudmFzLnN0eWxlLm9wYWNpdHk7XG4gICAgICAgICAgICBtYXBDb250ZXh0Lmdsb2JhbEFscGhhID0gb3BhY2l0eSA9PT0gJycgPyAxIDogTnVtYmVyKG9wYWNpdHkpO1xuXG4gICAgICAgICAgICBjb25zdCBiYWNrZ3JvdW5kQ29sb3IgPSBjYW52YXMucGFyZW50Tm9kZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgICAgICBpZiAoYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICAgICAgICAgIG1hcENvbnRleHQuZmlsbFN0eWxlID0gYmFja2dyb3VuZENvbG9yO1xuICAgICAgICAgICAgICBtYXBDb250ZXh0LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBtYXRyaXg7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm0gPSBjYW52YXMuc3R5bGUudHJhbnNmb3JtO1xuICAgICAgICAgICAgaWYgKHRyYW5zZm9ybSkge1xuICAgICAgICAgICAgICAvLyBHZXQgdGhlIHRyYW5zZm9ybSBwYXJhbWV0ZXJzIGZyb20gdGhlIHN0eWxlJ3MgdHJhbnNmb3JtIG1hdHJpeFxuICAgICAgICAgICAgICBtYXRyaXggPSB0cmFuc2Zvcm1cbiAgICAgICAgICAgICAgICAubWF0Y2goL15tYXRyaXhcXCgoW14oXSopXFwpJC8pWzFdXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAubWFwKE51bWJlcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtYXRyaXggPSBbXG4gICAgICAgICAgICAgICAgcGFyc2VGbG9hdChjYW52YXMuc3R5bGUud2lkdGgpIC8gY2FudmFzLndpZHRoLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KGNhbnZhcy5zdHlsZS5oZWlnaHQpIC8gY2FudmFzLmhlaWdodCxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEFwcGx5IHRoZSB0cmFuc2Zvcm0gdG8gdGhlIGV4cG9ydCBtYXAgY29udGV4dFxuICAgICAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnByb3RvdHlwZS5zZXRUcmFuc2Zvcm0uYXBwbHkobWFwQ29udGV4dCwgbWF0cml4KTtcbiAgICAgICAgICAgIG1hcENvbnRleHQuZHJhd0ltYWdlKGNhbnZhcywgMCwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbWFwQ29udGV4dC5nbG9iYWxBbHBoYSA9IDE7XG4gICAgICAgIHJlc29sdmUobWFwQ2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJykpO1xuICAgICAgfSk7XG4gICAgICBtYXAucmVuZGVyU3luYygpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGV4cG9ydE1hcEFzSW1hZ2UobWFwOiBNYXAsIGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICBXaWRnZXRNYXBVdGlscy5nZXRNYXBBc1BuZyhtYXApLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICBsaW5rLmRvd25sb2FkID0gZmlsZW5hbWU7XG4gICAgICBsaW5rLmhyZWYgPSBkYXRhO1xuICAgICAgbGluay5jbGljaygpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGdlb21ldHJ5Rm9yTGF5ZXIobGF5ZXI6IE1hcFdpZGdldExheWVyT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChsYXllci50eXBlKSB7XG4gICAgICBjYXNlICdtYXJrZXInOlxuICAgICAgY2FzZSAnaGVhdG1hcCc6XG4gICAgICBjYXNlICdidWJibGUnOlxuICAgICAgY2FzZSAncG9pbnQnOlxuICAgICAgICByZXR1cm4gRmllbGRUeXBlLlBPSU5UO1xuICAgICAgY2FzZSAnbGluZSc6XG4gICAgICAgIHJldHVybiBGaWVsZFR5cGUuTElORTtcbiAgICAgIGNhc2UgJ3BvbHlnb24nOlxuICAgICAgICByZXR1cm4gRmllbGRUeXBlLlBPTFlHT047XG4gICAgICBjYXNlICdtdWx0aS1saW5lJzpcbiAgICAgICAgcmV0dXJuIEZpZWxkVHlwZS5NVUxUSUxJTkU7XG4gICAgICBjYXNlICdtdWx0aS1wb2x5Z29uJzpcbiAgICAgICAgcmV0dXJuIEZpZWxkVHlwZS5NVUxUSVBPTFlHT047XG4gICAgICBjYXNlICdhdXRvJzpcbiAgICAgICAgcmV0dXJuIFdpZGdldE1hcFV0aWxzLmdlb21ldHJ5Rm9yTGF5ZXIoe1xuICAgICAgICAgIHR5cGU6IFdpZGdldE1hcExheWVyU2VydmljZS50cmFuc2xhdGVGaWVsZFR5cGVUb0xheWVyVHlwZShsYXllci5zdWJUeXBlKVxuICAgICAgICB9IGFzIE1hcFdpZGdldExheWVyT3B0aW9ucyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gRmllbGRUeXBlLlBPSU5UO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBhc3NpZ25MYXllcnNPcmRlcihfbGF5ZXJzOiBNYXBXaWRnZXRMYXllck9wdGlvbnNbXSkge1xuICAgIGNvbnN0IGxheWVycyA9IHN0cnVjdHVyZWRDbG9uZShfbGF5ZXJzKSBhcyBNYXBXaWRnZXRMYXllck9wdGlvbnNbXTtcblxuICAgIGxheWVycy5zb3J0KChsMSwgbDIpID0+IChsMi5iYWNrZ3JvdW5kID8gMCA6IDEpIC0gKGwxLmJhY2tncm91bmQgPyAwIDogMSkpO1xuXG4gICAgLy8gQXNzaWduIHN1cmUgdGhpbmdzXG4gICAgbGF5ZXJzLmZvckVhY2goKGxheWVyLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGxheWVyLmJhY2tncm91bmQpIHtcbiAgICAgICAgbGF5ZXIub3JkZXIgPSBXaWRnZXRNYXBVdGlscy5CQUNLR1JPVU5EX09SREVSO1xuICAgICAgfVxuICAgICAgaWYgKGluZGV4ID09PSAwICYmICFsYXllci5vcmRlcikge1xuICAgICAgICBsYXllci5vcmRlciA9IDA7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsYXllcnMuZm9yRWFjaCgobGF5ZXIsIGluZGV4KSA9PiB7XG4gICAgICBpZiAobGF5ZXIub3JkZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZXQgW2Rpc3RhbmNlVG9GaXJzdFByZXZpb3VzT3JkZXIsIGRpc3RhbmNlVG9GaXJzdE5leHRPcmRlcl0gPSBbXG4gICAgICAgICAgbGF5ZXJzXG4gICAgICAgICAgICAuc2xpY2UoMCwgaW5kZXgpXG4gICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICAuZmluZEluZGV4KChlbGVtZW50KSA9PiBlbGVtZW50Lm9yZGVyICE9PSB1bmRlZmluZWQpICsgMSxcbiAgICAgICAgICBsYXllcnMuc2xpY2UoaW5kZXggKyAxKS5maW5kSW5kZXgoKGVsZW1lbnQpID0+IGVsZW1lbnQub3JkZXIgIT09IHVuZGVmaW5lZClcbiAgICAgICAgXTtcblxuICAgICAgICBsZXQgW3ByZXZpb3VzT3JkZXJJbmRleCwgbmV4dE9yZGVySW5kZXhdID0gW1xuICAgICAgICAgIGRpc3RhbmNlVG9GaXJzdFByZXZpb3VzT3JkZXIgPiAtMSA/IGluZGV4IC0gZGlzdGFuY2VUb0ZpcnN0UHJldmlvdXNPcmRlciA6IDAsXG4gICAgICAgICAgZGlzdGFuY2VUb0ZpcnN0TmV4dE9yZGVyICsgaW5kZXggKyAxXG4gICAgICAgIF07XG4gICAgICAgIGxldCBbcHJldmlvdXNPcmRlciwgbmV4dE9yZGVyXSA9IFtcbiAgICAgICAgICBkaXN0YW5jZVRvRmlyc3RQcmV2aW91c09yZGVyID4gLTEgPyBsYXllcnNbcHJldmlvdXNPcmRlckluZGV4XS5vcmRlciEgOiAwLFxuICAgICAgICAgIGRpc3RhbmNlVG9GaXJzdE5leHRPcmRlciA+IC0xID8gbGF5ZXJzW25leHRPcmRlckluZGV4XS5vcmRlciEgOiAtMVxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChuZXh0T3JkZXIgPiAwICYmIG5leHRPcmRlciA8IHByZXZpb3VzT3JkZXIpIHtcbiAgICAgICAgICBjb25zdCBuZXdPcmRlciA9IHByZXZpb3VzT3JkZXIgKyAobmV4dE9yZGVySW5kZXggLSBwcmV2aW91c09yZGVySW5kZXgpO1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGB0aGUgb3JkZXIgcHJvcGVydHkgb2YgbGF5ZXIgbm8gJHtpbmRleCArIDJ9IHdhcyBwcmVzZXQgYnV0IGRvZXNuJ3QgZm9sbG93IHRoZSBvcmRlciBvZiB0aGUgb3RoZXIgbGF5ZXJzYFxuICAgICAgICAgICk7XG4gICAgICAgICAgbmV4dE9yZGVyID0gbmV3T3JkZXI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dE9yZGVyID4gMCkge1xuICAgICAgICAgIGxldCByZWxhdGl2ZUluZGV4ID0gaW5kZXggLSBwcmV2aW91c09yZGVySW5kZXg7XG4gICAgICAgICAgbGF5ZXIub3JkZXIgPVxuICAgICAgICAgICAgcHJldmlvdXNPcmRlciArICgobmV4dE9yZGVyIC0gcHJldmlvdXNPcmRlcikgLyAobmV4dE9yZGVySW5kZXggLSBwcmV2aW91c09yZGVySW5kZXgpKSAqIHJlbGF0aXZlSW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGF5ZXIub3JkZXIgPSBwcmV2aW91c09yZGVyICsgZGlzdGFuY2VUb0ZpcnN0UHJldmlvdXNPcmRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxheWVycy5zb3J0KChsMSwgbDIpID0+IChsMS5vcmRlciA/PyAxKSAtIChsMi5vcmRlciEgPz8gMSkpO1xuICB9XG5cbiAgc3RhdGljIHJlYWRHZW9tZXRyeTxUIGV4dGVuZHMgJ3BvaW50JyB8ICdsaW5lJyB8ICdtdWx0aS1saW5lJyB8ICdwb2x5Z29uJyB8ICdtdWx0aS1wb2x5Z29uJz4oXG4gICAgcHJvamVjdGlvbjogUHJvamVjdGlvbkxpa2UsXG4gICAgaXRlbTogSXRlbSxcbiAgICB0eXBlOiBULFxuICAgIGF0dHJpYnV0ZTogQXR0cmlidXRlIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIGlmICghYXR0cmlidXRlKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgdmFsdWUgPSBpdGVtLmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIGNvbnNvbGUud2FybihgR2VvbWV0cnkgYXR0cmlidXRlIGV4Y2x1ZGVkIGZvciBpdGVtICR7aXRlbS5pZH1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnR5cGUgPT09ICdNVUxUSScpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUudmFsdWVzWzBdO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS52aXNpYmxlID09PSBmYWxzZSkge1xuICAgICAgY29uc29sZS53YXJuKGBHZW9tZXRyeSBub3QgdmlzaWJsZSBmb3IgaXRlbSAke2l0ZW0uaWR9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGdlb21ldHJ5O1xuICAgIHRyeSB7XG4gICAgICBnZW9tZXRyeSA9IFdpZGdldE1hcFV0aWxzLmdlb0pTT04ucmVhZEdlb21ldHJ5KHZhbHVlLnZhbHVlIGFzIGFueSwge1xuICAgICAgICBmZWF0dXJlUHJvamVjdGlvbjogcHJvamVjdGlvblxuICAgICAgfSkgYXMgR2VvbWV0cnk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdlcnJvciByZWFkaW5nIEdlb21ldHJ5JywgdmFsdWUudmFsdWUsIGUpO1xuICAgIH1cblxuICAgIHJldHVybiBnZW9tZXRyeTtcbiAgfVxuXG4gIHN0YXRpYyBwcm9qZWN0RXh0ZW50QWdncmVnYXRpb25SZXNwb25zZShcbiAgICBmaWVsZDogRmllbGQsXG4gICAgZXh0ZW50UmVzcG9uc2U6IEFnZ3JlZ2F0aW9uUmVzdWx0LFxuICAgIGxheWVyOiBNYXBHZW9TZXJ2ZXJMYXllck9wdGlvbnMsXG4gICAgd21zQ2FwYWJpbGl0aWVzOiB7IFtwOiBzdHJpbmddOiBHZXRDYXBhYmlsaXRpZXNSZXNwb25zZSB8IG51bGwgfSB8IHVuZGVmaW5lZCxcbiAgICBtYXA6IE1hcFxuICApIHtcbiAgICBjb25zdCBwcm9qQm94ID0gZ2V0UHJvamVjdGlvbihmaWVsZCEuY3JzID8/IERFRkFVTFRfUFJPSkVDVElPTik7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBleHRlbnRSZXNwb25zZS52YWx1ZXMgYXMge1xuICAgICAgdmFsdWU6IHtcbiAgICAgICAgdG9wX2xlZnQ6IHtcbiAgICAgICAgICBsb246IHN0cmluZztcbiAgICAgICAgICBsYXQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgICAgYm90dG9tX3JpZ2h0OiB7XG4gICAgICAgICAgbG9uOiBzdHJpbmc7XG4gICAgICAgICAgbGF0OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH1bXTtcbiAgICBpZiAoXG4gICAgICBwcm9qQm94ICYmXG4gICAgICByZXNwb25zZS5sZW5ndGggPiAwICYmXG4gICAgICByZXNwb25zZVswXS52YWx1ZSAmJlxuICAgICAgcmVzcG9uc2VbMF0udmFsdWUudG9wX2xlZnQgJiZcbiAgICAgIHJlc3BvbnNlWzBdLnZhbHVlLnRvcF9sZWZ0LmxhdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICByZXNwb25zZVswXS52YWx1ZS50b3BfbGVmdC5sb24gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcmVzcG9uc2VbMF0udmFsdWUuYm90dG9tX3JpZ2h0ICYmXG4gICAgICByZXNwb25zZVswXS52YWx1ZS5ib3R0b21fcmlnaHQubGF0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHJlc3BvbnNlWzBdLnZhbHVlLmJvdHRvbV9yaWdodC5sb24gIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YXNvdXJjZTogbGF5ZXIuZGF0YXNvdXJjZUlkLFxuICAgICAgICBlcnJvcjogZmFsc2UsXG4gICAgICAgIGV4dGVudDogW1xuICAgICAgICAgIHRyYW5zZm9ybShcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgcGFyc2VGbG9hdChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBleHRlbnRSZXNwb25zZS52YWx1ZXNbMF0gYXMge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgIHRvcF9sZWZ0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb246IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICkudmFsdWUudG9wX2xlZnQubG9uXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHBhcnNlRmxvYXQoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgZXh0ZW50UmVzcG9uc2UudmFsdWVzWzBdIGFzIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0b3BfbGVmdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF0OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApLnZhbHVlLnRvcF9sZWZ0LmxhdFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcHJvakJveCxcbiAgICAgICAgICAgIG1hcC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0cmFuc2Zvcm0oXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIHBhcnNlRmxvYXQoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgZXh0ZW50UmVzcG9uc2UudmFsdWVzWzBdIGFzIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICBib3R0b21fcmlnaHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvbjogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKS52YWx1ZS5ib3R0b21fcmlnaHQubG9uXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHBhcnNlRmxvYXQoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgZXh0ZW50UmVzcG9uc2UudmFsdWVzWzBdIGFzIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICBib3R0b21fcmlnaHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhdDogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKS52YWx1ZS5ib3R0b21fcmlnaHQubGF0XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBwcm9qQm94LFxuICAgICAgICAgICAgbWFwLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKClcbiAgICAgICAgICApXG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGFzb3VyY2U6IGxheWVyLmRhdGFzb3VyY2VJZCxcbiAgICAgIGV4dGVudDogWE1MVXRpbHMuZ2V0TGF5ZXJFeHRlbnQobGF5ZXIucGFyYW1MYXllciwgbWFwLCB3bXNDYXBhYmlsaXRpZXMhW2xheWVyLnVybF0/LmRvYykgPz8gW10sXG4gICAgICBlcnJvcjogZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIERFRkFVTFRfSEVBVE1BUF9SQURJVVMgPSAyNTtcbiAgc3RhdGljIERFRkFVTFRfUkFESVVTX0lOVEVOU0lUWV9GQUNUT1IgPSAxMDAwMDtcbiAgc3RhdGljIERFRkFVTFRfWk9PTV9NSU4gPSAzO1xuICBzdGF0aWMgREVGQVVMVF9aT09NX1NUQVJUID0gMTA7XG4gIHN0YXRpYyBERUZBVUxUX1pPT01fTUFYID0gMjI7XG4gIHN0YXRpYyBERUZBVUxUX01BUF9DRU5URVIgPSBbMi4yODI3MjE3MzQ3MzgxNTI1LCA0OC44NjQ3MDYwMzE1NTc3MTZdO1xuXG4gIHN0YXRpYyBCQUNLR1JPVU5EX09SREVSID0gOTk5OTtcbn1cbiJdfQ==
|
|
@@ -2,18 +2,18 @@ import * as i6 from '@angular/common';
|
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { EventEmitter, Component, Optional, Input, Output, ViewEncapsulation, TemplateRef, Inject, ViewChild, NgModule } from '@angular/core';
|
|
5
|
-
import * as i5 from '@angular/forms';
|
|
5
|
+
import * as i5$1 from '@angular/forms';
|
|
6
6
|
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
7
|
-
import * as i4
|
|
7
|
+
import * as i4 from '@provoly/dashboard';
|
|
8
8
|
import { SubscriptionnerDirective, DashboardGridLayout, DashboardSelectors, DashboardActions, ViewMode, WidgetPlacementUtils, PryAccessRightsShareModalComponent, PRY_ACCESS_TOKEN, PryIconModule, PryCoreModule, PryDashboardModule, PrySelectModule, PryShareModule, PryOverlayModule, PryI18nModule, PrySinceDateModule } from '@provoly/dashboard';
|
|
9
9
|
import { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';
|
|
10
|
-
import { BehaviorSubject, combineLatest, map, startWith, of } from 'rxjs';
|
|
11
|
-
import * as
|
|
10
|
+
import { BehaviorSubject, combineLatest, catchError, throwError, map, startWith, of } from 'rxjs';
|
|
11
|
+
import * as i5 from '@provoly/dashboard/components/metadata-editor';
|
|
12
12
|
import { MetadataSelectors, PryExpandPanelModule } from '@provoly/dashboard/components/metadata-editor';
|
|
13
13
|
import { v4 } from 'uuid';
|
|
14
14
|
import * as i1 from '@ngrx/store';
|
|
15
15
|
import * as i3 from '@angular/router';
|
|
16
|
-
import * as
|
|
16
|
+
import * as i4$1 from '@provoly/dashboard/toolbox';
|
|
17
17
|
import { PryToolboxModule } from '@provoly/dashboard/toolbox';
|
|
18
18
|
import * as i2 from '@angular/cdk/overlay';
|
|
19
19
|
import { OverlayConfig } from '@angular/cdk/overlay';
|
|
@@ -25,21 +25,23 @@ class PryAddEditPresentationComponent extends SubscriptionnerDirective {
|
|
|
25
25
|
set selectedPresentation(presentation) {
|
|
26
26
|
this.selectedPresentation$.next(presentation);
|
|
27
27
|
}
|
|
28
|
-
constructor(store, router) {
|
|
28
|
+
constructor(store, manifestService, router) {
|
|
29
29
|
super();
|
|
30
30
|
this.store = store;
|
|
31
|
+
this.manifestService = manifestService;
|
|
31
32
|
this.router = router;
|
|
32
33
|
this.selectedPresentation$ = new BehaviorSubject(undefined);
|
|
33
34
|
this.chosenLayout = DashboardGridLayout.FULL;
|
|
34
35
|
this.metadataThemeId = '';
|
|
35
36
|
this.isFormValid = false;
|
|
37
|
+
this.errorDuplicatingText = null;
|
|
36
38
|
this.edition = false;
|
|
37
39
|
this.themePrefix = null;
|
|
38
40
|
this.editionStartUrl = '/';
|
|
39
41
|
this.mode = 'meta';
|
|
40
42
|
this.goBack = new EventEmitter();
|
|
41
43
|
this.staticManifest$ = this.store.select(DashboardSelectors.staticManifest);
|
|
42
|
-
this.subscriptions.add(this.staticManifest$.subscribe(manifest => this.staticManifest = manifest));
|
|
44
|
+
this.subscriptions.add(this.staticManifest$.subscribe((manifest) => (this.staticManifest = manifest)));
|
|
43
45
|
this.subscriptions.add(combineLatest([this.staticManifest$, this.store.select(DashboardSelectors.gridLayout)]).subscribe(([staticManifest, gridLayout]) => {
|
|
44
46
|
this.chosenLayout =
|
|
45
47
|
this.edition && staticManifest.windows[0]?.grid?.layout !== undefined
|
|
@@ -54,52 +56,48 @@ class PryAddEditPresentationComponent extends SubscriptionnerDirective {
|
|
|
54
56
|
}
|
|
55
57
|
}));
|
|
56
58
|
}
|
|
57
|
-
|
|
59
|
+
saveOrUpdateDashboard() {
|
|
58
60
|
const presentation = {
|
|
59
61
|
...this.selectedPresentation$.value,
|
|
60
62
|
id: this.selectedPresentation$.value?.id || v4(),
|
|
61
63
|
...this.formValue,
|
|
62
64
|
metadata: this.metadata()
|
|
63
65
|
};
|
|
64
|
-
this.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
66
|
+
this.errorDuplicatingText = null;
|
|
67
|
+
this.manifestService
|
|
68
|
+
.save(presentation.name, this.edition ? this.staticManifest : this.getNewManifest(), presentation.id, presentation.description, presentation.image, presentation.metadata?.map((metadata) => ({
|
|
69
|
+
metadataDefId: metadata.metadataDef.id,
|
|
70
|
+
value: metadata.value
|
|
71
|
+
})), presentation.accessRightsByGroup, presentation.additionalInformation)
|
|
72
|
+
.pipe(catchError((error) => {
|
|
73
|
+
this.errorDuplicatingText = '@chh.message.failure.alreadyExisting';
|
|
74
|
+
return throwError(error);
|
|
75
|
+
}))
|
|
76
|
+
.subscribe(() => {
|
|
77
|
+
const presentation = {
|
|
78
|
+
...this.selectedPresentation$.value,
|
|
79
|
+
...this.formValue,
|
|
80
|
+
metadata: this.metadata()
|
|
81
|
+
};
|
|
82
|
+
if (!this.edition) {
|
|
83
|
+
this.store.dispatch(DashboardActions.selectPresentation({
|
|
84
|
+
presentation,
|
|
85
|
+
viewMode: ViewMode.CREATION
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
this.store.dispatch(DashboardActions.loadPresentation({
|
|
90
|
+
presentation,
|
|
91
|
+
viewMode: ViewMode.EDITION
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
this.router?.navigateByUrl(this.editionStartUrl);
|
|
95
|
+
});
|
|
80
96
|
}
|
|
81
|
-
|
|
97
|
+
saveDashboard() {
|
|
82
98
|
if (this.isFormValid) {
|
|
83
|
-
this.
|
|
84
|
-
}
|
|
85
|
-
const presentation = {
|
|
86
|
-
...this.selectedPresentation$.value,
|
|
87
|
-
...this.formValue,
|
|
88
|
-
metadata: this.metadata()
|
|
89
|
-
};
|
|
90
|
-
if (!this.edition) {
|
|
91
|
-
this.store.dispatch(DashboardActions.selectPresentation({
|
|
92
|
-
presentation,
|
|
93
|
-
viewMode: ViewMode.CREATION
|
|
94
|
-
}));
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
this.store.dispatch(DashboardActions.loadPresentation({
|
|
98
|
-
presentation,
|
|
99
|
-
viewMode: ViewMode.EDITION
|
|
100
|
-
}));
|
|
99
|
+
this.saveOrUpdateDashboard();
|
|
101
100
|
}
|
|
102
|
-
this.router?.navigateByUrl(this.editionStartUrl);
|
|
103
101
|
}
|
|
104
102
|
addMetadata(metadata) {
|
|
105
103
|
this.store.dispatch(DashboardActions.addManifestMetadata({
|
|
@@ -143,13 +141,13 @@ class PryAddEditPresentationComponent extends SubscriptionnerDirective {
|
|
|
143
141
|
]
|
|
144
142
|
};
|
|
145
143
|
}
|
|
146
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryAddEditPresentationComponent, deps: [{ token: i1.Store }, { token: i3.Router, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
147
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: { selectedPresentation: "selectedPresentation", edition: "edition", themePrefix: "themePrefix", editionStartUrl: "editionStartUrl", mode: "mode" }, outputs: { goBack: "goBack" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-manifest-layout\">\n <div class=\"o-manifest-layout__toolbox -justify-space-between -align-center\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"close()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"button\" (click)=\"
|
|
144
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryAddEditPresentationComponent, deps: [{ token: i1.Store }, { token: i4.ManifestService }, { token: i3.Router, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
145
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: { selectedPresentation: "selectedPresentation", edition: "edition", themePrefix: "themePrefix", editionStartUrl: "editionStartUrl", mode: "mode" }, outputs: { goBack: "goBack" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-manifest-layout\">\n <div class=\"o-manifest-layout__toolbox -justify-space-between -align-center\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"close()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"button\" (click)=\"saveDashboard()\" [disabled]=\"!isFormValid\">\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content--presentation\">\n <h2 class=\"a-h2\">{{ '@pry.presentation.add' + '.pageTitle' | i18n }}</h2>\n <div class=\"o-presentation-form-wrapper\">\n <div class=\"u-display-flex -column\">\n <pry-presentation-form\n mode=\"theme\"\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (formValue)=\"formValue = $event\"\n (isFormValid)=\"isFormValid = $event\"\n [mode]=\"mode\"\n [errorDuplicatingText]=\"errorDuplicatingText\"\n [themePrefix]=\"themePrefix\"\n ></pry-presentation-form>\n <div class=\"m-form-label-field -width-full m-form-label-field--inline\">\n <label class=\"a-label\">{{ '@pry.presentation.form.grid' | i18n }}</label>\n <span class=\"a-label\">{{ '@pry.toolbox.layout.' + this.chosenLayout | i18n }}</span>\n @if (!edition) {\n <pry-select-grid-layout></pry-select-grid-layout>\n }\n </div>\n </div>\n @if (mode === 'meta') {\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <div class=\"o-presentation__metadata-editor\">\n <pry-metadata-editor\n [targetId]=\"selectedPresentation.id\"\n [isModification]=\"true\"\n [metadata]=\"selectedPresentation.metadata ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </div>\n }\n }\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"saveDashboard()\"\n [disabled]=\"!isFormValid\"\n >\n {{ '@pry.presentation.configuration' | i18n }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i4$1.SelectGridLayoutComponent, selector: "pry-select-grid-layout" }, { kind: "component", type: i4$1.PresentationFormComponent, selector: "pry-presentation-form", inputs: ["mode", "themePrefix", "errorDuplicatingText", "selectedPresentation"], outputs: ["formValue", "isFormValid"] }, { kind: "component", type: i5.PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: ["isModification", "targetId", "type", "metadata"], outputs: ["addMeta", "removeMeta"] }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] }); }
|
|
148
146
|
}
|
|
149
147
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryAddEditPresentationComponent, decorators: [{
|
|
150
148
|
type: Component,
|
|
151
|
-
args: [{ selector: 'pry-add-edit-presentation', template: "<div class=\"o-manifest-layout\">\n <div class=\"o-manifest-layout__toolbox -justify-space-between -align-center\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"close()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"button\" (click)=\"
|
|
152
|
-
}], ctorParameters: () => [{ type: i1.Store }, { type: i3.Router, decorators: [{
|
|
149
|
+
args: [{ selector: 'pry-add-edit-presentation', template: "<div class=\"o-manifest-layout\">\n <div class=\"o-manifest-layout__toolbox -justify-space-between -align-center\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"close()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"button\" (click)=\"saveDashboard()\" [disabled]=\"!isFormValid\">\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content--presentation\">\n <h2 class=\"a-h2\">{{ '@pry.presentation.add' + '.pageTitle' | i18n }}</h2>\n <div class=\"o-presentation-form-wrapper\">\n <div class=\"u-display-flex -column\">\n <pry-presentation-form\n mode=\"theme\"\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (formValue)=\"formValue = $event\"\n (isFormValid)=\"isFormValid = $event\"\n [mode]=\"mode\"\n [errorDuplicatingText]=\"errorDuplicatingText\"\n [themePrefix]=\"themePrefix\"\n ></pry-presentation-form>\n <div class=\"m-form-label-field -width-full m-form-label-field--inline\">\n <label class=\"a-label\">{{ '@pry.presentation.form.grid' | i18n }}</label>\n <span class=\"a-label\">{{ '@pry.toolbox.layout.' + this.chosenLayout | i18n }}</span>\n @if (!edition) {\n <pry-select-grid-layout></pry-select-grid-layout>\n }\n </div>\n </div>\n @if (mode === 'meta') {\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <div class=\"o-presentation__metadata-editor\">\n <pry-metadata-editor\n [targetId]=\"selectedPresentation.id\"\n [isModification]=\"true\"\n [metadata]=\"selectedPresentation.metadata ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </div>\n }\n }\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"saveDashboard()\"\n [disabled]=\"!isFormValid\"\n >\n {{ '@pry.presentation.configuration' | i18n }}\n </button>\n </div>\n</div>\n" }]
|
|
150
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i4.ManifestService }, { type: i3.Router, decorators: [{
|
|
153
151
|
type: Optional
|
|
154
152
|
}] }], propDecorators: { selectedPresentation: [{
|
|
155
153
|
type: Input
|
|
@@ -171,7 +169,7 @@ class PryTitlePresentationComponent {
|
|
|
171
169
|
this.currentPresentation$ = this.store.select(DashboardSelectors.currentManifest);
|
|
172
170
|
}
|
|
173
171
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryTitlePresentationComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
174
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryTitlePresentationComponent, selector: "pry-title-presentation", ngImport: i0, template: "@if (currentPresentation$ | async; as currentPresentation) {\n <div class=\"m-presentation-title u-display-flex -gap-10\">\n <h1 class=\"a-h2 m-presentation-title__text\">\n {{ currentPresentation.name || ('@pry.header.noCurrentPresentation' | i18n) }}\n </h1>\n @if (!!currentPresentation.description) {\n <div\n class=\"m-presentation-title__description m-info-icon a-tooltip -tooltip-width-lg align-center\"\n [attr.data-tooltip]=\"currentPresentation.description\"\n data-tooltip-position=\"right\"\n >\n <span>i</span>\n </div>\n }\n </div>\n}\n", dependencies: [{ kind: "pipe", type: i4
|
|
172
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryTitlePresentationComponent, selector: "pry-title-presentation", ngImport: i0, template: "@if (currentPresentation$ | async; as currentPresentation) {\n <div class=\"m-presentation-title u-display-flex -gap-10\">\n <h1 class=\"a-h2 m-presentation-title__text\">\n {{ currentPresentation.name || ('@pry.header.noCurrentPresentation' | i18n) }}\n </h1>\n @if (!!currentPresentation.description) {\n <div\n class=\"m-presentation-title__description m-info-icon a-tooltip -tooltip-width-lg align-center\"\n [attr.data-tooltip]=\"currentPresentation.description\"\n data-tooltip-position=\"right\"\n >\n <span>i</span>\n </div>\n }\n </div>\n}\n", dependencies: [{ kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] }); }
|
|
175
173
|
}
|
|
176
174
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryTitlePresentationComponent, decorators: [{
|
|
177
175
|
type: Component,
|
|
@@ -342,18 +340,18 @@ class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
342
340
|
canModify$(presentation) {
|
|
343
341
|
return !this.access ? of(false) : this.access.canModifyPresentation(presentation);
|
|
344
342
|
}
|
|
345
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryPresentationComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i3.Router }, { token: i4
|
|
346
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryPresentationComponent, selector: "pry-presentation", inputs: { editionStartUrl: "editionStartUrl", consultStartUrl: "consultStartUrl", meAsOwner: "meAsOwner", themePrefix: "themePrefix", mode: "mode", hideToolbox: "hideToolbox", showTheme: "showTheme", listOfManifests: "listOfManifests", search: "search" }, viewQueries: [{ propertyName: "templateModalActions", first: true, predicate: ["modalActions"], descendants: true, read: TemplateRef }, { propertyName: "openModal", first: true, predicate: ["openModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\">\n @switch (selectedMode) {\n @default {\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <div class=\"no-data-dashboard\">\n @if ((filteredPresentations$ | async)?.length === 0 || !(filteredPresentations$ | async)) {\n {{ '@pry.presentation.noData' | i18n }}\n }\n </div>\n <ul class=\"o-presentation\">\n @for (presentation of filteredPresentations$ | async; track presentation.id; let index = $index) {\n <li class=\"o-presentation__item\">\n <div class=\"o-presentation__item__header\">\n @if (isPrivate(presentation)) {\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n }\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img alt=\"\" class=\"is-full-width\" [src]=\"presentation.image | getSecuredImage | async\" />\n </div>\n </div>\n @if (this.canModify$(presentation) | async) {\n <div class=\"more-button\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-button-' + index\"\n [attr.data-tooltip]=\"'@pry.presentation.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n }\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <p class=\"a-h3\">{{ presentation.name }}</p>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <div class=\"u-display-flex -justify-space-between -align-center\">\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n @if (presentation.theme !== undefined) {\n <span class=\"a-chip -theme -md u-self-end\" [class.-u-hidden]=\"!showTheme\">\n {{ (themePrefix ?? '') + presentation.theme | i18n: { warn: false } }}\n </span>\n }\n </div>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n }\n </ul>\n </div>\n </div>\n }\n @case (ViewMode.CREATION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n @case (ViewMode.EDITION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n }\n</div>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <ul class=\"m-context-menu__list\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog presentation options\">\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editContent(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.editionContent' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n }\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: i4$1.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4$1.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i4$1.EllipsisDirective, selector: "[ellipsis]", inputs: ["textElementSelector"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: ["selectedPresentation", "edition", "themePrefix", "editionStartUrl", "mode"], outputs: ["goBack"] }, { kind: "component", type: PryPresentationCssComponent, selector: "pry-presentation-css" }, { kind: "pipe", type: i4$1.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i4$1.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4$1.SinceDatePipe, name: "sinceDate" }] }); }
|
|
343
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryPresentationComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i3.Router }, { token: i4.PryTitleService }, { token: i3.ActivatedRoute }, { token: i0.NgZone }, { token: PRY_ACCESS_TOKEN, optional: true }, { token: i4.PryDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
344
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryPresentationComponent, selector: "pry-presentation", inputs: { editionStartUrl: "editionStartUrl", consultStartUrl: "consultStartUrl", meAsOwner: "meAsOwner", themePrefix: "themePrefix", mode: "mode", hideToolbox: "hideToolbox", showTheme: "showTheme", listOfManifests: "listOfManifests", search: "search" }, viewQueries: [{ propertyName: "templateModalActions", first: true, predicate: ["modalActions"], descendants: true, read: TemplateRef }, { propertyName: "openModal", first: true, predicate: ["openModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\">\n @switch (selectedMode) {\n @default {\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <div class=\"no-data-dashboard\">\n @if ((filteredPresentations$ | async)?.length === 0 || !(filteredPresentations$ | async)) {\n {{ '@pry.presentation.noData' | i18n }}\n }\n </div>\n <ul class=\"o-presentation\">\n @for (presentation of filteredPresentations$ | async; track presentation.id; let index = $index) {\n <li class=\"o-presentation__item\">\n <div class=\"o-presentation__item__header\">\n @if (isPrivate(presentation)) {\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n }\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img alt=\"\" class=\"is-full-width\" [src]=\"presentation.image | getSecuredImage | async\" />\n </div>\n </div>\n @if (this.canModify$(presentation) | async) {\n <div class=\"more-button\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-button-' + index\"\n [attr.data-tooltip]=\"'@pry.presentation.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n }\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <p class=\"a-h3\">{{ presentation.name }}</p>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <div class=\"u-display-flex -justify-space-between -align-center\">\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n @if (presentation.theme !== undefined) {\n <span class=\"a-chip -theme -md u-self-end\" [class.-u-hidden]=\"!showTheme\">\n {{ (themePrefix ?? '') + presentation.theme | i18n: { warn: false } }}\n </span>\n }\n </div>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n }\n </ul>\n </div>\n </div>\n }\n @case (ViewMode.CREATION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n @case (ViewMode.EDITION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n }\n</div>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <ul class=\"m-context-menu__list\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog presentation options\">\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editContent(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.editionContent' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n }\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i4.EllipsisDirective, selector: "[ellipsis]", inputs: ["textElementSelector"] }, { kind: "directive", type: i5$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: ["selectedPresentation", "edition", "themePrefix", "editionStartUrl", "mode"], outputs: ["goBack"] }, { kind: "component", type: PryPresentationCssComponent, selector: "pry-presentation-css" }, { kind: "pipe", type: i4.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.SinceDatePipe, name: "sinceDate" }] }); }
|
|
347
345
|
}
|
|
348
346
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryPresentationComponent, decorators: [{
|
|
349
347
|
type: Component,
|
|
350
348
|
args: [{ selector: 'pry-presentation', template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\">\n @switch (selectedMode) {\n @default {\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <div class=\"no-data-dashboard\">\n @if ((filteredPresentations$ | async)?.length === 0 || !(filteredPresentations$ | async)) {\n {{ '@pry.presentation.noData' | i18n }}\n }\n </div>\n <ul class=\"o-presentation\">\n @for (presentation of filteredPresentations$ | async; track presentation.id; let index = $index) {\n <li class=\"o-presentation__item\">\n <div class=\"o-presentation__item__header\">\n @if (isPrivate(presentation)) {\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n }\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img alt=\"\" class=\"is-full-width\" [src]=\"presentation.image | getSecuredImage | async\" />\n </div>\n </div>\n @if (this.canModify$(presentation) | async) {\n <div class=\"more-button\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-button-' + index\"\n [attr.data-tooltip]=\"'@pry.presentation.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n }\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <p class=\"a-h3\">{{ presentation.name }}</p>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <div class=\"u-display-flex -justify-space-between -align-center\">\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n @if (presentation.theme !== undefined) {\n <span class=\"a-chip -theme -md u-self-end\" [class.-u-hidden]=\"!showTheme\">\n {{ (themePrefix ?? '') + presentation.theme | i18n: { warn: false } }}\n </span>\n }\n </div>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n }\n </ul>\n </div>\n </div>\n }\n @case (ViewMode.CREATION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n @case (ViewMode.EDITION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n }\n</div>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <ul class=\"m-context-menu__list\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog presentation options\">\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editContent(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.editionContent' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n }\n </div>\n</ng-template>\n" }]
|
|
351
|
-
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i3.Router }, { type: i4
|
|
349
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i3.Router }, { type: i4.PryTitleService }, { type: i3.ActivatedRoute }, { type: i0.NgZone }, { type: i4.PryBaseAccess, decorators: [{
|
|
352
350
|
type: Optional
|
|
353
351
|
}, {
|
|
354
352
|
type: Inject,
|
|
355
353
|
args: [PRY_ACCESS_TOKEN]
|
|
356
|
-
}] }, { type: i4
|
|
354
|
+
}] }, { type: i4.PryDialogService }], propDecorators: { templateModalActions: [{
|
|
357
355
|
type: ViewChild,
|
|
358
356
|
args: ['modalActions', { read: TemplateRef }]
|
|
359
357
|
}], openModal: [{
|
|
@@ -485,7 +483,7 @@ class PryPresentationModule {
|
|
|
485
483
|
this.pryTranslateService.addLangObject('fr', 'presentation', frTranslations);
|
|
486
484
|
this.pryTranslateService.addLangObject('en', 'presentation', enTranslations);
|
|
487
485
|
}
|
|
488
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryPresentationModule, deps: [{ token: i4
|
|
486
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryPresentationModule, deps: [{ token: i4.PryI18nService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
489
487
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: PryPresentationModule, declarations: [PryPresentationComponent,
|
|
490
488
|
PryAddEditPresentationComponent,
|
|
491
489
|
PryTitlePresentationComponent,
|
|
@@ -550,7 +548,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
550
548
|
],
|
|
551
549
|
exports: [...COMPONENTS]
|
|
552
550
|
}]
|
|
553
|
-
}], ctorParameters: () => [{ type: i4
|
|
551
|
+
}], ctorParameters: () => [{ type: i4.PryI18nService }] });
|
|
554
552
|
|
|
555
553
|
/**
|
|
556
554
|
* Generated bundle index. Do not edit.
|