@provoly/dashboard 1.4.33 → 1.4.34
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/widgets/widget-template/component/widget-template.component.mjs +24 -40
- package/fesm2022/provoly-dashboard-widgets-widget-template.mjs +22 -37
- package/fesm2022/provoly-dashboard-widgets-widget-template.mjs.map +1 -1
- package/package.json +1 -1
- package/widgets/widget-template/component/widget-template.component.d.ts +2 -2
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
1
|
+
import { Component, SecurityContext } from '@angular/core';
|
|
2
2
|
import { DataWidgetComponent } from '@provoly/dashboard';
|
|
3
|
-
import { combineLatestWith } from 'rxjs';
|
|
4
|
-
import { filter, map } from 'rxjs';
|
|
3
|
+
import { combineLatestWith, filter, map } from 'rxjs';
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
5
|
import * as i1 from "@ngrx/store";
|
|
7
6
|
import * as i2 from "@angular/platform-browser";
|
|
@@ -19,8 +18,8 @@ export class WidgetTemplateComponent extends DataWidgetComponent {
|
|
|
19
18
|
this.subscriptions.add(this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {
|
|
20
19
|
this.optionsCopy = { ...structuredClone(options) };
|
|
21
20
|
}));
|
|
22
|
-
this.template$ = this.options$.pipe(map((options) => (!!options.svg ? options.svg : options.html ?? '')), combineLatestWith(this.resultSet$), map(([template, rs]) => this.evaluate(template, rs)));
|
|
23
|
-
this.css$ = this.options$.pipe(map((options) => `<style>${
|
|
21
|
+
this.template$ = this.options$.pipe(map((options) => (!!options.svg ? options.svg : options.html ?? '')), combineLatestWith(this.resultSet$), map(([template, rs]) => this.sanitizer.sanitize(SecurityContext.HTML, WidgetTemplateComponent.evaluate(template, rs)) ?? ''));
|
|
22
|
+
this.css$ = this.options$.pipe(map((options) => `<style>${WidgetTemplateComponent.limitScope(options.css ?? '', this.id + '')}</style>`), combineLatestWith(this.resultSet$), map(([template, rs]) => this.sanitizer.sanitize(SecurityContext.STYLE, WidgetTemplateComponent.evaluate(template, rs)) ?? ''));
|
|
24
23
|
}
|
|
25
24
|
emitManifest() {
|
|
26
25
|
this.manifestModified.emit({
|
|
@@ -28,52 +27,37 @@ export class WidgetTemplateComponent extends DataWidgetComponent {
|
|
|
28
27
|
manifest: { ...this.manifest, options: this.optionsCopy }
|
|
29
28
|
});
|
|
30
29
|
}
|
|
31
|
-
evaluate(template, rs) {
|
|
30
|
+
static evaluate(template, rs) {
|
|
32
31
|
const regexp = new RegExp('{{(.*?)}}', 'g');
|
|
33
32
|
const toReplace = template.match(regexp);
|
|
34
33
|
let result = template;
|
|
35
34
|
if (!!toReplace) {
|
|
36
35
|
toReplace.forEach((extracted) => {
|
|
37
|
-
const expr = extracted.substring(2, extracted.length - 2);
|
|
38
|
-
const splitted = expr.split(/[.\]]/).filter((extr) => extr !== '');
|
|
36
|
+
const expr = extracted.substring(2, extracted.length - 2).trim();
|
|
39
37
|
let evaluation = null;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
38
|
+
try {
|
|
39
|
+
// Replace rs references with actual values from the rs object
|
|
40
|
+
const replacedExpr = expr.replace(/rs\['(.*?)'\]\[(\d+)\]\.attributes\.(\w+)/g, (match, p1, p2, p3) => {
|
|
41
|
+
return rs.items[p1][parseInt(p2, 10)].attributes[p3].value;
|
|
42
|
+
});
|
|
43
|
+
// Evaluate the arithmetic expression
|
|
44
|
+
try {
|
|
45
|
+
evaluation = new Function('return ' + replacedExpr)();
|
|
47
46
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
evaluation = evaluation[parseInt(splitPart.substring(1), 10)];
|
|
51
|
-
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
evaluation = replacedExpr;
|
|
52
49
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
evaluation = evaluation[splitPart];
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
const prop = splitPart.substring(0, indexOfCaret);
|
|
61
|
-
const subProp = splitPart.substring(indexOfCaret + 1);
|
|
62
|
-
evaluation = evaluation[prop].values[subProp];
|
|
63
|
-
}
|
|
64
|
-
if (!!evaluation && evaluation.type === 'VALUE') {
|
|
65
|
-
evaluation = evaluation.value;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
});
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
console.error('Error evaluating expression:', expr, error);
|
|
53
|
+
}
|
|
70
54
|
result = result.replace(extracted, evaluation);
|
|
71
55
|
});
|
|
72
56
|
}
|
|
73
|
-
return
|
|
57
|
+
return result;
|
|
74
58
|
}
|
|
75
|
-
limitScope(css) {
|
|
76
|
-
const scope = `.pry-template-${
|
|
59
|
+
static limitScope(css, id) {
|
|
60
|
+
const scope = `.pry-template-${id}`;
|
|
77
61
|
const scoped = css.replace(/([},] ?)/g, `$1${scope} `).replace(new RegExp(scope + ' $'), '');
|
|
78
62
|
return scope + ' ' + scoped;
|
|
79
63
|
}
|
|
@@ -92,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
92
76
|
type: Component,
|
|
93
77
|
args: [{ selector: 'pry-widget-template', template: "<pry-widget-template-css></pry-widget-template-css>\n@if (displayHeader$ | async) {\n <pry-widget-header\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__fields\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"html_src\">{{ '@pry.widget.template.html' | i18n }}</label>\n <textarea\n class=\"a-form-field a-text-area -overflow\"\n id=\"html_src\"\n [value]=\"optionsCopy.html\"\n (input)=\"changeHtml($event)\"\n ></textarea>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"css_src\">{{ '@pry.widget.template.css' | i18n }}</label>\n <textarea\n class=\"a-form-field a-text-area -overflow\"\n id=\"css_src\"\n [value]=\"optionsCopy.css\"\n (input)=\"changeCss($event)\"\n ></textarea>\n </div>\n </div>\n </pry-settings>\n </pry-widget-header>\n}\n@if (css$ | async; as css) {\n <div [innerHtml]=\"css\"></div>\n}\n@if (template$ | async; as template) {\n <div [class]=\"'pry-template-' + id\" [innerHtml]=\"template\"></div>\n}\n" }]
|
|
94
78
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i0.ElementRef }, { type: i2.DomSanitizer }] });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LXRlbXBsYXRlL2NvbXBvbmVudC93aWRnZXQtdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtdGVtcGxhdGUvY29tcG9uZW50L3dpZGdldC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBR3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBeUIsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFNbkMsTUFBTSxPQUFPLHVCQUF3QixTQUFRLG1CQUFtQjthQU12RCxnQkFBVyxHQUFHLENBQUMsQUFBSixDQUFLO0lBRXZCLFlBQ0UsS0FBaUIsRUFDakIsRUFBYyxFQUNOLFNBQXVCO1FBRS9CLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFGVCxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBVGpDLGdCQUFXLEdBQTBCLEVBQUUsQ0FBQztRQVl0QyxJQUFJLENBQUMsRUFBRSxHQUFHLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBZ0MsQ0FBQyxDQUFDLENBQUM7UUFFbEcsSUFB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QVUsQ0FBQyxLQUFLLENBQUM7NEJBQ2hDLENBQUM7d0JBQ0gsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUVILE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNqRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVPLFVBQVUsQ0FBQyxHQUFXO1FBQzVCLE1BQU0sS0FBSyxHQUFHLGlCQUFpQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFFekMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFN0YsT0FBTyxLQUFLLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQztJQUM5QixDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQWE7UUFDdEIsYUFBYTtRQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQ3JELENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYTtRQUNyQixhQUFhO1FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDcEQsQ0FBQzs4R0F6R1UsdUJBQXVCO2tHQUF2Qix1QkFBdUIsa0ZDWHBDLDhwREFnREE7OzJGRHJDYSx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IERhdGFXaWRnZXRDb21wb25lbnQsIFRlbXBsYXRlV2lkZ2V0T3B0aW9ucyB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0V2l0aCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXdpZGdldC10ZW1wbGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi93aWRnZXQtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldFRlbXBsYXRlQ29tcG9uZW50IGV4dGVuZHMgRGF0YVdpZGdldENvbXBvbmVudCB7XG4gIG9wdGlvbnMkOiBPYnNlcnZhYmxlPFRlbXBsYXRlV2lkZ2V0T3B0aW9ucz47XG4gIG9wdGlvbnNDb3B5OiBUZW1wbGF0ZVdpZGdldE9wdGlvbnMgPSB7fTtcbiAgdGVtcGxhdGUkOiBPYnNlcnZhYmxlPFNhZmVIdG1sPjtcbiAgY3NzJDogT2JzZXJ2YWJsZTxTYWZlSHRtbD47XG4gIGlkOiBudW1iZXI7XG4gIHN0YXRpYyBpZEdlbmVyYXRvciA9IDA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RvcmU6IFN0b3JlPGFueT4sXG4gICAgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICApIHtcbiAgICBzdXBlcihzdG9yZSwgZWwpO1xuICAgIHRoaXMuaWQgPSBXaWRnZXRUZW1wbGF0ZUNvbXBvbmVudC5pZEdlbmVyYXRvcisrO1xuICAgIHRoaXMub3B0aW9ucyQgPSB0aGlzLm1hbmlmZXN0JC5waXBlKG1hcCgobWFuaWZlc3QpID0+IG1hbmlmZXN0Lm9wdGlvbnMgYXMgVGVtcGxhdGVXaWRnZXRPcHRpb25zKSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5vcHRpb25zJC5waXBlKGZpbHRlcigob3B0KSA9PiAhIW9wdCkpLnN1YnNjcmliZSgob3B0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5ID0geyAuLi4oc3RydWN0dXJlZENsb25lKG9wdGlvbnMpIGFzIFRlbXBsYXRlV2lkZ2V0T3B0aW9ucykgfTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMudGVtcGxhdGUkID0gdGhpcy5vcHRpb25zJC5waXBlKFxuICAgICAgbWFwKChvcHRpb25zKSA9PiAoISFvcHRpb25zLnN2ZyA/IG9wdGlvbnMuc3ZnIDogb3B0aW9ucy5odG1sID8/ICcnKSksXG4gICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLnJlc3VsdFNldCQpLFxuICAgICAgbWFwKChbdGVtcGxhdGUsIHJzXSkgPT4gdGhpcy5ldmFsdWF0ZSh0ZW1wbGF0ZSwgcnMpKVxuICAgICk7XG5cbiAgICB0aGlzLmNzcyQgPSB0aGlzLm9wdGlvbnMkLnBpcGUoXG4gICAgICBtYXAoKG9wdGlvbnMpID0+IGA8c3R5bGU+JHt0aGlzLmxpbWl0U2NvcGUob3B0aW9ucy5jc3MgPz8gJycpfTwvc3R5bGU+YCksXG4gICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLnJlc3VsdFNldCQpLFxuICAgICAgbWFwKChbdGVtcGxhdGUsIHJzXSkgPT4gdGhpcy5ldmFsdWF0ZSh0ZW1wbGF0ZSwgcnMpKVxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBlbWl0TWFuaWZlc3QoKSB7XG4gICAgdGhpcy5tYW5pZmVzdE1vZGlmaWVkLmVtaXQoe1xuICAgICAgd2lkZ2V0SW5kZXg6IHRoaXMud2lkZ2V0SW5kZXgsXG4gICAgICBtYW5pZmVzdDogeyAuLi50aGlzLm1hbmlmZXN0LCBvcHRpb25zOiB0aGlzLm9wdGlvbnNDb3B5IH1cbiAgICB9KTtcbiAgfVxuXG4gIGV2YWx1YXRlKHRlbXBsYXRlOiBzdHJpbmcsIHJzOiBhbnkpOiBTYWZlSHRtbCB7XG4gICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cCgne3soLio/KX19JywgJ2cnKTtcbiAgICBjb25zdCB0b1JlcGxhY2UgPSB0ZW1wbGF0ZS5tYXRjaChyZWdleHApO1xuICAgIGxldCByZXN1bHQgPSB0ZW1wbGF0ZTtcblxuICAgIGlmICghIXRvUmVwbGFjZSkge1xuICAgICAgdG9SZXBsYWNlLmZvckVhY2goKGV4dHJhY3RlZCkgPT4ge1xuICAgICAgICBjb25zdCBleHByID0gZXh0cmFjdGVkLnN1YnN0cmluZygyLCBleHRyYWN0ZWQubGVuZ3RoIC0gMik7XG4gICAgICAgIGNvbnN0IHNwbGl0dGVkID0gZXhwci5zcGxpdCgvWy5cXF1dLykuZmlsdGVyKChleHRyKSA9PiBleHRyICE9PSAnJyk7XG4gICAgICAgIGxldCBldmFsdWF0aW9uOiBhbnkgPSBudWxsO1xuXG4gICAgICAgIHNwbGl0dGVkLmZvckVhY2goKF9zcGxpdFBhcnQpID0+IHtcbiAgICAgICAgICBjb25zdCBzcGxpdFBhcnQgPSBfc3BsaXRQYXJ0LnRyaW0oKTtcbiAgICAgICAgICBpZiAoc3BsaXRQYXJ0LnN0YXJ0c1dpdGgoJ3JzJykpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzSWQgPSAoZXhwci5tYXRjaCgvcnNcXFsnKC4pKj8nLykgPz8gWyduby1jbGFzcy1pZC1kZXRlY3RlZCddKVswXVxuICAgICAgICAgICAgICAucmVwbGFjZShcInJzWydcIiwgJycpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKFwiJ1wiLCAnJyk7XG4gICAgICAgICAgICBldmFsdWF0aW9uID0gcnMuaXRlbXNbY2xhc3NJZF07XG4gICAgICAgICAgfSBlbHNlIGlmIChzcGxpdFBhcnQuc3RhcnRzV2l0aCgnWycpKSB7XG4gICAgICAgICAgICBpZiAoISFldmFsdWF0aW9uKSB7XG4gICAgICAgICAgICAgIGV2YWx1YXRpb24gPSBldmFsdWF0aW9uW3BhcnNlSW50KHNwbGl0UGFydC5zdWJzdHJpbmcoMSksIDEwKV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghIWV2YWx1YXRpb24pIHtcbiAgICAgICAgICAgICAgY29uc3QgaW5kZXhPZkNhcmV0ID0gc3BsaXRQYXJ0LmluZGV4T2YoJ1snKTtcbiAgICAgICAgICAgICAgaWYgKGluZGV4T2ZDYXJldCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBldmFsdWF0aW9uID0gZXZhbHVhdGlvbltzcGxpdFBhcnRdO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb3AgPSBzcGxpdFBhcnQuc3Vic3RyaW5nKDAsIGluZGV4T2ZDYXJldCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViUHJvcCA9IHNwbGl0UGFydC5zdWJzdHJpbmcoaW5kZXhPZkNhcmV0ICsgMSk7XG4gICAgICAgICAgICAgICAgZXZhbHVhdGlvbiA9IGV2YWx1YXRpb25bcHJvcF0udmFsdWVzW3N1YlByb3BdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICghIWV2YWx1YXRpb24gJiYgZXZhbHVhdGlvbi50eXBlID09PSAnVkFMVUUnKSB7XG4gICAgICAgICAgICAgICAgZXZhbHVhdGlvbiA9IGV2YWx1YXRpb24udmFsdWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKGV4dHJhY3RlZCwgZXZhbHVhdGlvbik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwocmVzdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgbGltaXRTY29wZShjc3M6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2NvcGUgPSBgLnByeS10ZW1wbGF0ZS0ke3RoaXMuaWR9YDtcblxuICAgIGNvbnN0IHNjb3BlZCA9IGNzcy5yZXBsYWNlKC8oW30sXSA/KS9nLCBgJDEke3Njb3BlfSBgKS5yZXBsYWNlKG5ldyBSZWdFeHAoc2NvcGUgKyAnICQnKSwgJycpO1xuXG4gICAgcmV0dXJuIHNjb3BlICsgJyAnICsgc2NvcGVkO1xuICB9XG5cbiAgY2hhbmdlSHRtbCgkZXZlbnQ6IEV2ZW50KSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMub3B0aW9uc0NvcHkuaHRtbCA9ICRldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuICB9XG5cbiAgY2hhbmdlQ3NzKCRldmVudDogRXZlbnQpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy5vcHRpb25zQ29weS5jc3MgPSAkZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZTtcbiAgfVxufVxuIiwiPHByeS13aWRnZXQtdGVtcGxhdGUtY3NzPjwvcHJ5LXdpZGdldC10ZW1wbGF0ZS1jc3M+XG5AaWYgKGRpc3BsYXlIZWFkZXIkIHwgYXN5bmMpIHtcbiAgPHByeS13aWRnZXQtaGVhZGVyXG4gICAgW3dpZGdldEluZGV4XT1cIndpZGdldEluZGV4XCJcbiAgICBbbWFuaWZlc3RdPVwibWFuaWZlc3RcIlxuICAgIChtYW5pZmVzdE1vZGlmaWVkKT1cIm1hbmlmZXN0TW9kaWZpZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAjaGVhZGVyXG4gICAgW2hlYWRlck9wdGlvbnNdPVwiKGRpc3BsYXlIZWFkZXIkIHwgYXN5bmMpID8/IHt9XCJcbiAgICBbZGF0YXNvdXJjZUlkc109XCIoZGF0YXNvdXJjZUlkcyQgfCBhc3luYykgPz8gW11cIlxuICAgID5cbiAgICA8cHJ5LXNldHRpbmdzXG4gICAgICAoc2F2ZVRyaWdnZXJlZCk9XCJlbWl0TWFuaWZlc3QoKVwiXG4gICAgICAoY2hhbmdlVGl0bGUpPVwiY2hhbmdlV2lkZ2V0VGl0bGUoJGV2ZW50KVwiXG4gICAgICBbaGVhZGVyUHJlc2VudF09XCJkaXNwbGF5SGVhZGVyJCB8IGFzeW5jXCJcbiAgICAgIFt3aWRnZXRJbmRleF09XCJ3aWRnZXRJbmRleFwiXG4gICAgICBbaGVhZGVyXT1cImhlYWRlclwiXG4gICAgICBbb3BlbiRdPVwib3BlbiRcIlxuICAgICAgY2xhc3M9XCJvLXNldHRpbmdzXCJcbiAgICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19maWVsZHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJodG1sX3NyY1wiPnt7ICdAcHJ5LndpZGdldC50ZW1wbGF0ZS5odG1sJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGQgYS10ZXh0LWFyZWEgLW92ZXJmbG93XCJcbiAgICAgICAgICAgIGlkPVwiaHRtbF9zcmNcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbnNDb3B5Lmh0bWxcIlxuICAgICAgICAgICAgKGlucHV0KT1cImNoYW5nZUh0bWwoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImNzc19zcmNcIj57eyAnQHByeS53aWRnZXQudGVtcGxhdGUuY3NzJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGQgYS10ZXh0LWFyZWEgLW92ZXJmbG93XCJcbiAgICAgICAgICAgIGlkPVwiY3NzX3NyY1wiXG4gICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uc0NvcHkuY3NzXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJjaGFuZ2VDc3MoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9wcnktc2V0dGluZ3M+XG4gIDwvcHJ5LXdpZGdldC1oZWFkZXI+XG59XG5AaWYgKGNzcyQgfCBhc3luYzsgYXMgY3NzKSB7XG4gIDxkaXYgW2lubmVySHRtbF09XCJjc3NcIj48L2Rpdj5cbn1cbkBpZiAodGVtcGxhdGUkIHwgYXN5bmM7IGFzIHRlbXBsYXRlKSB7XG4gIDxkaXYgW2NsYXNzXT1cIidwcnktdGVtcGxhdGUtJyArIGlkXCIgW2lubmVySHRtbF09XCJ0ZW1wbGF0ZVwiPjwvZGl2PlxufVxuIl19
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LXRlbXBsYXRlL2NvbXBvbmVudC93aWRnZXQtdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtdGVtcGxhdGUvY29tcG9uZW50L3dpZGdldC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQXlCLE1BQU0sb0JBQW9CLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFNbEUsTUFBTSxPQUFPLHVCQUF3QixTQUFRLG1CQUFtQjthQU12RCxnQkFBVyxHQUFHLENBQUMsQUFBSixDQUFLO0lBRXZCLFlBQ0UsS0FBaUIsRUFDakIsRUFBYyxFQUNOLFNBQXVCO1FBRS9CLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFGVCxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBVGpDLGdCQUFXLEdBQTBCLEVBQUUsQ0FBQztRQVl0QyxJQUFJLENBQUMsRUFBRSxHQUFHLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBZ0MsQ0FBQyxDQUFDLENBQUM7UUFFbEcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFH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QUssQ0FBQztJQUNyRCxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWE7UUFDckIsYUFBYTtRQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQ3BELENBQUM7OEdBbEdVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLGtGQ1ZwQyw4cERBZ0RBOzsyRkR0Q2EsdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgU2VjdXJpdHlDb250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IERhdGFXaWRnZXRDb21wb25lbnQsIFRlbXBsYXRlV2lkZ2V0T3B0aW9ucyB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0V2l0aCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXdpZGdldC10ZW1wbGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi93aWRnZXQtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldFRlbXBsYXRlQ29tcG9uZW50IGV4dGVuZHMgRGF0YVdpZGdldENvbXBvbmVudCB7XG4gIG9wdGlvbnMkOiBPYnNlcnZhYmxlPFRlbXBsYXRlV2lkZ2V0T3B0aW9ucz47XG4gIG9wdGlvbnNDb3B5OiBUZW1wbGF0ZVdpZGdldE9wdGlvbnMgPSB7fTtcbiAgdGVtcGxhdGUkOiBPYnNlcnZhYmxlPFNhZmVIdG1sPjtcbiAgY3NzJDogT2JzZXJ2YWJsZTxTYWZlSHRtbD47XG4gIGlkOiBudW1iZXI7XG4gIHN0YXRpYyBpZEdlbmVyYXRvciA9IDA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RvcmU6IFN0b3JlPGFueT4sXG4gICAgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICApIHtcbiAgICBzdXBlcihzdG9yZSwgZWwpO1xuICAgIHRoaXMuaWQgPSBXaWRnZXRUZW1wbGF0ZUNvbXBvbmVudC5pZEdlbmVyYXRvcisrO1xuICAgIHRoaXMub3B0aW9ucyQgPSB0aGlzLm1hbmlmZXN0JC5waXBlKG1hcCgobWFuaWZlc3QpID0+IG1hbmlmZXN0Lm9wdGlvbnMgYXMgVGVtcGxhdGVXaWRnZXRPcHRpb25zKSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5vcHRpb25zJC5waXBlKGZpbHRlcigob3B0KSA9PiAhIW9wdCkpLnN1YnNjcmliZSgob3B0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5ID0geyAuLi4oc3RydWN0dXJlZENsb25lKG9wdGlvbnMpIGFzIFRlbXBsYXRlV2lkZ2V0T3B0aW9ucykgfTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMudGVtcGxhdGUkID0gdGhpcy5vcHRpb25zJC5waXBlKFxuICAgICAgbWFwKChvcHRpb25zKSA9PiAoISFvcHRpb25zLnN2ZyA/IG9wdGlvbnMuc3ZnIDogb3B0aW9ucy5odG1sID8/ICcnKSksXG4gICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLnJlc3VsdFNldCQpLFxuICAgICAgbWFwKFxuICAgICAgICAoW3RlbXBsYXRlLCByc10pID0+XG4gICAgICAgICAgdGhpcy5zYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LkhUTUwsIFdpZGdldFRlbXBsYXRlQ29tcG9uZW50LmV2YWx1YXRlKHRlbXBsYXRlLCBycykpID8/ICcnXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuY3NzJCA9IHRoaXMub3B0aW9ucyQucGlwZShcbiAgICAgIG1hcCgob3B0aW9ucykgPT4gYDxzdHlsZT4ke1dpZGdldFRlbXBsYXRlQ29tcG9uZW50LmxpbWl0U2NvcGUob3B0aW9ucy5jc3MgPz8gJycsIHRoaXMuaWQgKyAnJyl9PC9zdHlsZT5gKSxcbiAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMucmVzdWx0U2V0JCksXG4gICAgICBtYXAoXG4gICAgICAgIChbdGVtcGxhdGUsIHJzXSkgPT5cbiAgICAgICAgICB0aGlzLnNhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuU1RZTEUsIFdpZGdldFRlbXBsYXRlQ29tcG9uZW50LmV2YWx1YXRlKHRlbXBsYXRlLCBycykpID8/ICcnXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGVtaXRNYW5pZmVzdCgpIHtcbiAgICB0aGlzLm1hbmlmZXN0TW9kaWZpZWQuZW1pdCh7XG4gICAgICB3aWRnZXRJbmRleDogdGhpcy53aWRnZXRJbmRleCxcbiAgICAgIG1hbmlmZXN0OiB7IC4uLnRoaXMubWFuaWZlc3QsIG9wdGlvbnM6IHRoaXMub3B0aW9uc0NvcHkgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGV2YWx1YXRlKHRlbXBsYXRlOiBzdHJpbmcsIHJzOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlZ2V4cCA9IG5ldyBSZWdFeHAoJ3t7KC4qPyl9fScsICdnJyk7XG4gICAgY29uc3QgdG9SZXBsYWNlID0gdGVtcGxhdGUubWF0Y2gocmVnZXhwKTtcbiAgICBsZXQgcmVzdWx0ID0gdGVtcGxhdGU7XG5cbiAgICBpZiAoISF0b1JlcGxhY2UpIHtcbiAgICAgIHRvUmVwbGFjZS5mb3JFYWNoKChleHRyYWN0ZWQpID0+IHtcbiAgICAgICAgY29uc3QgZXhwciA9IGV4dHJhY3RlZC5zdWJzdHJpbmcoMiwgZXh0cmFjdGVkLmxlbmd0aCAtIDIpLnRyaW0oKTtcbiAgICAgICAgbGV0IGV2YWx1YXRpb246IGFueSA9IG51bGw7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBSZXBsYWNlIHJzIHJlZmVyZW5jZXMgd2l0aCBhY3R1YWwgdmFsdWVzIGZyb20gdGhlIHJzIG9iamVjdFxuICAgICAgICAgIGNvbnN0IHJlcGxhY2VkRXhwciA9IGV4cHIucmVwbGFjZSgvcnNcXFsnKC4qPyknXFxdXFxbKFxcZCspXFxdXFwuYXR0cmlidXRlc1xcLihcXHcrKS9nLCAobWF0Y2gsIHAxLCBwMiwgcDMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBycy5pdGVtc1twMV1bcGFyc2VJbnQocDIsIDEwKV0uYXR0cmlidXRlc1twM10udmFsdWU7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyBFdmFsdWF0ZSB0aGUgYXJpdGhtZXRpYyBleHByZXNzaW9uXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGV2YWx1YXRpb24gPSBuZXcgRnVuY3Rpb24oJ3JldHVybiAnICsgcmVwbGFjZWRFeHByKSgpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBldmFsdWF0aW9uID0gcmVwbGFjZWRFeHByO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBldmFsdWF0aW5nIGV4cHJlc3Npb246JywgZXhwciwgZXJyb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoZXh0cmFjdGVkLCBldmFsdWF0aW9uKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzdGF0aWMgbGltaXRTY29wZShjc3M6IHN0cmluZywgaWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2NvcGUgPSBgLnByeS10ZW1wbGF0ZS0ke2lkfWA7XG5cbiAgICBjb25zdCBzY29wZWQgPSBjc3MucmVwbGFjZSgvKFt9LF0gPykvZywgYCQxJHtzY29wZX0gYCkucmVwbGFjZShuZXcgUmVnRXhwKHNjb3BlICsgJyAkJyksICcnKTtcblxuICAgIHJldHVybiBzY29wZSArICcgJyArIHNjb3BlZDtcbiAgfVxuXG4gIGNoYW5nZUh0bWwoJGV2ZW50OiBFdmVudCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLm9wdGlvbnNDb3B5Lmh0bWwgPSAkZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZTtcbiAgfVxuXG4gIGNoYW5nZUNzcygkZXZlbnQ6IEV2ZW50KSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMub3B0aW9uc0NvcHkuY3NzID0gJGV2ZW50LmN1cnJlbnRUYXJnZXQudmFsdWU7XG4gIH1cbn1cbiIsIjxwcnktd2lkZ2V0LXRlbXBsYXRlLWNzcz48L3ByeS13aWRnZXQtdGVtcGxhdGUtY3NzPlxuQGlmIChkaXNwbGF5SGVhZGVyJCB8IGFzeW5jKSB7XG4gIDxwcnktd2lkZ2V0LWhlYWRlclxuICAgIFt3aWRnZXRJbmRleF09XCJ3aWRnZXRJbmRleFwiXG4gICAgW21hbmlmZXN0XT1cIm1hbmlmZXN0XCJcbiAgICAobWFuaWZlc3RNb2RpZmllZCk9XCJtYW5pZmVzdE1vZGlmaWVkLmVtaXQoJGV2ZW50KVwiXG4gICAgI2hlYWRlclxuICAgIFtoZWFkZXJPcHRpb25zXT1cIihkaXNwbGF5SGVhZGVyJCB8IGFzeW5jKSA/PyB7fVwiXG4gICAgW2RhdGFzb3VyY2VJZHNdPVwiKGRhdGFzb3VyY2VJZHMkIHwgYXN5bmMpID8/IFtdXCJcbiAgICA+XG4gICAgPHByeS1zZXR0aW5nc1xuICAgICAgKHNhdmVUcmlnZ2VyZWQpPVwiZW1pdE1hbmlmZXN0KClcIlxuICAgICAgKGNoYW5nZVRpdGxlKT1cImNoYW5nZVdpZGdldFRpdGxlKCRldmVudClcIlxuICAgICAgW2hlYWRlclByZXNlbnRdPVwiZGlzcGxheUhlYWRlciQgfCBhc3luY1wiXG4gICAgICBbd2lkZ2V0SW5kZXhdPVwid2lkZ2V0SW5kZXhcIlxuICAgICAgW2hlYWRlcl09XCJoZWFkZXJcIlxuICAgICAgW29wZW4kXT1cIm9wZW4kXCJcbiAgICAgIGNsYXNzPVwiby1zZXR0aW5nc1wiXG4gICAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fZmllbGRzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiaHRtbF9zcmNcIj57eyAnQHByeS53aWRnZXQudGVtcGxhdGUuaHRtbCcgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkIGEtdGV4dC1hcmVhIC1vdmVyZmxvd1wiXG4gICAgICAgICAgICBpZD1cImh0bWxfc3JjXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25zQ29weS5odG1sXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJjaGFuZ2VIdG1sKCRldmVudClcIlxuICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJjc3Nfc3JjXCI+e3sgJ0Bwcnkud2lkZ2V0LnRlbXBsYXRlLmNzcycgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkIGEtdGV4dC1hcmVhIC1vdmVyZmxvd1wiXG4gICAgICAgICAgICBpZD1cImNzc19zcmNcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbnNDb3B5LmNzc1wiXG4gICAgICAgICAgICAoaW5wdXQpPVwiY2hhbmdlQ3NzKCRldmVudClcIlxuICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvcHJ5LXNldHRpbmdzPlxuICA8L3ByeS13aWRnZXQtaGVhZGVyPlxufVxuQGlmIChjc3MkIHwgYXN5bmM7IGFzIGNzcykge1xuICA8ZGl2IFtpbm5lckh0bWxdPVwiY3NzXCI+PC9kaXY+XG59XG5AaWYgKHRlbXBsYXRlJCB8IGFzeW5jOyBhcyB0ZW1wbGF0ZSkge1xuICA8ZGl2IFtjbGFzc109XCIncHJ5LXRlbXBsYXRlLScgKyBpZFwiIFtpbm5lckh0bWxdPVwidGVtcGxhdGVcIj48L2Rpdj5cbn1cbiJdfQ==
|
|
@@ -2,7 +2,7 @@ import { OverlayModule } from '@angular/cdk/overlay';
|
|
|
2
2
|
import * as i5 from '@angular/common';
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { Component, ViewEncapsulation, NgModule } from '@angular/core';
|
|
5
|
+
import { Component, ViewEncapsulation, SecurityContext, NgModule } from '@angular/core';
|
|
6
6
|
import { FormsModule } from '@angular/forms';
|
|
7
7
|
import * as i3 from '@provoly/dashboard';
|
|
8
8
|
import { DataWidgetComponent, BaseWidgetModule, PryCoreModule, PryDashboardModule, PrySelectModule, PryIconModule, PryToggleModule, PryI18nModule } from '@provoly/dashboard';
|
|
@@ -31,8 +31,8 @@ class WidgetTemplateComponent extends DataWidgetComponent {
|
|
|
31
31
|
this.subscriptions.add(this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {
|
|
32
32
|
this.optionsCopy = { ...structuredClone(options) };
|
|
33
33
|
}));
|
|
34
|
-
this.template$ = this.options$.pipe(map((options) => (!!options.svg ? options.svg : options.html ?? '')), combineLatestWith(this.resultSet$), map(([template, rs]) => this.evaluate(template, rs)));
|
|
35
|
-
this.css$ = this.options$.pipe(map((options) => `<style>${
|
|
34
|
+
this.template$ = this.options$.pipe(map((options) => (!!options.svg ? options.svg : options.html ?? '')), combineLatestWith(this.resultSet$), map(([template, rs]) => this.sanitizer.sanitize(SecurityContext.HTML, WidgetTemplateComponent.evaluate(template, rs)) ?? ''));
|
|
35
|
+
this.css$ = this.options$.pipe(map((options) => `<style>${WidgetTemplateComponent.limitScope(options.css ?? '', this.id + '')}</style>`), combineLatestWith(this.resultSet$), map(([template, rs]) => this.sanitizer.sanitize(SecurityContext.STYLE, WidgetTemplateComponent.evaluate(template, rs)) ?? ''));
|
|
36
36
|
}
|
|
37
37
|
emitManifest() {
|
|
38
38
|
this.manifestModified.emit({
|
|
@@ -40,52 +40,37 @@ class WidgetTemplateComponent extends DataWidgetComponent {
|
|
|
40
40
|
manifest: { ...this.manifest, options: this.optionsCopy }
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
-
evaluate(template, rs) {
|
|
43
|
+
static evaluate(template, rs) {
|
|
44
44
|
const regexp = new RegExp('{{(.*?)}}', 'g');
|
|
45
45
|
const toReplace = template.match(regexp);
|
|
46
46
|
let result = template;
|
|
47
47
|
if (!!toReplace) {
|
|
48
48
|
toReplace.forEach((extracted) => {
|
|
49
|
-
const expr = extracted.substring(2, extracted.length - 2);
|
|
50
|
-
const splitted = expr.split(/[.\]]/).filter((extr) => extr !== '');
|
|
49
|
+
const expr = extracted.substring(2, extracted.length - 2).trim();
|
|
51
50
|
let evaluation = null;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
51
|
+
try {
|
|
52
|
+
// Replace rs references with actual values from the rs object
|
|
53
|
+
const replacedExpr = expr.replace(/rs\['(.*?)'\]\[(\d+)\]\.attributes\.(\w+)/g, (match, p1, p2, p3) => {
|
|
54
|
+
return rs.items[p1][parseInt(p2, 10)].attributes[p3].value;
|
|
55
|
+
});
|
|
56
|
+
// Evaluate the arithmetic expression
|
|
57
|
+
try {
|
|
58
|
+
evaluation = new Function('return ' + replacedExpr)();
|
|
59
59
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
evaluation = evaluation[parseInt(splitPart.substring(1), 10)];
|
|
63
|
-
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
evaluation = replacedExpr;
|
|
64
62
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
evaluation = evaluation[splitPart];
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
const prop = splitPart.substring(0, indexOfCaret);
|
|
73
|
-
const subProp = splitPart.substring(indexOfCaret + 1);
|
|
74
|
-
evaluation = evaluation[prop].values[subProp];
|
|
75
|
-
}
|
|
76
|
-
if (!!evaluation && evaluation.type === 'VALUE') {
|
|
77
|
-
evaluation = evaluation.value;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
});
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
console.error('Error evaluating expression:', expr, error);
|
|
66
|
+
}
|
|
82
67
|
result = result.replace(extracted, evaluation);
|
|
83
68
|
});
|
|
84
69
|
}
|
|
85
|
-
return
|
|
70
|
+
return result;
|
|
86
71
|
}
|
|
87
|
-
limitScope(css) {
|
|
88
|
-
const scope = `.pry-template-${
|
|
72
|
+
static limitScope(css, id) {
|
|
73
|
+
const scope = `.pry-template-${id}`;
|
|
89
74
|
const scoped = css.replace(/([},] ?)/g, `$1${scope} `).replace(new RegExp(scope + ' $'), '');
|
|
90
75
|
return scope + ' ' + scoped;
|
|
91
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provoly-dashboard-widgets-widget-template.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-template/style/css.component.ts","../../../../projects/provoly/dashboard/widgets/widget-template/component/widget-template.component.ts","../../../../projects/provoly/dashboard/widgets/widget-template/component/widget-template.component.html","../../../../projects/provoly/dashboard/widgets/widget-template/i18n/en.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-template/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-template/widget-template.module.ts","../../../../projects/provoly/dashboard/widgets/widget-template/provoly-dashboard-widgets-widget-template.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-template-css',\n template: '',\n styleUrls: ['./_o-widget-template.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryWidgetTemplateCssComponent {}\n","import { Component, ElementRef } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { Store } from '@ngrx/store';\nimport { DataWidgetComponent, TemplateWidgetOptions } from '@provoly/dashboard';\nimport { combineLatestWith, Observable } from 'rxjs';\nimport { filter, map } from 'rxjs';\n\n@Component({\n selector: 'pry-widget-template',\n templateUrl: './widget-template.component.html'\n})\nexport class WidgetTemplateComponent extends DataWidgetComponent {\n options$: Observable<TemplateWidgetOptions>;\n optionsCopy: TemplateWidgetOptions = {};\n template$: Observable<SafeHtml>;\n css$: Observable<SafeHtml>;\n id: number;\n static idGenerator = 0;\n\n constructor(\n store: Store<any>,\n el: ElementRef,\n private sanitizer: DomSanitizer\n ) {\n super(store, el);\n this.id = WidgetTemplateComponent.idGenerator++;\n this.options$ = this.manifest$.pipe(map((manifest) => manifest.options as TemplateWidgetOptions));\n\n this.subscriptions.add(\n this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n this.optionsCopy = { ...(structuredClone(options) as TemplateWidgetOptions) };\n })\n );\n\n this.template$ = this.options$.pipe(\n map((options) => (!!options.svg ? options.svg : options.html ?? '')),\n combineLatestWith(this.resultSet$),\n map(([template, rs]) => this.evaluate(template, rs))\n );\n\n this.css$ = this.options$.pipe(\n map((options) => `<style>${this.limitScope(options.css ?? '')}</style>`),\n combineLatestWith(this.resultSet$),\n map(([template, rs]) => this.evaluate(template, rs))\n );\n }\n\n override emitManifest() {\n this.manifestModified.emit({\n widgetIndex: this.widgetIndex,\n manifest: { ...this.manifest, options: this.optionsCopy }\n });\n }\n\n evaluate(template: string, rs: any): SafeHtml {\n const regexp = new RegExp('{{(.*?)}}', 'g');\n const toReplace = template.match(regexp);\n let result = template;\n\n if (!!toReplace) {\n toReplace.forEach((extracted) => {\n const expr = extracted.substring(2, extracted.length - 2);\n const splitted = expr.split(/[.\\]]/).filter((extr) => extr !== '');\n let evaluation: any = null;\n\n splitted.forEach((_splitPart) => {\n const splitPart = _splitPart.trim();\n if (splitPart.startsWith('rs')) {\n const classId = (expr.match(/rs\\['(.)*?'/) ?? ['no-class-id-detected'])[0]\n .replace(\"rs['\", '')\n .replace(\"'\", '');\n evaluation = rs.items[classId];\n } else if (splitPart.startsWith('[')) {\n if (!!evaluation) {\n evaluation = evaluation[parseInt(splitPart.substring(1), 10)];\n }\n } else {\n if (!!evaluation) {\n const indexOfCaret = splitPart.indexOf('[');\n if (indexOfCaret === -1) {\n evaluation = evaluation[splitPart];\n } else {\n const prop = splitPart.substring(0, indexOfCaret);\n const subProp = splitPart.substring(indexOfCaret + 1);\n evaluation = evaluation[prop].values[subProp];\n }\n if (!!evaluation && evaluation.type === 'VALUE') {\n evaluation = evaluation.value;\n }\n }\n }\n });\n\n result = result.replace(extracted, evaluation);\n });\n }\n\n return this.sanitizer.bypassSecurityTrustHtml(result);\n }\n\n private limitScope(css: string): string {\n const scope = `.pry-template-${this.id}`;\n\n const scoped = css.replace(/([},] ?)/g, `$1${scope} `).replace(new RegExp(scope + ' $'), '');\n\n return scope + ' ' + scoped;\n }\n\n changeHtml($event: Event) {\n // @ts-ignore\n this.optionsCopy.html = $event.currentTarget.value;\n }\n\n changeCss($event: Event) {\n // @ts-ignore\n this.optionsCopy.css = $event.currentTarget.value;\n }\n}\n","<pry-widget-template-css></pry-widget-template-css>\n@if (displayHeader$ | async) {\n <pry-widget-header\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__fields\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"html_src\">{{ '@pry.widget.template.html' | i18n }}</label>\n <textarea\n class=\"a-form-field a-text-area -overflow\"\n id=\"html_src\"\n [value]=\"optionsCopy.html\"\n (input)=\"changeHtml($event)\"\n ></textarea>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"css_src\">{{ '@pry.widget.template.css' | i18n }}</label>\n <textarea\n class=\"a-form-field a-text-area -overflow\"\n id=\"css_src\"\n [value]=\"optionsCopy.css\"\n (input)=\"changeCss($event)\"\n ></textarea>\n </div>\n </div>\n </pry-settings>\n </pry-widget-header>\n}\n@if (css$ | async; as css) {\n <div [innerHtml]=\"css\"></div>\n}\n@if (template$ | async; as template) {\n <div [class]=\"'pry-template-' + id\" [innerHtml]=\"template\"></div>\n}\n","export const enTranslations = {\n '@pry': {\n widget: {\n template: {\n html: 'Html',\n css: 'Css'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n widget: {\n template: {\n html: 'Html',\n css: 'Css'\n }\n }\n }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BaseWidgetComponent,\n BaseWidgetModule,\n PryCoreModule,\n PryDashboardModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { WidgetTemplateComponent } from './component/widget-template.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PryWidgetTemplateCssComponent } from './style/css.component';\n\n@NgModule({\n declarations: [WidgetTemplateComponent, PryWidgetTemplateCssComponent],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n PryCoreModule,\n PryDashboardModule,\n PrySelectModule,\n PryIconModule,\n PryCheckboxModule,\n PryToggleModule,\n PryI18nModule\n ],\n exports: [WidgetTemplateComponent]\n})\nexport class WidgetTemplateModule extends BaseWidgetModule {\n constructor(private pryTranslateService: PryI18nService) {\n super();\n this.pryTranslateService.addLangObject('fr', 'widget-template', frTranslations);\n this.pryTranslateService.addLangObject('en', 'widget-template', enTranslations);\n }\n\n override getComponent() {\n return WidgetTemplateComponent as Type<BaseWidgetComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4.PryWidgetTemplateCssComponent","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provoly-dashboard-widgets-widget-template.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-template/style/css.component.ts","../../../../projects/provoly/dashboard/widgets/widget-template/component/widget-template.component.ts","../../../../projects/provoly/dashboard/widgets/widget-template/component/widget-template.component.html","../../../../projects/provoly/dashboard/widgets/widget-template/i18n/en.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-template/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-template/widget-template.module.ts","../../../../projects/provoly/dashboard/widgets/widget-template/provoly-dashboard-widgets-widget-template.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-template-css',\n template: '',\n styleUrls: ['./_o-widget-template.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryWidgetTemplateCssComponent {}\n","import { Component, ElementRef, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { Store } from '@ngrx/store';\nimport { DataWidgetComponent, TemplateWidgetOptions } from '@provoly/dashboard';\nimport { combineLatestWith, filter, map, Observable } from 'rxjs';\n\n@Component({\n selector: 'pry-widget-template',\n templateUrl: './widget-template.component.html'\n})\nexport class WidgetTemplateComponent extends DataWidgetComponent {\n options$: Observable<TemplateWidgetOptions>;\n optionsCopy: TemplateWidgetOptions = {};\n template$: Observable<SafeHtml>;\n css$: Observable<SafeHtml>;\n id: number;\n static idGenerator = 0;\n\n constructor(\n store: Store<any>,\n el: ElementRef,\n private sanitizer: DomSanitizer\n ) {\n super(store, el);\n this.id = WidgetTemplateComponent.idGenerator++;\n this.options$ = this.manifest$.pipe(map((manifest) => manifest.options as TemplateWidgetOptions));\n\n this.subscriptions.add(\n this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n this.optionsCopy = { ...(structuredClone(options) as TemplateWidgetOptions) };\n })\n );\n\n this.template$ = this.options$.pipe(\n map((options) => (!!options.svg ? options.svg : options.html ?? '')),\n combineLatestWith(this.resultSet$),\n map(\n ([template, rs]) =>\n this.sanitizer.sanitize(SecurityContext.HTML, WidgetTemplateComponent.evaluate(template, rs)) ?? ''\n )\n );\n\n this.css$ = this.options$.pipe(\n map((options) => `<style>${WidgetTemplateComponent.limitScope(options.css ?? '', this.id + '')}</style>`),\n combineLatestWith(this.resultSet$),\n map(\n ([template, rs]) =>\n this.sanitizer.sanitize(SecurityContext.STYLE, WidgetTemplateComponent.evaluate(template, rs)) ?? ''\n )\n );\n }\n\n override emitManifest() {\n this.manifestModified.emit({\n widgetIndex: this.widgetIndex,\n manifest: { ...this.manifest, options: this.optionsCopy }\n });\n }\n\n static evaluate(template: string, rs: any): string {\n const regexp = new RegExp('{{(.*?)}}', 'g');\n const toReplace = template.match(regexp);\n let result = template;\n\n if (!!toReplace) {\n toReplace.forEach((extracted) => {\n const expr = extracted.substring(2, extracted.length - 2).trim();\n let evaluation: any = null;\n\n try {\n // Replace rs references with actual values from the rs object\n const replacedExpr = expr.replace(/rs\\['(.*?)'\\]\\[(\\d+)\\]\\.attributes\\.(\\w+)/g, (match, p1, p2, p3) => {\n return rs.items[p1][parseInt(p2, 10)].attributes[p3].value;\n });\n\n // Evaluate the arithmetic expression\n try {\n evaluation = new Function('return ' + replacedExpr)();\n } catch (error) {\n evaluation = replacedExpr;\n }\n } catch (error) {\n console.error('Error evaluating expression:', expr, error);\n }\n\n result = result.replace(extracted, evaluation);\n });\n }\n\n return result;\n }\n\n static limitScope(css: string, id: string): string {\n const scope = `.pry-template-${id}`;\n\n const scoped = css.replace(/([},] ?)/g, `$1${scope} `).replace(new RegExp(scope + ' $'), '');\n\n return scope + ' ' + scoped;\n }\n\n changeHtml($event: Event) {\n // @ts-ignore\n this.optionsCopy.html = $event.currentTarget.value;\n }\n\n changeCss($event: Event) {\n // @ts-ignore\n this.optionsCopy.css = $event.currentTarget.value;\n }\n}\n","<pry-widget-template-css></pry-widget-template-css>\n@if (displayHeader$ | async) {\n <pry-widget-header\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__fields\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"html_src\">{{ '@pry.widget.template.html' | i18n }}</label>\n <textarea\n class=\"a-form-field a-text-area -overflow\"\n id=\"html_src\"\n [value]=\"optionsCopy.html\"\n (input)=\"changeHtml($event)\"\n ></textarea>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"css_src\">{{ '@pry.widget.template.css' | i18n }}</label>\n <textarea\n class=\"a-form-field a-text-area -overflow\"\n id=\"css_src\"\n [value]=\"optionsCopy.css\"\n (input)=\"changeCss($event)\"\n ></textarea>\n </div>\n </div>\n </pry-settings>\n </pry-widget-header>\n}\n@if (css$ | async; as css) {\n <div [innerHtml]=\"css\"></div>\n}\n@if (template$ | async; as template) {\n <div [class]=\"'pry-template-' + id\" [innerHtml]=\"template\"></div>\n}\n","export const enTranslations = {\n '@pry': {\n widget: {\n template: {\n html: 'Html',\n css: 'Css'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n widget: {\n template: {\n html: 'Html',\n css: 'Css'\n }\n }\n }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BaseWidgetComponent,\n BaseWidgetModule,\n PryCoreModule,\n PryDashboardModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { WidgetTemplateComponent } from './component/widget-template.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PryWidgetTemplateCssComponent } from './style/css.component';\n\n@NgModule({\n declarations: [WidgetTemplateComponent, PryWidgetTemplateCssComponent],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n PryCoreModule,\n PryDashboardModule,\n PrySelectModule,\n PryIconModule,\n PryCheckboxModule,\n PryToggleModule,\n PryI18nModule\n ],\n exports: [WidgetTemplateComponent]\n})\nexport class WidgetTemplateModule extends BaseWidgetModule {\n constructor(private pryTranslateService: PryI18nService) {\n super();\n this.pryTranslateService.addLangObject('fr', 'widget-template', frTranslations);\n this.pryTranslateService.addLangObject('en', 'widget-template', enTranslations);\n }\n\n override getComponent() {\n return WidgetTemplateComponent as Type<BaseWidgetComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4.PryWidgetTemplateCssComponent","i1"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -14,8 +14,8 @@ export declare class WidgetTemplateComponent extends DataWidgetComponent {
|
|
|
14
14
|
static idGenerator: number;
|
|
15
15
|
constructor(store: Store<any>, el: ElementRef, sanitizer: DomSanitizer);
|
|
16
16
|
emitManifest(): void;
|
|
17
|
-
evaluate(template: string, rs: any):
|
|
18
|
-
|
|
17
|
+
static evaluate(template: string, rs: any): string;
|
|
18
|
+
static limitScope(css: string, id: string): string;
|
|
19
19
|
changeHtml($event: Event): void;
|
|
20
20
|
changeCss($event: Event): void;
|
|
21
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<WidgetTemplateComponent, never>;
|