ngx-t-forms 2.0.24 → 2.0.25

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 (142) hide show
  1. package/README.md +177 -16
  2. package/fesm2022/ngx-t-forms-calculated-field-rules.component-DiNSTxsW.mjs +313 -0
  3. package/fesm2022/ngx-t-forms-calculated-field-rules.component-DiNSTxsW.mjs.map +1 -0
  4. package/fesm2022/{ngx-t-forms-chip-options-creator-editor.component-C00n6tFs.mjs → ngx-t-forms-chip-options-creator-editor.component-3FkGwVWB.mjs} +6 -6
  5. package/fesm2022/{ngx-t-forms-chip-options-creator-editor.component-C00n6tFs.mjs.map → ngx-t-forms-chip-options-creator-editor.component-3FkGwVWB.mjs.map} +1 -1
  6. package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-DtfUKZL-.mjs → ngx-t-forms-config-mscoa-additional-inputs.component-tHaWIt1o.mjs} +8 -8
  7. package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-DtfUKZL-.mjs.map → ngx-t-forms-config-mscoa-additional-inputs.component-tHaWIt1o.mjs.map} +1 -1
  8. package/fesm2022/{ngx-t-forms-data-source-picker.component-BBEQuzn2.mjs → ngx-t-forms-data-source-picker.component-CxG1tQfC.mjs} +10 -10
  9. package/fesm2022/{ngx-t-forms-data-source-picker.component-BBEQuzn2.mjs.map → ngx-t-forms-data-source-picker.component-CxG1tQfC.mjs.map} +1 -1
  10. package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-CsqYlgS6.mjs +291 -0
  11. package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-CsqYlgS6.mjs.map +1 -0
  12. package/fesm2022/{ngx-t-forms-form-input-selector.component-CniLZN1h.mjs → ngx-t-forms-form-input-selector.component-D-nVF7t7.mjs} +6 -6
  13. package/fesm2022/{ngx-t-forms-form-input-selector.component-CniLZN1h.mjs.map → ngx-t-forms-form-input-selector.component-D-nVF7t7.mjs.map} +1 -1
  14. package/fesm2022/{ngx-t-forms-form-json-view.component-bnjkxqgV.mjs → ngx-t-forms-form-json-view.component-B01nOklu.mjs} +6 -6
  15. package/fesm2022/{ngx-t-forms-form-json-view.component-bnjkxqgV.mjs.map → ngx-t-forms-form-json-view.component-B01nOklu.mjs.map} +1 -1
  16. package/fesm2022/ngx-t-forms-form-section-stepper.component-Bg9eGmgN.mjs +267 -0
  17. package/fesm2022/ngx-t-forms-form-section-stepper.component-Bg9eGmgN.mjs.map +1 -0
  18. package/fesm2022/{ngx-t-forms-forms-builder-menu.component-DBEgmcSi.mjs → ngx-t-forms-forms-builder-menu.component-jn9-yVbI.mjs} +22 -22
  19. package/fesm2022/{ngx-t-forms-forms-builder-menu.component-DBEgmcSi.mjs.map → ngx-t-forms-forms-builder-menu.component-jn9-yVbI.mjs.map} +1 -1
  20. package/fesm2022/{ngx-t-forms-input-editor.component-BBP90B_e.mjs → ngx-t-forms-input-editor.component-DyQBfgio.mjs} +18 -18
  21. package/fesm2022/{ngx-t-forms-input-editor.component-BBP90B_e.mjs.map → ngx-t-forms-input-editor.component-DyQBfgio.mjs.map} +1 -1
  22. package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-BCoTHeK3.mjs +106 -0
  23. package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-BCoTHeK3.mjs.map +1 -0
  24. package/fesm2022/{ngx-t-forms-mat-slider-editor.component-CIiYyxkb.mjs → ngx-t-forms-mat-slider-editor.component-WDd5lc_2.mjs} +5 -5
  25. package/fesm2022/{ngx-t-forms-mat-slider-editor.component-CIiYyxkb.mjs.map → ngx-t-forms-mat-slider-editor.component-WDd5lc_2.mjs.map} +1 -1
  26. package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-DDR2JurF.mjs → ngx-t-forms-mat-slider-toggle-editor.component-DGac4Eja.mjs} +5 -5
  27. package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-DDR2JurF.mjs.map → ngx-t-forms-mat-slider-toggle-editor.component-DGac4Eja.mjs.map} +1 -1
  28. package/fesm2022/{ngx-t-forms-missing-form-configs.component-CYN9mVz9.mjs → ngx-t-forms-missing-form-configs.component-sJVu5SkY.mjs} +9 -9
  29. package/fesm2022/{ngx-t-forms-missing-form-configs.component-CYN9mVz9.mjs.map → ngx-t-forms-missing-form-configs.component-sJVu5SkY.mjs.map} +1 -1
  30. package/fesm2022/ngx-t-forms-mscoa-chart-toolbar.component-CF5DxLZG.mjs +43 -0
  31. package/fesm2022/ngx-t-forms-mscoa-chart-toolbar.component-CF5DxLZG.mjs.map +1 -0
  32. package/fesm2022/ngx-t-forms-mscoa-error-display.component-D9zKeT7Z.mjs +116 -0
  33. package/fesm2022/ngx-t-forms-mscoa-error-display.component-D9zKeT7Z.mjs.map +1 -0
  34. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-BIr1g5cG.mjs +299 -0
  35. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-BIr1g5cG.mjs.map +1 -0
  36. package/fesm2022/ngx-t-forms-mscoa-temporary-hint.component-DgdZwE72.mjs +83 -0
  37. package/fesm2022/ngx-t-forms-mscoa-temporary-hint.component-DgdZwE72.mjs.map +1 -0
  38. package/fesm2022/{ngx-t-forms-ngx-t-forms-DwsbmVlY.mjs → ngx-t-forms-ngx-t-forms-A9_4GxP6.mjs} +3313 -906
  39. package/fesm2022/ngx-t-forms-ngx-t-forms-A9_4GxP6.mjs.map +1 -0
  40. package/fesm2022/ngx-t-forms-pipeline-generator.component-CwCwl53b.mjs +637 -0
  41. package/fesm2022/ngx-t-forms-pipeline-generator.component-CwCwl53b.mjs.map +1 -0
  42. package/fesm2022/ngx-t-forms-record-list-manager.component-BYyr0yzb.mjs +270 -0
  43. package/fesm2022/ngx-t-forms-record-list-manager.component-BYyr0yzb.mjs.map +1 -0
  44. package/fesm2022/{ngx-t-forms-required-inputs.component-Bktx1QGr.mjs → ngx-t-forms-required-inputs.component-pv5pqFhh.mjs} +10 -10
  45. package/fesm2022/{ngx-t-forms-required-inputs.component-Bktx1QGr.mjs.map → ngx-t-forms-required-inputs.component-pv5pqFhh.mjs.map} +1 -1
  46. package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-BcItch1n.mjs → ngx-t-forms-rest-api-call-setup.component-CQeww1qM.mjs} +15 -15
  47. package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-BcItch1n.mjs.map → ngx-t-forms-rest-api-call-setup.component-CQeww1qM.mjs.map} +1 -1
  48. package/fesm2022/{ngx-t-forms-section-report.component-Cn_oWXBX.mjs → ngx-t-forms-section-report.component-DGwgq4QR.mjs} +10 -10
  49. package/fesm2022/{ngx-t-forms-section-report.component-Cn_oWXBX.mjs.map → ngx-t-forms-section-report.component-DGwgq4QR.mjs.map} +1 -1
  50. package/fesm2022/{ngx-t-forms-selection-options-editor.component-Cc41XG4s.mjs → ngx-t-forms-selection-options-editor.component-CqAxZnEp.mjs} +11 -11
  51. package/fesm2022/{ngx-t-forms-selection-options-editor.component-Cc41XG4s.mjs.map → ngx-t-forms-selection-options-editor.component-CqAxZnEp.mjs.map} +1 -1
  52. package/fesm2022/ngx-t-forms-t-workflow-picker.component-Cz6YZMia.mjs +187 -0
  53. package/fesm2022/ngx-t-forms-t-workflow-picker.component-Cz6YZMia.mjs.map +1 -0
  54. package/fesm2022/{ngx-t-forms-validators-config.component-4Iy5uJj3.mjs → ngx-t-forms-validators-config.component-CL73KUxw.mjs} +12 -12
  55. package/fesm2022/{ngx-t-forms-validators-config.component-4Iy5uJj3.mjs.map → ngx-t-forms-validators-config.component-CL73KUxw.mjs.map} +1 -1
  56. package/fesm2022/ngx-t-forms.mjs +1 -1
  57. package/lib/components/form-builder/elements/form-section-stepper/form-section-stepper.component.d.ts +4 -1
  58. package/lib/components/form-builder/elements/input-element-editor/input-element-editor.component.d.ts +6 -2
  59. package/lib/components/forms/forms.component.d.ts +1 -0
  60. package/lib/components/forms/store/Form-actions-formBuilder.d.ts +1 -0
  61. package/lib/components/forms/store/Form-selectors-FormBuilder.d.ts +3 -1
  62. package/lib/components/forms/store/Forms-Effects.d.ts +7 -1
  63. package/lib/components/forms/store/forms-store.service.d.ts +19 -53
  64. package/lib/components/index.d.ts +2 -1
  65. package/lib/components/t-dynamic-data-edit/elements/api-value-access-rules/api-value-access-rules.component.d.ts +40 -20
  66. package/lib/components/t-dynamic-data-edit/elements/calculated-field-rules/calculated-field-rules.component.d.ts +51 -63
  67. package/lib/components/t-dynamic-data-edit/elements/document-list-label-config-editor/document-list-label-config-editor.component.d.ts +8 -1
  68. package/lib/components/t-dynamic-data-edit/elements/json-editor/json-editor.component.d.ts +37 -9
  69. package/lib/components/t-dynamic-data-edit/elements/mat-chip-list-editor/mat-chip-list-editor.component.d.ts +2 -1
  70. package/lib/components/t-dynamic-data-edit/elements/mscoa-segment-config/mscoa-segment-config.component.d.ts +4 -1
  71. package/lib/components/t-dynamic-data-edit/elements/pipeline-generator/pipeline-generator.component.d.ts +2 -0
  72. package/lib/components/t-dynamic-data-edit/elements/record-list-manager/record-list-manager.component.d.ts +75 -0
  73. package/lib/components/t-dynamic-data-edit/elements/t-workflow-picker/t-workflow-picker.component.d.ts +7 -3
  74. package/lib/components/t-dynamic-data-edit/t-dynamic-data-edit.component.d.ts +1 -0
  75. package/lib/components/t-form-input/elements/Geo-location-form-input/geo-location.component.d.ts +1 -1
  76. package/lib/components/t-form-input/elements/auto-complete-input-element/auto-complete-input-element.component.d.ts +1 -1
  77. package/lib/components/t-form-input/elements/basic-input-input-element/basic-input-input-element.component.d.ts +2 -1
  78. package/lib/components/t-form-input/elements/basic-input-input-element/core/input-custom/input-custom.component.d.ts +2 -1
  79. package/lib/components/t-form-input/elements/date-picker-input-element/date-picker-input-element.component.d.ts +1 -1
  80. package/lib/components/t-form-input/elements/date-range-picker-input-element/date-range-picker-input-element.component.d.ts +1 -1
  81. package/lib/components/t-form-input/elements/document-picker/document-picker.component.d.ts +1 -1
  82. package/lib/components/t-form-input/elements/editor-input-element/editor-input-element.component.d.ts +1 -1
  83. package/lib/components/t-form-input/elements/file-upload-input-element/file-upload-input-element.component.d.ts +1 -1
  84. package/lib/components/t-form-input/elements/image-capture-input-element/image-capture-input-element.component.d.ts +1 -1
  85. package/lib/components/t-form-input/elements/mscoa-form-input/elements/account-value/account-value.component.d.ts +8 -0
  86. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/components/mscoa-chart-input-menu/mscoa-chart-input-menu.component.d.ts +23 -0
  87. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/components/mscoa-chart-toolbar/mscoa-chart-toolbar.component.d.ts +22 -0
  88. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/components/mscoa-error-display/mscoa-error-display.component.d.ts +34 -0
  89. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/components/mscoa-temporary-hint/mscoa-temporary-hint.component.d.ts +21 -0
  90. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/extractCols.d.ts +22 -0
  91. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/mscoa-chart.component.d.ts +299 -86
  92. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/utils/mscoa-chart.constants.d.ts +47 -0
  93. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/utils/mscoa-chart.helpers.d.ts +87 -0
  94. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/utils/mscoa-chart.types.d.ts +51 -0
  95. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/utils/mscoa-message-formatter.d.ts +87 -0
  96. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-computation/mscoa-computation.component.d.ts +149 -22
  97. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-reactive-form-field/mscoa-reactive-form-field.component.d.ts +11 -0
  98. package/lib/components/t-form-input/elements/mscoa-form-input/elements/scoa-account-table/scoa-account-table.component.d.ts +4 -0
  99. package/lib/components/t-form-input/elements/mscoa-form-input/mscoa-form-input.component.d.ts +1 -1
  100. package/lib/components/t-form-input/elements/mscoa-form-input/store/accountConstants.d.ts +7 -2
  101. package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-actions.d.ts +13 -2
  102. package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-component-store.service.d.ts +45 -8
  103. package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-effects.d.ts +1 -0
  104. package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-selectors.d.ts +33 -8
  105. package/lib/components/t-form-input/elements/multiple-input-input-element/multiple-input-input-element.component.d.ts +1 -1
  106. package/lib/components/t-form-input/elements/select-input-element/select-input-element.component.d.ts +1 -1
  107. package/lib/components/t-form-input/elements/signature-input-element/core/signature-pad-input/functions/getSignatureImage.d.ts +3 -0
  108. package/lib/components/t-form-input/elements/signature-input-element/signature-input-element.component.d.ts +1 -1
  109. package/lib/components/t-form-input/elements/textarea-input-element/core/text-area-reactive-input/text-area-reactive-input.component.d.ts +1 -2
  110. package/lib/components/t-form-input/elements/textarea-input-element/textarea-input-element.component.d.ts +1 -1
  111. package/lib/components/t-form-input/elements/toggle-input-element/toggle-input-element.component.d.ts +1 -1
  112. package/lib/components/t-form-input/elements/workflow-adjudication/workflow-adjudication.component.d.ts +1 -1
  113. package/lib/services/core/t-form-builder/functions/deleteSection.d.ts +1 -0
  114. package/lib/services/core/t-form-builder/functions/inputElementEditorConfigs.d.ts +9 -3
  115. package/lib/services/core/t-form-builder/functions/removeItem.d.ts +1 -0
  116. package/lib/services/core/t-form-builder/functions/stepTitleChangeStep.d.ts +1 -0
  117. package/lib/services/core/t-form-controller/function/calculateInputValue.d.ts +1 -1
  118. package/lib/services/core/t-form-controller/function/getInputSourcedValue.d.ts +4 -0
  119. package/lib/services/core/t-form-tower-controller/functions/runMultipleInputPrepopulationFunctions.d.ts +11 -0
  120. package/lib/services/core/t-form-tower-controller/functions/updateFormInputConfig.d.ts +7 -0
  121. package/lib/services/core/t-input-controller/functions/baseCustomInput.d.ts +4 -2
  122. package/lib/services/core/t-input-controller/functions/inputErrorMessage.d.ts +1 -1
  123. package/lib/shared/functions/convertElementEditorTypesToInputType.d.ts +3 -0
  124. package/lib/shared/functions/fuzzyTextSearch.d.ts +4 -0
  125. package/lib/shared/functions/getPipedValueFromDataType.d.ts +2 -0
  126. package/lib/shared/index.d.ts +2 -1
  127. package/package.json +2 -2
  128. package/fesm2022/ngx-t-forms-calculated-field-rules.component-BUKzXsXn.mjs +0 -316
  129. package/fesm2022/ngx-t-forms-calculated-field-rules.component-BUKzXsXn.mjs.map +0 -1
  130. package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-D6kwe89h.mjs +0 -238
  131. package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-D6kwe89h.mjs.map +0 -1
  132. package/fesm2022/ngx-t-forms-form-section-stepper.component-DFbYNeAi.mjs +0 -261
  133. package/fesm2022/ngx-t-forms-form-section-stepper.component-DFbYNeAi.mjs.map +0 -1
  134. package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-CQ76110I.mjs +0 -103
  135. package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-CQ76110I.mjs.map +0 -1
  136. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-C9zKzzzX.mjs +0 -281
  137. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-C9zKzzzX.mjs.map +0 -1
  138. package/fesm2022/ngx-t-forms-ngx-t-forms-DwsbmVlY.mjs.map +0 -1
  139. package/fesm2022/ngx-t-forms-pipeline-generator.component-CGKxfvvC.mjs +0 -727
  140. package/fesm2022/ngx-t-forms-pipeline-generator.component-CGKxfvvC.mjs.map +0 -1
  141. package/fesm2022/ngx-t-forms-t-workflow-picker.component-CezFgp2z.mjs +0 -171
  142. package/fesm2022/ngx-t-forms-t-workflow-picker.component-CezFgp2z.mjs.map +0 -1
@@ -1,316 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { EventEmitter, Output, Input, HostBinding, Optional, Self, Component } from '@angular/core';
3
- import { v4 } from 'uuid';
4
- import { M as MatModulesModule } from './ngx-t-forms-ngx-t-forms-DwsbmVlY.mjs';
5
- import * as i2$2 from '@angular/common';
6
- import { CommonModule } from '@angular/common';
7
- import * as i1 from '@angular/forms';
8
- import { FormsModule } from '@angular/forms';
9
- import { FormInputSelectorComponent } from './ngx-t-forms-form-input-selector.component-CniLZN1h.mjs';
10
- import { MatFormFieldControl } from '@angular/material/form-field';
11
- import { Subject } from 'rxjs';
12
- import { CalculationFunctions } from 'ngx-t-forms-types';
13
- import * as i10 from '@angular/cdk/overlay';
14
- import { OverlayModule } from '@angular/cdk/overlay';
15
- import * as i2 from '@angular/material/autocomplete';
16
- import * as i2$1 from '@angular/material/button';
17
- import * as i3 from '@angular/material/card';
18
- import * as i5 from '@angular/material/chips';
19
- import * as i3$1 from '@angular/material/icon';
20
- import * as i3$2 from '@angular/material/select';
21
- import * as i8 from '@angular/material/toolbar';
22
- import * as i8$1 from '@angular/material/input';
23
-
24
- class CalculatedFieldRulesComponent {
25
- static { this.nextId = 0; }
26
- constructor(ngControl, _elementRef) {
27
- this.ngControl = ngControl;
28
- this._elementRef = _elementRef;
29
- this.stateChanges = new Subject();
30
- this.id = `app-calculated-field-rules-${CalculatedFieldRulesComponent.nextId++}`;
31
- this.placeholder = '';
32
- this.focused = false;
33
- this.required = false;
34
- this.disabled = false;
35
- this.touched = false;
36
- this.onTouched = () => { };
37
- this.mapToData = undefined;
38
- this._value = {};
39
- this.formInputs = [];
40
- this.errors = [];
41
- this.valueChange2dWithPath = new EventEmitter();
42
- this.valueChanged = new EventEmitter();
43
- this.activeVariable = {};
44
- this.showVariableConfig = false;
45
- this.functions = [
46
- { value: 'avg', label: 'Average' },
47
- { value: 'max', label: 'Maximum' },
48
- { value: 'min', label: 'lowest' },
49
- { value: 'sum', label: 'Sum' },
50
- ];
51
- }
52
- get empty() {
53
- return !this.value;
54
- }
55
- get shouldLabelFloat() {
56
- return this.focused || !this.empty;
57
- }
58
- get errorState() {
59
- const hasError = !!this.ngControl?.control?.errors || (this.errors || []).length > 0 && this.touched;
60
- return !this.value && !!this.required || hasError;
61
- }
62
- setDescribedByIds(ids) {
63
- // Ensure the component view is initialized
64
- if (this._elementRef && this._elementRef.nativeElement) {
65
- const controlElement = this._elementRef.nativeElement.querySelector('.app-calculated-field-rules');
66
- // Check if the controlElement exists before attempting to set its attribute
67
- if (controlElement) {
68
- controlElement.setAttribute('aria-describedby', ids.join(' '));
69
- }
70
- }
71
- }
72
- onContainerClick(event) {
73
- this.markAsTouched();
74
- this.stateChanges.next();
75
- }
76
- markAsTouched() {
77
- console.log('markAsTouched');
78
- if (!this.touched) {
79
- this.onTouched();
80
- this.touched = true;
81
- }
82
- }
83
- set value(value) {
84
- this._value = value;
85
- }
86
- get value() {
87
- return this._value;
88
- }
89
- get allCalculationFunction() {
90
- return Object.values(CalculationFunctions);
91
- }
92
- ngOnInit() { }
93
- applyColTo() {
94
- let i = this.formInputs?.find((input) => input.id === this.activeVariable['inputId']);
95
- if (i?.element === 'tableSelection') {
96
- return this.selectedInputVariable().tableConfig.displayedColumnsInOrder;
97
- }
98
- else if (i?.multipleInputInEditId) {
99
- const parentInput = this.formInputs?.find((input) => input.id === i?.multipleInputInEditId);
100
- return parentInput?.formInputs;
101
- }
102
- return [];
103
- }
104
- get numberInputs() {
105
- return this.formInputs?.filter((input) => input.dataType === 'number' || input.type === 'number');
106
- }
107
- get tableMode() {
108
- return !!this.mapToData?.tableConfig;
109
- }
110
- get tableConfig() {
111
- return this.mapToData?.tableConfig;
112
- }
113
- inputIsInItemList(v) {
114
- let i = this.formInputs?.find((input) => input.formControlName === v['formControlName']);
115
- const hasParent = i ? i['multipleInputInEditId'] : false;
116
- const isInTable = v['tableCell'];
117
- return !!hasParent || isInTable;
118
- }
119
- selectedVariableIsTable() {
120
- const selectedInput = this.formInputs?.find((inp) => inp['id'] === this.activeVariable['inputId']);
121
- const isTable = selectedInput
122
- ? selectedInput['element'] === 'tableSelection'
123
- : false;
124
- return !!isTable;
125
- }
126
- selectedInputVariable() {
127
- const selectedInput = this.formInputs?.find((inp) => inp['formControlName'] === this.activeVariable['formControlName']);
128
- const isTable = selectedInput
129
- ? selectedInput['element'] === 'tableSelection'
130
- : false;
131
- return isTable ? selectedInput : {};
132
- }
133
- checkIfInputCanBeLinkedToCalVariable(currentInput, inputToDisable) {
134
- if (currentInput?.['formControlName'] === inputToDisable.formControlName) {
135
- return true;
136
- }
137
- else {
138
- if (!currentInput?.['multipleInputInEditId']) {
139
- return !!inputToDisable['parentInput'] || !!inputToDisable['multipleInputInEditId'];
140
- }
141
- else {
142
- return;
143
- }
144
- }
145
- }
146
- valueChangedPost(event) {
147
- this.valueChanged.emit(this.value);
148
- }
149
- addVariable() {
150
- if (!this.value?.['variables']) {
151
- this.value = {
152
- ...this.value,
153
- variables: [],
154
- formula: this.value?.formula || ''
155
- };
156
- }
157
- this.value = {
158
- ...this.value,
159
- variables: [...this.value.variables, {
160
- formControlName: '',
161
- variable: '',
162
- }]
163
- };
164
- }
165
- linkFormulaSource(event) {
166
- if (!this.value) {
167
- this.value = {};
168
- }
169
- this.value.formControlWithFormula = event.value;
170
- this.value.formula = undefined;
171
- this.valueChanged.emit(this.value);
172
- }
173
- bindInput(inputId) {
174
- const input = this.formInputs?.find((input) => input.id === inputId);
175
- if (!input)
176
- return;
177
- if (this.activeVariable['formControlName'] === input['formControlName']) {
178
- return;
179
- }
180
- this.activeVariable['formControlName'] = input['formControlName'];
181
- this.activeVariable['label'] = input['label'];
182
- this.activeVariable['inputId'] = input['id'];
183
- this.activeVariable['parentInputId'] = input['multipleInputInEditId'];
184
- }
185
- formulaChanged(event) {
186
- this.valueChanged.emit(this.value);
187
- }
188
- bindTableCol(event, col) {
189
- this.activeVariable['formControlName'] = col;
190
- this.activeVariable['tableCell'] = true;
191
- this.activeVariable['label'] = this.tableConfig?.columnsConfig[col].label;
192
- event.stopPropagation();
193
- }
194
- tableFunctionToCol(event, col) {
195
- if (typeof col === 'object') {
196
- this.activeVariable['applyFunctionToCol'] = col['formControlName'];
197
- this.activeVariable['applyFunctionToLabel'] = col['label'];
198
- }
199
- else {
200
- this.activeVariable['applyFunctionToCol'] = col;
201
- this.activeVariable['applyFunctionToLabel'] =
202
- this.selectedInputVariable()?.tableConfig.columnsConfig[col].label;
203
- }
204
- event.stopPropagation();
205
- }
206
- filterValuesByThisCol(event, col) {
207
- this.activeVariable['filterValuesByCol'] = col;
208
- this.activeVariable['filterValuesByThisColLabel'] =
209
- this.selectedInputVariable()?.tableConfig.columnsConfig[col].label;
210
- event.stopPropagation();
211
- }
212
- unlick(event) {
213
- delete this.activeVariable['formControlName'];
214
- delete this.activeVariable['label'];
215
- delete this.activeVariable['tableCell'];
216
- event.stopPropagation();
217
- }
218
- unlinkTableFunctionToCol(event) {
219
- delete this.activeVariable['applyFunctionToCol'];
220
- delete this.activeVariable['applyFunctionToLabel'];
221
- event.stopPropagation();
222
- }
223
- unlinkTableFilter(event) {
224
- delete this.activeVariable['filterValuesByCol'];
225
- delete this.activeVariable['filterValuesByThisColLabel'];
226
- event.stopPropagation();
227
- }
228
- attachFunction(event, value) {
229
- if (this.activeVariable['function'] === value) {
230
- this.activeVariable['function'] = undefined;
231
- this.activeVariable['applyFunctionToCol'] = undefined;
232
- this.activeVariable['applyFunctionToLabel'] = undefined;
233
- }
234
- else {
235
- (this.activeVariable['function'] = value);
236
- this.activeVariable['applyFunctionToCol'] = this.activeVariable['formControlName'];
237
- this.activeVariable['applyFunctionToLabel'] = this.activeVariable['label'];
238
- }
239
- event.stopPropagation();
240
- }
241
- saveNewVariable(event) {
242
- if (!this.value?.['variables']) {
243
- this.value = {
244
- ...this.value,
245
- variables: [],
246
- formula: this.value?.formula || ''
247
- };
248
- }
249
- this.activeVariable['id'] = v4();
250
- if (this.inputIsInItemList(this.activeVariable)) {
251
- let i = this.formInputs?.find((input) => input.formControlName === this.activeVariable['formControlName']);
252
- const hasParent = i ? i['multipleInputInEditId'] : false;
253
- this.activeVariable['parentInputId'] =
254
- hasParent && i ? i['multipleInputInEditId'] : undefined;
255
- this.value = {
256
- ...this.value,
257
- variables: [...this.value['variables'], this.activeVariable],
258
- };
259
- }
260
- else {
261
- this.value = {
262
- ...this.value,
263
- variables: [...this.value['variables'], this.activeVariable],
264
- };
265
- }
266
- this.activeVariable = {};
267
- this.showVariableConfig = false;
268
- console.error(this.value);
269
- this.valueChanged.emit(this.value);
270
- }
271
- remove(variable) {
272
- this.value = {
273
- ...this.value,
274
- variables: this.value.variables.filter((v) => v.id !== variable.id)
275
- };
276
- }
277
- cancelVariableConfig(event) {
278
- this.activeVariable = {};
279
- this.showVariableConfig = false;
280
- }
281
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CalculatedFieldRulesComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
282
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: CalculatedFieldRulesComponent, isStandalone: true, selector: "app-calculated-field-rules", inputs: { disabled: "disabled", mapToData: "mapToData", value: "value", formInputs: "formInputs", errors: "errors" }, outputs: { valueChange2dWithPath: "valueChange2dWithPath", valueChanged: "valueChanged" }, host: { properties: { "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: CalculatedFieldRulesComponent }], ngImport: i0, template: "\r\n<br>\r\n<div *ngIf=\" !!this.value &&!mapToData?.['id'] && !tableMode\" class=\"tree-instructions\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n Save the input first to enable calculated field configurations\r\n </span>\r\n</div>\r\n\r\n<section >\r\n <mat-form-field [subscriptSizing]=\"'dynamic'\" [floatLabel]=\"'always'\" appearance=\"outline\" >\r\n <mat-label >Equation</mat-label>\r\n <textarea matInput #textarea [(ngModel)]=\"value['formula']\" \r\n (input)=\"formulaChanged($event)\"\r\n placeholder=\"Enter calculation expression\"></textarea>\r\n <mat-hint>\r\n example: ((a+2)/(b-1))*2\r\n </mat-hint>\r\n </mat-form-field>\r\n <mat-form-field [subscriptSizing]=\"'dynamic'\" [floatLabel]=\"'always'\" style=\" margin-bottom: 8px;\" appearance=\"outline\" *ngIf=\"!!value.getFormulaFromAFormInput\">\r\n <mat-label>Equation</mat-label>\r\n <mat-select matNativeControl [value]=\"value.formControlWithFormula\" (selectionChange)=\"linkFormulaSource($event)\"\r\n placeholder=\"select Input with formula\">\r\n @for (input of formInputs; track input.id) {\r\n <mat-option [disabled]=\"\r\n checkIfInputCanBeLinkedToCalVariable(mapToData, input) ||\r\n input.element !== 'select'\" [value]=\"input.formControlName\">{{input.label}}</mat-option>\r\n }\r\n\r\n\r\n </mat-select>\r\n <mat-hint>\r\n Link formula to an input value\r\n </mat-hint>\r\n </mat-form-field>\r\n <mat-chip-listbox #chipList aria-label=\"options\">\r\n\r\n <mat-chip *ngFor=\"let variable of (this.value['variables']||[])\" \r\n (click)=\"value['formula'] = value['formula'] +' '+ variable['variable'] \"\r\n (removed)=\"remove(variable)\">\r\n <div [style.color]=\"\r\n variable['tableCell'] ? 'var(--ion-color-purple)' : ''\r\n \" style=\"font-size: 13px\">\r\n {{ variable[\"variable\"] }}\r\n\r\n - {{ variable[\"label\"] }}\r\n <span style=\"opacity: 0.6; padding-left: 5px\" *ngIf=\"variable['function']\">\r\n {{ variable[\"function\"] }}</span>\r\n </div>\r\n\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n <mat-chip *ngIf=\"!showVariableConfig\" highlighted=\"true\" color=\"accent\" (click)=\"showVariableConfig = !showVariableConfig\">\r\n <span> {{showVariableConfig?'close Variable edit':'Add a new Variable'}} </span>\r\n <mat-icon matChipTrailingIcon>{{\r\n showVariableConfig\r\n ? 'close'\r\n : 'add'\r\n }}</mat-icon>\r\n </mat-chip>\r\n </mat-chip-listbox>\r\n\r\n @if( showVariableConfig){\r\n <ng-container *ngTemplateOutlet=\"variableConfiguration\">\r\n\r\n </ng-container>\r\n }\r\n\r\n</section>\r\n<ng-template #variableConfiguration>\r\n <mat-card style=\"background: var(--mat-sys-surface-container, var(--mat-app-surface));\">\r\n <div style=\"padding: 8px;\">\r\n <div class=\"tree-instructions\" style=\"background: azure\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n <strong>Configure variable </strong><br>\r\n Link a form input to a variable to use in the equation\r\n </span>\r\n </div>\r\n\r\n <lib-form-input-selector \r\n [disabled]=\"!!this.activeVariable['formControlName']\"\r\n [formInputs]=\"numberInputs\" [value]=\"this.activeVariable['inputId']\"\r\n (click)=\"$event.stopPropagation()\" (change)=\"bindInput($event)\"></lib-form-input-selector>\r\n\r\n <ng-container *ngIf=\"this.activeVariable ? !!this.activeVariable['formControlName'] : false\">\r\n <mat-form-field [subscriptSizing]=\"'dynamic'\" [floatLabel]=\"'always'\" appearance=\"outline\">\r\n <mat-label >Variable Name</mat-label>\r\n <textarea matInput #textarea (click)=\"$event.stopPropagation()\"\r\n [(ngModel)]=\"this.activeVariable['variable']\"\r\n placeholder=\"enter variable\"></textarea>\r\n <mat-hint>\r\n A variable is an alphabet or term that represents a form input in the equation.\r\n </mat-hint>\r\n </mat-form-field>\r\n @if (activeVariable['parentInputId']) {\r\n <br>\r\n <mat-label > <small>list function ( \u0192 )</small> </mat-label>\r\n <mat-chip-listbox class=\"mat-mdc-chip-set-stacked\" aria-label=\"Calculation function\">\r\n @for (func of allCalculationFunction; track func) {\r\n <mat-chip-option (click)=\"attachFunction($event,func)\" [selected]=\"activeVariable.function === func\">{{func}}</mat-chip-option>\r\n }\r\n </mat-chip-listbox>\r\n \r\n }\r\n \r\n </ng-container>\r\n </div>\r\n\r\n <mat-toolbar class=\"ion-margin-top\" lines=\"none\">\r\n <span class=\"spacer\"></span>\r\n <button mat-flat-button (click)=\"cancelVariableConfig($event)\">\r\n cancel\r\n </button>\r\n <button mat-raised-button color=\"primary\" [disabled]=\"\r\n !this.activeVariable['formControlName'] ||\r\n !this.activeVariable['variable']\r\n \" (click)=\"saveNewVariable($event)\">\r\n save variable\r\n </button>\r\n\r\n </mat-toolbar>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOpen]=\"disabled\"\r\n>\r\n<div style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5);\">\r\n\r\n\r\n</div>\r\n</ng-template>\r\n", styles: [".labelM{font-size:13px}.tree-instructions{display:flex;align-items:center;gap:8px;padding:12px;background:azure;border-radius:4px;margin-bottom:16px}.info-icon{min-width:38px;margin:8px auto auto}mat-form-field{width:100%;background:azure}.endIcons{height:100%;display:flex!important;align-items:center!important;justify-content:center}mat-chip{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i5.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i5.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i5.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "directive", type: i5.MatChipRemove, selector: "[matChipRemove]" }, { kind: "directive", type: i5.MatChipTrailingIcon, selector: "mat-chip-trailing-icon, [matChipTrailingIcon]" }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i3$2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i10.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i8$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FormInputSelectorComponent, selector: "lib-form-input-selector", inputs: ["errors", "value", "formInputs", "disabled"], outputs: ["change"] }, { kind: "ngmodule", type: OverlayModule }] }); }
283
- }
284
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CalculatedFieldRulesComponent, decorators: [{
285
- type: Component,
286
- args: [{ selector: 'app-calculated-field-rules', standalone: true, imports: [
287
- MatModulesModule,
288
- CommonModule,
289
- FormsModule,
290
- FormInputSelectorComponent,
291
- OverlayModule
292
- ], providers: [{ provide: MatFormFieldControl, useExisting: CalculatedFieldRulesComponent }], template: "\r\n<br>\r\n<div *ngIf=\" !!this.value &&!mapToData?.['id'] && !tableMode\" class=\"tree-instructions\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n Save the input first to enable calculated field configurations\r\n </span>\r\n</div>\r\n\r\n<section >\r\n <mat-form-field [subscriptSizing]=\"'dynamic'\" [floatLabel]=\"'always'\" appearance=\"outline\" >\r\n <mat-label >Equation</mat-label>\r\n <textarea matInput #textarea [(ngModel)]=\"value['formula']\" \r\n (input)=\"formulaChanged($event)\"\r\n placeholder=\"Enter calculation expression\"></textarea>\r\n <mat-hint>\r\n example: ((a+2)/(b-1))*2\r\n </mat-hint>\r\n </mat-form-field>\r\n <mat-form-field [subscriptSizing]=\"'dynamic'\" [floatLabel]=\"'always'\" style=\" margin-bottom: 8px;\" appearance=\"outline\" *ngIf=\"!!value.getFormulaFromAFormInput\">\r\n <mat-label>Equation</mat-label>\r\n <mat-select matNativeControl [value]=\"value.formControlWithFormula\" (selectionChange)=\"linkFormulaSource($event)\"\r\n placeholder=\"select Input with formula\">\r\n @for (input of formInputs; track input.id) {\r\n <mat-option [disabled]=\"\r\n checkIfInputCanBeLinkedToCalVariable(mapToData, input) ||\r\n input.element !== 'select'\" [value]=\"input.formControlName\">{{input.label}}</mat-option>\r\n }\r\n\r\n\r\n </mat-select>\r\n <mat-hint>\r\n Link formula to an input value\r\n </mat-hint>\r\n </mat-form-field>\r\n <mat-chip-listbox #chipList aria-label=\"options\">\r\n\r\n <mat-chip *ngFor=\"let variable of (this.value['variables']||[])\" \r\n (click)=\"value['formula'] = value['formula'] +' '+ variable['variable'] \"\r\n (removed)=\"remove(variable)\">\r\n <div [style.color]=\"\r\n variable['tableCell'] ? 'var(--ion-color-purple)' : ''\r\n \" style=\"font-size: 13px\">\r\n {{ variable[\"variable\"] }}\r\n\r\n - {{ variable[\"label\"] }}\r\n <span style=\"opacity: 0.6; padding-left: 5px\" *ngIf=\"variable['function']\">\r\n {{ variable[\"function\"] }}</span>\r\n </div>\r\n\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n <mat-chip *ngIf=\"!showVariableConfig\" highlighted=\"true\" color=\"accent\" (click)=\"showVariableConfig = !showVariableConfig\">\r\n <span> {{showVariableConfig?'close Variable edit':'Add a new Variable'}} </span>\r\n <mat-icon matChipTrailingIcon>{{\r\n showVariableConfig\r\n ? 'close'\r\n : 'add'\r\n }}</mat-icon>\r\n </mat-chip>\r\n </mat-chip-listbox>\r\n\r\n @if( showVariableConfig){\r\n <ng-container *ngTemplateOutlet=\"variableConfiguration\">\r\n\r\n </ng-container>\r\n }\r\n\r\n</section>\r\n<ng-template #variableConfiguration>\r\n <mat-card style=\"background: var(--mat-sys-surface-container, var(--mat-app-surface));\">\r\n <div style=\"padding: 8px;\">\r\n <div class=\"tree-instructions\" style=\"background: azure\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n <strong>Configure variable </strong><br>\r\n Link a form input to a variable to use in the equation\r\n </span>\r\n </div>\r\n\r\n <lib-form-input-selector \r\n [disabled]=\"!!this.activeVariable['formControlName']\"\r\n [formInputs]=\"numberInputs\" [value]=\"this.activeVariable['inputId']\"\r\n (click)=\"$event.stopPropagation()\" (change)=\"bindInput($event)\"></lib-form-input-selector>\r\n\r\n <ng-container *ngIf=\"this.activeVariable ? !!this.activeVariable['formControlName'] : false\">\r\n <mat-form-field [subscriptSizing]=\"'dynamic'\" [floatLabel]=\"'always'\" appearance=\"outline\">\r\n <mat-label >Variable Name</mat-label>\r\n <textarea matInput #textarea (click)=\"$event.stopPropagation()\"\r\n [(ngModel)]=\"this.activeVariable['variable']\"\r\n placeholder=\"enter variable\"></textarea>\r\n <mat-hint>\r\n A variable is an alphabet or term that represents a form input in the equation.\r\n </mat-hint>\r\n </mat-form-field>\r\n @if (activeVariable['parentInputId']) {\r\n <br>\r\n <mat-label > <small>list function ( \u0192 )</small> </mat-label>\r\n <mat-chip-listbox class=\"mat-mdc-chip-set-stacked\" aria-label=\"Calculation function\">\r\n @for (func of allCalculationFunction; track func) {\r\n <mat-chip-option (click)=\"attachFunction($event,func)\" [selected]=\"activeVariable.function === func\">{{func}}</mat-chip-option>\r\n }\r\n </mat-chip-listbox>\r\n \r\n }\r\n \r\n </ng-container>\r\n </div>\r\n\r\n <mat-toolbar class=\"ion-margin-top\" lines=\"none\">\r\n <span class=\"spacer\"></span>\r\n <button mat-flat-button (click)=\"cancelVariableConfig($event)\">\r\n cancel\r\n </button>\r\n <button mat-raised-button color=\"primary\" [disabled]=\"\r\n !this.activeVariable['formControlName'] ||\r\n !this.activeVariable['variable']\r\n \" (click)=\"saveNewVariable($event)\">\r\n save variable\r\n </button>\r\n\r\n </mat-toolbar>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOpen]=\"disabled\"\r\n>\r\n<div style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5);\">\r\n\r\n\r\n</div>\r\n</ng-template>\r\n", styles: [".labelM{font-size:13px}.tree-instructions{display:flex;align-items:center;gap:8px;padding:12px;background:azure;border-radius:4px;margin-bottom:16px}.info-icon{min-width:38px;margin:8px auto auto}mat-form-field{width:100%;background:azure}.endIcons{height:100%;display:flex!important;align-items:center!important;justify-content:center}mat-chip{cursor:pointer}\n"] }]
293
- }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
294
- type: Optional
295
- }, {
296
- type: Self
297
- }] }, { type: i0.ElementRef }], propDecorators: { id: [{
298
- type: HostBinding
299
- }], disabled: [{
300
- type: Input
301
- }], mapToData: [{
302
- type: Input
303
- }], value: [{
304
- type: Input
305
- }], formInputs: [{
306
- type: Input
307
- }], errors: [{
308
- type: Input
309
- }], valueChange2dWithPath: [{
310
- type: Output
311
- }], valueChanged: [{
312
- type: Output
313
- }] } });
314
-
315
- export { CalculatedFieldRulesComponent };
316
- //# sourceMappingURL=ngx-t-forms-calculated-field-rules.component-BUKzXsXn.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngx-t-forms-calculated-field-rules.component-BUKzXsXn.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/calculated-field-rules/calculated-field-rules.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/calculated-field-rules/calculated-field-rules.component.html"],"sourcesContent":["import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n\r\n OnInit,\r\n Optional,\r\n Output,\r\n Self,\r\n} from '@angular/core';\r\n\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { MatModulesModule } from '../../../../shared/modules/mat-modules.module';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CalculatedFieldRules, TableConfigurationsInterface } from 'ngx-t-forms-types';\r\n\r\nimport { FormColumnInputs } from 'ngx-t-forms-types';\r\nimport { FormsModule, NgControl } from '@angular/forms';\r\nimport { MatSelectChange } from '@angular/material/select';\r\nimport { FormInputSelectorComponent } from '../form-input-selector/form-input-selector.component';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { Subject } from 'rxjs';\r\nimport { IConfigElementError } from '../../t-dynamic-data-edit.component';\r\nimport { CalculationFunctions, calculationVariableInterface } from \"ngx-t-forms-types\"\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\n@Component({\r\n selector: 'app-calculated-field-rules',\r\n templateUrl: './calculated-field-rules.component.html',\r\n styleUrls: ['./calculated-field-rules.component.scss'],\r\n standalone: true,\r\n imports: [\r\n MatModulesModule,\r\n CommonModule,\r\n FormsModule,\r\n FormInputSelectorComponent,\r\n OverlayModule\r\n ],\r\n providers: [{ provide: MatFormFieldControl, useExisting: CalculatedFieldRulesComponent }],\r\n})\r\nexport class CalculatedFieldRulesComponent implements OnInit, MatFormFieldControl<CalculatedFieldRules | undefined> {\r\n\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n\r\n @HostBinding() id = `app-calculated-field-rules-${CalculatedFieldRulesComponent.nextId++}`;\r\n\r\n placeholder: string = ''\r\n constructor(@Optional() @Self() public ngControl: NgControl, private _elementRef: ElementRef<HTMLElement>,) { }\r\n focused: boolean = false;\r\n get empty() {\r\n return !this.value\r\n }\r\n get shouldLabelFloat() {\r\n return this.focused || !this.empty;\r\n }\r\n required: boolean = false;\r\n @Input() disabled: boolean = false;\r\n get errorState(): boolean {\r\n const hasError = !!this.ngControl?.control?.errors || (this.errors || []).length > 0 && this.touched\r\n return !this.value && !!this.required || hasError\r\n }\r\n\r\n controlType?: string | undefined;\r\n autofilled?: boolean | undefined;\r\n userAriaDescribedBy?: string | undefined;\r\n disableAutomaticLabeling?: boolean | undefined;\r\n setDescribedByIds(ids: string[]) {\r\n // Ensure the component view is initialized\r\n if (this._elementRef && this._elementRef.nativeElement) {\r\n const controlElement = this._elementRef.nativeElement.querySelector('.app-calculated-field-rules');\r\n // Check if the controlElement exists before attempting to set its attribute\r\n if (controlElement) {\r\n controlElement.setAttribute('aria-describedby', ids.join(' '));\r\n }\r\n }\r\n }\r\n onContainerClick(event: MouseEvent): void {\r\n this.markAsTouched();\r\n this.stateChanges.next();\r\n }\r\n\r\n touched: boolean = false;\r\n onTouched = () => { };\r\n markAsTouched() {\r\n console.log('markAsTouched')\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n\r\n\r\n\r\n @Input() mapToData: FormColumnInputs | undefined = undefined;\r\n _value: CalculatedFieldRules = {} as any;\r\n @Input() set value(value: CalculatedFieldRules) {\r\n this._value = value;\r\n }\r\n get value(): CalculatedFieldRules {\r\n return this._value;\r\n }\r\n @Input() formInputs: Array<FormColumnInputs> = []\r\n @Input() errors: IConfigElementError[] | undefined = [];\r\n @Output() valueChange2dWithPath = new EventEmitter<any>();\r\n @Output() valueChanged = new EventEmitter<CalculatedFieldRules | any>();\r\n\r\n\r\n get allCalculationFunction() {\r\n return Object.values(\r\n CalculationFunctions\r\n )\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n applyColTo() {\r\n let i: any = this.formInputs?.find(\r\n (input: any) => input.id === this.activeVariable['inputId']\r\n );\r\n if (i?.element === 'tableSelection') {\r\n return this.selectedInputVariable().tableConfig.displayedColumnsInOrder\r\n } else if (i?.multipleInputInEditId) {\r\n const parentInput = this.formInputs?.find(\r\n (input: any) => input.id === i?.multipleInputInEditId\r\n );\r\n return parentInput?.formInputs\r\n }\r\n\r\n return []\r\n }\r\n get numberInputs() {\r\n\r\n return this.formInputs?.filter((input: FormColumnInputs) => input.dataType === 'number' || input.type === 'number')\r\n }\r\n get tableMode(): Boolean {\r\n return !!this.mapToData?.tableConfig\r\n }\r\n get tableConfig(): TableConfigurationsInterface | undefined {\r\n return this.mapToData?.tableConfig\r\n }\r\n\r\n inputIsInItemList(v: FormColumnInputs) {\r\n let i = this.formInputs?.find(\r\n (input: any) => input.formControlName === v['formControlName']\r\n );\r\n\r\n const hasParent = i ? i['multipleInputInEditId'] : false;\r\n\r\n const isInTable = (v as any)['tableCell'];\r\n\r\n return !!hasParent || isInTable;\r\n }\r\n selectedVariableIsTable(): boolean {\r\n const selectedInput: any = this.formInputs?.find(\r\n (inp: { [x: string]: any }) =>\r\n inp['id'] === this.activeVariable['inputId']\r\n );\r\n const isTable = selectedInput\r\n ? selectedInput['element'] === 'tableSelection'\r\n : false;\r\n\r\n\r\n return !!isTable\r\n }\r\n selectedInputVariable(): any {\r\n const selectedInput: any = this.formInputs?.find(\r\n (inp: { [x: string]: any }) =>\r\n inp['formControlName'] === this.activeVariable['formControlName']\r\n );\r\n const isTable = selectedInput\r\n ? selectedInput['element'] === 'tableSelection'\r\n : false;\r\n return isTable ? selectedInput : {};\r\n }\r\n\r\n\r\n checkIfInputCanBeLinkedToCalVariable(\r\n currentInput: FormColumnInputs | undefined,\r\n inputToDisable: { [x: string]: any; formControlName: any }\r\n ) {\r\n if (currentInput?.['formControlName'] === inputToDisable.formControlName) {\r\n return true;\r\n } else {\r\n if (!currentInput?.['multipleInputInEditId']\r\n ) {\r\n return !!inputToDisable['parentInput'] || !!inputToDisable['multipleInputInEditId'];\r\n } else {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n valueChangedPost(event: any) {\r\n this.valueChanged.emit(this.value);\r\n }\r\n activeVariable: any = {} as any;\r\n addVariable() {\r\n if (!this.value?.['variables']) {\r\n this.value = {\r\n ...this.value,\r\n variables: [],\r\n formula: this.value?.formula || ''\r\n }\r\n }\r\n this.value = {\r\n ...this.value,\r\n variables: [...this.value.variables, ({\r\n formControlName: '',\r\n variable: '',\r\n } as any)]\r\n }\r\n }\r\n linkFormulaSource(event: MatSelectChange) {\r\n if (!this.value) {\r\n this.value = {} as any\r\n }\r\n this.value!.formControlWithFormula = event.value\r\n this.value!.formula = undefined as any\r\n this.valueChanged.emit(this.value)\r\n }\r\n showVariableConfig: boolean = false;\r\n bindInput(\r\n inputId: string\r\n ) {\r\n const input = this.formInputs?.find(\r\n (input: any) => input.id === inputId\r\n )\r\n if (!input) return;\r\n if (this.activeVariable['formControlName'] === input['formControlName']) {\r\n return\r\n }\r\n this.activeVariable['formControlName'] = input['formControlName'];\r\n this.activeVariable['label'] = input['label'];\r\n this.activeVariable['inputId'] = input['id']\r\n this.activeVariable['parentInputId'] = input['multipleInputInEditId']\r\n\r\n }\r\n formulaChanged(event: any) {\r\n this.valueChanged.emit(this.value);\r\n }\r\n bindTableCol(event: { stopPropagation: () => void }, col: string) {\r\n this.activeVariable['formControlName'] = col;\r\n this.activeVariable['tableCell'] = true;\r\n\r\n this.activeVariable['label'] = this.tableConfig?.columnsConfig[col].label;\r\n event.stopPropagation();\r\n }\r\n tableFunctionToCol(\r\n event: { stopPropagation: () => void },\r\n col: string | number | any\r\n ) {\r\n if (typeof col === 'object') {\r\n this.activeVariable['applyFunctionToCol'] = col['formControlName'];\r\n this.activeVariable['applyFunctionToLabel'] = col['label'];\r\n } else {\r\n this.activeVariable['applyFunctionToCol'] = col;\r\n\r\n this.activeVariable['applyFunctionToLabel'] =\r\n this.selectedInputVariable()?.tableConfig.columnsConfig[col].label;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n filterValuesByThisCol(\r\n event: { stopPropagation: () => void },\r\n col: string\r\n ) {\r\n this.activeVariable['filterValuesByCol'] = col;\r\n this.activeVariable['filterValuesByThisColLabel'] =\r\n this.selectedInputVariable()?.tableConfig.columnsConfig[col].label;\r\n event.stopPropagation();\r\n }\r\n unlick(event: { stopPropagation: () => void }) {\r\n delete (this.activeVariable as any)['formControlName'];\r\n delete (this.activeVariable as any)['label'];\r\n delete this.activeVariable['tableCell'];\r\n event.stopPropagation();\r\n }\r\n unlinkTableFunctionToCol(event: { stopPropagation: () => void }) {\r\n delete this.activeVariable['applyFunctionToCol'];\r\n delete this.activeVariable['applyFunctionToLabel'];\r\n event.stopPropagation();\r\n }\r\n unlinkTableFilter(event: { stopPropagation: () => void }) {\r\n delete this.activeVariable['filterValuesByCol'];\r\n delete this.activeVariable['filterValuesByThisColLabel'];\r\n event.stopPropagation();\r\n }\r\n functions = [\r\n { value: 'avg', label: 'Average' },\r\n { value: 'max', label: 'Maximum' },\r\n { value: 'min', label: 'lowest' },\r\n { value: 'sum', label: 'Sum' },\r\n ];\r\n attachFunction(event: { stopPropagation: () => void }, value: any) {\r\n \r\n if (this.activeVariable['function'] === value) {\r\n this.activeVariable['function'] = undefined\r\n this.activeVariable['applyFunctionToCol'] = undefined;\r\n this.activeVariable['applyFunctionToLabel'] = undefined;\r\n\r\n } else {\r\n (this.activeVariable['function'] = value)\r\n this.activeVariable['applyFunctionToCol'] = this.activeVariable['formControlName'];\r\n this.activeVariable['applyFunctionToLabel'] = this.activeVariable['label'];\r\n }\r\n\r\n\r\n event.stopPropagation();\r\n }\r\n saveNewVariable(event: any) {\r\n\r\n if (!this.value?.['variables']) {\r\n this.value = {\r\n ...this.value,\r\n variables: [],\r\n formula: this.value?.formula || ''\r\n }\r\n }\r\n this.activeVariable['id'] = uuidv4();\r\n if (this.inputIsInItemList(this.activeVariable)) {\r\n let i = this.formInputs?.find(\r\n (input: any) =>\r\n input.formControlName === this.activeVariable['formControlName']\r\n );\r\n const hasParent = i ? i['multipleInputInEditId'] : false;\r\n\r\n\r\n this.activeVariable['parentInputId'] =\r\n hasParent && i ? i['multipleInputInEditId'] : undefined;\r\n\r\n this.value = {\r\n ...this.value,\r\n variables: [...this.value['variables'], this.activeVariable],\r\n }\r\n } else {\r\n this.value = {\r\n ...this.value,\r\n variables: [...this.value['variables'], this.activeVariable],\r\n }\r\n }\r\n\r\n this.activeVariable = {} as any;\r\n this.showVariableConfig = false;\r\n console.error(this.value)\r\n this.valueChanged.emit(this.value);\r\n }\r\n remove(variable: calculationVariableInterface) {\r\n this.value = {\r\n ...this.value,\r\n variables: this.value.variables.filter((v: calculationVariableInterface) => v.id !== variable.id)\r\n }\r\n\r\n }\r\n cancelVariableConfig(event: any) {\r\n this.activeVariable = {} as any;\r\n this.showVariableConfig = false;\r\n }\r\n}\r\n","\r\n<br>\r\n<div *ngIf=\" !!this.value &&!mapToData?.['id'] && !tableMode\" class=\"tree-instructions\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n Save the input first to enable calculated field configurations\r\n </span>\r\n</div>\r\n\r\n<section >\r\n <mat-form-field [subscriptSizing]=\"'dynamic'\" [floatLabel]=\"'always'\" appearance=\"outline\" >\r\n <mat-label >Equation</mat-label>\r\n <textarea matInput #textarea [(ngModel)]=\"value['formula']\" \r\n (input)=\"formulaChanged($event)\"\r\n placeholder=\"Enter calculation expression\"></textarea>\r\n <mat-hint>\r\n example: ((a+2)/(b-1))*2\r\n </mat-hint>\r\n </mat-form-field>\r\n <mat-form-field [subscriptSizing]=\"'dynamic'\" [floatLabel]=\"'always'\" style=\" margin-bottom: 8px;\" appearance=\"outline\" *ngIf=\"!!value.getFormulaFromAFormInput\">\r\n <mat-label>Equation</mat-label>\r\n <mat-select matNativeControl [value]=\"value.formControlWithFormula\" (selectionChange)=\"linkFormulaSource($event)\"\r\n placeholder=\"select Input with formula\">\r\n @for (input of formInputs; track input.id) {\r\n <mat-option [disabled]=\"\r\n checkIfInputCanBeLinkedToCalVariable(mapToData, input) ||\r\n input.element !== 'select'\" [value]=\"input.formControlName\">{{input.label}}</mat-option>\r\n }\r\n\r\n\r\n </mat-select>\r\n <mat-hint>\r\n Link formula to an input value\r\n </mat-hint>\r\n </mat-form-field>\r\n <mat-chip-listbox #chipList aria-label=\"options\">\r\n\r\n <mat-chip *ngFor=\"let variable of (this.value['variables']||[])\" \r\n (click)=\"value['formula'] = value['formula'] +' '+ variable['variable'] \"\r\n (removed)=\"remove(variable)\">\r\n <div [style.color]=\"\r\n variable['tableCell'] ? 'var(--ion-color-purple)' : ''\r\n \" style=\"font-size: 13px\">\r\n {{ variable[\"variable\"] }}\r\n\r\n - {{ variable[\"label\"] }}\r\n <span style=\"opacity: 0.6; padding-left: 5px\" *ngIf=\"variable['function']\">\r\n {{ variable[\"function\"] }}</span>\r\n </div>\r\n\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n <mat-chip *ngIf=\"!showVariableConfig\" highlighted=\"true\" color=\"accent\" (click)=\"showVariableConfig = !showVariableConfig\">\r\n <span> {{showVariableConfig?'close Variable edit':'Add a new Variable'}} </span>\r\n <mat-icon matChipTrailingIcon>{{\r\n showVariableConfig\r\n ? 'close'\r\n : 'add'\r\n }}</mat-icon>\r\n </mat-chip>\r\n </mat-chip-listbox>\r\n\r\n @if( showVariableConfig){\r\n <ng-container *ngTemplateOutlet=\"variableConfiguration\">\r\n\r\n </ng-container>\r\n }\r\n\r\n</section>\r\n<ng-template #variableConfiguration>\r\n <mat-card style=\"background: var(--mat-sys-surface-container, var(--mat-app-surface));\">\r\n <div style=\"padding: 8px;\">\r\n <div class=\"tree-instructions\" style=\"background: azure\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n <strong>Configure variable </strong><br>\r\n Link a form input to a variable to use in the equation\r\n </span>\r\n </div>\r\n\r\n <lib-form-input-selector \r\n [disabled]=\"!!this.activeVariable['formControlName']\"\r\n [formInputs]=\"numberInputs\" [value]=\"this.activeVariable['inputId']\"\r\n (click)=\"$event.stopPropagation()\" (change)=\"bindInput($event)\"></lib-form-input-selector>\r\n\r\n <ng-container *ngIf=\"this.activeVariable ? !!this.activeVariable['formControlName'] : false\">\r\n <mat-form-field [subscriptSizing]=\"'dynamic'\" [floatLabel]=\"'always'\" appearance=\"outline\">\r\n <mat-label >Variable Name</mat-label>\r\n <textarea matInput #textarea (click)=\"$event.stopPropagation()\"\r\n [(ngModel)]=\"this.activeVariable['variable']\"\r\n placeholder=\"enter variable\"></textarea>\r\n <mat-hint>\r\n A variable is an alphabet or term that represents a form input in the equation.\r\n </mat-hint>\r\n </mat-form-field>\r\n @if (activeVariable['parentInputId']) {\r\n <br>\r\n <mat-label > <small>list function ( ƒ )</small> </mat-label>\r\n <mat-chip-listbox class=\"mat-mdc-chip-set-stacked\" aria-label=\"Calculation function\">\r\n @for (func of allCalculationFunction; track func) {\r\n <mat-chip-option (click)=\"attachFunction($event,func)\" [selected]=\"activeVariable.function === func\">{{func}}</mat-chip-option>\r\n }\r\n </mat-chip-listbox>\r\n \r\n }\r\n \r\n </ng-container>\r\n </div>\r\n\r\n <mat-toolbar class=\"ion-margin-top\" lines=\"none\">\r\n <span class=\"spacer\"></span>\r\n <button mat-flat-button (click)=\"cancelVariableConfig($event)\">\r\n cancel\r\n </button>\r\n <button mat-raised-button color=\"primary\" [disabled]=\"\r\n !this.activeVariable['formControlName'] ||\r\n !this.activeVariable['variable']\r\n \" (click)=\"saveNewVariable($event)\">\r\n save variable\r\n </button>\r\n\r\n </mat-toolbar>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOpen]=\"disabled\"\r\n>\r\n<div style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5);\">\r\n\r\n\r\n</div>\r\n</ng-template>\r\n"],"names":["uuidv4","i3","i4","i6","i7","i9","i10"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;MAyCa,6BAA6B,CAAA;aAEjC,IAAM,CAAA,MAAA,GAAG,CAAH,CAAK;IAMlB,WAAuC,CAAA,SAAoB,EAAU,WAAoC,EAAA;QAAlE,IAAS,CAAA,SAAA,GAAT,SAAS;QAAqB,IAAW,CAAA,WAAA,GAAX,WAAW;AALhF,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAEnB,QAAA,IAAA,CAAA,EAAE,GAAG,CAA8B,2BAAA,EAAA,6BAA6B,CAAC,MAAM,EAAE,EAAE;QAE1F,IAAW,CAAA,WAAA,GAAW,EAAE;QAExB,IAAO,CAAA,OAAA,GAAY,KAAK;QAOxB,IAAQ,CAAA,QAAA,GAAY,KAAK;QAChB,IAAQ,CAAA,QAAA,GAAY,KAAK;QAyBlC,IAAO,CAAA,OAAA,GAAY,KAAK;AACxB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,GAAI;QAWZ,IAAS,CAAA,SAAA,GAAiC,SAAS;QAC5D,IAAM,CAAA,MAAA,GAAyB,EAAS;QAO/B,IAAU,CAAA,UAAA,GAA4B,EAAE;QACxC,IAAM,CAAA,MAAA,GAAsC,EAAE;AAC7C,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAO;AAC/C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAA8B;QA2FvE,IAAc,CAAA,cAAA,GAAQ,EAAS;QAyB/B,IAAkB,CAAA,kBAAA,GAAY,KAAK;AAoEnC,QAAA,IAAA,CAAA,SAAS,GAAG;AACV,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;AAClC,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;AAClC,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;AACjC,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;SAC/B;;AApPD,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK;;AAEpB,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK;;AAIpC,IAAA,IAAI,UAAU,GAAA;QACZ,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO;AACpG,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ;;AAOnD,IAAA,iBAAiB,CAAC,GAAa,EAAA;;QAE7B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;AACtD,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,6BAA6B,CAAC;;YAElG,IAAI,cAAc,EAAE;AAClB,gBAAA,cAAc,CAAC,YAAY,CAAC,kBAAkB,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;;;AAIpE,IAAA,gBAAgB,CAAC,KAAiB,EAAA;QAChC,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;IAK1B,aAAa,GAAA;AACX,QAAA,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;;IAQvB,IAAa,KAAK,CAAC,KAA2B,EAAA;AAC5C,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;AAErB,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;;AAQpB,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,MAAM,CAAC,MAAM,CAClB,oBAAoB,CACrB;;AAGH,IAAA,QAAQ;IAER,UAAU,GAAA;QACR,IAAI,CAAC,GAAQ,IAAI,CAAC,UAAU,EAAE,IAAI,CAChC,CAAC,KAAU,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAC5D;AACD,QAAA,IAAI,CAAC,EAAE,OAAO,KAAK,gBAAgB,EAAE;YACnC,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC,WAAW,CAAC,uBAAuB;;AAClE,aAAA,IAAI,CAAC,EAAE,qBAAqB,EAAE;YACnC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CACvC,CAAC,KAAU,KAAK,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,qBAAqB,CACtD;YACD,OAAO,WAAW,EAAE,UAAU;;AAGhC,QAAA,OAAO,EAAE;;AAEX,IAAA,IAAI,YAAY,GAAA;QAEd,OAAO,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,KAAuB,KAAK,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;;AAErH,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW;;AAEtC,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,WAAW;;AAGpC,IAAA,iBAAiB,CAAC,CAAmB,EAAA;QACnC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAC3B,CAAC,KAAU,KAAK,KAAK,CAAC,eAAe,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAC/D;AAED,QAAA,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,uBAAuB,CAAC,GAAG,KAAK;AAExD,QAAA,MAAM,SAAS,GAAI,CAAS,CAAC,WAAW,CAAC;AAEzC,QAAA,OAAO,CAAC,CAAC,SAAS,IAAI,SAAS;;IAEjC,uBAAuB,GAAA;QACrB,MAAM,aAAa,GAAQ,IAAI,CAAC,UAAU,EAAE,IAAI,CAC9C,CAAC,GAAyB,KACxB,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAC/C;QACD,MAAM,OAAO,GAAG;AACd,cAAE,aAAa,CAAC,SAAS,CAAC,KAAK;cAC7B,KAAK;QAGT,OAAO,CAAC,CAAC,OAAO;;IAElB,qBAAqB,GAAA;QACnB,MAAM,aAAa,GAAQ,IAAI,CAAC,UAAU,EAAE,IAAI,CAC9C,CAAC,GAAyB,KACxB,GAAG,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,CACpE;QACD,MAAM,OAAO,GAAG;AACd,cAAE,aAAa,CAAC,SAAS,CAAC,KAAK;cAC7B,KAAK;QACT,OAAO,OAAO,GAAG,aAAa,GAAG,EAAE;;IAIrC,oCAAoC,CAClC,YAA0C,EAC1C,cAA0D,EAAA;QAE1D,IAAI,YAAY,GAAG,iBAAiB,CAAC,KAAK,cAAc,CAAC,eAAe,EAAE;AACxE,YAAA,OAAO,IAAI;;aACN;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,uBAAuB,CAAC,EAC1C;AACA,gBAAA,OAAO,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,uBAAuB,CAAC;;iBAC9E;gBACL;;;;AAKN,IAAA,gBAAgB,CAAC,KAAU,EAAA;QACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGpC,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,EAAE;YAC9B,IAAI,CAAC,KAAK,GAAG;gBACX,GAAG,IAAI,CAAC,KAAK;AACb,gBAAA,SAAS,EAAE,EAAE;AACb,gBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI;aACjC;;QAEH,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,IAAI,CAAC,KAAK;YACb,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAG;AACpC,oBAAA,eAAe,EAAE,EAAE;AACnB,oBAAA,QAAQ,EAAE,EAAE;iBACL;SACV;;AAEH,IAAA,iBAAiB,CAAC,KAAsB,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,GAAG,EAAS;;QAExB,IAAI,CAAC,KAAM,CAAC,sBAAsB,GAAG,KAAK,CAAC,KAAK;AAChD,QAAA,IAAI,CAAC,KAAM,CAAC,OAAO,GAAG,SAAgB;QACtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGpC,IAAA,SAAS,CACP,OAAe,EAAA;AAEf,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CACjC,CAAC,KAAU,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,CACrC;AACD,QAAA,IAAI,CAAC,KAAK;YAAE;AACZ,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,KAAK,KAAK,CAAC,iBAAiB,CAAC,EAAE;YACvE;;QAEF,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC;QACjE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;QAC5C,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,uBAAuB,CAAC;;AAGvE,IAAA,cAAc,CAAC,KAAU,EAAA;QACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;IAEpC,YAAY,CAAC,KAAsC,EAAE,GAAW,EAAA;AAC9D,QAAA,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,GAAG,GAAG;AAC5C,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,IAAI;AAEvC,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK;QACzE,KAAK,CAAC,eAAe,EAAE;;IAEzB,kBAAkB,CAChB,KAAsC,EACtC,GAA0B,EAAA;AAE1B,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,GAAG,GAAG,CAAC,iBAAiB,CAAC;YAClE,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;;aACrD;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,GAAG,GAAG;AAE/C,YAAA,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC;AACzC,gBAAA,IAAI,CAAC,qBAAqB,EAAE,EAAE,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK;;QAGtE,KAAK,CAAC,eAAe,EAAE;;IAEzB,qBAAqB,CACnB,KAAsC,EACtC,GAAW,EAAA;AAEX,QAAA,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,GAAG,GAAG;AAC9C,QAAA,IAAI,CAAC,cAAc,CAAC,4BAA4B,CAAC;AAC/C,YAAA,IAAI,CAAC,qBAAqB,EAAE,EAAE,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK;QACpE,KAAK,CAAC,eAAe,EAAE;;AAEzB,IAAA,MAAM,CAAC,KAAsC,EAAA;AAC3C,QAAA,OAAQ,IAAI,CAAC,cAAsB,CAAC,iBAAiB,CAAC;AACtD,QAAA,OAAQ,IAAI,CAAC,cAAsB,CAAC,OAAO,CAAC;AAC5C,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;QACvC,KAAK,CAAC,eAAe,EAAE;;AAEzB,IAAA,wBAAwB,CAAC,KAAsC,EAAA;AAC7D,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC;AAChD,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC;QAClD,KAAK,CAAC,eAAe,EAAE;;AAEzB,IAAA,iBAAiB,CAAC,KAAsC,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,4BAA4B,CAAC;QACxD,KAAK,CAAC,eAAe,EAAE;;IAQzB,cAAc,CAAC,KAAsC,EAAE,KAAU,EAAA;QAE/D,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,KAAK,EAAE;AAC7C,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,SAAS;AAC3C,YAAA,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,GAAG,SAAS;AACrD,YAAA,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,GAAG,SAAS;;aAElD;YACL,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK;AACxC,YAAA,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC;AAClF,YAAA,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;;QAI5E,KAAK,CAAC,eAAe,EAAE;;AAEzB,IAAA,eAAe,CAAC,KAAU,EAAA;QAExB,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,EAAE;YAC9B,IAAI,CAAC,KAAK,GAAG;gBACX,GAAG,IAAI,CAAC,KAAK;AACb,gBAAA,SAAS,EAAE,EAAE;AACb,gBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI;aACjC;;QAEH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAGA,EAAM,EAAE;QACpC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YAC/C,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAC3B,CAAC,KAAU,KACT,KAAK,CAAC,eAAe,KAAK,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,CACnE;AACD,YAAA,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,uBAAuB,CAAC,GAAG,KAAK;AAGxD,YAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;AAClC,gBAAA,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,uBAAuB,CAAC,GAAG,SAAS;YAEzD,IAAI,CAAC,KAAK,GAAG;gBACX,GAAG,IAAI,CAAC,KAAK;AACb,gBAAA,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC;aAC7D;;aACI;YACL,IAAI,CAAC,KAAK,GAAG;gBACX,GAAG,IAAI,CAAC,KAAK;AACb,gBAAA,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC;aAC7D;;AAGH,QAAA,IAAI,CAAC,cAAc,GAAG,EAAS;AAC/B,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;AAC/B,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAEpC,IAAA,MAAM,CAAC,QAAsC,EAAA;QAC3C,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,IAAI,CAAC,KAAK;YACb,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAA+B,KAAK,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE;SACjG;;AAGH,IAAA,oBAAoB,CAAC,KAAU,EAAA;AAC7B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAS;AAC/B,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;;+GA7TtB,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,EAAA,SAAA,EAF7B,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC,ECvC3F,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,4hLAwIA,EDvGI,MAAA,EAAA,CAAA,4WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,oFAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,4aACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,0BAA0B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC1B,aAAa,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIJ,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAdzC,SAAS;+BACE,4BAA4B,EAAA,UAAA,EAG1B,IAAI,EACP,OAAA,EAAA;wBACP,gBAAgB;wBAChB,YAAY;wBACZ,WAAW;wBACX,0BAA0B;wBAC1B;qBACD,EACU,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAA+B,6BAAA,EAAE,CAAC,EAAA,QAAA,EAAA,4hLAAA,EAAA,MAAA,EAAA,CAAA,4WAAA,CAAA,EAAA;;0BAU5E;;0BAAY;kEAHV,EAAE,EAAA,CAAA;sBAAhB;gBAYQ,QAAQ,EAAA,CAAA;sBAAhB;gBAqCQ,SAAS,EAAA,CAAA;sBAAjB;gBAEY,KAAK,EAAA,CAAA;sBAAjB;gBAMQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACS,qBAAqB,EAAA,CAAA;sBAA9B;gBACS,YAAY,EAAA,CAAA;sBAArB;;;;;"}