myrta-ui 17.0.74 → 17.0.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/esm2022/lib/components/alert/alert.component.mjs +2 -2
  2. package/esm2022/lib/components/form/formula-editor/enums/error-messages.enum.mjs +16 -0
  3. package/esm2022/lib/components/form/formula-editor/enums/formula-editor-size.enum.mjs +7 -0
  4. package/esm2022/lib/components/form/formula-editor/formula-editor.component.mjs +342 -0
  5. package/esm2022/lib/components/form/formula-editor/formula-editor.module.mjs +44 -0
  6. package/esm2022/lib/components/form/formula-editor/helpers/check-errors.helper.mjs +73 -0
  7. package/esm2022/lib/components/form/formula-editor/helpers/create-tags.helper.mjs +17 -0
  8. package/esm2022/lib/components/form/formula-editor/models/check-error-result.model.mjs +2 -0
  9. package/esm2022/lib/components/form/formula-editor/models/formula-editor.model.mjs +2 -0
  10. package/esm2022/lib/components/form/formula-editor/models/index.mjs +4 -0
  11. package/esm2022/lib/components/form/formula-editor/models/white-list-item.model.mjs +2 -0
  12. package/esm2022/lib/helpers/is-number.helper.mjs +7 -0
  13. package/esm2022/public-api.mjs +4 -1
  14. package/fesm2022/myrta-ui.mjs +492 -10
  15. package/fesm2022/myrta-ui.mjs.map +1 -1
  16. package/lib/components/form/formula-editor/enums/error-messages.enum.d.ts +8 -0
  17. package/lib/components/form/formula-editor/enums/formula-editor-size.enum.d.ts +6 -0
  18. package/lib/components/form/formula-editor/formula-editor.component.d.ts +74 -0
  19. package/lib/components/form/formula-editor/formula-editor.module.d.ts +13 -0
  20. package/lib/components/form/formula-editor/helpers/check-errors.helper.d.ts +6 -0
  21. package/lib/components/form/formula-editor/helpers/create-tags.helper.d.ts +5 -0
  22. package/lib/components/form/formula-editor/models/check-error-result.model.d.ts +5 -0
  23. package/lib/components/form/formula-editor/models/formula-editor.model.d.ts +5 -0
  24. package/lib/components/form/formula-editor/models/index.d.ts +3 -0
  25. package/lib/components/form/formula-editor/models/white-list-item.model.d.ts +5 -0
  26. package/lib/helpers/is-number.helper.d.ts +1 -0
  27. package/package.json +1 -1
  28. package/public-api.d.ts +3 -0
@@ -19,11 +19,11 @@ export class AlertComponent {
19
19
  this.close.emit(null);
20
20
  }
21
21
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AlertComponent, selector: "mrx-alert", inputs: { customClasses: "customClasses", color: "color", customColor: "customColor", message: "message", title: "title", closable: "closable" }, outputs: { close: "close" }, ngImport: i0, template: "<div class=\"mrx-alert\" [class]=\"getClasses\" [style]=\"{backgroundColor: customColor}\">\r\n @if (closable) {\r\n <span class=\"mrx-icon icon-close icon-font-16\" (click)=\"onCloseClick()\"></span>\r\n }\r\n\r\n @if (title || message) {\r\n <span [class]=\"getIconClass\" style=\"margin-top: 1px\" class=\"mrx-icon icon-alert icon-font-16 mr-2\"></span>\r\n }\r\n\r\n @if (title) {\r\n <div class=\"mrx-alert-title mb-1\" [class.ml-4]=\"getIconClass\" [innerHTML]=\"title\"></div>\r\n }\r\n\r\n @if (message) {\r\n <div class=\"mrx-alert-message\" [class.ml-4]=\"getIconClass\" [innerHTML]=\"message\"></div>\r\n }\r\n\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [".mrx-alert.mrx-alert{border-radius:var(--border-radius-1);padding:var(--spacing-3) var(--spacing-4);position:relative;color:var(--neutral-text-primary);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-alert.mrx-alert .mrx-alert-title{display:flex;align-items:center;font-family:var(--body-lg-bold-font-family);font-size:var(--body-lg-bold-font-size);font-weight:var(--body-lg-bold-font-weight);line-height:var(--body-lg-bold-line-height)}.mrx-alert.mrx-alert .icon-close{position:absolute;top:calc(var(--spacing-module) * 2);right:calc(var(--spacing-module) * 2);cursor:pointer}.mrx-alert.mrx-alert .icon-alert{position:absolute;top:13px;left:16px}.mrx-alert.mrx-alert.mrx-alert-color-info{background-color:var(--brand-bg-secondary-default)}.mrx-alert.mrx-alert.mrx-alert-color-positive,.mrx-alert.mrx-alert.mrx-alert-color-success{background-color:var(--system-bg-positive-secondary)}.mrx-alert.mrx-alert.mrx-alert-color-positive .mrx-icon,.mrx-alert.mrx-alert.mrx-alert-color-success .mrx-icon{color:var(--system-icon-positive)}.mrx-alert.mrx-alert.mrx-alert-color-attention,.mrx-alert.mrx-alert.mrx-alert-warning{background-color:var(--system-bg-attention-secondary)}.mrx-alert.mrx-alert.mrx-alert-color-attention .mrx-icon,.mrx-alert.mrx-alert.mrx-alert-warning .mrx-icon{color:var(--system-icon-attention)}.mrx-alert.mrx-alert.mrx-alert-negative,.mrx-alert.mrx-alert.mrx-alert-danger{background-color:var(--system-bg-negative-secondary)}.mrx-alert.mrx-alert.mrx-alert-negative .mrx-icon,.mrx-alert.mrx-alert.mrx-alert-danger .mrx-icon{color:var(--system-icon-negative)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AlertComponent, selector: "mrx-alert", inputs: { customClasses: "customClasses", color: "color", customColor: "customColor", message: "message", title: "title", closable: "closable" }, outputs: { close: "close" }, ngImport: i0, template: "<div class=\"mrx-alert\" [class]=\"getClasses\" [style]=\"{backgroundColor: customColor}\">\r\n @if (closable) {\r\n <span class=\"mrx-icon icon-close icon-font-16\" (click)=\"onCloseClick()\"></span>\r\n }\r\n\r\n @if (title || message) {\r\n <span [class]=\"getIconClass\" style=\"margin-top: 1px\" class=\"mrx-icon icon-alert icon-font-16 mr-2\"></span>\r\n }\r\n\r\n @if (title) {\r\n <div class=\"mrx-alert-title mb-1\" [class.ml-4]=\"getIconClass\" [innerHTML]=\"title\"></div>\r\n }\r\n\r\n @if (message) {\r\n <div class=\"mrx-alert-message\" [class.ml-4]=\"getIconClass\" [innerHTML]=\"message\"></div>\r\n }\r\n\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [".mrx-alert.mrx-alert{border-radius:var(--border-radius-1);padding:var(--spacing-3) var(--spacing-4);position:relative;color:var(--neutral-text-primary);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-alert.mrx-alert .mrx-alert-title{display:flex;align-items:center;font-family:var(--body-lg-bold-font-family);font-size:var(--body-lg-bold-font-size);font-weight:var(--body-lg-bold-font-weight);line-height:var(--body-lg-bold-line-height)}.mrx-alert.mrx-alert .icon-close{position:absolute;top:calc(var(--spacing-module) * 2);right:calc(var(--spacing-module) * 2);cursor:pointer}.mrx-alert.mrx-alert .icon-alert{position:absolute;top:13px;left:16px}.mrx-alert.mrx-alert.mrx-alert-color-info{background-color:var(--brand-bg-secondary-default)}.mrx-alert.mrx-alert.mrx-alert-color-positive,.mrx-alert.mrx-alert.mrx-alert-color-success{background-color:var(--system-bg-positive-secondary)}.mrx-alert.mrx-alert.mrx-alert-color-positive .mrx-icon,.mrx-alert.mrx-alert.mrx-alert-color-success .mrx-icon{color:var(--system-icon-positive)}.mrx-alert.mrx-alert.mrx-alert-color-attention,.mrx-alert.mrx-alert.mrx-alert-color-warning{background-color:var(--system-bg-attention-secondary)}.mrx-alert.mrx-alert.mrx-alert-color-attention .mrx-icon,.mrx-alert.mrx-alert.mrx-alert-color-warning .mrx-icon{color:var(--system-icon-attention)}.mrx-alert.mrx-alert.mrx-alert-color-negative,.mrx-alert.mrx-alert.mrx-alert-color-danger{background-color:var(--system-bg-negative-secondary)}.mrx-alert.mrx-alert.mrx-alert-color-negative .mrx-icon,.mrx-alert.mrx-alert.mrx-alert-color-danger .mrx-icon{color:var(--system-icon-negative)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
23
23
  }
24
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AlertComponent, decorators: [{
25
25
  type: Component,
26
- args: [{ selector: 'mrx-alert', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mrx-alert\" [class]=\"getClasses\" [style]=\"{backgroundColor: customColor}\">\r\n @if (closable) {\r\n <span class=\"mrx-icon icon-close icon-font-16\" (click)=\"onCloseClick()\"></span>\r\n }\r\n\r\n @if (title || message) {\r\n <span [class]=\"getIconClass\" style=\"margin-top: 1px\" class=\"mrx-icon icon-alert icon-font-16 mr-2\"></span>\r\n }\r\n\r\n @if (title) {\r\n <div class=\"mrx-alert-title mb-1\" [class.ml-4]=\"getIconClass\" [innerHTML]=\"title\"></div>\r\n }\r\n\r\n @if (message) {\r\n <div class=\"mrx-alert-message\" [class.ml-4]=\"getIconClass\" [innerHTML]=\"message\"></div>\r\n }\r\n\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [".mrx-alert.mrx-alert{border-radius:var(--border-radius-1);padding:var(--spacing-3) var(--spacing-4);position:relative;color:var(--neutral-text-primary);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-alert.mrx-alert .mrx-alert-title{display:flex;align-items:center;font-family:var(--body-lg-bold-font-family);font-size:var(--body-lg-bold-font-size);font-weight:var(--body-lg-bold-font-weight);line-height:var(--body-lg-bold-line-height)}.mrx-alert.mrx-alert .icon-close{position:absolute;top:calc(var(--spacing-module) * 2);right:calc(var(--spacing-module) * 2);cursor:pointer}.mrx-alert.mrx-alert .icon-alert{position:absolute;top:13px;left:16px}.mrx-alert.mrx-alert.mrx-alert-color-info{background-color:var(--brand-bg-secondary-default)}.mrx-alert.mrx-alert.mrx-alert-color-positive,.mrx-alert.mrx-alert.mrx-alert-color-success{background-color:var(--system-bg-positive-secondary)}.mrx-alert.mrx-alert.mrx-alert-color-positive .mrx-icon,.mrx-alert.mrx-alert.mrx-alert-color-success .mrx-icon{color:var(--system-icon-positive)}.mrx-alert.mrx-alert.mrx-alert-color-attention,.mrx-alert.mrx-alert.mrx-alert-warning{background-color:var(--system-bg-attention-secondary)}.mrx-alert.mrx-alert.mrx-alert-color-attention .mrx-icon,.mrx-alert.mrx-alert.mrx-alert-warning .mrx-icon{color:var(--system-icon-attention)}.mrx-alert.mrx-alert.mrx-alert-negative,.mrx-alert.mrx-alert.mrx-alert-danger{background-color:var(--system-bg-negative-secondary)}.mrx-alert.mrx-alert.mrx-alert-negative .mrx-icon,.mrx-alert.mrx-alert.mrx-alert-danger .mrx-icon{color:var(--system-icon-negative)}\n"] }]
26
+ args: [{ selector: 'mrx-alert', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mrx-alert\" [class]=\"getClasses\" [style]=\"{backgroundColor: customColor}\">\r\n @if (closable) {\r\n <span class=\"mrx-icon icon-close icon-font-16\" (click)=\"onCloseClick()\"></span>\r\n }\r\n\r\n @if (title || message) {\r\n <span [class]=\"getIconClass\" style=\"margin-top: 1px\" class=\"mrx-icon icon-alert icon-font-16 mr-2\"></span>\r\n }\r\n\r\n @if (title) {\r\n <div class=\"mrx-alert-title mb-1\" [class.ml-4]=\"getIconClass\" [innerHTML]=\"title\"></div>\r\n }\r\n\r\n @if (message) {\r\n <div class=\"mrx-alert-message\" [class.ml-4]=\"getIconClass\" [innerHTML]=\"message\"></div>\r\n }\r\n\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [".mrx-alert.mrx-alert{border-radius:var(--border-radius-1);padding:var(--spacing-3) var(--spacing-4);position:relative;color:var(--neutral-text-primary);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-alert.mrx-alert .mrx-alert-title{display:flex;align-items:center;font-family:var(--body-lg-bold-font-family);font-size:var(--body-lg-bold-font-size);font-weight:var(--body-lg-bold-font-weight);line-height:var(--body-lg-bold-line-height)}.mrx-alert.mrx-alert .icon-close{position:absolute;top:calc(var(--spacing-module) * 2);right:calc(var(--spacing-module) * 2);cursor:pointer}.mrx-alert.mrx-alert .icon-alert{position:absolute;top:13px;left:16px}.mrx-alert.mrx-alert.mrx-alert-color-info{background-color:var(--brand-bg-secondary-default)}.mrx-alert.mrx-alert.mrx-alert-color-positive,.mrx-alert.mrx-alert.mrx-alert-color-success{background-color:var(--system-bg-positive-secondary)}.mrx-alert.mrx-alert.mrx-alert-color-positive .mrx-icon,.mrx-alert.mrx-alert.mrx-alert-color-success .mrx-icon{color:var(--system-icon-positive)}.mrx-alert.mrx-alert.mrx-alert-color-attention,.mrx-alert.mrx-alert.mrx-alert-color-warning{background-color:var(--system-bg-attention-secondary)}.mrx-alert.mrx-alert.mrx-alert-color-attention .mrx-icon,.mrx-alert.mrx-alert.mrx-alert-color-warning .mrx-icon{color:var(--system-icon-attention)}.mrx-alert.mrx-alert.mrx-alert-color-negative,.mrx-alert.mrx-alert.mrx-alert-color-danger{background-color:var(--system-bg-negative-secondary)}.mrx-alert.mrx-alert.mrx-alert-color-negative .mrx-icon,.mrx-alert.mrx-alert.mrx-alert-color-danger .mrx-icon{color:var(--system-icon-negative)}\n"] }]
27
27
  }], propDecorators: { customClasses: [{
28
28
  type: Input
29
29
  }], color: [{
@@ -0,0 +1,16 @@
1
+ export var ErrorTypeEnum;
2
+ (function (ErrorTypeEnum) {
3
+ ErrorTypeEnum["Default"] = "default";
4
+ ErrorTypeEnum["Interpretation"] = "interpretation";
5
+ ErrorTypeEnum["Sequence"] = "sequence";
6
+ ErrorTypeEnum["Divider"] = "divider";
7
+ ErrorTypeEnum["Bracket"] = "bracket";
8
+ })(ErrorTypeEnum || (ErrorTypeEnum = {}));
9
+ export const ErrorMessagesEnum = {
10
+ [ErrorTypeEnum.Default]: '',
11
+ [ErrorTypeEnum.Interpretation]: 'Не удалось интерпретировать введенное значение',
12
+ [ErrorTypeEnum.Sequence]: 'Некорректная последовательность элементов',
13
+ [ErrorTypeEnum.Divider]: 'Некорректный разделитель',
14
+ [ErrorTypeEnum.Bracket]: 'Не все скобки закрыты'
15
+ };
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItbWVzc2FnZXMuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2Zvcm11bGEtZWRpdG9yL2VudW1zL2Vycm9yLW1lc3NhZ2VzLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksYUFNWDtBQU5ELFdBQVksYUFBYTtJQUN2QixvQ0FBbUIsQ0FBQTtJQUNuQixrREFBaUMsQ0FBQTtJQUNqQyxzQ0FBcUIsQ0FBQTtJQUNyQixvQ0FBbUIsQ0FBQTtJQUNuQixvQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTlcsYUFBYSxLQUFiLGFBQWEsUUFNeEI7QUFFRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBa0M7SUFDOUQsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRTtJQUMzQixDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxnREFBZ0Q7SUFDaEYsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsMkNBQTJDO0lBQ3JFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLDBCQUEwQjtJQUNuRCxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSx1QkFBdUI7Q0FDakQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEVycm9yVHlwZUVudW0ge1xyXG4gIERlZmF1bHQgPSAnZGVmYXVsdCcsXHJcbiAgSW50ZXJwcmV0YXRpb24gPSAnaW50ZXJwcmV0YXRpb24nLFxyXG4gIFNlcXVlbmNlID0gJ3NlcXVlbmNlJyxcclxuICBEaXZpZGVyID0gJ2RpdmlkZXInLFxyXG4gIEJyYWNrZXQgPSAnYnJhY2tldCcsXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBFcnJvck1lc3NhZ2VzRW51bTogUmVjb3JkPEVycm9yVHlwZUVudW0sIHN0cmluZz4gPSB7XHJcbiAgW0Vycm9yVHlwZUVudW0uRGVmYXVsdF06ICcnLFxyXG4gIFtFcnJvclR5cGVFbnVtLkludGVycHJldGF0aW9uXTogJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0LjQvdGC0LXRgNC/0YDQtdGC0LjRgNC+0LLQsNGC0Ywg0LLQstC10LTQtdC90L3QvtC1INC30L3QsNGH0LXQvdC40LUnLFxyXG4gIFtFcnJvclR5cGVFbnVtLlNlcXVlbmNlXTogJ9Cd0LXQutC+0YDRgNC10LrRgtC90LDRjyDQv9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L7RgdGC0Ywg0Y3Qu9C10LzQtdC90YLQvtCyJyxcclxuICBbRXJyb3JUeXBlRW51bS5EaXZpZGVyXTogJ9Cd0LXQutC+0YDRgNC10LrRgtC90YvQuSDRgNCw0LfQtNC10LvQuNGC0LXQu9GMJyxcclxuICBbRXJyb3JUeXBlRW51bS5CcmFja2V0XTogJ9Cd0LUg0LLRgdC1INGB0LrQvtCx0LrQuCDQt9Cw0LrRgNGL0YLRiydcclxufTtcclxuXHJcbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export var FormulaEditorSizesEnum;
2
+ (function (FormulaEditorSizesEnum) {
3
+ FormulaEditorSizesEnum["small"] = "mrx-formula-editor-sm";
4
+ FormulaEditorSizesEnum["medium"] = "mrx-formula-editor-md";
5
+ FormulaEditorSizesEnum["large"] = "mrx-formula-editor-lg";
6
+ })(FormulaEditorSizesEnum || (FormulaEditorSizesEnum = {}));
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXVsYS1lZGl0b3Itc2l6ZS5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybXVsYS1lZGl0b3IvZW51bXMvZm9ybXVsYS1lZGl0b3Itc2l6ZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLHNCQUlYO0FBSkQsV0FBWSxzQkFBc0I7SUFDaEMseURBQWlDLENBQUE7SUFDakMsMERBQWtDLENBQUE7SUFDbEMseURBQWlDLENBQUE7QUFDbkMsQ0FBQyxFQUpXLHNCQUFzQixLQUF0QixzQkFBc0IsUUFJakMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBGb3JtdWxhRWRpdG9yU2l6ZXNFbnVtIHtcclxuICAnc21hbGwnID0gJ21yeC1mb3JtdWxhLWVkaXRvci1zbScsXHJcbiAgJ21lZGl1bScgPSAnbXJ4LWZvcm11bGEtZWRpdG9yLW1kJyxcclxuICAnbGFyZ2UnID0gJ21yeC1mb3JtdWxhLWVkaXRvci1sZycsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEZvcm11bGFFZGl0b3JTaXplc1R5cGVzID0gJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJztcclxuIl19
@@ -0,0 +1,342 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, HostListener, Inject, Input, Output, ViewChild, } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { DOCUMENT } from '@angular/common';
4
+ import { v4 as uuidv4 } from 'uuid';
5
+ import { ErrorMessagesEnum, ErrorTypeEnum } from './enums/error-messages.enum';
6
+ import { createBracket, createNumber, createOperator, createTag, createTagOutside } from './helpers/create-tags.helper';
7
+ import { isAn } from '../../../helpers/is-number.helper';
8
+ import { checkBracketErrors, checkDividerErrors, checkInterpretationErrors, checkSequenceErrors } from './helpers/check-errors.helper';
9
+ import { FormulaEditorSizesEnum } from './enums/formula-editor-size.enum';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common";
12
+ import * as i2 from "../../error-message/error-message.component";
13
+ import * as i3 from "../../save-state/save-state.component";
14
+ import * as i4 from "../../../pipes/safe/safe.pipe";
15
+ export class FormulaEditorComponent {
16
+ document;
17
+ _detector;
18
+ eRef;
19
+ _range;
20
+ _selection = null;
21
+ _cursorPosition = {
22
+ startContainer: null,
23
+ endContainer: null,
24
+ startOffset: 0,
25
+ endOffset: 0
26
+ };
27
+ searchText = '';
28
+ _operatorList = ['+', '-', '*', '/'];
29
+ _bracketList = ['(', ')'];
30
+ _itemList = [];
31
+ _modifiedItemList = {
32
+ items: {},
33
+ regExp: new RegExp(''),
34
+ };
35
+ value = '';
36
+ visibleValue = '';
37
+ isFocused = false;
38
+ errorModel = {
39
+ isError: false,
40
+ errorType: ErrorTypeEnum.Default
41
+ };
42
+ // SAVE STATE
43
+ uuid = uuidv4();
44
+ fields = [];
45
+ disabled = false;
46
+ readonly = false;
47
+ placeholder = '';
48
+ customClasses = '';
49
+ size = 'large';
50
+ // VALIDATE
51
+ invalid = false;
52
+ invalidMessage = '';
53
+ checkInvalid = null;
54
+ set items(items) {
55
+ const itemsMap = Object.fromEntries(items.map(obj => [obj.label, obj.sysName]));
56
+ this._itemList = items;
57
+ this._modifiedItemList.items = itemsMap;
58
+ this._modifiedItemList.regExp = new RegExp(items.map(s => s.label).join('|'), 'g');
59
+ const { visibleValue } = this._transformValue(this._modifiedValue(this._inputValue), true);
60
+ this.updateVisibleValue(visibleValue);
61
+ this._detector.detectChanges();
62
+ }
63
+ inputElement;
64
+ changed = new EventEmitter();
65
+ blurred = new EventEmitter();
66
+ modelChange = new EventEmitter();
67
+ constructor(document, _detector, eRef) {
68
+ this.document = document;
69
+ this._detector = _detector;
70
+ this.eRef = eRef;
71
+ }
72
+ get getErrorMessage() {
73
+ return this.invalidMessage || ErrorMessagesEnum[this.errorModel.errorType];
74
+ }
75
+ get filteredList() {
76
+ return this._itemList.filter(item => item.label.includes(this.searchText));
77
+ }
78
+ get getInvalid() {
79
+ return this.errorModel.isError || this.invalid;
80
+ }
81
+ get readonlyClass() {
82
+ return this.readonly ? 'mrx-input__readonly' : '';
83
+ }
84
+ get checkValidClasses() {
85
+ return this.checkInvalid === false ? 'mrx-input-checked-success' : this.checkInvalid === true ? 'mrx-input-checked-error' : '';
86
+ }
87
+ get getClasses() {
88
+ return `${FormulaEditorSizesEnum[this.size]} ${this.customClasses} ${this.readonlyClass} ${this.checkValidClasses}`;
89
+ }
90
+ get getIconClass() {
91
+ return `${this.size !== 'large' ? 'icon-font-16' : 'icon-font-24'}`;
92
+ }
93
+ get canClean() {
94
+ return !!this.visibleValue.trim();
95
+ }
96
+ get _inputValue() {
97
+ return this.inputElement.nativeElement.textContent || '';
98
+ }
99
+ writeValue(outsideValue) {
100
+ if (outsideValue !== null && this.value === '') {
101
+ const { visibleValue } = this._transformValue(this._modifiedValue(outsideValue));
102
+ this.value = outsideValue;
103
+ this.visibleValue = visibleValue;
104
+ this._detector.detectChanges();
105
+ }
106
+ }
107
+ onInput(event) {
108
+ const { value, searchText } = this._transformValue(this._modifiedValue(this._inputValue), false);
109
+ this.searchText = searchText;
110
+ this._storeCursorPosition();
111
+ }
112
+ onFocus(event) {
113
+ this.isFocused = true;
114
+ this._detector.detectChanges();
115
+ this._placeCaretAtEnd();
116
+ }
117
+ onClear() {
118
+ this.updateValue('');
119
+ this.updateVisibleValue('');
120
+ }
121
+ onBlur(event) {
122
+ this._storeCursorPosition();
123
+ }
124
+ onKeyup(event) {
125
+ event.preventDefault();
126
+ const { value, visibleValue } = this._transformValue(this._modifiedValue(this._inputValue), true);
127
+ this.updateValue(value);
128
+ this.updateVisibleValue(visibleValue);
129
+ this.isFocused = false;
130
+ this.inputElement.nativeElement.blur();
131
+ this._detector.detectChanges();
132
+ }
133
+ insertTag(whiteListItem) {
134
+ this._restoreCursorPosition(this.inputElement.nativeElement);
135
+ this._insertPositionText(`{${whiteListItem.sysName}}`);
136
+ setTimeout(() => {
137
+ const { value, visibleValue } = this._transformValue(this._modifiedValue(this._inputValue), true);
138
+ this.updateValue(value);
139
+ this.updateVisibleValue(visibleValue);
140
+ });
141
+ this._placeCaretAtEnd();
142
+ this.searchText = '';
143
+ }
144
+ updateVisibleValue(insideValue) {
145
+ this.visibleValue = '';
146
+ setTimeout(() => {
147
+ this.visibleValue = insideValue;
148
+ this._storeCursorPosition();
149
+ });
150
+ setTimeout(() => {
151
+ this._detector.detectChanges();
152
+ this._detector.markForCheck();
153
+ }, 1000);
154
+ }
155
+ updateValue(insideValue) {
156
+ this.value = insideValue;
157
+ this.changed.emit(insideValue);
158
+ this.modelChange.emit({ value: insideValue, id: this.uuid });
159
+ this.onChange(insideValue);
160
+ this.onTouched();
161
+ }
162
+ _modifiedValue(value) {
163
+ return value.replace(this._modifiedItemList.regExp, match => {
164
+ return this._modifiedItemList.items[match] ? `{${this._modifiedItemList.items[match]}}` : '';
165
+ });
166
+ }
167
+ _transformValue(content, analise = false) {
168
+ const valueArray = content.split(/[\s\u00A0]+/).filter(Boolean);
169
+ const visibleValueArray = [];
170
+ const originalValueArray = [];
171
+ let isInterpretationError = false;
172
+ let searchText = '';
173
+ valueArray.forEach((item) => {
174
+ const clearedItem = item.trim();
175
+ const findItem = this._itemList.find(v => clearedItem.includes(v.sysName));
176
+ if (findItem) {
177
+ visibleValueArray.push(createTag(findItem.label));
178
+ originalValueArray.push(createTagOutside(findItem.sysName));
179
+ }
180
+ else if (this._bracketList.find(v => v === clearedItem)) {
181
+ visibleValueArray.push(createBracket(clearedItem));
182
+ originalValueArray.push(clearedItem);
183
+ }
184
+ else if (this._operatorList.find(v => v === clearedItem)) {
185
+ visibleValueArray.push(createOperator(clearedItem));
186
+ originalValueArray.push(clearedItem);
187
+ }
188
+ else if (isAn(clearedItem)) {
189
+ visibleValueArray.push(createNumber(clearedItem));
190
+ originalValueArray.push(clearedItem);
191
+ }
192
+ else {
193
+ visibleValueArray.push(clearedItem);
194
+ originalValueArray.push(clearedItem);
195
+ searchText = clearedItem;
196
+ isInterpretationError = true;
197
+ }
198
+ });
199
+ if (analise) {
200
+ this._checkErrors(originalValueArray, isInterpretationError);
201
+ }
202
+ return {
203
+ value: originalValueArray.join(' '),
204
+ visibleValue: visibleValueArray.join(' '),
205
+ searchText: searchText
206
+ };
207
+ }
208
+ _checkErrors(valueArray, isInterpretationError) {
209
+ this._disableError();
210
+ this._toggleError(checkBracketErrors(valueArray));
211
+ this._toggleError(checkDividerErrors(valueArray, this._itemList));
212
+ this._toggleError(checkSequenceErrors(valueArray, this._operatorList, this._bracketList));
213
+ this._toggleError(checkInterpretationErrors(isInterpretationError));
214
+ }
215
+ _toggleError(errorModel) {
216
+ if (!this.errorModel.isError) {
217
+ this.errorModel = errorModel;
218
+ }
219
+ this._detector.detectChanges();
220
+ }
221
+ _disableError() {
222
+ this.errorModel = {
223
+ isError: false,
224
+ errorType: ErrorTypeEnum.Default
225
+ };
226
+ this._detector.detectChanges();
227
+ }
228
+ _insertPositionText(content) {
229
+ const node = document.createTextNode(content);
230
+ try {
231
+ if (this._range) {
232
+ this._range.deleteContents();
233
+ this._range.insertNode(node);
234
+ this._range = this._range.cloneRange();
235
+ this._range.selectNodeContents(node);
236
+ this._range.collapse(false);
237
+ }
238
+ }
239
+ catch (e) {
240
+ }
241
+ }
242
+ _storeCursorPosition() {
243
+ this._selection = window.getSelection();
244
+ if (this._selection && this._selection.rangeCount > 0) {
245
+ this._range = this._selection.getRangeAt(0);
246
+ this._cursorPosition.startContainer = this._range.startContainer;
247
+ this._cursorPosition.endContainer = this._range.endContainer;
248
+ this._cursorPosition.startOffset = this._range.startOffset;
249
+ this._cursorPosition.endOffset = this._range.endOffset;
250
+ }
251
+ this._detector.detectChanges();
252
+ }
253
+ _restoreCursorPosition(element) {
254
+ this._range = document.createRange();
255
+ if (this._cursorPosition.startContainer && this._cursorPosition.endContainer) {
256
+ this._range.setStart(this._cursorPosition.startContainer, this._cursorPosition.startOffset);
257
+ this._range.setEnd(this._cursorPosition.endContainer, this._cursorPosition.endOffset);
258
+ }
259
+ }
260
+ _placeCaretAtEnd() {
261
+ setTimeout(() => {
262
+ this._range = document.createRange();
263
+ this._selection = document.getSelection();
264
+ if (this._selection) {
265
+ this._range.selectNodeContents(this.inputElement.nativeElement);
266
+ this._range.collapse(false);
267
+ this._selection.removeAllRanges();
268
+ this._selection.addRange(this._range);
269
+ this.inputElement.nativeElement.focus();
270
+ }
271
+ });
272
+ }
273
+ clickOut(event) {
274
+ if (!this.eRef.nativeElement.contains(event.target) && this.isFocused) {
275
+ const { value, visibleValue } = this._transformValue(this._modifiedValue(this._inputValue), true);
276
+ this.updateValue(value);
277
+ this.updateVisibleValue(visibleValue);
278
+ this.isFocused = false;
279
+ this._detector.detectChanges();
280
+ }
281
+ }
282
+ registerOnChange(fn) {
283
+ this.onChange = fn;
284
+ }
285
+ registerOnTouched(fn) {
286
+ this.onTouched = fn;
287
+ }
288
+ onChange = (value) => {
289
+ };
290
+ onTouched = () => {
291
+ };
292
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormulaEditorComponent, deps: [{ token: DOCUMENT }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
293
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormulaEditorComponent, selector: "mrx-formula-editor", inputs: { fields: "fields", disabled: "disabled", readonly: "readonly", placeholder: "placeholder", customClasses: "customClasses", size: "size", invalid: "invalid", invalidMessage: "invalidMessage", checkInvalid: "checkInvalid", items: "items" }, outputs: { changed: "changed", blurred: "blurred", modelChange: "modelChange" }, host: { listeners: { "document:click": "clickOut($event)" } }, providers: [{
294
+ provide: NG_VALUE_ACCESSOR,
295
+ useExisting: forwardRef(() => FormulaEditorComponent),
296
+ multi: true
297
+ }], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true, static: true }], ngImport: i0, template: "<div\r\n class=\"mrx-formula-editor\"\r\n [class.mrx-input-error]=\"getInvalid\"\r\n [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n [class]=\"getClasses\"\r\n>\r\n <div class=\"mrx-formula-editor__wrapper\">\r\n <div\r\n [innerHTML]=\"visibleValue.trim() | safe\"\r\n #inputElement\r\n class=\"mrx-formula-editor__box\"\r\n contenteditable=\"true\"\r\n [attr.data-ph]=\"placeholder\"\r\n (input)=\"onInput($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (keydown.enter)=\"onKeyup($event)\"\r\n (keydown.tab)=\"onKeyup($event)\"\r\n ></div>\r\n\r\n <div class=\"mrx-formula-editor__clear\" *ngIf=\"canClean\" (click)=\"onClear()\">\r\n <div class=\"mrx-icon icon-close\" [class]=\"getIconClass\"></div>\r\n </div>\r\n\r\n <div class=\"mrx-formula-editor__popup\" *ngIf=\"isFocused\">\r\n <ng-container *ngIf=\"errorModel.isError && isFocused\">\r\n <div class=\"mrx-formula-editor__popup--error\">\r\n {{ getErrorMessage }}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"filteredList.length; else emptyList\">\r\n <div\r\n class=\"mrx-formula-editor__popup--row\"\r\n *ngFor=\"let item of filteredList\"\r\n (click)=\"insertTag(item); $event.stopPropagation()\"\r\n >\r\n {{ item.dropLabel || item.label }}\r\n </div>\r\n </ng-container>\r\n <ng-template #emptyList>\r\n <div class=\"mrx-formula-editor__popup--row\">\r\n \u041D\u0435\u0442 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <mrx-error-message\r\n *ngIf=\"getInvalid && getErrorMessage && !isFocused\"\r\n [invalidMessage]=\"getErrorMessage\"\r\n ></mrx-error-message>\r\n\r\n <mrx-save-state [id]=\"uuid\" [fields]=\"fields\"></mrx-save-state>\r\n</div>\r\n", styles: [".mrx-formula-editor{position:relative}.mrx-formula-editor__box{border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1, 4px);outline:none;color:var(--neutral-text-primary, #262626);transition:outline-width .2s,border .2s;-webkit-user-modify:read-write;overflow-wrap:break-word;-webkit-line-break:after-white-space}.mrx-formula-editor__box:focus,.mrx-formula-editor__box:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-formula-editor__box:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-formula-editor__wrapper{position:relative}.mrx-formula-editor__clear{position:absolute;top:12px;right:12px;cursor:pointer}.mrx-formula-editor__box ::ng-deep .tag{display:inline-flex;cursor:default;-webkit-user-modify:read-only}.mrx-formula-editor__box ::ng-deep .argument{border-radius:var(--border-radius-1, 4px);background:var(--brand-bg-secondary-default, #EDF5FF)}.mrx-formula-editor__box ::ng-deep .bracket{color:var(--neutral-text-tertiary, #71767E)}.mrx-formula-editor__box ::ng-deep .operator{color:var(--system-text-attention, #AC5C06)}.mrx-formula-editor__box ::ng-deep .number{color:var(--system-text-negative, #8E2100)}.mrx-formula-editor.mrx-formula-editor-lg .mrx-formula-editor__box{padding:5px 44px 5px var(--spacing-2, 8px);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:36px}.mrx-formula-editor.mrx-formula-editor-lg .mrx-formula-editor__box::ng-deep .tag.-large{font-family:var(--body-lg-font-family, \"PT Sans\");font-size:var(--body-lg-font-size, 16px);font-weight:var(--body-lg-font-weight, 400);line-height:var(--body-lg-line-height, 24px)}.mrx-formula-editor.mrx-formula-editor-lg .mrx-formula-editor__box::ng-deep .tag.-medium{font-family:var(--body-md-font-family, \"PT Sans\");font-size:var(--body-md-font-size, 14px);font-weight:var(--body-md-font-weight, 400);line-height:var(--body-md-line-height, 20px)}.mrx-formula-editor.mrx-formula-editor-lg .mrx-formula-editor__box::ng-deep .tag.argument{padding:6px 12px;margin:0 2px}.mrx-formula-editor.mrx-formula-editor-md .mrx-formula-editor__box{padding:5px 36px 5px var(--spacing-2, 8px);font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:28px}.mrx-formula-editor.mrx-formula-editor-md .mrx-formula-editor__box::ng-deep .tag.-large{font-family:var(--body-md-font-family, \"PT Sans\");font-size:var(--body-md-font-size, 14px);font-weight:var(--body-md-font-weight, 400);line-height:var(--body-md-line-height, 20px)}.mrx-formula-editor.mrx-formula-editor-md .mrx-formula-editor__box::ng-deep .tag.-medium{font-family:var(--body-sm-font-family, \"PT Sans\");font-size:var(--body-sm-font-size, 12px);font-weight:var(--body-sm-font-weight, 400);line-height:var(--body-sm-line-height, 16px)}.mrx-formula-editor.mrx-formula-editor-md .mrx-formula-editor__box::ng-deep .tag.argument{padding:4px 8px;margin:0 2px}.mrx-formula-editor.mrx-formula-editor-sm .mrx-formula-editor__box{padding:5px 36px 5px var(--spacing-2, 8px);font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:28px}.mrx-formula-editor.mrx-formula-editor-sm .mrx-formula-editor__box::ng-deep .tag.-large{font-family:var(--body-md-font-family, \"PT Sans\");font-size:var(--body-md-font-size, 14px);font-weight:var(--body-md-font-weight, 400);line-height:var(--body-md-line-height, 20px)}.mrx-formula-editor.mrx-formula-editor-sm .mrx-formula-editor__box::ng-deep .tag.-medium{font-family:var(--body-sm-font-family, \"PT Sans\");font-size:var(--body-sm-font-size, 12px);font-weight:var(--body-sm-font-weight, 400);line-height:var(--body-sm-line-height, 16px)}.mrx-formula-editor.mrx-formula-editor-sm .mrx-formula-editor__box::ng-deep .tag.argument{padding:4px 8px;margin:0 2px}.mrx-formula-editor__popup{position:absolute;z-index:99;width:100%;border-radius:var(--border-radius-1);background:var(--neutral-bg-island-default, #F8F9FA);box-shadow:0 1px 4px #3a3a3a4d;background-color:#fff;max-height:240px;overflow-x:hidden;overflow-y:auto;margin-top:4px}.mrx-formula-editor__popup--error{padding:var(--spacing-2) var(--spacing-4);font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--system-text-negative, #8E2100)}.mrx-formula-editor__popup--row{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);padding:calc(var(--spacing-2) + var(--spacing-half)) var(--spacing-4);white-space:normal;transition:background-color .2s}.mrx-formula-editor__popup--row:hover{cursor:pointer;background-color:var(--Bg2)!important}.mrx-formula-editor__box:empty:not(:focus):before{content:attr(data-ph);color:var(--neutral-text-tertiary, #71767E);padding-left:8px}.mrx-formula-editor.-disabled .mrx-formula-editor__box{background-color:var(--neutral-bg-disabled, #EEF0F4);color:var(--neutral-text-tertiary, #71767E);pointer-events:none}.mrx-formula-editor.-readonly .mrx-formula-editor__box{background-color:var(--neutral-bg-disabled, #EEF0F4);color:var(--neutral-text-primary, #262626);pointer-events:none}.mrx-formula-editor.mrx-input-error .mrx-formula-editor__box{border-color:var(--system-bg-controls-negative-default)}.mrx-formula-editor.mrx-input-error .mrx-formula-editor__box:hover{border:var(--border-width-default) solid var(--system-bg-controls-negative-default)}.mrx-formula-editor.mrx-input-checked-error .mrx-formula-editor__box{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}.mrx-formula-editor.mrx-input-checked-error .mrx-formula-editor__box:hover{border:var(--border-width-default) solid var(--system-bg-controls-negative-default)}.mrx-formula-editor.mrx-input-checked-success .mrx-formula-editor__box{background-color:var(--system-bg-positive-secondary);border-color:var(--system-bg-controls-positive-default)}.mrx-formula-editor.mrx-input-checked-success .mrx-formula-editor__box:hover{border:var(--border-width-default) solid var(--system-bg-controls-positive-default)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ErrorMessageComponent, selector: "mrx-error-message", inputs: ["invalid", "invalidMessage", "customClasses"] }, { kind: "component", type: i3.SaveStateComponent, selector: "mrx-save-state", inputs: ["type", "fields", "id"] }, { kind: "pipe", type: i4.SafePipe, name: "safe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
298
+ }
299
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormulaEditorComponent, decorators: [{
300
+ type: Component,
301
+ args: [{ selector: 'mrx-formula-editor', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{
302
+ provide: NG_VALUE_ACCESSOR,
303
+ useExisting: forwardRef(() => FormulaEditorComponent),
304
+ multi: true
305
+ }], template: "<div\r\n class=\"mrx-formula-editor\"\r\n [class.mrx-input-error]=\"getInvalid\"\r\n [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n [class]=\"getClasses\"\r\n>\r\n <div class=\"mrx-formula-editor__wrapper\">\r\n <div\r\n [innerHTML]=\"visibleValue.trim() | safe\"\r\n #inputElement\r\n class=\"mrx-formula-editor__box\"\r\n contenteditable=\"true\"\r\n [attr.data-ph]=\"placeholder\"\r\n (input)=\"onInput($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (keydown.enter)=\"onKeyup($event)\"\r\n (keydown.tab)=\"onKeyup($event)\"\r\n ></div>\r\n\r\n <div class=\"mrx-formula-editor__clear\" *ngIf=\"canClean\" (click)=\"onClear()\">\r\n <div class=\"mrx-icon icon-close\" [class]=\"getIconClass\"></div>\r\n </div>\r\n\r\n <div class=\"mrx-formula-editor__popup\" *ngIf=\"isFocused\">\r\n <ng-container *ngIf=\"errorModel.isError && isFocused\">\r\n <div class=\"mrx-formula-editor__popup--error\">\r\n {{ getErrorMessage }}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"filteredList.length; else emptyList\">\r\n <div\r\n class=\"mrx-formula-editor__popup--row\"\r\n *ngFor=\"let item of filteredList\"\r\n (click)=\"insertTag(item); $event.stopPropagation()\"\r\n >\r\n {{ item.dropLabel || item.label }}\r\n </div>\r\n </ng-container>\r\n <ng-template #emptyList>\r\n <div class=\"mrx-formula-editor__popup--row\">\r\n \u041D\u0435\u0442 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <mrx-error-message\r\n *ngIf=\"getInvalid && getErrorMessage && !isFocused\"\r\n [invalidMessage]=\"getErrorMessage\"\r\n ></mrx-error-message>\r\n\r\n <mrx-save-state [id]=\"uuid\" [fields]=\"fields\"></mrx-save-state>\r\n</div>\r\n", styles: [".mrx-formula-editor{position:relative}.mrx-formula-editor__box{border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1, 4px);outline:none;color:var(--neutral-text-primary, #262626);transition:outline-width .2s,border .2s;-webkit-user-modify:read-write;overflow-wrap:break-word;-webkit-line-break:after-white-space}.mrx-formula-editor__box:focus,.mrx-formula-editor__box:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-formula-editor__box:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-formula-editor__wrapper{position:relative}.mrx-formula-editor__clear{position:absolute;top:12px;right:12px;cursor:pointer}.mrx-formula-editor__box ::ng-deep .tag{display:inline-flex;cursor:default;-webkit-user-modify:read-only}.mrx-formula-editor__box ::ng-deep .argument{border-radius:var(--border-radius-1, 4px);background:var(--brand-bg-secondary-default, #EDF5FF)}.mrx-formula-editor__box ::ng-deep .bracket{color:var(--neutral-text-tertiary, #71767E)}.mrx-formula-editor__box ::ng-deep .operator{color:var(--system-text-attention, #AC5C06)}.mrx-formula-editor__box ::ng-deep .number{color:var(--system-text-negative, #8E2100)}.mrx-formula-editor.mrx-formula-editor-lg .mrx-formula-editor__box{padding:5px 44px 5px var(--spacing-2, 8px);font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:36px}.mrx-formula-editor.mrx-formula-editor-lg .mrx-formula-editor__box::ng-deep .tag.-large{font-family:var(--body-lg-font-family, \"PT Sans\");font-size:var(--body-lg-font-size, 16px);font-weight:var(--body-lg-font-weight, 400);line-height:var(--body-lg-line-height, 24px)}.mrx-formula-editor.mrx-formula-editor-lg .mrx-formula-editor__box::ng-deep .tag.-medium{font-family:var(--body-md-font-family, \"PT Sans\");font-size:var(--body-md-font-size, 14px);font-weight:var(--body-md-font-weight, 400);line-height:var(--body-md-line-height, 20px)}.mrx-formula-editor.mrx-formula-editor-lg .mrx-formula-editor__box::ng-deep .tag.argument{padding:6px 12px;margin:0 2px}.mrx-formula-editor.mrx-formula-editor-md .mrx-formula-editor__box{padding:5px 36px 5px var(--spacing-2, 8px);font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:28px}.mrx-formula-editor.mrx-formula-editor-md .mrx-formula-editor__box::ng-deep .tag.-large{font-family:var(--body-md-font-family, \"PT Sans\");font-size:var(--body-md-font-size, 14px);font-weight:var(--body-md-font-weight, 400);line-height:var(--body-md-line-height, 20px)}.mrx-formula-editor.mrx-formula-editor-md .mrx-formula-editor__box::ng-deep .tag.-medium{font-family:var(--body-sm-font-family, \"PT Sans\");font-size:var(--body-sm-font-size, 12px);font-weight:var(--body-sm-font-weight, 400);line-height:var(--body-sm-line-height, 16px)}.mrx-formula-editor.mrx-formula-editor-md .mrx-formula-editor__box::ng-deep .tag.argument{padding:4px 8px;margin:0 2px}.mrx-formula-editor.mrx-formula-editor-sm .mrx-formula-editor__box{padding:5px 36px 5px var(--spacing-2, 8px);font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:28px}.mrx-formula-editor.mrx-formula-editor-sm .mrx-formula-editor__box::ng-deep .tag.-large{font-family:var(--body-md-font-family, \"PT Sans\");font-size:var(--body-md-font-size, 14px);font-weight:var(--body-md-font-weight, 400);line-height:var(--body-md-line-height, 20px)}.mrx-formula-editor.mrx-formula-editor-sm .mrx-formula-editor__box::ng-deep .tag.-medium{font-family:var(--body-sm-font-family, \"PT Sans\");font-size:var(--body-sm-font-size, 12px);font-weight:var(--body-sm-font-weight, 400);line-height:var(--body-sm-line-height, 16px)}.mrx-formula-editor.mrx-formula-editor-sm .mrx-formula-editor__box::ng-deep .tag.argument{padding:4px 8px;margin:0 2px}.mrx-formula-editor__popup{position:absolute;z-index:99;width:100%;border-radius:var(--border-radius-1);background:var(--neutral-bg-island-default, #F8F9FA);box-shadow:0 1px 4px #3a3a3a4d;background-color:#fff;max-height:240px;overflow-x:hidden;overflow-y:auto;margin-top:4px}.mrx-formula-editor__popup--error{padding:var(--spacing-2) var(--spacing-4);font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--system-text-negative, #8E2100)}.mrx-formula-editor__popup--row{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);padding:calc(var(--spacing-2) + var(--spacing-half)) var(--spacing-4);white-space:normal;transition:background-color .2s}.mrx-formula-editor__popup--row:hover{cursor:pointer;background-color:var(--Bg2)!important}.mrx-formula-editor__box:empty:not(:focus):before{content:attr(data-ph);color:var(--neutral-text-tertiary, #71767E);padding-left:8px}.mrx-formula-editor.-disabled .mrx-formula-editor__box{background-color:var(--neutral-bg-disabled, #EEF0F4);color:var(--neutral-text-tertiary, #71767E);pointer-events:none}.mrx-formula-editor.-readonly .mrx-formula-editor__box{background-color:var(--neutral-bg-disabled, #EEF0F4);color:var(--neutral-text-primary, #262626);pointer-events:none}.mrx-formula-editor.mrx-input-error .mrx-formula-editor__box{border-color:var(--system-bg-controls-negative-default)}.mrx-formula-editor.mrx-input-error .mrx-formula-editor__box:hover{border:var(--border-width-default) solid var(--system-bg-controls-negative-default)}.mrx-formula-editor.mrx-input-checked-error .mrx-formula-editor__box{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}.mrx-formula-editor.mrx-input-checked-error .mrx-formula-editor__box:hover{border:var(--border-width-default) solid var(--system-bg-controls-negative-default)}.mrx-formula-editor.mrx-input-checked-success .mrx-formula-editor__box{background-color:var(--system-bg-positive-secondary);border-color:var(--system-bg-controls-positive-default)}.mrx-formula-editor.mrx-input-checked-success .mrx-formula-editor__box:hover{border:var(--border-width-default) solid var(--system-bg-controls-positive-default)}\n"] }]
306
+ }], ctorParameters: () => [{ type: Document, decorators: [{
307
+ type: Inject,
308
+ args: [DOCUMENT]
309
+ }] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { fields: [{
310
+ type: Input
311
+ }], disabled: [{
312
+ type: Input
313
+ }], readonly: [{
314
+ type: Input
315
+ }], placeholder: [{
316
+ type: Input
317
+ }], customClasses: [{
318
+ type: Input
319
+ }], size: [{
320
+ type: Input
321
+ }], invalid: [{
322
+ type: Input
323
+ }], invalidMessage: [{
324
+ type: Input
325
+ }], checkInvalid: [{
326
+ type: Input
327
+ }], items: [{
328
+ type: Input
329
+ }], inputElement: [{
330
+ type: ViewChild,
331
+ args: ['inputElement', { static: true }]
332
+ }], changed: [{
333
+ type: Output
334
+ }], blurred: [{
335
+ type: Output
336
+ }], modelChange: [{
337
+ type: Output
338
+ }], clickOut: [{
339
+ type: HostListener,
340
+ args: ['document:click', ['$event']]
341
+ }] } });
342
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybXVsYS1lZGl0b3IvZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybXVsYS1lZGl0b3IvZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQWMsWUFBWSxFQUNuQyxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQ3ZDLE1BQU0sRUFBRSxTQUFTLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4SCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFekQsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNwQixNQUFNLCtCQUErQixDQUFDO0FBRXZDLE9BQU8sRUFBRSxzQkFBc0IsRUFBMkIsTUFBTSxrQ0FBa0MsQ0FBQzs7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QkFBN0IsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUdGLEtBQUs7c0JBRFIsS0FBSztnQkFlcUMsWUFBWTtzQkFBdEQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUV4QixPQUFPO3NCQUF2QixNQUFNO2dCQUNVLE9BQU87c0JBQXZCLE1BQU07Z0JBQ1UsV0FBVztzQkFBM0IsTUFBTTtnQkEwUVAsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZiwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LFxyXG4gIE91dHB1dCwgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBFcnJvck1lc3NhZ2VzRW51bSwgRXJyb3JUeXBlRW51bSB9IGZyb20gJy4vZW51bXMvZXJyb3ItbWVzc2FnZXMuZW51bSc7XHJcbmltcG9ydCB7IGNyZWF0ZUJyYWNrZXQsIGNyZWF0ZU51bWJlciwgY3JlYXRlT3BlcmF0b3IsIGNyZWF0ZVRhZywgY3JlYXRlVGFnT3V0c2lkZSB9IGZyb20gJy4vaGVscGVycy9jcmVhdGUtdGFncy5oZWxwZXInO1xyXG5pbXBvcnQgeyBpc0FuIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9pcy1udW1iZXIuaGVscGVyJztcclxuaW1wb3J0IHsgV2hpdGVMaXN0SXRlbU1vZGVsLCBDaGVja0Vycm9yUmVzdWx0TW9kZWwgfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7XHJcbiAgY2hlY2tCcmFja2V0RXJyb3JzLFxyXG4gIGNoZWNrRGl2aWRlckVycm9ycyxcclxuICBjaGVja0ludGVycHJldGF0aW9uRXJyb3JzLFxyXG4gIGNoZWNrU2VxdWVuY2VFcnJvcnNcclxufSBmcm9tICcuL2hlbHBlcnMvY2hlY2stZXJyb3JzLmhlbHBlcic7XHJcbmltcG9ydCB7IEZvcm11bGFFZGl0b3JWYWx1ZVR5cGVzLCBGb3JtdWxhRWRpdG9yVmFsdWVXaXRoSWQgfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IEZvcm11bGFFZGl0b3JTaXplc0VudW0sIEZvcm11bGFFZGl0b3JTaXplc1R5cGVzIH0gZnJvbSAnLi9lbnVtcy9mb3JtdWxhLWVkaXRvci1zaXplLmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtZm9ybXVsYS1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtdWxhLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZvcm11bGFFZGl0b3JDb21wb25lbnQpLFxyXG4gICAgbXVsdGk6IHRydWVcclxuICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybXVsYUVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBwcml2YXRlIF9yYW5nZTogYW55O1xyXG4gIHByaXZhdGUgX3NlbGVjdGlvbjogU2VsZWN0aW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfY3Vyc29yUG9zaXRpb246IHtcclxuICAgIHN0YXJ0Q29udGFpbmVyOiBOb2RlIHwgbnVsbCxcclxuICAgIGVuZENvbnRhaW5lcjogTm9kZSB8IG51bGwsXHJcbiAgICBzdGFydE9mZnNldDogbnVtYmVyLFxyXG4gICAgZW5kT2Zmc2V0OiBudW1iZXJcclxuICB9ID0ge1xyXG4gICAgc3RhcnRDb250YWluZXI6IG51bGwsXHJcbiAgICBlbmRDb250YWluZXI6IG51bGwsXHJcbiAgICBzdGFydE9mZnNldDogMCxcclxuICAgIGVuZE9mZnNldDogMFxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgc2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIHByaXZhdGUgX29wZXJhdG9yTGlzdDogc3RyaW5nW10gPSBbJysnLCAnLScsICcqJywgJy8nXTtcclxuICBwcml2YXRlIF9icmFja2V0TGlzdDogc3RyaW5nW10gPSBbJygnLCAnKSddO1xyXG4gIHByaXZhdGUgX2l0ZW1MaXN0OiBXaGl0ZUxpc3RJdGVtTW9kZWxbXSA9IFtdO1xyXG4gIHByaXZhdGUgX21vZGlmaWVkSXRlbUxpc3Q6IHsgaXRlbXM6IHsgW3A6IHN0cmluZ106IHN0cmluZyB9LCByZWdFeHA6IFJlZ0V4cCB9ID0ge1xyXG4gICAgaXRlbXM6IHt9LFxyXG4gICAgcmVnRXhwOiBuZXcgUmVnRXhwKCcnKSxcclxuICB9O1xyXG5cclxuICBwdWJsaWMgdmFsdWUgPSAnJztcclxuICBwdWJsaWMgdmlzaWJsZVZhbHVlID0gJyc7XHJcblxyXG4gIHB1YmxpYyBpc0ZvY3VzZWQgPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGVycm9yTW9kZWw6IENoZWNrRXJyb3JSZXN1bHRNb2RlbCA9IHtcclxuICAgIGlzRXJyb3I6IGZhbHNlLFxyXG4gICAgZXJyb3JUeXBlOiBFcnJvclR5cGVFbnVtLkRlZmF1bHRcclxuICB9O1xyXG5cclxuICAvLyBTQVZFIFNUQVRFXHJcbiAgcHVibGljIHV1aWQ6IHN0cmluZyA9IHV1aWR2NCgpO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZHM6IEZpZWxkW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUNsYXNzZXMgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgc2l6ZTogRm9ybXVsYUVkaXRvclNpemVzVHlwZXMgPSAnbGFyZ2UnO1xyXG5cclxuICAvLyBWQUxJREFURVxyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWRNZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjaGVja0ludmFsaWQ6IHRydWUgfCBmYWxzZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBpdGVtcyhpdGVtczogV2hpdGVMaXN0SXRlbU1vZGVsW10pIHtcclxuICAgIGNvbnN0IGl0ZW1zTWFwID0gT2JqZWN0LmZyb21FbnRyaWVzKGl0ZW1zLm1hcChvYmogPT4gW29iai5sYWJlbCwgb2JqLnN5c05hbWVdKSk7XHJcblxyXG4gICAgdGhpcy5faXRlbUxpc3QgPSBpdGVtcztcclxuICAgIHRoaXMuX21vZGlmaWVkSXRlbUxpc3QuaXRlbXMgPSBpdGVtc01hcDtcclxuICAgIHRoaXMuX21vZGlmaWVkSXRlbUxpc3QucmVnRXhwID0gbmV3IFJlZ0V4cChpdGVtcy5tYXAocyA9PiBzLmxhYmVsKS5qb2luKCd8JyksICdnJyk7XHJcblxyXG4gICAgY29uc3Qge3Zpc2libGVWYWx1ZX0gPSB0aGlzLl90cmFuc2Zvcm1WYWx1ZSh0aGlzLl9tb2RpZmllZFZhbHVlKHRoaXMuX2lucHV0VmFsdWUpLCB0cnVlKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVWYWx1ZSh2aXNpYmxlVmFsdWUpO1xyXG5cclxuICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcsIHtzdGF0aWM6IHRydWV9KSBpbnB1dEVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxGb3JtdWxhRWRpdG9yVmFsdWVUeXBlcz4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm11bGFFZGl0b3JWYWx1ZVR5cGVzPigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgYmx1cnJlZDogRXZlbnRFbWl0dGVyPEZvcm11bGFFZGl0b3JWYWx1ZVdpdGhJZD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm11bGFFZGl0b3JWYWx1ZVdpdGhJZD4oKTtcclxuICBAT3V0cHV0KCkgcHVibGljIG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Rm9ybXVsYUVkaXRvclZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybXVsYUVkaXRvclZhbHVlV2l0aElkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxyXG4gICAgcHJpdmF0ZSBfZGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBlUmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcgfCBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkTWVzc2FnZSB8fCBFcnJvck1lc3NhZ2VzRW51bVt0aGlzLmVycm9yTW9kZWwuZXJyb3JUeXBlXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZmlsdGVyZWRMaXN0KCk6IFdoaXRlTGlzdEl0ZW1Nb2RlbFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9pdGVtTGlzdC5maWx0ZXIoaXRlbSA9PiBpdGVtLmxhYmVsLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGV4dCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRJbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZXJyb3JNb2RlbC5pc0Vycm9yIHx8IHRoaXMuaW52YWxpZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcmVhZG9ubHlDbGFzcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucmVhZG9ubHkgPyAnbXJ4LWlucHV0X19yZWFkb25seScgOiAnJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2hlY2tWYWxpZENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrSW52YWxpZCA9PT0gZmFsc2UgPyAnbXJ4LWlucHV0LWNoZWNrZWQtc3VjY2VzcycgOiB0aGlzLmNoZWNrSW52YWxpZCA9PT0gdHJ1ZSA/ICdtcngtaW5wdXQtY2hlY2tlZC1lcnJvcicgOiAnJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Q2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke0Zvcm11bGFFZGl0b3JTaXplc0VudW1bdGhpcy5zaXplXX0gJHt0aGlzLmN1c3RvbUNsYXNzZXN9ICR7dGhpcy5yZWFkb25seUNsYXNzfSAke3RoaXMuY2hlY2tWYWxpZENsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0SWNvbkNsYXNzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5zaXplICE9PSAnbGFyZ2UnID8gJ2ljb24tZm9udC0xNicgOiAnaWNvbi1mb250LTI0J31gO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjYW5DbGVhbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMudmlzaWJsZVZhbHVlLnRyaW0oKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IF9pbnB1dFZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudCB8fCAnJztcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUob3V0c2lkZVZhbHVlOiBGb3JtdWxhRWRpdG9yVmFsdWVUeXBlcyk6IHZvaWQge1xyXG4gICAgaWYgKG91dHNpZGVWYWx1ZSAhPT0gbnVsbCAmJiB0aGlzLnZhbHVlID09PSAnJykge1xyXG4gICAgICBjb25zdCB7dmlzaWJsZVZhbHVlfSA9IHRoaXMuX3RyYW5zZm9ybVZhbHVlKHRoaXMuX21vZGlmaWVkVmFsdWUob3V0c2lkZVZhbHVlKSk7XHJcblxyXG4gICAgICB0aGlzLnZhbHVlID0gb3V0c2lkZVZhbHVlO1xyXG4gICAgICB0aGlzLnZpc2libGVWYWx1ZSA9IHZpc2libGVWYWx1ZTtcclxuXHJcbiAgICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCB7dmFsdWUsIHNlYXJjaFRleHR9ID0gdGhpcy5fdHJhbnNmb3JtVmFsdWUodGhpcy5fbW9kaWZpZWRWYWx1ZSh0aGlzLl9pbnB1dFZhbHVlKSwgZmFsc2UpO1xyXG5cclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHNlYXJjaFRleHQ7XHJcblxyXG4gICAgdGhpcy5fc3RvcmVDdXJzb3JQb3NpdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdGhpcy5fcGxhY2VDYXJldEF0RW5kKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsZWFyKCkge1xyXG4gICAgdGhpcy51cGRhdGVWYWx1ZSgnJyk7XHJcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVWYWx1ZSgnJyk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLl9zdG9yZUN1cnNvclBvc2l0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbktleXVwKGV2ZW50OiBhbnkpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgY29uc3Qge3ZhbHVlLCB2aXNpYmxlVmFsdWV9ID0gdGhpcy5fdHJhbnNmb3JtVmFsdWUodGhpcy5fbW9kaWZpZWRWYWx1ZSh0aGlzLl9pbnB1dFZhbHVlKSwgdHJ1ZSk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XHJcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVWYWx1ZSh2aXNpYmxlVmFsdWUpO1xyXG5cclxuICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcblxyXG4gICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgaW5zZXJ0VGFnKHdoaXRlTGlzdEl0ZW06IFdoaXRlTGlzdEl0ZW1Nb2RlbCkge1xyXG4gICAgdGhpcy5fcmVzdG9yZUN1cnNvclBvc2l0aW9uKHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5faW5zZXJ0UG9zaXRpb25UZXh0KGB7JHt3aGl0ZUxpc3RJdGVtLnN5c05hbWV9fWApO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCB7dmFsdWUsIHZpc2libGVWYWx1ZX0gPSB0aGlzLl90cmFuc2Zvcm1WYWx1ZSh0aGlzLl9tb2RpZmllZFZhbHVlKHRoaXMuX2lucHV0VmFsdWUpLCB0cnVlKTtcclxuXHJcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVWYWx1ZSh2aXNpYmxlVmFsdWUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fcGxhY2VDYXJldEF0RW5kKCk7XHJcblxyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVWaXNpYmxlVmFsdWUoaW5zaWRlVmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy52aXNpYmxlVmFsdWUgPSAnJztcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy52aXNpYmxlVmFsdWUgPSBpbnNpZGVWYWx1ZTtcclxuXHJcbiAgICAgIHRoaXMuX3N0b3JlQ3Vyc29yUG9zaXRpb24oKTtcclxuICAgIH0pXHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5fZGV0ZWN0b3IubWFya0ZvckNoZWNrKClcclxuICAgIH0sIDEwMDApXHJcbiAgfVxyXG5cclxuICB1cGRhdGVWYWx1ZShpbnNpZGVWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnZhbHVlID0gaW5zaWRlVmFsdWU7XHJcbiAgICB0aGlzLmNoYW5nZWQuZW1pdChpbnNpZGVWYWx1ZSk7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoe3ZhbHVlOiBpbnNpZGVWYWx1ZSwgaWQ6IHRoaXMudXVpZH0pO1xyXG4gICAgdGhpcy5vbkNoYW5nZShpbnNpZGVWYWx1ZSk7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbW9kaWZpZWRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKHRoaXMuX21vZGlmaWVkSXRlbUxpc3QucmVnRXhwLCBtYXRjaCA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9tb2RpZmllZEl0ZW1MaXN0Lml0ZW1zW21hdGNoXSA/IGB7JHt0aGlzLl9tb2RpZmllZEl0ZW1MaXN0Lml0ZW1zW21hdGNoXX19YCA6ICcnO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90cmFuc2Zvcm1WYWx1ZShjb250ZW50OiBzdHJpbmcsIGFuYWxpc2U6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3QgdmFsdWVBcnJheSA9IGNvbnRlbnQuc3BsaXQoL1tcXHNcXHUwMEEwXSsvKS5maWx0ZXIoQm9vbGVhbik7XHJcblxyXG4gICAgY29uc3QgdmlzaWJsZVZhbHVlQXJyYXk6IHN0cmluZ1tdID0gW107XHJcbiAgICBjb25zdCBvcmlnaW5hbFZhbHVlQXJyYXk6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgbGV0IGlzSW50ZXJwcmV0YXRpb25FcnJvciA9IGZhbHNlO1xyXG5cclxuICAgIGxldCBzZWFyY2hUZXh0ID0gJyc7XHJcblxyXG4gICAgdmFsdWVBcnJheS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNsZWFyZWRJdGVtID0gaXRlbS50cmltKCk7XHJcbiAgICAgIGNvbnN0IGZpbmRJdGVtID0gdGhpcy5faXRlbUxpc3QuZmluZCh2ID0+IGNsZWFyZWRJdGVtLmluY2x1ZGVzKHYuc3lzTmFtZSkpO1xyXG5cclxuICAgICAgaWYgKGZpbmRJdGVtKSB7XHJcbiAgICAgICAgdmlzaWJsZVZhbHVlQXJyYXkucHVzaChjcmVhdGVUYWcoZmluZEl0ZW0ubGFiZWwpKTtcclxuICAgICAgICBvcmlnaW5hbFZhbHVlQXJyYXkucHVzaChjcmVhdGVUYWdPdXRzaWRlKGZpbmRJdGVtLnN5c05hbWUpKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9icmFja2V0TGlzdC5maW5kKHYgPT4gdiA9PT0gY2xlYXJlZEl0ZW0pKSB7XHJcbiAgICAgICAgdmlzaWJsZVZhbHVlQXJyYXkucHVzaChjcmVhdGVCcmFja2V0KGNsZWFyZWRJdGVtKSk7XHJcbiAgICAgICAgb3JpZ2luYWxWYWx1ZUFycmF5LnB1c2goY2xlYXJlZEl0ZW0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX29wZXJhdG9yTGlzdC5maW5kKHYgPT4gdiA9PT0gY2xlYXJlZEl0ZW0pKSB7XHJcbiAgICAgICAgdmlzaWJsZVZhbHVlQXJyYXkucHVzaChjcmVhdGVPcGVyYXRvcihjbGVhcmVkSXRlbSkpO1xyXG4gICAgICAgIG9yaWdpbmFsVmFsdWVBcnJheS5wdXNoKGNsZWFyZWRJdGVtKTtcclxuICAgICAgfSBlbHNlIGlmIChpc0FuKGNsZWFyZWRJdGVtKSkge1xyXG4gICAgICAgIHZpc2libGVWYWx1ZUFycmF5LnB1c2goY3JlYXRlTnVtYmVyKGNsZWFyZWRJdGVtKSk7XHJcbiAgICAgICAgb3JpZ2luYWxWYWx1ZUFycmF5LnB1c2goY2xlYXJlZEl0ZW0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZpc2libGVWYWx1ZUFycmF5LnB1c2goY2xlYXJlZEl0ZW0pO1xyXG4gICAgICAgIG9yaWdpbmFsVmFsdWVBcnJheS5wdXNoKGNsZWFyZWRJdGVtKTtcclxuICAgICAgICBzZWFyY2hUZXh0ID0gY2xlYXJlZEl0ZW07XHJcblxyXG4gICAgICAgIGlzSW50ZXJwcmV0YXRpb25FcnJvciA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChhbmFsaXNlKSB7XHJcbiAgICAgIHRoaXMuX2NoZWNrRXJyb3JzKG9yaWdpbmFsVmFsdWVBcnJheSwgaXNJbnRlcnByZXRhdGlvbkVycm9yKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB2YWx1ZTogb3JpZ2luYWxWYWx1ZUFycmF5LmpvaW4oJyAnKSxcclxuICAgICAgdmlzaWJsZVZhbHVlOiB2aXNpYmxlVmFsdWVBcnJheS5qb2luKCcgJyksXHJcbiAgICAgIHNlYXJjaFRleHQ6IHNlYXJjaFRleHRcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jaGVja0Vycm9ycyh2YWx1ZUFycmF5OiBzdHJpbmdbXSwgaXNJbnRlcnByZXRhdGlvbkVycm9yOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9kaXNhYmxlRXJyb3IoKTtcclxuXHJcbiAgICB0aGlzLl90b2dnbGVFcnJvcihjaGVja0JyYWNrZXRFcnJvcnModmFsdWVBcnJheSkpO1xyXG4gICAgdGhpcy5fdG9nZ2xlRXJyb3IoY2hlY2tEaXZpZGVyRXJyb3JzKHZhbHVlQXJyYXksIHRoaXMuX2l0ZW1MaXN0KSk7XHJcbiAgICB0aGlzLl90b2dnbGVFcnJvcihjaGVja1NlcXVlbmNlRXJyb3JzKHZhbHVlQXJyYXksIHRoaXMuX29wZXJhdG9yTGlzdCwgdGhpcy5fYnJhY2tldExpc3QpKTtcclxuICAgIHRoaXMuX3RvZ2dsZUVycm9yKGNoZWNrSW50ZXJwcmV0YXRpb25FcnJvcnMoaXNJbnRlcnByZXRhdGlvbkVycm9yKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90b2dnbGVFcnJvcihlcnJvck1vZGVsOiBDaGVja0Vycm9yUmVzdWx0TW9kZWwpIHtcclxuICAgIGlmICghdGhpcy5lcnJvck1vZGVsLmlzRXJyb3IpIHtcclxuICAgICAgdGhpcy5lcnJvck1vZGVsID0gZXJyb3JNb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kaXNhYmxlRXJyb3IoKSB7XHJcbiAgICB0aGlzLmVycm9yTW9kZWwgPSB7XHJcbiAgICAgIGlzRXJyb3I6IGZhbHNlLFxyXG4gICAgICBlcnJvclR5cGU6IEVycm9yVHlwZUVudW0uRGVmYXVsdFxyXG4gICAgfTtcclxuICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luc2VydFBvc2l0aW9uVGV4dChjb250ZW50OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5fcmFuZ2UpIHtcclxuICAgICAgICB0aGlzLl9yYW5nZS5kZWxldGVDb250ZW50cygpO1xyXG4gICAgICAgIHRoaXMuX3JhbmdlLmluc2VydE5vZGUobm9kZSk7XHJcbiAgICAgICAgdGhpcy5fcmFuZ2UgPSB0aGlzLl9yYW5nZS5jbG9uZVJhbmdlKCk7XHJcbiAgICAgICAgdGhpcy5fcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUpO1xyXG4gICAgICAgIHRoaXMuX3JhbmdlLmNvbGxhcHNlKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3RvcmVDdXJzb3JQb3NpdGlvbigpIHtcclxuICAgIHRoaXMuX3NlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcclxuXHJcbiAgICBpZiAodGhpcy5fc2VsZWN0aW9uICYmIHRoaXMuX3NlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCkge1xyXG4gICAgICB0aGlzLl9yYW5nZSA9IHRoaXMuX3NlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xyXG5cclxuICAgICAgdGhpcy5fY3Vyc29yUG9zaXRpb24uc3RhcnRDb250YWluZXIgPSB0aGlzLl9yYW5nZS5zdGFydENvbnRhaW5lcjtcclxuICAgICAgdGhpcy5fY3Vyc29yUG9zaXRpb24uZW5kQ29udGFpbmVyID0gdGhpcy5fcmFuZ2UuZW5kQ29udGFpbmVyO1xyXG4gICAgICB0aGlzLl9jdXJzb3JQb3NpdGlvbi5zdGFydE9mZnNldCA9IHRoaXMuX3JhbmdlLnN0YXJ0T2Zmc2V0O1xyXG4gICAgICB0aGlzLl9jdXJzb3JQb3NpdGlvbi5lbmRPZmZzZXQgPSB0aGlzLl9yYW5nZS5lbmRPZmZzZXQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZXN0b3JlQ3Vyc29yUG9zaXRpb24oZWxlbWVudDogSFRNTElucHV0RWxlbWVudCkge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLl9jdXJzb3JQb3NpdGlvbi5zdGFydENvbnRhaW5lciAmJiB0aGlzLl9jdXJzb3JQb3NpdGlvbi5lbmRDb250YWluZXIpIHtcclxuICAgICAgdGhpcy5fcmFuZ2Uuc2V0U3RhcnQodGhpcy5fY3Vyc29yUG9zaXRpb24uc3RhcnRDb250YWluZXIsIHRoaXMuX2N1cnNvclBvc2l0aW9uLnN0YXJ0T2Zmc2V0KTtcclxuICAgICAgdGhpcy5fcmFuZ2Uuc2V0RW5kKHRoaXMuX2N1cnNvclBvc2l0aW9uLmVuZENvbnRhaW5lciwgdGhpcy5fY3Vyc29yUG9zaXRpb24uZW5kT2Zmc2V0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3BsYWNlQ2FyZXRBdEVuZCgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9yYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XHJcbiAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IGRvY3VtZW50LmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuX3NlbGVjdGlvbikge1xyXG4gICAgICAgIHRoaXMuX3JhbmdlLnNlbGVjdE5vZGVDb250ZW50cyh0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICB0aGlzLl9yYW5nZS5jb2xsYXBzZShmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbi5hZGRSYW5nZSh0aGlzLl9yYW5nZSk7XHJcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBjbGlja091dChldmVudDogRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiB0aGlzLmlzRm9jdXNlZCkge1xyXG4gICAgICBjb25zdCB7dmFsdWUsIHZpc2libGVWYWx1ZX0gPSB0aGlzLl90cmFuc2Zvcm1WYWx1ZSh0aGlzLl9tb2RpZmllZFZhbHVlKHRoaXMuX2lucHV0VmFsdWUpLCB0cnVlKTtcclxuXHJcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVWYWx1ZSh2aXNpYmxlVmFsdWUpO1xyXG5cclxuICAgICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB7fSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gIH07XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7XHJcbiAgfTtcclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJtcngtZm9ybXVsYS1lZGl0b3JcIlxyXG4gIFtjbGFzcy5tcngtaW5wdXQtZXJyb3JdPVwiZ2V0SW52YWxpZFwiXHJcbiAgW2NsYXNzLi1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgW2NsYXNzLi1yZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgW2NsYXNzXT1cImdldENsYXNzZXNcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cIm1yeC1mb3JtdWxhLWVkaXRvcl9fd3JhcHBlclwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBbaW5uZXJIVE1MXT1cInZpc2libGVWYWx1ZS50cmltKCkgfCBzYWZlXCJcclxuICAgICAgI2lucHV0RWxlbWVudFxyXG4gICAgICBjbGFzcz1cIm1yeC1mb3JtdWxhLWVkaXRvcl9fYm94XCJcclxuICAgICAgY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXHJcbiAgICAgIFthdHRyLmRhdGEtcGhdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcclxuICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxyXG4gICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgKGtleWRvd24uZW50ZXIpPVwib25LZXl1cCgkZXZlbnQpXCJcclxuICAgICAgKGtleWRvd24udGFiKT1cIm9uS2V5dXAoJGV2ZW50KVwiXHJcbiAgICA+PC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1mb3JtdWxhLWVkaXRvcl9fY2xlYXJcIiAqbmdJZj1cImNhbkNsZWFuXCIgKGNsaWNrKT1cIm9uQ2xlYXIoKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LWljb24gaWNvbi1jbG9zZVwiIFtjbGFzc109XCJnZXRJY29uQ2xhc3NcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtcngtZm9ybXVsYS1lZGl0b3JfX3BvcHVwXCIgKm5nSWY9XCJpc0ZvY3VzZWRcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9yTW9kZWwuaXNFcnJvciAmJiBpc0ZvY3VzZWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWZvcm11bGEtZWRpdG9yX19wb3B1cC0tZXJyb3JcIj5cclxuICAgICAgICAgIHt7IGdldEVycm9yTWVzc2FnZSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlcmVkTGlzdC5sZW5ndGg7IGVsc2UgZW1wdHlMaXN0XCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJtcngtZm9ybXVsYS1lZGl0b3JfX3BvcHVwLS1yb3dcIlxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRMaXN0XCJcclxuICAgICAgICAgIChjbGljayk9XCJpbnNlcnRUYWcoaXRlbSk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgaXRlbS5kcm9wTGFiZWwgfHwgaXRlbS5sYWJlbCB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNlbXB0eUxpc3Q+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1mb3JtdWxhLWVkaXRvcl9fcG9wdXAtLXJvd1wiPlxyXG4gICAgICAgICAg0J3QtdGCINGA0LXQt9GD0LvRjNGC0LDRgtC+0LJcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICAgIDxtcngtZXJyb3ItbWVzc2FnZVxyXG4gICAgICAqbmdJZj1cImdldEludmFsaWQgJiYgZ2V0RXJyb3JNZXNzYWdlICYmICFpc0ZvY3VzZWRcIlxyXG4gICAgICBbaW52YWxpZE1lc3NhZ2VdPVwiZ2V0RXJyb3JNZXNzYWdlXCJcclxuICAgID48L21yeC1lcnJvci1tZXNzYWdlPlxyXG5cclxuICAgIDxtcngtc2F2ZS1zdGF0ZSBbaWRdPVwidXVpZFwiIFtmaWVsZHNdPVwiZmllbGRzXCI+PC9tcngtc2F2ZS1zdGF0ZT5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -0,0 +1,44 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormulaEditorComponent } from './formula-editor.component';
4
+ import { CharsLeftModule } from '../../chars-left/chars-left.module';
5
+ import { ErrorMessageModule } from '../../error-message/error-message.module';
6
+ import { FormsModule } from '@angular/forms';
7
+ import { SaveStateModule } from '../../save-state/save-state.module';
8
+ import { SafeModule } from '../../../pipes/safe/safe.module';
9
+ import * as i0 from "@angular/core";
10
+ export class FormulaEditorModule {
11
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormulaEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FormulaEditorModule, declarations: [FormulaEditorComponent], imports: [CommonModule,
13
+ CharsLeftModule,
14
+ ErrorMessageModule,
15
+ FormsModule,
16
+ SaveStateModule,
17
+ SafeModule], exports: [FormulaEditorComponent] });
18
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormulaEditorModule, imports: [CommonModule,
19
+ CharsLeftModule,
20
+ ErrorMessageModule,
21
+ FormsModule,
22
+ SaveStateModule,
23
+ SafeModule] });
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormulaEditorModule, decorators: [{
26
+ type: NgModule,
27
+ args: [{
28
+ declarations: [
29
+ FormulaEditorComponent
30
+ ],
31
+ imports: [
32
+ CommonModule,
33
+ CharsLeftModule,
34
+ ErrorMessageModule,
35
+ FormsModule,
36
+ SaveStateModule,
37
+ SafeModule
38
+ ],
39
+ exports: [
40
+ FormulaEditorComponent
41
+ ]
42
+ }]
43
+ }] });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXVsYS1lZGl0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybXVsYS1lZGl0b3IvZm9ybXVsYS1lZGl0b3IubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFrQjdELE1BQU0sT0FBTyxtQkFBbUI7d0dBQW5CLG1CQUFtQjt5R0FBbkIsbUJBQW1CLGlCQWQ1QixzQkFBc0IsYUFHdEIsWUFBWTtZQUNaLGVBQWU7WUFDZixrQkFBa0I7WUFDbEIsV0FBVztZQUNYLGVBQWU7WUFDZixVQUFVLGFBR1Ysc0JBQXNCO3lHQUdiLG1CQUFtQixZQVg1QixZQUFZO1lBQ1osZUFBZTtZQUNmLGtCQUFrQjtZQUNsQixXQUFXO1lBQ1gsZUFBZTtZQUNmLFVBQVU7OzRGQU1ELG1CQUFtQjtrQkFoQi9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHNCQUFzQjtxQkFDdkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixVQUFVO3FCQUNYO29CQUNELE9BQU8sRUFBRTt3QkFDUCxzQkFBc0I7cUJBQ3ZCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXVsYUVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hhcnNMZWZ0TW9kdWxlIH0gZnJvbSAnLi4vLi4vY2hhcnMtbGVmdC9jaGFycy1sZWZ0Lm1vZHVsZSc7XHJcbmltcG9ydCB7IEVycm9yTWVzc2FnZU1vZHVsZSB9IGZyb20gJy4uLy4uL2Vycm9yLW1lc3NhZ2UvZXJyb3ItbWVzc2FnZS5tb2R1bGUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU2F2ZVN0YXRlTW9kdWxlIH0gZnJvbSAnLi4vLi4vc2F2ZS1zdGF0ZS9zYXZlLXN0YXRlLm1vZHVsZSc7XHJcbmltcG9ydCB7IFNhZmVNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9zYWZlL3NhZmUubW9kdWxlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBGb3JtdWxhRWRpdG9yQ29tcG9uZW50XHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBDaGFyc0xlZnRNb2R1bGUsXHJcbiAgICBFcnJvck1lc3NhZ2VNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFNhdmVTdGF0ZU1vZHVsZSxcclxuICAgIFNhZmVNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIEZvcm11bGFFZGl0b3JDb21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtdWxhRWRpdG9yTW9kdWxlIHsgfVxyXG4iXX0=