tuain-ng-forms-lib 14.0.2 → 14.0.4

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 (99) hide show
  1. package/esm2020/lib/classes/forms/action.mjs +35 -0
  2. package/esm2020/lib/classes/forms/element.mjs +76 -0
  3. package/esm2020/lib/classes/forms/field.mjs +321 -0
  4. package/esm2020/lib/classes/forms/form.constants.mjs +26 -0
  5. package/esm2020/lib/classes/forms/form.mjs +434 -0
  6. package/esm2020/lib/classes/forms/section.mjs +132 -0
  7. package/esm2020/lib/classes/forms/subsection.mjs +70 -0
  8. package/esm2020/lib/classes/forms/table/action.mjs +22 -0
  9. package/esm2020/lib/classes/forms/table/column.mjs +61 -0
  10. package/esm2020/lib/classes/forms/table/row-data.mjs +111 -0
  11. package/esm2020/lib/classes/forms/table/table.mjs +372 -0
  12. package/esm2020/lib/components/elements/action.component.mjs +58 -0
  13. package/esm2020/lib/components/elements/field.component.mjs +90 -0
  14. package/esm2020/lib/components/elements/layout/element.component.mjs +31 -0
  15. package/esm2020/lib/components/elements/layout/form-error.component.mjs +20 -0
  16. package/esm2020/lib/components/elements/layout/form-header.component.mjs +30 -0
  17. package/esm2020/lib/components/elements/layout/section.component.mjs +22 -0
  18. package/esm2020/lib/components/elements/layout/sub-section.component.mjs +24 -0
  19. package/esm2020/lib/components/elements/tables/table-record-action.component.mjs +40 -0
  20. package/esm2020/lib/components/elements/tables/table-record-field.component.mjs +25 -0
  21. package/esm2020/lib/components/elements/tables/table.component.mjs +95 -0
  22. package/esm2020/lib/components/forms/basic-form.mjs +1425 -0
  23. package/esm2020/lib/services/event-manager.service.mjs +18 -0
  24. package/esm2020/lib/services/file-manager.service.mjs +6 -0
  25. package/esm2020/lib/services/form-manager.service.mjs +80 -0
  26. package/esm2020/lib/tuain-ng-forms-lib.module.mjs +71 -0
  27. package/esm2020/public-api.mjs +19 -0
  28. package/esm2020/tuain-ng-forms-lib.mjs +5 -0
  29. package/fesm2015/tuain-ng-forms-lib.mjs +3816 -0
  30. package/fesm2015/tuain-ng-forms-lib.mjs.map +1 -0
  31. package/fesm2020/tuain-ng-forms-lib.mjs +3646 -0
  32. package/fesm2020/tuain-ng-forms-lib.mjs.map +1 -0
  33. package/lib/classes/forms/action.d.ts +22 -0
  34. package/lib/classes/forms/element.d.ts +41 -0
  35. package/lib/classes/forms/field.d.ts +109 -0
  36. package/lib/classes/forms/form.constants.d.ts +25 -0
  37. package/lib/classes/forms/form.d.ts +134 -0
  38. package/lib/classes/forms/section.d.ts +39 -0
  39. package/lib/classes/forms/subsection.d.ts +26 -0
  40. package/lib/classes/forms/table/action.d.ts +20 -0
  41. package/lib/classes/forms/table/column.d.ts +33 -0
  42. package/lib/classes/forms/table/row-data.d.ts +14 -0
  43. package/lib/classes/forms/table/table.d.ts +100 -0
  44. package/lib/components/elements/action.component.d.ts +21 -0
  45. package/lib/components/elements/field.component.d.ts +43 -0
  46. package/lib/components/elements/layout/element.component.d.ts +14 -0
  47. package/lib/components/elements/layout/form-error.component.d.ts +8 -0
  48. package/lib/components/elements/layout/form-header.component.d.ts +12 -0
  49. package/lib/components/elements/layout/section.component.d.ts +10 -0
  50. package/lib/components/elements/layout/sub-section.component.d.ts +11 -0
  51. package/lib/components/elements/tables/table-record-action.component.d.ts +15 -0
  52. package/lib/components/elements/tables/table-record-field.component.d.ts +11 -0
  53. package/lib/components/elements/tables/table.component.d.ts +47 -0
  54. package/lib/components/forms/basic-form.d.ts +307 -0
  55. package/lib/services/event-manager.service.d.ts +9 -0
  56. package/lib/services/file-manager.service.d.ts +5 -0
  57. package/lib/services/form-manager.service.d.ts +28 -0
  58. package/lib/tuain-ng-forms-lib.module.d.ts +20 -0
  59. package/package.json +22 -2
  60. package/{src/public-api.ts → public-api.d.ts} +0 -5
  61. package/tuain-ng-forms-lib.d.ts +5 -0
  62. package/.browserslistrc +0 -16
  63. package/.yarn/cache/nanoid-npm-4.0.0-924f5c6312-7d5946df5c.zip +0 -0
  64. package/.yarn/cache/tslib-npm-2.4.0-9cb6dc5030-8c4aa6a3c5.zip +0 -0
  65. package/.yarn/cache/yn-npm-5.0.0-b001dab23c-f0ec7710d3.zip +0 -0
  66. package/.yarn/install-state.gz +0 -0
  67. package/karma.conf.js +0 -44
  68. package/ng-package.json +0 -11
  69. package/src/lib/classes/forms/action.ts +0 -55
  70. package/src/lib/classes/forms/element.ts +0 -98
  71. package/src/lib/classes/forms/field.ts +0 -408
  72. package/src/lib/classes/forms/form.constants.ts +0 -28
  73. package/src/lib/classes/forms/form.ts +0 -495
  74. package/src/lib/classes/forms/section.ts +0 -154
  75. package/src/lib/classes/forms/subsection.ts +0 -91
  76. package/src/lib/classes/forms/table/action.ts +0 -41
  77. package/src/lib/classes/forms/table/column.ts +0 -91
  78. package/src/lib/classes/forms/table/row-data.ts +0 -118
  79. package/src/lib/classes/forms/table/table.ts +0 -438
  80. package/src/lib/components/elements/action.component.ts +0 -53
  81. package/src/lib/components/elements/field.component.ts +0 -118
  82. package/src/lib/components/elements/layout/element.component.ts +0 -28
  83. package/src/lib/components/elements/layout/form-error.component.ts +0 -11
  84. package/src/lib/components/elements/layout/form-header.component.ts +0 -17
  85. package/src/lib/components/elements/layout/section.component.ts +0 -16
  86. package/src/lib/components/elements/layout/sub-section.component.ts +0 -17
  87. package/src/lib/components/elements/tables/table-record-action.component.ts +0 -37
  88. package/src/lib/components/elements/tables/table-record-field.component.ts +0 -19
  89. package/src/lib/components/elements/tables/table.component.ts +0 -102
  90. package/src/lib/components/forms/basic-form.ts +0 -1496
  91. package/src/lib/services/event-manager.service.ts +0 -21
  92. package/src/lib/services/file-manager.service.ts +0 -6
  93. package/src/lib/services/form-manager.service.ts +0 -89
  94. package/src/lib/services/icon-dictionary.service.ts +0 -159
  95. package/src/lib/tuain-ng-forms-lib.module.ts +0 -40
  96. package/src/test.ts +0 -27
  97. package/tsconfig.lib.json +0 -15
  98. package/tsconfig.lib.prod.json +0 -10
  99. package/tsconfig.spec.json +0 -17
@@ -0,0 +1,35 @@
1
+ import { Subject } from 'rxjs';
2
+ import { elementTypes } from './form.constants';
3
+ import { FormElement } from './element';
4
+ const HEADER = 'HEADER';
5
+ export class FormAction extends FormElement {
6
+ constructor(actionDefinition, formConfig) {
7
+ super(actionDefinition, formConfig);
8
+ this._actionActivated = new Subject();
9
+ this.inProgress = false;
10
+ this.elementType = elementTypes.action;
11
+ this.actionCode = actionDefinition.actionCode ? actionDefinition.actionCode.toString() : '';
12
+ this.actionName = actionDefinition.actionTitle;
13
+ this.iconName = actionDefinition.iconName || this.actionCode;
14
+ this.setCustomAttribute('location', actionDefinition.position || HEADER);
15
+ this.backend = actionDefinition?.serverAction ?? false;
16
+ this.newState = actionDefinition?.newState;
17
+ this.restrictedOnField = actionDefinition.fieldRestrictedCode ? actionDefinition.fieldRestrictedCode.toString() : '';
18
+ this.restrictedOnOperator = actionDefinition.operatorRestricted || '';
19
+ this.restrictedOnValue = actionDefinition.valueRestricted ?? '';
20
+ this.customValidation = () => true;
21
+ }
22
+ get actionActivated() { return this._actionActivated; }
23
+ start() { this.inProgress = true; }
24
+ stop() { this.inProgress = false; }
25
+ notifyActivation() { this._actionActivated.next(this.actionCode); }
26
+ updateFromServer(receivedAction) {
27
+ for (const propertyName in receivedAction) {
28
+ if (propertyName !== 'actionCode' && propertyName !== 'actionId') {
29
+ this[propertyName] = receivedAction[propertyName];
30
+ }
31
+ }
32
+ }
33
+ setCustomValidation(callback) { this.customValidation = () => callback(); }
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY2xhc3Nlcy9mb3Jtcy9hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV4QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFFeEIsTUFBTSxPQUFPLFVBQVcsU0FBUSxXQUFXO0lBZ0J6QyxZQUFZLGdCQUFnQixFQUFFLFVBQVU7UUFDdEMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBaEJyQixxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRTFELGVBQVUsR0FBRyxLQUFLLENBQUM7UUFlakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM1RixJQUFJLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzdELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxPQUFPLEdBQUcsZ0JBQWdCLEVBQUUsWUFBWSxJQUFJLEtBQUssQ0FBQztRQUN2RCxJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixFQUFFLFFBQVEsQ0FBQztRQUUzQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckgsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQztRQUN0RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQztRQUNoRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLGVBQWUsS0FBSyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFFdkQsS0FBSyxLQUFLLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuQyxJQUFJLEtBQUssSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRW5DLGdCQUFnQixLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVuRSxnQkFBZ0IsQ0FBQyxjQUFjO1FBQzdCLEtBQUssTUFBTSxZQUFZLElBQUksY0FBYyxFQUFFO1lBQ3pDLElBQUksWUFBWSxLQUFLLFlBQVksSUFBSSxZQUFZLEtBQUssVUFBVSxFQUFFO2dCQUNoRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ25EO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDNUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBlbGVtZW50VHlwZXMgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50IH0gZnJvbSAnLi9lbGVtZW50JztcblxuY29uc3QgSEVBREVSID0gJ0hFQURFUic7XG5cbmV4cG9ydCBjbGFzcyBGb3JtQWN0aW9uIGV4dGVuZHMgRm9ybUVsZW1lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3Rpb25BY3RpdmF0ZWQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgaW5Qcm9ncmVzcyA9IGZhbHNlO1xuICBuZXdTdGF0ZTogc3RyaW5nO1xuICBiYWNrZW5kOiBib29sZWFuO1xuXG4gIGFjdGlvbkNvZGU6IHN0cmluZztcbiAgYWN0aW9uTmFtZTogc3RyaW5nO1xuICBpY29uTmFtZTogc3RyaW5nO1xuXG4gIHJlc3RyaWN0ZWRPbkZpZWxkOiBzdHJpbmc7XG4gIHJlc3RyaWN0ZWRPbk9wZXJhdG9yOiBzdHJpbmc7XG4gIHJlc3RyaWN0ZWRPblZhbHVlOiBzdHJpbmc7XG4gIGN1c3RvbVZhbGlkYXRpb246IGFueTtcblxuICBjb25zdHJ1Y3RvcihhY3Rpb25EZWZpbml0aW9uLCBmb3JtQ29uZmlnKSB7XG4gICAgc3VwZXIoYWN0aW9uRGVmaW5pdGlvbiwgZm9ybUNvbmZpZyk7XG4gICAgdGhpcy5lbGVtZW50VHlwZSA9IGVsZW1lbnRUeXBlcy5hY3Rpb247XG4gICAgdGhpcy5hY3Rpb25Db2RlID0gYWN0aW9uRGVmaW5pdGlvbi5hY3Rpb25Db2RlID8gYWN0aW9uRGVmaW5pdGlvbi5hY3Rpb25Db2RlLnRvU3RyaW5nKCkgOiAnJztcbiAgICB0aGlzLmFjdGlvbk5hbWUgPSBhY3Rpb25EZWZpbml0aW9uLmFjdGlvblRpdGxlO1xuICAgIHRoaXMuaWNvbk5hbWUgPSBhY3Rpb25EZWZpbml0aW9uLmljb25OYW1lIHx8IHRoaXMuYWN0aW9uQ29kZTtcbiAgICB0aGlzLnNldEN1c3RvbUF0dHJpYnV0ZSgnbG9jYXRpb24nLCBhY3Rpb25EZWZpbml0aW9uLnBvc2l0aW9uIHx8IEhFQURFUik7XG4gICAgdGhpcy5iYWNrZW5kID0gYWN0aW9uRGVmaW5pdGlvbj8uc2VydmVyQWN0aW9uID8/IGZhbHNlO1xuICAgIHRoaXMubmV3U3RhdGUgPSBhY3Rpb25EZWZpbml0aW9uPy5uZXdTdGF0ZTtcblxuICAgIHRoaXMucmVzdHJpY3RlZE9uRmllbGQgPSBhY3Rpb25EZWZpbml0aW9uLmZpZWxkUmVzdHJpY3RlZENvZGUgPyBhY3Rpb25EZWZpbml0aW9uLmZpZWxkUmVzdHJpY3RlZENvZGUudG9TdHJpbmcoKSA6ICcnO1xuICAgIHRoaXMucmVzdHJpY3RlZE9uT3BlcmF0b3IgPSBhY3Rpb25EZWZpbml0aW9uLm9wZXJhdG9yUmVzdHJpY3RlZCB8fCAnJztcbiAgICB0aGlzLnJlc3RyaWN0ZWRPblZhbHVlID0gYWN0aW9uRGVmaW5pdGlvbi52YWx1ZVJlc3RyaWN0ZWQgPz8gJyc7XG4gICAgdGhpcy5jdXN0b21WYWxpZGF0aW9uID0gKCkgPT4gdHJ1ZTtcbiAgfVxuXG4gIGdldCBhY3Rpb25BY3RpdmF0ZWQoKSB7IHJldHVybiB0aGlzLl9hY3Rpb25BY3RpdmF0ZWQ7IH1cblxuICBzdGFydCgpIHsgdGhpcy5pblByb2dyZXNzID0gdHJ1ZTsgfVxuICBzdG9wKCkgeyB0aGlzLmluUHJvZ3Jlc3MgPSBmYWxzZTsgfVxuXG4gIG5vdGlmeUFjdGl2YXRpb24oKSB7IHRoaXMuX2FjdGlvbkFjdGl2YXRlZC5uZXh0KHRoaXMuYWN0aW9uQ29kZSk7IH1cblxuICB1cGRhdGVGcm9tU2VydmVyKHJlY2VpdmVkQWN0aW9uKSB7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgaW4gcmVjZWl2ZWRBY3Rpb24pIHtcbiAgICAgIGlmIChwcm9wZXJ0eU5hbWUgIT09ICdhY3Rpb25Db2RlJyAmJiBwcm9wZXJ0eU5hbWUgIT09ICdhY3Rpb25JZCcpIHtcbiAgICAgICAgdGhpc1twcm9wZXJ0eU5hbWVdID0gcmVjZWl2ZWRBY3Rpb25bcHJvcGVydHlOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRDdXN0b21WYWxpZGF0aW9uKGNhbGxiYWNrKSB7IHRoaXMuY3VzdG9tVmFsaWRhdGlvbiA9ICgpID0+IGNhbGxiYWNrKCk7IH1cbn1cbiJdfQ==
@@ -0,0 +1,76 @@
1
+ import { elementTypes } from './form.constants';
2
+ export class FormElement {
3
+ constructor(elementDefinition, formConfig) {
4
+ this._formConfig = formConfig;
5
+ this._isForced = false;
6
+ this.setVisibleStates(elementDefinition.visibleStates);
7
+ this.setEnabledStates(elementDefinition.enabledStates);
8
+ this._visibleForced = false;
9
+ this.disabled = elementDefinition?.disabled ?? false;
10
+ this.setVisibility(elementDefinition?.visible ?? true);
11
+ this.customAttributes = elementDefinition?.customAttributes ?? {};
12
+ }
13
+ getCustomAttribute(name) { return this.customAttributes?.[name] ?? null; }
14
+ setCustomAttribute(name, value) { if (name) {
15
+ this.customAttributes[name] = value;
16
+ } }
17
+ matchAttribute(name, value) { return this.customAttributes?.[name] === value; }
18
+ isField() { return this.elementType === elementTypes.field; }
19
+ isAction() { return this.elementType === elementTypes.action; }
20
+ isTable() { return this.elementType === elementTypes.table; }
21
+ setVisibleStates(newStates) {
22
+ const visibleStates = (!Array.isArray(newStates) && typeof newStates === 'string')
23
+ ? newStates.split(',').map(state => state.trim()).filter(state => state.length > 0)
24
+ : newStates;
25
+ this.visibleStates = (Array.isArray(visibleStates)) ? visibleStates : [];
26
+ }
27
+ setEnabledStates(newStates) {
28
+ const enabledStates = (!Array.isArray(newStates) && typeof newStates === 'string')
29
+ ? newStates.split(',').map(state => state.trim()).filter(state => state.length > 0)
30
+ : newStates;
31
+ this.enabledStates = (Array.isArray(enabledStates)) ? enabledStates : [];
32
+ }
33
+ viewOnState(state) { return (this.visibleStates && state) ? this.visibleStates.includes(state) : false; }
34
+ enabledOnState(state) { return (this.enabledStates && state) ? this.enabledStates.includes(state) : false; }
35
+ /**
36
+ * @deprecated Utilizar viewOnState
37
+ */
38
+ supportState(state) { return this.viewOnState(state); }
39
+ /**
40
+ * @deprecated Utilizar viewOnState
41
+ */
42
+ supportMode(state) { return this.viewOnState(state); }
43
+ get visible() { return (this._isForced) ? this._visibleForced : this._visible; }
44
+ set visible(visible) { this.setVisibility(visible); }
45
+ visibleOn(state) {
46
+ return this.visible && this.viewOnState(state);
47
+ }
48
+ enabledOn(state) {
49
+ return !this.disabled && this.enabledOnState(state);
50
+ }
51
+ setVisibility(visible, forced = null) {
52
+ this._visible = visible && true;
53
+ if (forced != null) {
54
+ this._isForced = forced;
55
+ }
56
+ }
57
+ show(forced) {
58
+ this._visible = true;
59
+ if (forced !== null) {
60
+ this._isForced = forced;
61
+ this._visibleForced = true;
62
+ }
63
+ }
64
+ hide(forced) {
65
+ this._visible = false;
66
+ if (forced !== null) {
67
+ this._isForced = forced;
68
+ this._visibleForced = false;
69
+ }
70
+ }
71
+ enable() { this.disabled = false; }
72
+ disable() { this.disabled = true; }
73
+ get enabled() { return !this.disabled; }
74
+ get editable() { return !this.disabled; }
75
+ }
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsTUFBTSxPQUFPLFdBQVc7SUFXdEIsWUFBWSxpQkFBc0IsRUFBRSxVQUFlO1FBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsRUFBRSxRQUFRLElBQUksS0FBSyxDQUFDO1FBQ3JELElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxpQkFBaUIsRUFBRSxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7SUFDcEUsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQVksSUFBUyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkYsa0JBQWtCLENBQUMsSUFBWSxFQUFFLEtBQVUsSUFBVSxJQUFJLElBQUksRUFBRTtRQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7S0FBRSxDQUFDLENBQUM7SUFDekcsY0FBYyxDQUFDLElB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QUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDakQsSUFBSSxRQUFRLEtBQWMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0NBQ25EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWxlbWVudFR5cGVzIH0gZnJvbSAnLi9mb3JtLmNvbnN0YW50cyc7XG5leHBvcnQgY2xhc3MgRm9ybUVsZW1lbnQge1xuICBwcm90ZWN0ZWQgX3Zpc2libGU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfdmlzaWJsZUZvcmNlZDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIF9pc0ZvcmNlZDogYm9vbGVhbjtcbiAgX2Zvcm1Db25maWc6IGFueTtcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHZpc2libGVTdGF0ZXM6IHN0cmluZ1tdO1xuICBlbmFibGVkU3RhdGVzOiBzdHJpbmdbXTtcbiAgZWxlbWVudFR5cGU6IHN0cmluZztcbiAgY3VzdG9tQXR0cmlidXRlczogYW55O1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnREZWZpbml0aW9uOiBhbnksIGZvcm1Db25maWc6IGFueSkge1xuICAgIHRoaXMuX2Zvcm1Db25maWcgPSBmb3JtQ29uZmlnO1xuICAgIHRoaXMuX2lzRm9yY2VkID0gZmFsc2U7XG4gICAgdGhpcy5zZXRWaXNpYmxlU3RhdGVzKGVsZW1lbnREZWZpbml0aW9uLnZpc2libGVTdGF0ZXMpO1xuICAgIHRoaXMuc2V0RW5hYmxlZFN0YXRlcyhlbGVtZW50RGVmaW5pdGlvbi5lbmFibGVkU3RhdGVzKTtcbiAgICB0aGlzLl92aXNpYmxlRm9yY2VkID0gZmFsc2U7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGVsZW1lbnREZWZpbml0aW9uPy5kaXNhYmxlZCA/PyBmYWxzZTtcbiAgICB0aGlzLnNldFZpc2liaWxpdHkoZWxlbWVudERlZmluaXRpb24/LnZpc2libGUgPz8gdHJ1ZSk7XG4gICAgdGhpcy5jdXN0b21BdHRyaWJ1dGVzID0gZWxlbWVudERlZmluaXRpb24/LmN1c3RvbUF0dHJpYnV0ZXMgPz8ge307XG4gIH1cblxuICBnZXRDdXN0b21BdHRyaWJ1dGUobmFtZTogc3RyaW5nKTogYW55IHsgcmV0dXJuIHRoaXMuY3VzdG9tQXR0cmlidXRlcz8uW25hbWVdID8/IG51bGw7IH1cbiAgc2V0Q3VzdG9tQXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQgeyBpZiAobmFtZSkgeyB0aGlzLmN1c3RvbUF0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZTsgfSB9XG4gIG1hdGNoQXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jdXN0b21BdHRyaWJ1dGVzPy5bbmFtZV0gPT09IHZhbHVlOyB9XG5cbiAgaXNGaWVsZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUgPT09IGVsZW1lbnRUeXBlcy5maWVsZDsgfVxuICBpc0FjdGlvbigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUgPT09IGVsZW1lbnRUeXBlcy5hY3Rpb247IH1cbiAgaXNUYWJsZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUgPT09IGVsZW1lbnRUeXBlcy50YWJsZTsgfVxuXG4gIHNldFZpc2libGVTdGF0ZXMobmV3U3RhdGVzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB2aXNpYmxlU3RhdGVzID0gKCFBcnJheS5pc0FycmF5KG5ld1N0YXRlcykgJiYgdHlwZW9mIG5ld1N0YXRlcyA9PT0gJ3N0cmluZycpXG4gICAgICA/IG5ld1N0YXRlcy5zcGxpdCgnLCcpLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKVxuICAgICAgOiBuZXdTdGF0ZXM7XG4gICAgdGhpcy52aXNpYmxlU3RhdGVzID0gKEFycmF5LmlzQXJyYXkodmlzaWJsZVN0YXRlcykpID8gdmlzaWJsZVN0YXRlcyA6IFtdO1xuICB9XG5cbiAgc2V0RW5hYmxlZFN0YXRlcyhuZXdTdGF0ZXM6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRTdGF0ZXMgPSAoIUFycmF5LmlzQXJyYXkobmV3U3RhdGVzKSAmJiB0eXBlb2YgbmV3U3RhdGVzID09PSAnc3RyaW5nJylcbiAgICAgID8gbmV3U3RhdGVzLnNwbGl0KCcsJykubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSkuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApXG4gICAgICA6IG5ld1N0YXRlcztcbiAgICB0aGlzLmVuYWJsZWRTdGF0ZXMgPSAoQXJyYXkuaXNBcnJheShlbmFibGVkU3RhdGVzKSkgPyBlbmFibGVkU3RhdGVzIDogW107XG4gIH1cblxuICB2aWV3T25TdGF0ZShzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiAodGhpcy52aXNpYmxlU3RhdGVzICYmIHN0YXRlKSA/IHRoaXMudmlzaWJsZVN0YXRlcy5pbmNsdWRlcyhzdGF0ZSkgOiBmYWxzZTsgfVxuICBlbmFibGVkT25TdGF0ZShzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiAodGhpcy5lbmFibGVkU3RhdGVzICYmIHN0YXRlKSA/IHRoaXMuZW5hYmxlZFN0YXRlcy5pbmNsdWRlcyhzdGF0ZSkgOiBmYWxzZTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVdGlsaXphciB2aWV3T25TdGF0ZVxuICAgKi9cbiAgc3VwcG9ydFN0YXRlKHN0YXRlOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMudmlld09uU3RhdGUoc3RhdGUpOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFV0aWxpemFyIHZpZXdPblN0YXRlXG4gICAqL1xuICBzdXBwb3J0TW9kZShzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLnZpZXdPblN0YXRlKHN0YXRlKTsgfVxuXG4gIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4geyByZXR1cm4gKHRoaXMuX2lzRm9yY2VkKSA/IHRoaXMuX3Zpc2libGVGb3JjZWQgOiB0aGlzLl92aXNpYmxlOyB9XG4gIHNldCB2aXNpYmxlKHZpc2libGU6IGJvb2xlYW4pIHsgdGhpcy5zZXRWaXNpYmlsaXR5KHZpc2libGUpOyB9XG5cbiAgdmlzaWJsZU9uKHN0YXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlICYmIHRoaXMudmlld09uU3RhdGUoc3RhdGUpO1xuICB9XG5cbiAgZW5hYmxlZE9uKHN0YXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5lbmFibGVkT25TdGF0ZShzdGF0ZSk7XG4gIH1cblxuICBzZXRWaXNpYmlsaXR5KHZpc2libGU6IGJvb2xlYW4sIGZvcmNlZDogYm9vbGVhbiA9IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLl92aXNpYmxlID0gdmlzaWJsZSAmJiB0cnVlO1xuICAgIGlmIChmb3JjZWQgIT0gbnVsbCkge1xuICAgICAgdGhpcy5faXNGb3JjZWQgPSBmb3JjZWQ7XG4gICAgfVxuICB9XG5cbiAgc2hvdyhmb3JjZWQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fdmlzaWJsZSA9IHRydWU7XG4gICAgaWYgKGZvcmNlZCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5faXNGb3JjZWQgPSBmb3JjZWQ7XG4gICAgICB0aGlzLl92aXNpYmxlRm9yY2VkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBoaWRlKGZvcmNlZD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl92aXNpYmxlID0gZmFsc2U7XG4gICAgaWYgKGZvcmNlZCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5faXNGb3JjZWQgPSBmb3JjZWQ7XG4gICAgICB0aGlzLl92aXNpYmxlRm9yY2VkID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZW5hYmxlKCk6IHZvaWQgeyB0aGlzLmRpc2FibGVkID0gZmFsc2U7IH1cbiAgZGlzYWJsZSgpOiB2b2lkIHsgdGhpcy5kaXNhYmxlZCA9IHRydWU7IH1cblxuICBnZXQgZW5hYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuICF0aGlzLmRpc2FibGVkOyB9XG4gIGdldCBlZGl0YWJsZSgpOiBib29sZWFuIHsgcmV0dXJuICF0aGlzLmRpc2FibGVkOyB9XG59XG4iXX0=
@@ -0,0 +1,321 @@
1
+ import { Subject } from 'rxjs';
2
+ import yn from 'yn';
3
+ import { elementTypes, NO_ERROR } from './form.constants';
4
+ import { FormElement } from './element';
5
+ const UNDEFINED = 'undefined';
6
+ const DEFAULT_ERROR_TYPE = 'error';
7
+ const DEFAULT_CAPTURE_TYPE = 'INPUT';
8
+ const DEFAULT_ALIGNMENT = 'left';
9
+ const STD_MAX_LENGTH = 50;
10
+ const BIG_MAX_LENGTH = 500;
11
+ const fldAttr = {
12
+ validateOnServer: 'validateOnServer',
13
+ value: '_value',
14
+ minValue: '_minValue',
15
+ maxValue: '_maxValue',
16
+ maxLength: '_maxLength',
17
+ onValidation: '_onValidation',
18
+ focus: 'focus',
19
+ intrinsicErrorMessage: '_intrinsicErrorMessage',
20
+ code: 'fieldCode',
21
+ info: 'fieldInfo',
22
+ defaultValue: 'defaultValue',
23
+ defaultEditable: 'defaultEditable',
24
+ visibleLabel: 'visibleLabel',
25
+ required: 'fieldRequired',
26
+ hasChanged: 'hasChanged',
27
+ outputOnly: 'outputOnly',
28
+ captureType: 'captureType',
29
+ title: 'fieldTitle',
30
+ type: 'fieldType',
31
+ alignment: 'fieldAlignment',
32
+ format: 'fieldFormat',
33
+ externalValue: 'externalValue',
34
+ tooltipText: 'tooltipText',
35
+ errorType: 'errorType',
36
+ errorCode: 'errorCode',
37
+ errorMessage: 'errorMessage',
38
+ options: 'fieldOptions',
39
+ };
40
+ export class FieldDescriptor extends FormElement {
41
+ constructor(inputFieldReceived, formConfig) {
42
+ super(inputFieldReceived, formConfig);
43
+ this._editionFinish = new Subject();
44
+ this._editionPartial = new Subject();
45
+ this._detailRequest = new Subject();
46
+ this._attributeChange = new Subject();
47
+ this.elementType = elementTypes.field;
48
+ const fld = (inputFieldReceived) ? inputFieldReceived : {};
49
+ this.setAttr(fldAttr.code, fld.fieldCode);
50
+ this.setAttr(fldAttr.title, fld.fieldTitle ?? this.fieldCode);
51
+ this.setAttr(fldAttr.type, fld.fieldTypeCode);
52
+ this.setAttr(fldAttr.captureType, fld.captureType ?? DEFAULT_CAPTURE_TYPE);
53
+ const defaultValue = fld.defaultValue ?? null;
54
+ if (this.fieldType === this._formConfig.fieldTypes.boolean) {
55
+ this.setAttr(fldAttr.defaultValue, defaultValue ?? false);
56
+ }
57
+ else {
58
+ this.setAttr(fldAttr.defaultValue, defaultValue);
59
+ }
60
+ const defaultTypeAlignment = (this._formConfig.tableFieldStyles[this.fieldType] != null)
61
+ ? this._formConfig.tableFieldStyles[this.fieldType]['text-align'] : DEFAULT_ALIGNMENT;
62
+ const fieldAlignment = (fld.alignment != null) ? fld.alignment.toLowerCase() : defaultTypeAlignment;
63
+ this.setAttr(fldAttr.alignment, fieldAlignment);
64
+ this.setAttr(fldAttr.info, fld.info || '');
65
+ let fieldFormat;
66
+ try {
67
+ fieldFormat = (fld.format) ? new RegExp(fld.format) : null;
68
+ }
69
+ catch (e) {
70
+ fieldFormat = null;
71
+ }
72
+ this.setAttr(fldAttr.format, fieldFormat);
73
+ this.setAttr(fldAttr.validateOnServer, fld.serverAction ?? false);
74
+ this.setAttr(fldAttr.tooltipText, fld.tooltip || '');
75
+ this.setAttr(fldAttr.defaultEditable, this.enabled);
76
+ this.setAttr(fldAttr.required, fld.required ?? false);
77
+ this.setError(fld.errorCode, fld.errorMessage, fld.errorType ?? DEFAULT_ERROR_TYPE);
78
+ this.setAttr(fldAttr.outputOnly, fld.outputOnly ?? false);
79
+ const maxLength = fld.maxLength ?? (this.captureType === 'TEXTAREA' ? BIG_MAX_LENGTH : STD_MAX_LENGTH);
80
+ this.setAttr(fldAttr.maxLength, maxLength);
81
+ this.setAttr(fldAttr.intrinsicErrorMessage, this._formConfig.fieldTypeErrMsg[this.fieldType] ?? this._formConfig.fieldTypeErrMsg.DEFAULT);
82
+ this.setEditable(fld.editable ?? true);
83
+ this.setVisibleLabel(fld.visibleLabel ?? true);
84
+ this.setVisibility(fld.visible);
85
+ this.setFieldOptions(fld.fieldOptions);
86
+ this.setValue(fld.fieldValue ?? this.defaultValue ?? '');
87
+ }
88
+ get name() { return this.fieldCode; }
89
+ get editionFinish() { return this._editionFinish; }
90
+ get attributeChange() { return this._attributeChange; }
91
+ get editionPartial() { return this._editionPartial; }
92
+ get detailRequest() { return this._detailRequest; }
93
+ get info() { return this.fieldInfo; }
94
+ get validating() { return this._onValidation; }
95
+ set validating(isValidating) { this.setAttr(fldAttr.onValidation, isValidating); }
96
+ focus() { this.setAttr(fldAttr.focus, true); }
97
+ setIntrinsicErrorMessage(message) { this.setAttr(fldAttr.intrinsicErrorMessage, message); }
98
+ set intrinsicErrorMessage(message) { this.setIntrinsicErrorMessage(message); }
99
+ get fieldValue() { return this.getValue(); }
100
+ getRequired() { return this.required; }
101
+ setRequired(required) { this.required = required; }
102
+ get required() { return this.fieldRequired; }
103
+ set required(required) { this.setAttr(fldAttr.required, required ?? false); }
104
+ get maxLength() { return (this._maxLength > 0) ? this._maxLength.toString() : ''; }
105
+ set maxLength(requiredMaxLength) {
106
+ if (typeof requiredMaxLength === 'string') {
107
+ this.setAttr(fldAttr.maxLength, parseInt(requiredMaxLength, 10));
108
+ }
109
+ else if (typeof requiredMaxLength === 'number') {
110
+ this.setAttr(fldAttr.maxLength, requiredMaxLength);
111
+ }
112
+ }
113
+ get value() { return this.getValue(); }
114
+ set value(newValue) { this.setValue(newValue); }
115
+ notifyEditionPartial() {
116
+ this._editionPartial.next({ code: this.fieldCode, intrinsicValidation: true });
117
+ }
118
+ notifyEditionFinish() {
119
+ let intrinsicValidation = true;
120
+ const fieldDefaultFormat = this._formConfig.fieldTypesPatterns?.[this.fieldType] ?? null;
121
+ const fieldValue = this.getValue();
122
+ if (fieldValue && (fieldDefaultFormat || this.fieldFormat)) {
123
+ intrinsicValidation = (fieldDefaultFormat?.test(fieldValue) ?? true)
124
+ && (this.fieldFormat?.test(fieldValue) ?? true);
125
+ if (!intrinsicValidation) {
126
+ this.setError('99', this._intrinsicErrorMessage);
127
+ }
128
+ }
129
+ if (intrinsicValidation && fieldValue && this._minValue && fieldValue < this._minValue) {
130
+ intrinsicValidation = false;
131
+ this.setError('99', 'Campo con valor inferior al mínimo');
132
+ }
133
+ if (intrinsicValidation && fieldValue && this._maxValue && fieldValue > this._maxValue) {
134
+ intrinsicValidation = false;
135
+ this.setError('99', 'Campo con valor superior al máximo');
136
+ }
137
+ this._editionFinish.next({ code: this.fieldCode, intrinsicValidation });
138
+ }
139
+ setAttr(name, value) {
140
+ this[name] = value;
141
+ if (this._formConfig.monitoredFieldAttributes.includes(name)) {
142
+ this._attributeChange.next({ name, value });
143
+ }
144
+ }
145
+ notifyEditionDetailRequest(detail) {
146
+ const detailEvent = {
147
+ code: this.fieldCode,
148
+ detail,
149
+ };
150
+ this._detailRequest.next(detailEvent);
151
+ }
152
+ setVisibleLabel(visibleLabel) { this.setAttr(fldAttr.visibleLabel, visibleLabel); }
153
+ showLabel() { this.setVisibleLabel(true); }
154
+ hideLabel() { this.setVisibleLabel(false); }
155
+ setChanged(hasChanged) { this.setAttr(fldAttr.hasChanged, hasChanged); }
156
+ changed() { this.setChanged(true); }
157
+ setLabel(label) { this.setAttr(fldAttr.title, label); }
158
+ clean() { this.setValue(this.defaultValue || ''); this.resetError(); }
159
+ get backend() { return this.validateOnServer; }
160
+ setEditable(editable = true) { (editable) ? this.enable() : this.disable(); }
161
+ hasError() { return this.errorCode !== NO_ERROR; }
162
+ resetError() { (this.errorCode !== NO_ERROR) && this.setError(NO_ERROR, null); }
163
+ setError(code, message, type = DEFAULT_ERROR_TYPE) {
164
+ this.setAttr(fldAttr.errorCode, code ?? NO_ERROR);
165
+ this.setAttr(fldAttr.errorType, (this.errorCode === NO_ERROR) ? '' : type);
166
+ this.setAttr(fldAttr.errorMessage, message ?? '');
167
+ }
168
+ getError() { return { type: this.errorType, code: this.errorCode, message: this.errorMessage }; }
169
+ get error() { return this.getError(); }
170
+ set error(errorObj) { this.setError(errorObj.code, errorObj.message, errorObj.type ?? DEFAULT_ERROR_TYPE); }
171
+ getErrorCode() { return this.getError().code; }
172
+ setErrorCode(code) { this.setError(code, this.errorMessage); }
173
+ getErrorMessage() { return this.getError().message; }
174
+ setErrorMessage(msg) { this.setError(this.errorCode, msg); }
175
+ get empty() { return this.isEmpty(); }
176
+ isEmpty() {
177
+ const fieldCurrentValue = this.getValue();
178
+ if (fieldCurrentValue === undefined || fieldCurrentValue === null) {
179
+ return true;
180
+ }
181
+ if (this.fieldType === this._formConfig.fieldTypes.array
182
+ && Array.isArray(fieldCurrentValue) && fieldCurrentValue.length === 0) {
183
+ return true;
184
+ }
185
+ ;
186
+ if (this.fieldType === this._formConfig.fieldTypes.phone) {
187
+ if (!Array.isArray(fieldCurrentValue)) {
188
+ return true;
189
+ }
190
+ if (fieldCurrentValue.length !== 2 || !fieldCurrentValue[0] || !fieldCurrentValue[1]) {
191
+ return true;
192
+ }
193
+ return false;
194
+ }
195
+ ;
196
+ return fieldCurrentValue === '';
197
+ }
198
+ getValue() {
199
+ if (this.fieldType === this._formConfig.fieldTypes.boolean
200
+ || this.fieldType === this._formConfig.fieldTypes.check) {
201
+ return yn(this._value);
202
+ }
203
+ return this._value;
204
+ }
205
+ getOptionText() {
206
+ return this.fieldOptions?.find(item => item.fieldOptionId === this._value)?.fieldOptionValue ?? null;
207
+ }
208
+ updateFromServer(fld) {
209
+ const fieldKeys = Object.keys(fld);
210
+ for (let index = 0; index < fieldKeys.length; index++) {
211
+ const attrName = fieldKeys[index];
212
+ const attrValue = fld[attrName];
213
+ (attrName === this._formConfig.apiFieldAttrs.visible) && this.setVisibility(attrValue);
214
+ (attrName === this._formConfig.apiFieldAttrs.labelVisible) && this.setVisibleLabel(fld.visibleLabel);
215
+ (attrName === this._formConfig.apiFieldAttrs.required) && this.setAttr(fldAttr.required, fld.required ?? false);
216
+ (attrName === this._formConfig.apiFieldAttrs.errorCode) && this.setAttr(fldAttr.errorCode, fld.errorCode);
217
+ (attrName === this._formConfig.apiFieldAttrs.errorMessage) && this.setAttr(fldAttr.errorMessage, fld.errorMessage);
218
+ (attrName === this._formConfig.apiFieldAttrs.tooltip) && this.setAttr(fldAttr.tooltipText, fld.tooltip);
219
+ (attrName === this._formConfig.apiFieldAttrs.info) && this.setAttr(fldAttr.info, fld.info);
220
+ (attrName === this._formConfig.apiFieldAttrs.editable) && this.setEditable(fld.editable);
221
+ (attrName === this._formConfig.apiFieldAttrs.title) && this.setLabel(fld.fieldTitle.toString());
222
+ (attrName === this._formConfig.apiFieldAttrs.value) && (this.setValue(fld.fieldValue) && this.setChanged(false));
223
+ (attrName === this._formConfig.apiFieldAttrs.options) && this.setFieldOptions(fld.fieldOptions);
224
+ (attrName === this._formConfig.apiFieldAttrs.captureType) && this.setAttr(fldAttr.captureType, fld.captureType || 'INPUT');
225
+ (attrName === this._formConfig.apiFieldAttrs.type) && this.setAttr(fldAttr.type, fld.fieldTypeCode);
226
+ (attrName === this._formConfig.apiFieldAttrs.maxLength) && this.setAttr(fldAttr.maxLength, fld.maxLength);
227
+ }
228
+ }
229
+ setMinValue(inputMinValue) {
230
+ let minValue = inputMinValue;
231
+ if (this.fieldType === this._formConfig.fieldTypes.date) {
232
+ minValue = new Date(minValue);
233
+ }
234
+ this.setAttr(fldAttr.minValue, minValue);
235
+ }
236
+ setMaxValue(inputMaxValue) {
237
+ let maxValue = inputMaxValue;
238
+ if (this.fieldType === this._formConfig.fieldTypes.date) {
239
+ maxValue = new Date(maxValue);
240
+ }
241
+ this.setAttr(fldAttr.maxValue, maxValue);
242
+ }
243
+ getFieldOptions() {
244
+ return this.fieldOptions.map(option => {
245
+ const optionCopy = { ...option };
246
+ return optionCopy;
247
+ });
248
+ }
249
+ setFieldOptions(newOptions) {
250
+ if ((!this._formConfig.captureTypesWithOptions.includes(this.captureType))
251
+ || typeof newOptions === UNDEFINED || !newOptions
252
+ || !Array.isArray(newOptions)) {
253
+ return;
254
+ }
255
+ let fieldOptions = newOptions.map(option => {
256
+ if (option.text !== undefined && option.text !== null
257
+ && option.value !== undefined && option.value !== null) {
258
+ return { fieldOptionValue: option.text, fieldOptionId: option.value };
259
+ }
260
+ return { ...option };
261
+ });
262
+ fieldOptions = (fieldOptions && Array.isArray(fieldOptions)
263
+ && fieldOptions.length > 0) ? fieldOptions : [];
264
+ this.setAttr(fldAttr.options, fieldOptions);
265
+ if (this._value) {
266
+ if (this.fieldType === this._formConfig.fieldTypes.array && Array.isArray(this._value)) {
267
+ const fieldValue = this._value?.filter(item => this.fieldOptions.find(opt => opt.fieldOptionId === item));
268
+ this.setAttr(fldAttr.value, fieldValue);
269
+ }
270
+ else {
271
+ const valInOptions = this.fieldOptions
272
+ .find(item => item.fieldOptionId === this._value);
273
+ if (!valInOptions) {
274
+ this.setValue('');
275
+ }
276
+ }
277
+ }
278
+ if (this.fieldRequired && this.fieldOptions.length === 1) {
279
+ this.setValue(this.fieldOptions[0].fieldOptionId);
280
+ }
281
+ }
282
+ setValue(newValue, widgetUpdate = true) {
283
+ if (typeof newValue === UNDEFINED) {
284
+ return true;
285
+ }
286
+ if (newValue === null && this.required) {
287
+ return true;
288
+ }
289
+ let newFinalValue;
290
+ if (this.fieldType === this._formConfig.fieldTypes.boolean
291
+ || this.fieldType === this._formConfig.fieldTypes.check) {
292
+ newFinalValue = yn(newValue) ?? false;
293
+ }
294
+ else if (this.fieldType === this._formConfig.fieldTypes.array
295
+ || this.fieldType === this._formConfig.fieldTypes.map) {
296
+ if (newValue === null || newValue === '') {
297
+ newFinalValue = [];
298
+ }
299
+ else if (Array.isArray(newValue)) {
300
+ newFinalValue = newValue;
301
+ }
302
+ else {
303
+ newFinalValue = newValue.toString().split(',');
304
+ }
305
+ }
306
+ else {
307
+ newFinalValue = newValue;
308
+ }
309
+ if (this._value !== newFinalValue) {
310
+ this.setChanged(true);
311
+ if (widgetUpdate) {
312
+ this.setAttr(fldAttr.value, newFinalValue);
313
+ }
314
+ else {
315
+ this._value = newFinalValue;
316
+ }
317
+ }
318
+ return true;
319
+ }
320
+ }
321
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUd4QyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFFOUIsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUM7QUFDbkMsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUM7QUFDckMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUM7QUFFakMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUUzQixNQUFNLE9BQU8sR0FBRztJQUNkLGdCQUFnQixFQUFFLGtCQUFrQjtJQUNwQyxLQUFLLEVBQUUsUUFBUTtJQUNmLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLFlBQVksRUFBRSxlQUFlO0lBQzdCLEtBQUssRUFBRSxPQUFPO0lBQ2QscUJBQXFCLEVBQUUsd0JBQXdCO0lBQy9DLElBQUksRUFBRSxXQUFXO0lBQ2pCLElBQUksRUFBRSxXQUFXO0lBQ2pCLFlBQVksRUFBRSxjQUFjO0lBQzVCLGVBQWUsRUFBRSxpQkFBaUI7SUFDbEMsWUFBWSxFQUFFLGNBQWM7SUFDNUIsUUFBUSxFQUFFLGVBQWU7SUFDekIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsV0FBVyxFQUFFLGFB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QUksSUFBSSxRQUFRLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFFBQVEsS0FBSyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakcsSUFBSSxLQUFLLEtBQUssT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsSUFBSSxJQUFJLGtCQUFrQixDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRTNHLFlBQVksS0FBSyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFlBQVksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RCxlQUFlLEtBQUssT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNyRCxlQUFlLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFNUQsSUFBSSxLQUFLLEtBQWMs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LGFBQWEsQ0FBQzthQUM3QjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeW4gZnJvbSAneW4nO1xuaW1wb3J0IHsgZWxlbWVudFR5cGVzLCBOT19FUlJPUiB9IGZyb20gJy4vZm9ybS5jb25zdGFudHMnO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnQgfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHsgaXNOZ1RlbXBsYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuXG5jb25zdCBVTkRFRklORUQgPSAndW5kZWZpbmVkJztcblxuY29uc3QgREVGQVVMVF9FUlJPUl9UWVBFID0gJ2Vycm9yJztcbmNvbnN0IERFRkFVTFRfQ0FQVFVSRV9UWVBFID0gJ0lOUFVUJztcbmNvbnN0IERFRkFVTFRfQUxJR05NRU5UID0gJ2xlZnQnO1xuXG5jb25zdCBTVERfTUFYX0xFTkdUSCA9IDUwO1xuY29uc3QgQklHX01BWF9MRU5HVEggPSA1MDA7XG5cbmNvbnN0IGZsZEF0dHIgPSB7XG4gIHZhbGlkYXRlT25TZXJ2ZXI6ICd2YWxpZGF0ZU9uU2VydmVyJyxcbiAgdmFsdWU6ICdfdmFsdWUnLFxuICBtaW5WYWx1ZTogJ19taW5WYWx1ZScsXG4gIG1heFZhbHVlOiAnX21heFZhbHVlJyxcbiAgbWF4TGVuZ3RoOiAnX21heExlbmd0aCcsXG4gIG9uVmFsaWRhdGlvbjogJ19vblZhbGlkYXRpb24nLFxuICBmb2N1czogJ2ZvY3VzJyxcbiAgaW50cmluc2ljRXJyb3JNZXNzYWdlOiAnX2ludHJpbnNpY0Vycm9yTWVzc2FnZScsXG4gIGNvZGU6ICdmaWVsZENvZGUnLFxuICBpbmZvOiAnZmllbGRJbmZvJyxcbiAgZGVmYXVsdFZhbHVlOiAnZGVmYXVsdFZhbHVlJyxcbiAgZGVmYXVsdEVkaXRhYmxlOiAnZGVmYXVsdEVkaXRhYmxlJyxcbiAgdmlzaWJsZUxhYmVsOiAndmlzaWJsZUxhYmVsJyxcbiAgcmVxdWlyZWQ6ICdmaWVsZFJlcXVpcmVkJyxcbiAgaGFzQ2hhbmdlZDogJ2hhc0NoYW5nZWQnLFxuICBvdXRwdXRPbmx5OiAnb3V0cHV0T25seScsXG4gIGNhcHR1cmVUeXBlOiAnY2FwdHVyZVR5cGUnLFxuICB0aXRsZTogJ2ZpZWxkVGl0bGUnLFxuICB0eXBlOiAnZmllbGRUeXBlJyxcbiAgYWxpZ25tZW50OiAnZmllbGRBbGlnbm1lbnQnLFxuICBmb3JtYXQ6ICdmaWVsZEZvcm1hdCcsXG4gIGV4dGVybmFsVmFsdWU6ICdleHRlcm5hbFZhbHVlJyxcbiAgdG9vbHRpcFRleHQ6ICd0b29sdGlwVGV4dCcsXG4gIGVycm9yVHlwZTogJ2Vycm9yVHlwZScsXG4gIGVycm9yQ29kZTogJ2Vycm9yQ29kZScsXG4gIGVycm9yTWVzc2FnZTogJ2Vycm9yTWVzc2FnZScsXG4gIG9wdGlvbnM6ICdmaWVsZE9wdGlvbnMnLFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBEZXRhaWxFdmVudCB7XG4gIGNvZGU6IHN0cmluZztcbiAgZGV0YWlsOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRPcHRpb24ge1xuICBmaWVsZE9wdGlvblZhbHVlOiBzdHJpbmc7XG4gIGZpZWxkT3B0aW9uSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEZpZWxkRGVzY3JpcHRvciBleHRlbmRzIEZvcm1FbGVtZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWRpdGlvbkZpbmlzaCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWRpdGlvblBhcnRpYWwgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RldGFpbFJlcXVlc3QgPSBuZXcgU3ViamVjdDxEZXRhaWxFdmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXR0cmlidXRlQ2hhbmdlID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIHByaXZhdGUgdmFsaWRhdGVPblNlcnZlcjogYm9vbGVhbjtcblxuICBwcml2YXRlIF92YWx1ZTogYW55O1xuICBwcml2YXRlIF9mb2N1czogYm9vbGVhbjtcblxuICBwcml2YXRlIF9taW5WYWx1ZTogYW55O1xuICBwcml2YXRlIF9tYXhWYWx1ZTogYW55O1xuICBwcml2YXRlIF9tYXhMZW5ndGg6IG51bWJlcjtcbiAgX29uVmFsaWRhdGlvbjogYm9vbGVhbjtcbiAgX2ludHJpbnNpY0Vycm9yTWVzc2FnZTogc3RyaW5nO1xuXG4gIGZpZWxkQ29kZTogc3RyaW5nO1xuICBmaWVsZEluZm86IHN0cmluZztcbiAgZGVmYXVsdFZhbHVlOiBzdHJpbmc7XG4gIGRlZmF1bHRFZGl0YWJsZTogYm9vbGVhbjtcblxuICB2aXNpYmxlTGFiZWw6IGJvb2xlYW47XG4gIGZpZWxkUmVxdWlyZWQ6IGJvb2xlYW47XG4gIGhhc0NoYW5nZWQ6IGJvb2xlYW47XG4gIG91dHB1dE9ubHk6IGJvb2xlYW47XG4gIGNhcHR1cmVUeXBlOiBzdHJpbmc7XG4gIGZpZWxkVGl0bGU6IHN0cmluZztcbiAgZmllbGRUeXBlOiBzdHJpbmc7XG4gIGZpZWxkQWxpZ25tZW50OiBzdHJpbmc7XG4gIGZpZWxkRm9ybWF0OiBSZWdFeHA7XG4gIGV4dGVybmFsVmFsdWU6IGFueTtcbiAgdG9vbHRpcFRleHQ6IHN0cmluZztcblxuICBlcnJvclR5cGU6IHN0cmluZztcbiAgZXJyb3JDb2RlOiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuXG4gIGZpZWxkT3B0aW9uczogRmllbGRPcHRpb25bXTtcblxuICBjb25zdHJ1Y3RvcihpbnB1dEZpZWxkUmVjZWl2ZWQsIGZvcm1Db25maWcpIHtcbiAgICBzdXBlcihpbnB1dEZpZWxkUmVjZWl2ZWQsIGZvcm1Db25maWcpO1xuICAgIHRoaXMuZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZXMuZmllbGQ7XG4gICAgY29uc3QgZmxkID0gKGlucHV0RmllbGRSZWNlaXZlZCkgPyBpbnB1dEZpZWxkUmVjZWl2ZWQgOiB7fTtcblxuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmNvZGUsIGZsZC5maWVsZENvZGUpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnRpdGxlLCBmbGQuZmllbGRUaXRsZSA/PyB0aGlzLmZpZWxkQ29kZSk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIudHlwZSwgZmxkLmZpZWxkVHlwZUNvZGUpXG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuY2FwdHVyZVR5cGUsIGZsZC5jYXB0dXJlVHlwZSA/PyBERUZBVUxUX0NBUFRVUkVfVFlQRSk7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gZmxkLmRlZmF1bHRWYWx1ZSA/PyBudWxsO1xuICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmJvb2xlYW4pIHtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmRlZmF1bHRWYWx1ZSwgZGVmYXVsdFZhbHVlID8/IGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZGVmYXVsdFZhbHVlLCBkZWZhdWx0VmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0VHlwZUFsaWdubWVudCA9ICh0aGlzLl9mb3JtQ29uZmlnLnRhYmxlRmllbGRTdHlsZXNbdGhpcy5maWVsZFR5cGVdICE9IG51bGwpXG4gICAgICA/IHRoaXMuX2Zvcm1Db25maWcudGFibGVGaWVsZFN0eWxlc1t0aGlzLmZpZWxkVHlwZV1bJ3RleHQtYWxpZ24nXSA6IERFRkFVTFRfQUxJR05NRU5UO1xuICAgIGNvbnN0IGZpZWxkQWxpZ25tZW50ID0gKGZsZC5hbGlnbm1lbnQgIT0gbnVsbCkgPyBmbGQuYWxpZ25tZW50LnRvTG93ZXJDYXNlKCkgOiBkZWZhdWx0VHlwZUFsaWdubWVudDtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5hbGlnbm1lbnQsIGZpZWxkQWxpZ25tZW50KTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5pbmZvLCBmbGQuaW5mbyB8fCAnJyk7XG4gICAgbGV0IGZpZWxkRm9ybWF0O1xuICAgIHRyeSB7XG4gICAgICBmaWVsZEZvcm1hdCA9IChmbGQuZm9ybWF0KSA/IG5ldyBSZWdFeHAoZmxkLmZvcm1hdCkgOiBudWxsO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGZpZWxkRm9ybWF0ID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZm9ybWF0LCBmaWVsZEZvcm1hdCk7XG5cbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci52YWxpZGF0ZU9uU2VydmVyLCBmbGQuc2VydmVyQWN0aW9uID8/IGZhbHNlKTtcblxuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnRvb2x0aXBUZXh0LCBmbGQudG9vbHRpcCB8fCAnJyk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZGVmYXVsdEVkaXRhYmxlLCB0aGlzLmVuYWJsZWQpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnJlcXVpcmVkLCBmbGQucmVxdWlyZWQgPz8gZmFsc2UpO1xuICAgIHRoaXMuc2V0RXJyb3IoZmxkLmVycm9yQ29kZSwgZmxkLmVycm9yTWVzc2FnZSwgZmxkLmVycm9yVHlwZSA/PyBERUZBVUxUX0VSUk9SX1RZUEUpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm91dHB1dE9ubHksIGZsZC5vdXRwdXRPbmx5ID8/IGZhbHNlKTtcbiAgICBjb25zdCBtYXhMZW5ndGggPSBmbGQubWF4TGVuZ3RoID8/ICh0aGlzLmNhcHR1cmVUeXBlID09PSAnVEVYVEFSRUEnID8gQklHX01BWF9MRU5HVEggOiBTVERfTUFYX0xFTkdUSCk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIubWF4TGVuZ3RoLCBtYXhMZW5ndGgpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmludHJpbnNpY0Vycm9yTWVzc2FnZSwgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVFcnJNc2dbdGhpcy5maWVsZFR5cGVdID8/IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlRXJyTXNnLkRFRkFVTFQpO1xuXG4gICAgdGhpcy5zZXRFZGl0YWJsZShmbGQuZWRpdGFibGUgPz8gdHJ1ZSk7XG4gICAgdGhpcy5zZXRWaXNpYmxlTGFiZWwoZmxkLnZpc2libGVMYWJlbCA/PyB0cnVlKTtcbiAgICB0aGlzLnNldFZpc2liaWxpdHkoZmxkLnZpc2libGUpO1xuICAgIHRoaXMuc2V0RmllbGRPcHRpb25zKGZsZC5maWVsZE9wdGlvbnMpO1xuICAgIHRoaXMuc2V0VmFsdWUoZmxkLmZpZWxkVmFsdWUgPz8gdGhpcy5kZWZhdWx0VmFsdWUgPz8gJycpO1xuICB9XG5cbiAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLmZpZWxkQ29kZTsgfVxuICBnZXQgZWRpdGlvbkZpbmlzaCgpIHsgcmV0dXJuIHRoaXMuX2VkaXRpb25GaW5pc2g7IH1cbiAgZ2V0IGF0dHJpYnV0ZUNoYW5nZSgpIHsgcmV0dXJuIHRoaXMuX2F0dHJpYnV0ZUNoYW5nZTsgfVxuXG4gIGdldCBlZGl0aW9uUGFydGlhbCgpIHsgcmV0dXJuIHRoaXMuX2VkaXRpb25QYXJ0aWFsOyB9XG4gIGdldCBkZXRhaWxSZXF1ZXN0KCkgeyByZXR1cm4gdGhpcy5fZGV0YWlsUmVxdWVzdDsgfVxuICBnZXQgaW5mbygpIHsgcmV0dXJuIHRoaXMuZmllbGRJbmZvOyB9XG5cbiAgZ2V0IHZhbGlkYXRpbmcoKSB7IHJldHVybiB0aGlzLl9vblZhbGlkYXRpb247IH1cbiAgc2V0IHZhbGlkYXRpbmcoaXNWYWxpZGF0aW5nOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLm9uVmFsaWRhdGlvbiwgaXNWYWxpZGF0aW5nKTsgfVxuXG4gIGZvY3VzKCkgeyB0aGlzLnNldEF0dHIoZmxkQXR0ci5mb2N1cywgdHJ1ZSk7IH1cblxuICBzZXRJbnRyaW5zaWNFcnJvck1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLmludHJpbnNpY0Vycm9yTWVzc2FnZSwgbWVzc2FnZSk7IH1cbiAgc2V0IGludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpIHsgdGhpcy5zZXRJbnRyaW5zaWNFcnJvck1lc3NhZ2UobWVzc2FnZSk7IH1cblxuICBnZXQgZmllbGRWYWx1ZSgpIHsgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKTsgfVxuXG4gIGdldFJlcXVpcmVkKCkgeyByZXR1cm4gdGhpcy5yZXF1aXJlZDsgfVxuICBzZXRSZXF1aXJlZChyZXF1aXJlZDogYm9vbGVhbikgeyB0aGlzLnJlcXVpcmVkID0gcmVxdWlyZWQ7IH1cblxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmZpZWxkUmVxdWlyZWQ7IH1cbiAgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLnJlcXVpcmVkLCByZXF1aXJlZCA/PyBmYWxzZSk7IH1cbiAgZ2V0IG1heExlbmd0aCgpIHsgcmV0dXJuICh0aGlzLl9tYXhMZW5ndGggPiAwKSA/IHRoaXMuX21heExlbmd0aC50b1N0cmluZygpIDogJyc7IH1cbiAgc2V0IG1heExlbmd0aChyZXF1aXJlZE1heExlbmd0aDogYW55KSB7XG4gICAgaWYgKHR5cGVvZiByZXF1aXJlZE1heExlbmd0aCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm1heExlbmd0aCwgcGFyc2VJbnQocmVxdWlyZWRNYXhMZW5ndGgsIDEwKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcmVxdWlyZWRNYXhMZW5ndGggPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5tYXhMZW5ndGgsIHJlcXVpcmVkTWF4TGVuZ3RoKTtcbiAgICB9XG4gIH1cbiAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpOyB9XG4gIHNldCB2YWx1ZShuZXdWYWx1ZSkgeyB0aGlzLnNldFZhbHVlKG5ld1ZhbHVlKTsgfVxuXG4gIG5vdGlmeUVkaXRpb25QYXJ0aWFsKCkge1xuICAgIHRoaXMuX2VkaXRpb25QYXJ0aWFsLm5leHQoeyBjb2RlOiB0aGlzLmZpZWxkQ29kZSwgaW50cmluc2ljVmFsaWRhdGlvbjogdHJ1ZSB9KTtcbiAgfVxuXG4gIG5vdGlmeUVkaXRpb25GaW5pc2goKSB7XG4gICAgbGV0IGludHJpbnNpY1ZhbGlkYXRpb24gPSB0cnVlO1xuICAgIGNvbnN0IGZpZWxkRGVmYXVsdEZvcm1hdCA9IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlc1BhdHRlcm5zPy5bdGhpcy5maWVsZFR5cGVdID8/IG51bGw7XG4gICAgY29uc3QgZmllbGRWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTtcbiAgICBpZiAoZmllbGRWYWx1ZSAmJiAoZmllbGREZWZhdWx0Rm9ybWF0IHx8IHRoaXMuZmllbGRGb3JtYXQpKSB7XG4gICAgICBpbnRyaW5zaWNWYWxpZGF0aW9uID0gKGZpZWxkRGVmYXVsdEZvcm1hdD8udGVzdChmaWVsZFZhbHVlKSA/PyB0cnVlKVxuICAgICAgICAmJiAodGhpcy5maWVsZEZvcm1hdD8udGVzdChmaWVsZFZhbHVlKSA/PyB0cnVlKTtcbiAgICAgIGlmICghaW50cmluc2ljVmFsaWRhdGlvbikge1xuICAgICAgICB0aGlzLnNldEVycm9yKCc5OScsIHRoaXMuX2ludHJpbnNpY0Vycm9yTWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpbnRyaW5zaWNWYWxpZGF0aW9uICYmIGZpZWxkVmFsdWUgJiYgdGhpcy5fbWluVmFsdWUgJiYgZmllbGRWYWx1ZSA8IHRoaXMuX21pblZhbHVlKSB7XG4gICAgICBpbnRyaW5zaWNWYWxpZGF0aW9uID0gZmFsc2U7XG4gICAgICB0aGlzLnNldEVycm9yKCc5OScsICdDYW1wbyBjb24gdmFsb3IgaW5mZXJpb3IgYWwgbcOtbmltbycpO1xuICAgIH1cbiAgICBpZiAoaW50cmluc2ljVmFsaWRhdGlvbiAmJiBmaWVsZFZhbHVlICYmIHRoaXMuX21heFZhbHVlICYmIGZpZWxkVmFsdWUgPiB0aGlzLl9tYXhWYWx1ZSkge1xuICAgICAgaW50cmluc2ljVmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgICAgdGhpcy5zZXRFcnJvcignOTknLCAnQ2FtcG8gY29uIHZhbG9yIHN1cGVyaW9yIGFsIG3DoXhpbW8nKTtcbiAgICB9XG4gICAgdGhpcy5fZWRpdGlvbkZpbmlzaC5uZXh0KHsgY29kZTogdGhpcy5maWVsZENvZGUsIGludHJpbnNpY1ZhbGlkYXRpb24gfSk7XG4gIH1cblxuICBzZXRBdHRyKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXNbbmFtZV0gPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5fZm9ybUNvbmZpZy5tb25pdG9yZWRGaWVsZEF0dHJpYnV0ZXMuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgIHRoaXMuX2F0dHJpYnV0ZUNoYW5nZS5uZXh0KHsgbmFtZSwgdmFsdWUgfSk7XG4gICAgfVxuICB9XG5cbiAgbm90aWZ5RWRpdGlvbkRldGFpbFJlcXVlc3QoZGV0YWlsOiBhbnkpIHtcbiAgICBjb25zdCBkZXRhaWxFdmVudDogRGV0YWlsRXZlbnQgPSB7XG4gICAgICBjb2RlOiB0aGlzLmZpZWxkQ29kZSxcbiAgICAgIGRldGFpbCxcbiAgICB9O1xuICAgIHRoaXMuX2RldGFpbFJlcXVlc3QubmV4dChkZXRhaWxFdmVudCk7XG4gIH1cblxuICBzZXRWaXNpYmxlTGFiZWwodmlzaWJsZUxhYmVsOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLnZpc2libGVMYWJlbCwgdmlzaWJsZUxhYmVsKTsgfVxuICBzaG93TGFiZWwoKSB7IHRoaXMuc2V0VmlzaWJsZUxhYmVsKHRydWUpOyB9XG4gIGhpZGVMYWJlbCgpIHsgdGhpcy5zZXRWaXNpYmxlTGFiZWwoZmFsc2UpOyB9XG5cbiAgc2V0Q2hhbmdlZChoYXNDaGFuZ2VkOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLmhhc0NoYW5nZWQsIGhhc0NoYW5nZWQpOyB9XG4gIGNoYW5nZWQoKSB7IHRoaXMuc2V0Q2hhbmdlZCh0cnVlKTsgfVxuXG4gIHNldExhYmVsKGxhYmVsKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLnRpdGxlLCBsYWJlbCk7IH1cbiAgY2xlYW4oKSB7IHRoaXMuc2V0VmFsdWUodGhpcy5kZWZhdWx0VmFsdWUgfHwgJycpOyB0aGlzLnJlc2V0RXJyb3IoKTsgfVxuICBnZXQgYmFja2VuZCgpIHsgcmV0dXJuIHRoaXMudmFsaWRhdGVPblNlcnZlcjsgfVxuXG4gIHNldEVkaXRhYmxlKGVkaXRhYmxlOiBib29sZWFuID0gdHJ1ZSkgeyAoZWRpdGFibGUpID8gdGhpcy5lbmFibGUoKSA6IHRoaXMuZGlzYWJsZSgpOyB9XG5cbiAgaGFzRXJyb3IoKSB7IHJldHVybiB0aGlzLmVycm9yQ29kZSAhPT0gTk9fRVJST1I7IH1cbiAgcmVzZXRFcnJvcigpIHsgKHRoaXMuZXJyb3JDb2RlICE9PSBOT19FUlJPUikgJiYgdGhpcy5zZXRFcnJvcihOT19FUlJPUiwgbnVsbCk7IH1cbiAgc2V0RXJyb3IoY29kZSwgbWVzc2FnZSwgdHlwZSA9IERFRkFVTFRfRVJST1JfVFlQRSkge1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmVycm9yQ29kZSwgY29kZSA/PyBOT19FUlJPUik7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZXJyb3JUeXBlLCAodGhpcy5lcnJvckNvZGUgPT09IE5PX0VSUk9SKSA/ICcnIDogdHlwZSk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZXJyb3JNZXNzYWdlLCBtZXNzYWdlID8/ICcnKTtcbiAgfVxuXG4gIGdldEVycm9yKCkgeyByZXR1cm4geyB0eXBlOiB0aGlzLmVycm9yVHlwZSwgY29kZTogdGhpcy5lcnJvckNvZGUsIG1lc3NhZ2U6IHRoaXMuZXJyb3JNZXNzYWdlIH07IH1cbiAgZ2V0IGVycm9yKCkgeyByZXR1cm4gdGhpcy5nZXRFcnJvcigpOyB9XG4gIHNldCBlcnJvcihlcnJvck9iaikgeyB0aGlzLnNldEVycm9yKGVycm9yT2JqLmNvZGUsIGVycm9yT2JqLm1lc3NhZ2UsIGVycm9yT2JqLnR5cGUgPz8gREVGQVVMVF9FUlJPUl9UWVBFKSB9XG5cbiAgZ2V0RXJyb3JDb2RlKCkgeyByZXR1cm4gdGhpcy5nZXRFcnJvcigpLmNvZGU7IH1cbiAgc2V0RXJyb3JDb2RlKGNvZGUpIHsgdGhpcy5zZXRFcnJvcihjb2RlLCB0aGlzLmVycm9yTWVzc2FnZSk7IH1cbiAgZ2V0RXJyb3JNZXNzYWdlKCkgeyByZXR1cm4gdGhpcy5nZXRFcnJvcigpLm1lc3NhZ2U7IH1cbiAgc2V0RXJyb3JNZXNzYWdlKG1zZykgeyB0aGlzLnNldEVycm9yKHRoaXMuZXJyb3JDb2RlLCBtc2cpOyB9XG5cbiAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5pc0VtcHR5KCk7IH1cblxuICBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpZWxkQ3VycmVudFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIGlmIChmaWVsZEN1cnJlbnRWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGZpZWxkQ3VycmVudFZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuYXJyYXlcbiAgICAgICYmIEFycmF5LmlzQXJyYXkoZmllbGRDdXJyZW50VmFsdWUpICYmIGZpZWxkQ3VycmVudFZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5waG9uZSkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZpZWxkQ3VycmVudFZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChmaWVsZEN1cnJlbnRWYWx1ZS5sZW5ndGggIT09IDIgfHwgIWZpZWxkQ3VycmVudFZhbHVlWzBdIHx8ICFmaWVsZEN1cnJlbnRWYWx1ZVsxXSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIHJldHVybiBmaWVsZEN1cnJlbnRWYWx1ZSA9PT0gJyc7XG4gIH1cblxuICBnZXRWYWx1ZSgpOiBhbnkge1xuICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmJvb2xlYW5cbiAgICAgIHx8IHRoaXMuZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuY2hlY2spIHtcbiAgICAgIHJldHVybiB5bih0aGlzLl92YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIGdldE9wdGlvblRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRPcHRpb25zPy5maW5kKGl0ZW0gPT4gaXRlbS5maWVsZE9wdGlvbklkID09PSB0aGlzLl92YWx1ZSk/LmZpZWxkT3B0aW9uVmFsdWUgPz8gbnVsbDtcbiAgfVxuXG4gIHVwZGF0ZUZyb21TZXJ2ZXIoZmxkKSB7XG4gICAgY29uc3QgZmllbGRLZXlzID0gT2JqZWN0LmtleXMoZmxkKTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZmllbGRLZXlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgYXR0ck5hbWUgPSBmaWVsZEtleXNbaW5kZXhdO1xuICAgICAgY29uc3QgYXR0clZhbHVlID0gZmxkW2F0dHJOYW1lXTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLnZpc2libGUpICYmIHRoaXMuc2V0VmlzaWJpbGl0eShhdHRyVmFsdWUpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMubGFiZWxWaXNpYmxlKSAmJiB0aGlzLnNldFZpc2libGVMYWJlbChmbGQudmlzaWJsZUxhYmVsKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLnJlcXVpcmVkKSAmJiB0aGlzLnNldEF0dHIoZmxkQXR0ci5yZXF1aXJlZCwgZmxkLnJlcXVpcmVkID8/IGZhbHNlKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLmVycm9yQ29kZSkgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZXJyb3JDb2RlLCBmbGQuZXJyb3JDb2RlKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLmVycm9yTWVzc2FnZSkgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZXJyb3JNZXNzYWdlLCBmbGQuZXJyb3JNZXNzYWdlKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLnRvb2x0aXApICYmIHRoaXMuc2V0QXR0cihmbGRBdHRyLnRvb2x0aXBUZXh0LCBmbGQudG9vbHRpcCk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy5pbmZvKSAmJiB0aGlzLnNldEF0dHIoZmxkQXR0ci5pbmZvLCBmbGQuaW5mbyk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy5lZGl0YWJsZSkgJiYgdGhpcy5zZXRFZGl0YWJsZShmbGQuZWRpdGFibGUpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMudGl0bGUpICYmIHRoaXMuc2V0TGFiZWwoZmxkLmZpZWxkVGl0bGUudG9TdHJpbmcoKSk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy52YWx1ZSkgJiYgKHRoaXMuc2V0VmFsdWUoZmxkLmZpZWxkVmFsdWUpICYmIHRoaXMuc2V0Q2hhbmdlZChmYWxzZSkpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMub3B0aW9ucykgJiYgdGhpcy5zZXRGaWVsZE9wdGlvbnMoZmxkLmZpZWxkT3B0aW9ucyk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy5jYXB0dXJlVHlwZSkgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIuY2FwdHVyZVR5cGUsIGZsZC5jYXB0dXJlVHlwZSB8fCAnSU5QVVQnKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLnR5cGUpICYmIHRoaXMuc2V0QXR0cihmbGRBdHRyLnR5cGUsIGZsZC5maWVsZFR5cGVDb2RlKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLm1heExlbmd0aCkgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIubWF4TGVuZ3RoLCBmbGQubWF4TGVuZ3RoKTtcbiAgICB9XG4gIH1cblxuICBzZXRNaW5WYWx1ZShpbnB1dE1pblZhbHVlKSB7XG4gICAgbGV0IG1pblZhbHVlID0gaW5wdXRNaW5WYWx1ZTtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5kYXRlKSB7XG4gICAgICBtaW5WYWx1ZSA9IG5ldyBEYXRlKG1pblZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIubWluVmFsdWUsIG1pblZhbHVlKTtcbiAgfVxuXG4gIHNldE1heFZhbHVlKGlucHV0TWF4VmFsdWUpIHtcbiAgICBsZXQgbWF4VmFsdWUgPSBpbnB1dE1heFZhbHVlO1xuICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmRhdGUpIHtcbiAgICAgIG1heFZhbHVlID0gbmV3IERhdGUobWF4VmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5tYXhWYWx1ZSwgbWF4VmFsdWUpO1xuICB9XG5cbiAgZ2V0RmllbGRPcHRpb25zKCk6IEZpZWxkT3B0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkT3B0aW9ucy5tYXAob3B0aW9uID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbkNvcHk6IEZpZWxkT3B0aW9uID0geyAuLi5vcHRpb24gfTtcbiAgICAgIHJldHVybiBvcHRpb25Db3B5O1xuICAgIH0pO1xuICB9XG5cblxuICBzZXRGaWVsZE9wdGlvbnMobmV3T3B0aW9ucykge1xuICAgIGlmICgoIXRoaXMuX2Zvcm1Db25maWcuY2FwdHVyZVR5cGVzV2l0aE9wdGlvbnMuaW5jbHVkZXModGhpcy5jYXB0dXJlVHlwZSkpXG4gICAgICB8fCB0eXBlb2YgbmV3T3B0aW9ucyA9PT0gVU5ERUZJTkVEIHx8ICFuZXdPcHRpb25zXG4gICAgICB8fCAhQXJyYXkuaXNBcnJheShuZXdPcHRpb25zKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgZmllbGRPcHRpb25zID0gbmV3T3B0aW9ucy5tYXAob3B0aW9uID0+IHtcbiAgICAgIGlmIChvcHRpb24udGV4dCAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi50ZXh0ICE9PSBudWxsXG4gICAgICAgICYmIG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4geyBmaWVsZE9wdGlvblZhbHVlOiBvcHRpb24udGV4dCwgZmllbGRPcHRpb25JZDogb3B0aW9uLnZhbHVlIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyAuLi5vcHRpb24gfTtcbiAgICB9KTtcbiAgICBmaWVsZE9wdGlvbnMgPSAoZmllbGRPcHRpb25zICYmIEFycmF5LmlzQXJyYXkoZmllbGRPcHRpb25zKVxuICAgICAgJiYgZmllbGRPcHRpb25zLmxlbmd0aCA+IDApID8gZmllbGRPcHRpb25zIDogW107XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIub3B0aW9ucywgZmllbGRPcHRpb25zKTtcbiAgICBpZiAodGhpcy5fdmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmFycmF5ICYmIEFycmF5LmlzQXJyYXkodGhpcy5fdmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSB0aGlzLl92YWx1ZT8uZmlsdGVyKGl0ZW0gPT5cbiAgICAgICAgICB0aGlzLmZpZWxkT3B0aW9ucy5maW5kKG9wdCA9PiBvcHQuZmllbGRPcHRpb25JZCA9PT0gaXRlbSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIudmFsdWUsIGZpZWxkVmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdmFsSW5PcHRpb25zID0gdGhpcy5maWVsZE9wdGlvbnNcbiAgICAgICAgICAuZmluZChpdGVtID0+IGl0ZW0uZmllbGRPcHRpb25JZCA9PT0gdGhpcy5fdmFsdWUpO1xuICAgICAgICBpZiAoIXZhbEluT3B0aW9ucykge1xuICAgICAgICAgIHRoaXMuc2V0VmFsdWUoJycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkUmVxdWlyZWQgJiYgdGhpcy5maWVsZE9wdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKHRoaXMuZmllbGRPcHRpb25zWzBdLmZpZWxkT3B0aW9uSWQpO1xuICAgIH1cbiAgfVxuXG4gIHNldFZhbHVlKG5ld1ZhbHVlLCB3aWRnZXRVcGRhdGUgPSB0cnVlKSB7XG4gICAgaWYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gVU5ERUZJTkVEKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG5ld1ZhbHVlID09PSBudWxsICYmIHRoaXMucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBsZXQgbmV3RmluYWxWYWx1ZTtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5ib29sZWFuXG4gICAgICB8fCB0aGlzLmZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmNoZWNrKSB7XG4gICAgICBuZXdGaW5hbFZhbHVlID0geW4obmV3VmFsdWUpID8/IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheVxuICAgICAgfHwgdGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5tYXApIHtcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gbnVsbCB8fCBuZXdWYWx1ZSA9PT0gJycpIHtcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IFtdO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSkge1xuICAgICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWUudG9TdHJpbmcoKS5zcGxpdCgnLCcpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWU7XG4gICAgfVxuICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gbmV3RmluYWxWYWx1ZSkge1xuICAgICAgdGhpcy5zZXRDaGFuZ2VkKHRydWUpO1xuICAgICAgaWYgKHdpZGdldFVwZGF0ZSkge1xuICAgICAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci52YWx1ZSwgbmV3RmluYWxWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IG5ld0ZpbmFsVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,26 @@
1
+ export const NO_ERROR = '00';
2
+ export const HEADER = 'HEADER';
3
+ export const elementTypes = {
4
+ action: 'ACTION',
5
+ field: 'FIELD',
6
+ table: 'TABLE',
7
+ };
8
+ export const formActions = {
9
+ tableAction: 'TABLEACTION',
10
+ getData: 'GETDATA',
11
+ getTableData: 'GETTABLEDATA',
12
+ validate: 'VALIDATE',
13
+ };
14
+ export const operators = {
15
+ G: 'G',
16
+ L: 'L',
17
+ GE: 'GE',
18
+ LE: 'LE',
19
+ EQ: 'EQ',
20
+ NEQ: 'NEQ',
21
+ HAS: 'HAS',
22
+ NOTHAS: 'NOTHAS',
23
+ BETWEEN: 'BETWEEN',
24
+ IN: 'IN',
25
+ };
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2Zvcm0uY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDN0IsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUUvQixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUUsT0FBTztDQUNmLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7SUFDekIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsWUFBWSxFQUFFLGNBQWM7SUFDNUIsUUFBUSxFQUFFLFVBQVU7Q0FDckIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixDQUFDLEVBQUUsR0FBRztJQUNOLENBQUMsRUFBRSxHQUFHO0lBQ04sRUFBRSxFQUFFLElBQUk7SUFDUixFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJO0lBQ1IsR0FBRyxFQUFFLEtBQUs7SUFDVixHQUFHLEVBQUUsS0FBSztJQUNWLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLEVBQUUsRUFBRSxJQUFJO0NBQ1QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBOT19FUlJPUiA9ICcwMCc7XG5leHBvcnQgY29uc3QgSEVBREVSID0gJ0hFQURFUic7XG5cbmV4cG9ydCBjb25zdCBlbGVtZW50VHlwZXMgPSB7XG4gIGFjdGlvbjogJ0FDVElPTicsXG4gIGZpZWxkOiAnRklFTEQnLFxuICB0YWJsZTogJ1RBQkxFJyxcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtQWN0aW9ucyA9IHtcbiAgdGFibGVBY3Rpb246ICdUQUJMRUFDVElPTicsXG4gIGdldERhdGE6ICdHRVREQVRBJyxcbiAgZ2V0VGFibGVEYXRhOiAnR0VUVEFCTEVEQVRBJyxcbiAgdmFsaWRhdGU6ICdWQUxJREFURScsXG59O1xuXG5leHBvcnQgY29uc3Qgb3BlcmF0b3JzID0ge1xuICBHOiAnRycsXG4gIEw6ICdMJyxcbiAgR0U6ICdHRScsXG4gIExFOiAnTEUnLFxuICBFUTogJ0VRJyxcbiAgTkVROiAnTkVRJyxcbiAgSEFTOiAnSEFTJyxcbiAgTk9USEFTOiAnTk9USEFTJyxcbiAgQkVUV0VFTjogJ0JFVFdFRU4nLFxuICBJTjogJ0lOJyxcbn07XG4iXX0=