structra-ui 0.1.15 → 0.1.17

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 (149) hide show
  1. package/esm2022/app/_utils/date-pt-br.utils.mjs +82 -0
  2. package/esm2022/app/_utils/decimal-br.utils.mjs +154 -0
  3. package/esm2022/app/_utils/estados-br.data.mjs +37 -0
  4. package/esm2022/app/_utils/integer-br.utils.mjs +48 -0
  5. package/esm2022/app/_utils/integer-value.utils.mjs +19 -0
  6. package/esm2022/app/_utils/scroll/body-scroll-lock.util.mjs +97 -0
  7. package/esm2022/app/app-shell/_models/breadcrumb-item.model.mjs +2 -0
  8. package/esm2022/app/app-shell/app-shell-sidebar-template.directive.mjs +29 -0
  9. package/esm2022/app/app-shell/app-shell.component.mjs +105 -0
  10. package/esm2022/app/app-shell/breadcrumb/breadcrumb.component.mjs +18 -0
  11. package/esm2022/app/app-shell/index.mjs +19 -0
  12. package/esm2022/app/app-shell/sidebar/app-sidebar-toolbar.directive.mjs +23 -0
  13. package/esm2022/app/app-shell/sidebar/shell-sidebar-toggle.component.mjs +36 -0
  14. package/esm2022/app/app-shell/sidebar/sidebar.component.mjs +84 -0
  15. package/esm2022/app/app-shell/sidebar-reveal.constants.mjs +9 -0
  16. package/esm2022/app/app-shell/topbar/topbar.component.mjs +14 -0
  17. package/esm2022/app/app-shell/user-menu/user-menu.component.mjs +52 -0
  18. package/esm2022/app/buttons/base-button/base-button.component.mjs +97 -0
  19. package/esm2022/app/buttons/index.mjs +2 -0
  20. package/esm2022/app/data-display/_models/card-item-view.model.mjs +2 -0
  21. package/esm2022/app/data-display/_models/data-display.models.mjs +2 -0
  22. package/esm2022/app/data-display/_models/data-grid-column.model.mjs +2 -0
  23. package/esm2022/app/data-display/_models/index.mjs +2 -0
  24. package/esm2022/app/data-display/adaptive-data-view/adaptive-data-view.component.mjs +124 -0
  25. package/esm2022/app/data-display/card-list/card-list.component.mjs +208 -0
  26. package/esm2022/app/data-display/dashboard-section/dashboard-section.component.mjs +25 -0
  27. package/esm2022/app/data-display/data-card/data-card.component.mjs +40 -0
  28. package/esm2022/app/data-display/data-grid/data-grid-actions-cell-renderer.component.mjs +41 -0
  29. package/esm2022/app/data-display/data-grid/data-grid.component.mjs +253 -0
  30. package/esm2022/app/data-display/data-list/data-list.component.mjs +40 -0
  31. package/esm2022/app/data-display/data-toolbar/data-toolbar.component.mjs +12 -0
  32. package/esm2022/app/data-display/details-field/details-field.component.mjs +21 -0
  33. package/esm2022/app/data-display/details-view/details-view.component.mjs +44 -0
  34. package/esm2022/app/data-display/empty-state/empty-state-overlay.util.mjs +19 -0
  35. package/esm2022/app/data-display/empty-state/empty-state.component.mjs +30 -0
  36. package/esm2022/app/data-display/index.mjs +19 -0
  37. package/esm2022/app/data-display/list-item/list-item.component.mjs +59 -0
  38. package/esm2022/app/data-display/stat-card/stat-card.component.mjs +59 -0
  39. package/esm2022/app/data-display/status-badge/status-badge.component.mjs +41 -0
  40. package/esm2022/app/data-display/table-empty-state/table-empty-state.component.mjs +31 -0
  41. package/esm2022/app/data-display/table-toolbar/table-toolbar.component.mjs +22 -0
  42. package/esm2022/app/dialogs/_models/lib-dialog-size.model.mjs +8 -0
  43. package/esm2022/app/dialogs/_utils/app-lib-light-block-scroll-strategy.mjs +22 -0
  44. package/esm2022/app/dialogs/_utils/lib-dialog-panel-classes.mjs +6 -0
  45. package/esm2022/app/dialogs/app-dialog/app-dialog.component.mjs +200 -0
  46. package/esm2022/app/dialogs/app-dialog/dialog-footer.directive.mjs +15 -0
  47. package/esm2022/app/dialogs/confirm-dialog/confirm-dialog-data.model.mjs +2 -0
  48. package/esm2022/app/dialogs/confirm-dialog/confirm-dialog.component.mjs +36 -0
  49. package/esm2022/app/dialogs/confirm-dialog/confirm-dialog.service.mjs +47 -0
  50. package/esm2022/app/dialogs/index.mjs +12 -0
  51. package/esm2022/app/dialogs/loading-dialog/loading-dialog-data.model.mjs +2 -0
  52. package/esm2022/app/dialogs/loading-dialog/loading-dialog.component.mjs +19 -0
  53. package/esm2022/app/dialogs/loading-dialog/loading-dialog.service.mjs +38 -0
  54. package/esm2022/app/dialogs/toast/toast-host.component.mjs +65 -0
  55. package/esm2022/app/dialogs/toast/toast.models.mjs +2 -0
  56. package/esm2022/app/dialogs/toast/toast.service.mjs +76 -0
  57. package/esm2022/app/fields/checkbox-fields/_base/boolean-field.directive.mjs +158 -0
  58. package/esm2022/app/fields/checkbox-fields/checkbox-field/checkbox-field.component.mjs +36 -0
  59. package/esm2022/app/fields/checkbox-fields/index.mjs +4 -0
  60. package/esm2022/app/fields/checkbox-fields/switch-field/switch-field.component.mjs +35 -0
  61. package/esm2022/app/fields/dropdown-fields/_base/dropdown-base/dropdown-base.component.mjs +117 -0
  62. package/esm2022/app/fields/dropdown-fields/_base/dropdown-multi-option-field.base.mjs +152 -0
  63. package/esm2022/app/fields/dropdown-fields/_base/dropdown-option-field.base.mjs +149 -0
  64. package/esm2022/app/fields/dropdown-fields/_base/dropdown-trigger-blur.util.mjs +32 -0
  65. package/esm2022/app/fields/dropdown-fields/_models/dropdown-list-bindings.model.mjs +2 -0
  66. package/esm2022/app/fields/dropdown-fields/_models/dropdown-search-page-requested.model.mjs +2 -0
  67. package/esm2022/app/fields/dropdown-fields/_models/index.mjs +2 -0
  68. package/esm2022/app/fields/dropdown-fields/_models/select-option.model.mjs +2 -0
  69. package/esm2022/app/fields/dropdown-fields/_models/select-pagination.model.mjs +2 -0
  70. package/esm2022/app/fields/dropdown-fields/dropdown-search-field/dropdown-search-field.component.mjs +520 -0
  71. package/esm2022/app/fields/dropdown-fields/index.mjs +7 -0
  72. package/esm2022/app/fields/dropdown-fields/multiselect-field/multiselect-field.component.mjs +379 -0
  73. package/esm2022/app/fields/dropdown-fields/select-field/select-field.component.mjs +359 -0
  74. package/esm2022/app/fields/input-fields/_base/base-field.component.mjs +151 -0
  75. package/esm2022/app/fields/input-fields/_base/base-field.directive.mjs +224 -0
  76. package/esm2022/app/fields/input-fields/_base/masked-text-field.base.mjs +135 -0
  77. package/esm2022/app/fields/input-fields/_base/ng-control-field.directive.mjs +127 -0
  78. package/esm2022/app/fields/input-fields/_models/field-common-inputs.model.mjs +2 -0
  79. package/esm2022/app/fields/input-fields/_models/index.mjs +2 -0
  80. package/esm2022/app/fields/input-fields/_utils/mask-complete.validators.mjs +61 -0
  81. package/esm2022/app/fields/input-fields/_utils/mask-format.utils.mjs +40 -0
  82. package/esm2022/app/fields/input-fields/cep-field/cep-field.component.mjs +48 -0
  83. package/esm2022/app/fields/input-fields/cpf-cnpj-field/cpf-cnpj-field.component.mjs +61 -0
  84. package/esm2022/app/fields/input-fields/date-field/date-field.component.mjs +147 -0
  85. package/esm2022/app/fields/input-fields/decimal-field/decimal-field.component.mjs +166 -0
  86. package/esm2022/app/fields/input-fields/index.mjs +22 -0
  87. package/esm2022/app/fields/input-fields/input-mask-field/input-mask-field.component.mjs +52 -0
  88. package/esm2022/app/fields/input-fields/integer-field/integer-field.component.mjs +143 -0
  89. package/esm2022/app/fields/input-fields/password-field/password-field.component.mjs +130 -0
  90. package/esm2022/app/fields/input-fields/phone-field/phone-field.component.mjs +66 -0
  91. package/esm2022/app/fields/input-fields/text-field/text-field.component.mjs +90 -0
  92. package/esm2022/app/fields/input-fields/textarea-field/textarea-field.component.mjs +125 -0
  93. package/esm2022/app/form-layout/_models/form-layout.model.mjs +48 -0
  94. package/esm2022/app/form-layout/_models/form-tabs.model.mjs +2 -0
  95. package/esm2022/app/form-layout/_models/index.mjs +2 -0
  96. package/esm2022/app/form-layout/_models/validation-summary.model.mjs +2 -0
  97. package/esm2022/app/form-layout/form-actions/form-actions.component.mjs +55 -0
  98. package/esm2022/app/form-layout/form-col/form-col.component.mjs +76 -0
  99. package/esm2022/app/form-layout/form-group/form-group.component.mjs +358 -0
  100. package/esm2022/app/form-layout/form-group/form-path.utils.mjs +65 -0
  101. package/esm2022/app/form-layout/form-group/form-root-invalid-ui-refresh.util.mjs +54 -0
  102. package/esm2022/app/form-layout/form-row/form-row.component.mjs +49 -0
  103. package/esm2022/app/form-layout/form-section/form-section.component.mjs +43 -0
  104. package/esm2022/app/form-layout/form-tab/form-tab.component.mjs +67 -0
  105. package/esm2022/app/form-layout/form-tabs/form-tabs.component.mjs +126 -0
  106. package/esm2022/app/form-layout/index.mjs +14 -0
  107. package/esm2022/app/form-layout/layout-stack/layout-stack.component.mjs +56 -0
  108. package/esm2022/app/form-layout/validation-summary/validation-summary.component.mjs +343 -0
  109. package/esm2022/app/loading/skeleton-loading/index.mjs +7 -0
  110. package/esm2022/app/loading/skeleton-loading/skeleton-block/skeleton-block.component.mjs +43 -0
  111. package/esm2022/app/loading/skeleton-loading/skeleton-card/skeleton-card.component.mjs +23 -0
  112. package/esm2022/app/loading/skeleton-loading/skeleton-field-shell/skeleton-field-shell.component.mjs +34 -0
  113. package/esm2022/app/loading/skeleton-loading/skeleton-list/skeleton-list.component.mjs +38 -0
  114. package/esm2022/app/loading/skeleton-loading/skeleton-table/skeleton-table.component.mjs +37 -0
  115. package/esm2022/app/loading/skeleton-loading/skeleton-text/skeleton-text.component.mjs +45 -0
  116. package/esm2022/app/menus/_models/drawer-side.model.mjs +8 -0
  117. package/esm2022/app/menus/_models/drawer-size.model.mjs +8 -0
  118. package/esm2022/app/menus/_models/menu-dropdown-placement.model.mjs +12 -0
  119. package/esm2022/app/menus/_models/menu-item.model.mjs +6 -0
  120. package/esm2022/app/menus/_utils/menu-connected-positions.util.mjs +41 -0
  121. package/esm2022/app/menus/_utils/menu-rows.util.mjs +39 -0
  122. package/esm2022/app/menus/_utils/submenu-connected-positions.util.mjs +23 -0
  123. package/esm2022/app/menus/action-menu/action-menu.component.mjs +48 -0
  124. package/esm2022/app/menus/context-menu/context-menu.component.mjs +112 -0
  125. package/esm2022/app/menus/drawer/drawer.component.mjs +142 -0
  126. package/esm2022/app/menus/dropdown-menu/dropdown-menu.component.mjs +99 -0
  127. package/esm2022/app/menus/index.mjs +11 -0
  128. package/esm2022/app/menus/menu-divider/menu-divider.component.mjs +14 -0
  129. package/esm2022/app/menus/menu-group/menu-group.component.mjs +32 -0
  130. package/esm2022/app/menus/menu-list/menu-list.component.mjs +399 -0
  131. package/esm2022/app/overlay/_models/overlay-placement.model.mjs +11 -0
  132. package/esm2022/app/overlay/_utils/anchored-overlay-positions.util.mjs +84 -0
  133. package/esm2022/app/overlay/anchored-overlay/anchored-overlay.component.mjs +121 -0
  134. package/esm2022/app/overlay/index.mjs +21 -0
  135. package/esm2022/app/overlay/popover/popover-body-template.directive.mjs +17 -0
  136. package/esm2022/app/overlay/popover/popover-footer-template.directive.mjs +17 -0
  137. package/esm2022/app/overlay/popover/popover-trigger.directive.mjs +15 -0
  138. package/esm2022/app/overlay/popover/popover.component.mjs +93 -0
  139. package/esm2022/app/overlay/tooltip/tooltip-panel-template.directive.mjs +20 -0
  140. package/esm2022/app/overlay/tooltip/tooltip.component.mjs +118 -0
  141. package/esm2022/app/theme/app-theme.service.mjs +49 -0
  142. package/esm2022/app/theme/index.mjs +2 -0
  143. package/esm2022/structra-public-api.mjs +18 -0
  144. package/esm2022/structra-ui.mjs +5 -0
  145. package/esm2022/structra-version.mjs +3 -0
  146. package/fesm2022/structra-ui.mjs +8971 -0
  147. package/fesm2022/structra-ui.mjs.map +1 -0
  148. package/index.d.ts +5 -0
  149. package/package.json +15 -6
@@ -0,0 +1,166 @@
1
+ import { ChangeDetectionStrategy, Component, Input, forwardRef, numberAttribute, } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { BaseFieldComponent } from '../_base/base-field.component';
4
+ import { NgControlFieldDirective } from '../_base/ng-control-field.directive';
5
+ import { buildDecimalBrDisplay, buildDecimalBrParseString, caretIndexFromSemantic, extractDecimalBrParts, formatDecimalBr, parseDecimalBr, semanticCaretAt, } from '../../../_utils/decimal-br.utils';
6
+ import * as i0 from "@angular/core";
7
+ export class DecimalFieldComponent extends NgControlFieldDirective {
8
+ constructor() {
9
+ super(...arguments);
10
+ /** Valor máximo permitido (inclusive), com até 2 casas decimais. */
11
+ this.max = 999999;
12
+ this.inputText = '';
13
+ this.filledUi = false;
14
+ }
15
+ refreshFilledUi() {
16
+ this.filledUi = this.inputText.trim().length > 0;
17
+ }
18
+ afterWriteValue(value) {
19
+ if (value == null) {
20
+ this.inputText = '';
21
+ this.refreshFilledUi();
22
+ if (this.ngControl?.control) {
23
+ this.syncControlUi();
24
+ }
25
+ return;
26
+ }
27
+ const v = Math.min(value, this.max);
28
+ this.inputText = formatDecimalBr(v);
29
+ if (v !== value) {
30
+ queueMicrotask(() => this.emitModelValue(v));
31
+ }
32
+ this.refreshFilledUi();
33
+ if (this.ngControl?.control) {
34
+ this.syncControlUi();
35
+ }
36
+ }
37
+ onBeforeInput(event) {
38
+ const e = event;
39
+ if (this.disabled || this.readonly || e.isComposing) {
40
+ return;
41
+ }
42
+ if (e.inputType === 'insertText' || e.inputType === 'insertCompositionText') {
43
+ const data = e.data ?? '';
44
+ if (data.length !== 1) {
45
+ return;
46
+ }
47
+ const input = e.target;
48
+ const { hasComma } = extractDecimalBrParts(input.value);
49
+ if (data === ',') {
50
+ if (hasComma) {
51
+ e.preventDefault();
52
+ }
53
+ return;
54
+ }
55
+ if (/^\d$/.test(data)) {
56
+ return;
57
+ }
58
+ e.preventDefault();
59
+ }
60
+ }
61
+ onNativeInput(event) {
62
+ if (this.disabled || this.readonly) {
63
+ return;
64
+ }
65
+ const input = event.target;
66
+ const caret = input.selectionStart ?? input.value.length;
67
+ const semantic = semanticCaretAt(input.value, caret);
68
+ const parts = extractDecimalBrParts(input.value);
69
+ const display = buildDecimalBrDisplay(parts);
70
+ const parseStr = buildDecimalBrParseString(parts);
71
+ let parsed = parseDecimalBr(parseStr);
72
+ if (parsed != null && parsed > this.max) {
73
+ parsed = this.max;
74
+ const capped = formatDecimalBr(parsed);
75
+ input.value = capped;
76
+ input.setSelectionRange(capped.length, capped.length);
77
+ this.inputText = capped;
78
+ this.emitModelValue(parsed);
79
+ this.refreshFilledUi();
80
+ if (this.ngControl?.control) {
81
+ this.syncControlUi();
82
+ }
83
+ else {
84
+ this.cdr.markForCheck();
85
+ }
86
+ return;
87
+ }
88
+ if (input.value !== display) {
89
+ input.value = display;
90
+ const next = caretIndexFromSemantic(display, semantic);
91
+ input.setSelectionRange(next, next);
92
+ }
93
+ this.inputText = display;
94
+ this.emitModelValue(parsed);
95
+ this.refreshFilledUi();
96
+ if (this.ngControl?.control) {
97
+ this.syncControlUi();
98
+ }
99
+ else {
100
+ this.cdr.markForCheck();
101
+ }
102
+ }
103
+ onBlur() {
104
+ if (this.disabled) {
105
+ this.notifyTouched();
106
+ return;
107
+ }
108
+ const parts = extractDecimalBrParts(this.inputText);
109
+ const parseStr = buildDecimalBrParseString(parts);
110
+ let parsed = parseDecimalBr(parseStr);
111
+ if (parsed != null && parsed > this.max) {
112
+ parsed = this.max;
113
+ }
114
+ const ctrl = this.ngControl?.control;
115
+ const current = ctrl?.value ?? null;
116
+ if (parsed !== current) {
117
+ this.emitModelValue(parsed);
118
+ }
119
+ this.inputText = parsed != null ? formatDecimalBr(parsed) : '';
120
+ this.refreshFilledUi();
121
+ this.notifyTouched();
122
+ if (this.ngControl?.control) {
123
+ this.syncControlUi();
124
+ }
125
+ else {
126
+ this.cdr.markForCheck();
127
+ }
128
+ }
129
+ onClear() {
130
+ if (this.disabled || this.readonly) {
131
+ return;
132
+ }
133
+ this.inputText = '';
134
+ this.emitModelValue(null);
135
+ this.notifyTouched();
136
+ this.refreshFilledUi();
137
+ if (this.ngControl?.control) {
138
+ this.syncControlUi();
139
+ }
140
+ else {
141
+ this.cdr.markForCheck();
142
+ }
143
+ }
144
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DecimalFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
145
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: DecimalFieldComponent, isStandalone: true, selector: "app-decimal-field", inputs: { max: ["max", "max", numberAttribute] }, providers: [
146
+ {
147
+ provide: NG_VALUE_ACCESSOR,
148
+ useExisting: forwardRef(() => DecimalFieldComponent),
149
+ multi: true,
150
+ },
151
+ ], usesInheritance: true, ngImport: i0, template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [inputId]=\"controlId\"\n [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\" [prefixIcon]=\"prefixIcon\" [clearable]=\"clearable\"\n [clearAriaLabel]=\"clearAriaLabel\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <input class=\"decimal-field__input\" type=\"text\" inputmode=\"decimal\" [attr.autocomplete]=\"autocompleteAttr\"\n [id]=\"controlId\"\n [attr.name]=\"name || null\" [attr.placeholder]=\"''\" [disabled]=\"disabled\" [readonly]=\"readonly\" [required]=\"uiRequiredEffective\"\n [attr.aria-invalid]=\"uiInvalid\" [attr.aria-describedby]=\"uiAriaDescribedBy\" [value]=\"inputText\"\n (beforeinput)=\"onBeforeInput($event)\" (input)=\"onNativeInput($event)\" (blur)=\"onBlur()\" />\n</app-base-field>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.decimal-field__input{display:block;width:100%;max-width:none;box-sizing:border-box;margin:0;padding:1.35rem .75rem .45rem;font-size:1rem;line-height:1.35;font-family:inherit;color:var(--ui-field-float-input-text);border:none;border-radius:0;background:transparent;box-shadow:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.decimal-field__input::placeholder{color:transparent}.decimal-field__input:focus,.decimal-field__input:focus-visible{outline:none}.decimal-field__input--invalid:not(:disabled)::placeholder{color:transparent}.decimal-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"], dependencies: [{ kind: "component", type: BaseFieldComponent, selector: "app-base-field", inputs: ["label", "errorMessage", "required", "showRequiredMark", "invalid", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
152
+ }
153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DecimalFieldComponent, decorators: [{
154
+ type: Component,
155
+ args: [{ selector: 'app-decimal-field', standalone: true, imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
156
+ {
157
+ provide: NG_VALUE_ACCESSOR,
158
+ useExisting: forwardRef(() => DecimalFieldComponent),
159
+ multi: true,
160
+ },
161
+ ], template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [inputId]=\"controlId\"\n [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\" [prefixIcon]=\"prefixIcon\" [clearable]=\"clearable\"\n [clearAriaLabel]=\"clearAriaLabel\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <input class=\"decimal-field__input\" type=\"text\" inputmode=\"decimal\" [attr.autocomplete]=\"autocompleteAttr\"\n [id]=\"controlId\"\n [attr.name]=\"name || null\" [attr.placeholder]=\"''\" [disabled]=\"disabled\" [readonly]=\"readonly\" [required]=\"uiRequiredEffective\"\n [attr.aria-invalid]=\"uiInvalid\" [attr.aria-describedby]=\"uiAriaDescribedBy\" [value]=\"inputText\"\n (beforeinput)=\"onBeforeInput($event)\" (input)=\"onNativeInput($event)\" (blur)=\"onBlur()\" />\n</app-base-field>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.decimal-field__input{display:block;width:100%;max-width:none;box-sizing:border-box;margin:0;padding:1.35rem .75rem .45rem;font-size:1rem;line-height:1.35;font-family:inherit;color:var(--ui-field-float-input-text);border:none;border-radius:0;background:transparent;box-shadow:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.decimal-field__input::placeholder{color:transparent}.decimal-field__input:focus,.decimal-field__input:focus-visible{outline:none}.decimal-field__input--invalid:not(:disabled)::placeholder{color:transparent}.decimal-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"] }]
162
+ }], propDecorators: { max: [{
163
+ type: Input,
164
+ args: [{ transform: numberAttribute }]
165
+ }] } });
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaW1hbC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2ZpZWxkcy9pbnB1dC1maWVsZHMvZGVjaW1hbC1maWVsZC9kZWNpbWFsLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZmllbGRzL2lucHV0LWZpZWxkcy9kZWNpbWFsLWZpZWxkL2RlY2ltYWwtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFVBQVUsRUFDVixlQUFlLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzlFLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsZUFBZSxFQUNmLGNBQWMsRUFDZCxlQUFlLEdBQ2hCLE1BQU0sa0NBQWtDLENBQUM7O0FBaUIxQyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsdUJBQXNDO0lBZmpGOztRQWdCRSxvRUFBb0U7UUFDN0IsUUFBRyxHQUFHLE1BQU0sQ0FBQztRQUVwRCxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWYsYUFBUSxHQUFHLEtBQUssQ0FBQztLQXVJbEI7SUFySVMsZUFBZTtRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRWtCLGVBQWUsQ0FBQyxLQUFvQjtRQUNyRCxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsQ0FBQztZQUNELE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ2hCLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVk7UUFDeEIsTUFBTSxDQUFDLEdBQUcsS0FBbUIsQ0FBQztRQUM5QixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEQsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxTQUFTLEtBQUssWUFBWSxJQUFJLENBQUMsQ0FBQyxTQUFTLEtBQUssdUJBQXVCLEVBQUUsQ0FBQztZQUM1RSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMxQixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLE9BQU87WUFDVCxDQUFDO1lBQ0QsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE1BQTBCLENBQUM7WUFDM0MsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4RCxJQUFJLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDYixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3JCLENBQUM7Z0JBQ0QsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsT0FBTztZQUNULENBQUM7WUFDRCxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsS0FBWTtRQUN4QixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDL0MsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGNBQWMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUN6RCxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUVyRCxNQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsTUFBTSxPQUFPLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsTUFBTSxRQUFRLEdBQUcseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsSUFBSSxNQUFNLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLElBQUksTUFBTSxJQUFJLElBQUksSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2xCLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztZQUNyQixLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDMUIsQ0FBQztZQUNELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQzVCLEtBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxHQUFHLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUN2RCxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEQsTUFBTSxRQUFRLEdBQUcseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsSUFBSSxNQUFNLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLElBQUksTUFBTSxJQUFJLElBQUksSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3BCLENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztRQUNwQyxJQUFJLE1BQU0sS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9ELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQzsrR0E1SVUscUJBQXFCO21HQUFyQixxQkFBcUIsbUZBRVosZUFBZSxnQkFWeEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDO2dCQUNwRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsaURDakNILCtzQ0FlQSxnd0JEUVksa0JBQWtCOzs0RkFZakIscUJBQXFCO2tCQWZqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxrQkFBa0IsQ0FBQyxtQkFHWix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHNCQUFzQixDQUFDOzRCQUNwRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4QkFJc0MsR0FBRztzQkFBekMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBmb3J3YXJkUmVmLFxyXG4gIG51bWJlckF0dHJpYnV0ZSxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEJhc2VGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL19iYXNlL2Jhc2UtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTmdDb250cm9sRmllbGREaXJlY3RpdmUgfSBmcm9tICcuLi9fYmFzZS9uZy1jb250cm9sLWZpZWxkLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7XHJcbiAgYnVpbGREZWNpbWFsQnJEaXNwbGF5LFxyXG4gIGJ1aWxkRGVjaW1hbEJyUGFyc2VTdHJpbmcsXHJcbiAgY2FyZXRJbmRleEZyb21TZW1hbnRpYyxcclxuICBleHRyYWN0RGVjaW1hbEJyUGFydHMsXHJcbiAgZm9ybWF0RGVjaW1hbEJyLFxyXG4gIHBhcnNlRGVjaW1hbEJyLFxyXG4gIHNlbWFudGljQ2FyZXRBdCxcclxufSBmcm9tICcuLi8uLi8uLi9fdXRpbHMvZGVjaW1hbC1ici51dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1kZWNpbWFsLWZpZWxkJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtCYXNlRmllbGRDb21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kZWNpbWFsLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZGVjaW1hbC1maWVsZC5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEZWNpbWFsRmllbGRDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERlY2ltYWxGaWVsZENvbXBvbmVudCBleHRlbmRzIE5nQ29udHJvbEZpZWxkRGlyZWN0aXZlPG51bWJlciB8IG51bGw+IHtcclxuICAvKiogVmFsb3IgbcOheGltbyBwZXJtaXRpZG8gKGluY2x1c2l2ZSksIGNvbSBhdMOpIDIgY2FzYXMgZGVjaW1haXMuICovXHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgbWF4ID0gOTk5OTk5O1xyXG5cclxuICBpbnB1dFRleHQgPSAnJztcclxuXHJcbiAgZmlsbGVkVWkgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSByZWZyZXNoRmlsbGVkVWkoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGxlZFVpID0gdGhpcy5pbnB1dFRleHQudHJpbSgpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYWZ0ZXJXcml0ZVZhbHVlKHZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmlucHV0VGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLnJlZnJlc2hGaWxsZWRVaSgpO1xyXG4gICAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wpIHtcclxuICAgICAgICB0aGlzLnN5bmNDb250cm9sVWkoKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB2ID0gTWF0aC5taW4odmFsdWUsIHRoaXMubWF4KTtcclxuICAgIHRoaXMuaW5wdXRUZXh0ID0gZm9ybWF0RGVjaW1hbEJyKHYpO1xyXG4gICAgaWYgKHYgIT09IHZhbHVlKSB7XHJcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHRoaXMuZW1pdE1vZGVsVmFsdWUodikpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWZyZXNoRmlsbGVkVWkoKTtcclxuICAgIGlmICh0aGlzLm5nQ29udHJvbD8uY29udHJvbCkge1xyXG4gICAgICB0aGlzLnN5bmNDb250cm9sVWkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQmVmb3JlSW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBlID0gZXZlbnQgYXMgSW5wdXRFdmVudDtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkgfHwgZS5pc0NvbXBvc2luZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoZS5pbnB1dFR5cGUgPT09ICdpbnNlcnRUZXh0JyB8fCBlLmlucHV0VHlwZSA9PT0gJ2luc2VydENvbXBvc2l0aW9uVGV4dCcpIHtcclxuICAgICAgY29uc3QgZGF0YSA9IGUuZGF0YSA/PyAnJztcclxuICAgICAgaWYgKGRhdGEubGVuZ3RoICE9PSAxKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGlucHV0ID0gZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgICAgY29uc3QgeyBoYXNDb21tYSB9ID0gZXh0cmFjdERlY2ltYWxCclBhcnRzKGlucHV0LnZhbHVlKTtcclxuICAgICAgaWYgKGRhdGEgPT09ICcsJykge1xyXG4gICAgICAgIGlmIChoYXNDb21tYSkge1xyXG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKC9eXFxkJC8udGVzdChkYXRhKSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk5hdGl2ZUlucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgY29uc3QgY2FyZXQgPSBpbnB1dC5zZWxlY3Rpb25TdGFydCA/PyBpbnB1dC52YWx1ZS5sZW5ndGg7XHJcbiAgICBjb25zdCBzZW1hbnRpYyA9IHNlbWFudGljQ2FyZXRBdChpbnB1dC52YWx1ZSwgY2FyZXQpO1xyXG5cclxuICAgIGNvbnN0IHBhcnRzID0gZXh0cmFjdERlY2ltYWxCclBhcnRzKGlucHV0LnZhbHVlKTtcclxuICAgIGNvbnN0IGRpc3BsYXkgPSBidWlsZERlY2ltYWxCckRpc3BsYXkocGFydHMpO1xyXG4gICAgY29uc3QgcGFyc2VTdHIgPSBidWlsZERlY2ltYWxCclBhcnNlU3RyaW5nKHBhcnRzKTtcclxuICAgIGxldCBwYXJzZWQgPSBwYXJzZURlY2ltYWxCcihwYXJzZVN0cik7XHJcbiAgICBpZiAocGFyc2VkICE9IG51bGwgJiYgcGFyc2VkID4gdGhpcy5tYXgpIHtcclxuICAgICAgcGFyc2VkID0gdGhpcy5tYXg7XHJcbiAgICAgIGNvbnN0IGNhcHBlZCA9IGZvcm1hdERlY2ltYWxCcihwYXJzZWQpO1xyXG4gICAgICBpbnB1dC52YWx1ZSA9IGNhcHBlZDtcclxuICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoY2FwcGVkLmxlbmd0aCwgY2FwcGVkLmxlbmd0aCk7XHJcbiAgICAgIHRoaXMuaW5wdXRUZXh0ID0gY2FwcGVkO1xyXG4gICAgICB0aGlzLmVtaXRNb2RlbFZhbHVlKHBhcnNlZCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaEZpbGxlZFVpKCk7XHJcbiAgICAgIGlmICh0aGlzLm5nQ29udHJvbD8uY29udHJvbCkge1xyXG4gICAgICAgIHRoaXMuc3luY0NvbnRyb2xVaSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaW5wdXQudmFsdWUgIT09IGRpc3BsYXkpIHtcclxuICAgICAgaW5wdXQudmFsdWUgPSBkaXNwbGF5O1xyXG4gICAgICBjb25zdCBuZXh0ID0gY2FyZXRJbmRleEZyb21TZW1hbnRpYyhkaXNwbGF5LCBzZW1hbnRpYyk7XHJcbiAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKG5leHQsIG5leHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaW5wdXRUZXh0ID0gZGlzcGxheTtcclxuICAgIHRoaXMuZW1pdE1vZGVsVmFsdWUocGFyc2VkKTtcclxuICAgIHRoaXMucmVmcmVzaEZpbGxlZFVpKCk7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wpIHtcclxuICAgICAgdGhpcy5zeW5jQ29udHJvbFVpKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQmx1cigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMubm90aWZ5VG91Y2hlZCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBwYXJ0cyA9IGV4dHJhY3REZWNpbWFsQnJQYXJ0cyh0aGlzLmlucHV0VGV4dCk7XHJcbiAgICBjb25zdCBwYXJzZVN0ciA9IGJ1aWxkRGVjaW1hbEJyUGFyc2VTdHJpbmcocGFydHMpO1xyXG4gICAgbGV0IHBhcnNlZCA9IHBhcnNlRGVjaW1hbEJyKHBhcnNlU3RyKTtcclxuICAgIGlmIChwYXJzZWQgIT0gbnVsbCAmJiBwYXJzZWQgPiB0aGlzLm1heCkge1xyXG4gICAgICBwYXJzZWQgPSB0aGlzLm1heDtcclxuICAgIH1cclxuICAgIGNvbnN0IGN0cmwgPSB0aGlzLm5nQ29udHJvbD8uY29udHJvbDtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSBjdHJsPy52YWx1ZSA/PyBudWxsO1xyXG4gICAgaWYgKHBhcnNlZCAhPT0gY3VycmVudCkge1xyXG4gICAgICB0aGlzLmVtaXRNb2RlbFZhbHVlKHBhcnNlZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlucHV0VGV4dCA9IHBhcnNlZCAhPSBudWxsID8gZm9ybWF0RGVjaW1hbEJyKHBhcnNlZCkgOiAnJztcclxuICAgIHRoaXMucmVmcmVzaEZpbGxlZFVpKCk7XHJcbiAgICB0aGlzLm5vdGlmeVRvdWNoZWQoKTtcclxuICAgIGlmICh0aGlzLm5nQ29udHJvbD8uY29udHJvbCkge1xyXG4gICAgICB0aGlzLnN5bmNDb250cm9sVWkoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGVhcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbnB1dFRleHQgPSAnJztcclxuICAgIHRoaXMuZW1pdE1vZGVsVmFsdWUobnVsbCk7XHJcbiAgICB0aGlzLm5vdGlmeVRvdWNoZWQoKTtcclxuICAgIHRoaXMucmVmcmVzaEZpbGxlZFVpKCk7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wpIHtcclxuICAgICAgdGhpcy5zeW5jQ29udHJvbFVpKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGFwcC1iYXNlLWZpZWxkIFtsYWJlbF09XCJmbG9hdExhYmVsQ2FwdGlvblwiIFtmaWxsZWRdPVwiZmlsbGVkVWlcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgW2Vycm9yTWVzc2FnZV09XCJ1aUVycm9yTWVzc2FnZVwiIFtyZXF1aXJlZF09XCJ1aVJlcXVpcmVkRWZmZWN0aXZlXCIgW3Nob3dSZXF1aXJlZE1hcmtdPVwic2hvd1JlcXVpcmVkTWFya1wiXG4gIFtpbnZhbGlkXT1cInVpSW52YWxpZFwiIFtpbnB1dElkXT1cImNvbnRyb2xJZFwiXG4gIFtlcnJvcklkXT1cImVycm9yRWxlbWVudElkXCIgW3Nob3dQcmVmaXhJY29uXT1cInNob3dQcmVmaXhJY29uXCIgW3ByZWZpeEljb25dPVwicHJlZml4SWNvblwiIFtjbGVhcmFibGVdPVwiY2xlYXJhYmxlXCJcbiAgW2NsZWFyQXJpYUxhYmVsXT1cImNsZWFyQXJpYUxhYmVsXCJcbiAgW21vc3RyYXJNZW51Q29udGV4dG9dPVwibW9zdHJhck1lbnVDb250ZXh0b1wiIFtjb250ZXh0TWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIiBbY29udGV4dE1lbnVJZF09XCJjb250ZXh0TWVudUlkXCJcbiAgKGNsZWFyKT1cIm9uQ2xlYXIoKVwiIChjb250ZXh0TWVudVNlbGVjdCk9XCJjb250ZXh0TWVudVNlbGVjdC5lbWl0KCRldmVudClcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2FwcEZpZWxkUHJlZml4XVwiIC8+XG4gIDxpbnB1dCBjbGFzcz1cImRlY2ltYWwtZmllbGRfX2lucHV0XCIgdHlwZT1cInRleHRcIiBpbnB1dG1vZGU9XCJkZWNpbWFsXCIgW2F0dHIuYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZUF0dHJcIlxuICAgIFtpZF09XCJjb250cm9sSWRcIlxuICAgIFthdHRyLm5hbWVdPVwibmFtZSB8fCBudWxsXCIgW2F0dHIucGxhY2Vob2xkZXJdPVwiJydcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbcmVxdWlyZWRdPVwidWlSZXF1aXJlZEVmZmVjdGl2ZVwiXG4gICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInVpSW52YWxpZFwiIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwidWlBcmlhRGVzY3JpYmVkQnlcIiBbdmFsdWVdPVwiaW5wdXRUZXh0XCJcbiAgICAoYmVmb3JlaW5wdXQpPVwib25CZWZvcmVJbnB1dCgkZXZlbnQpXCIgKGlucHV0KT1cIm9uTmF0aXZlSW5wdXQoJGV2ZW50KVwiIChibHVyKT1cIm9uQmx1cigpXCIgLz5cbjwvYXBwLWJhc2UtZmllbGQ+XG4iXX0=
@@ -0,0 +1,22 @@
1
+ export { BaseFieldDirective } from './_base/base-field.directive';
2
+ export { BaseFieldComponent } from './_base/base-field.component';
3
+ export { NgControlFieldDirective } from './_base/ng-control-field.directive';
4
+ export { TextFieldComponent } from './text-field/text-field.component';
5
+ export { PasswordFieldComponent } from './password-field/password-field.component';
6
+ export { TextareaFieldComponent } from './textarea-field/textarea-field.component';
7
+ export { IntegerFieldComponent } from './integer-field/integer-field.component';
8
+ export { DecimalFieldComponent } from './decimal-field/decimal-field.component';
9
+ export { DateFieldComponent } from './date-field/date-field.component';
10
+ export { InputMaskFieldComponent } from './input-mask-field/input-mask-field.component';
11
+ export { CepFieldComponent } from './cep-field/cep-field.component';
12
+ export { PhoneFieldComponent } from './phone-field/phone-field.component';
13
+ export { CpfCnpjFieldComponent } from './cpf-cnpj-field/cpf-cnpj-field.component';
14
+ export { MaskedTextFieldBase } from './_base/masked-text-field.base';
15
+ export { stripToDigits, maskDigitCount, formatMaskDigits, } from './_utils/mask-format.utils';
16
+ export { cepMaskCompleteValidator, cpfCnpjMaskCompleteValidator, fixedDigitsMaskCompleteValidator, phoneBrMaskCompleteValidator, } from './_utils/mask-complete.validators';
17
+ export { BR_ESTADOS_NOME_SIGLA, mapEstadosToOptions, } from '../../_utils/estados-br.data';
18
+ export { sanitizeIntegerDigits, parseIntegerString, } from '../../_utils/integer-value.utils';
19
+ export { formatIntegerThousandsBr, semanticIntegerDigitCountLeft, caretIndexFromIntegerDigitCount, } from '../../_utils/integer-br.utils';
20
+ export { sanitizeDecimalBrInput, parseDecimalBr, formatDecimalBr, extractDecimalBrParts, buildDecimalBrDisplay, buildDecimalBrParseString, semanticCaretAt, caretIndexFromSemantic, } from '../../_utils/decimal-br.utils';
21
+ export { formatDateTimePtBr, formatUiFieldDateValue, parseUiFieldDateValue, normalizeFormDateValue, applyPickedCalendarDate, } from '../../_utils/date-pt-br.utils';
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2ZpZWxkcy9pbnB1dC1maWVsZHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFckUsT0FBTyxFQUNMLGFBQWEsRUFDYixjQUFjLEVBQ2QsZ0JBQWdCLEdBQ2pCLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUNMLHdCQUF3QixFQUN4Qiw0QkFBNEIsRUFDNUIsZ0NBQWdDLEVBQ2hDLDRCQUE0QixHQUM3QixNQUFNLG1DQUFtQyxDQUFDO0FBSTNDLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsbUJBQW1CLEdBQ3BCLE1BQU0sOEJBQThCLENBQUM7QUFFdEMsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixrQkFBa0IsR0FDbkIsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxQyxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLDZCQUE2QixFQUM3QiwrQkFBK0IsR0FDaEMsTUFBTSwrQkFBK0IsQ0FBQztBQUV2QyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGNBQWMsRUFDZCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQix5QkFBeUIsRUFDekIsZUFBZSxFQUNmLHNCQUFzQixHQUN2QixNQUFNLCtCQUErQixDQUFDO0FBRXZDLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsdUJBQXVCLEdBQ3hCLE1BQU0sK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBCYXNlRmllbGREaXJlY3RpdmUgfSBmcm9tICcuL19iYXNlL2Jhc2UtZmllbGQuZGlyZWN0aXZlJztcclxuZXhwb3J0IHsgQmFzZUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9fYmFzZS9iYXNlLWZpZWxkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCB7IE5nQ29udHJvbEZpZWxkRGlyZWN0aXZlIH0gZnJvbSAnLi9fYmFzZS9uZy1jb250cm9sLWZpZWxkLmRpcmVjdGl2ZSc7XHJcblxyXG5leHBvcnQgeyBUZXh0RmllbGRDb21wb25lbnQgfSBmcm9tICcuL3RleHQtZmllbGQvdGV4dC1maWVsZC5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBQYXNzd29yZEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9wYXNzd29yZC1maWVsZC9wYXNzd29yZC1maWVsZC5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBUZXh0YXJlYUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi90ZXh0YXJlYS1maWVsZC90ZXh0YXJlYS1maWVsZC5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBJbnRlZ2VyRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2ludGVnZXItZmllbGQvaW50ZWdlci1maWVsZC5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBEZWNpbWFsRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2RlY2ltYWwtZmllbGQvZGVjaW1hbC1maWVsZC5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBEYXRlRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtZmllbGQvZGF0ZS1maWVsZC5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBJbnB1dE1hc2tGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQtbWFzay1maWVsZC9pbnB1dC1tYXNrLWZpZWxkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCB7IENlcEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9jZXAtZmllbGQvY2VwLWZpZWxkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCB7IFBob25lRmllbGRDb21wb25lbnQgfSBmcm9tICcuL3Bob25lLWZpZWxkL3Bob25lLWZpZWxkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCB7IENwZkNucGpGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vY3BmLWNucGotZmllbGQvY3BmLWNucGotZmllbGQuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCB7IE1hc2tlZFRleHRGaWVsZEJhc2UgfSBmcm9tICcuL19iYXNlL21hc2tlZC10ZXh0LWZpZWxkLmJhc2UnO1xyXG5cclxuZXhwb3J0IHtcclxuICBzdHJpcFRvRGlnaXRzLFxyXG4gIG1hc2tEaWdpdENvdW50LFxyXG4gIGZvcm1hdE1hc2tEaWdpdHMsXHJcbn0gZnJvbSAnLi9fdXRpbHMvbWFzay1mb3JtYXQudXRpbHMnO1xyXG5cclxuZXhwb3J0IHtcclxuICBjZXBNYXNrQ29tcGxldGVWYWxpZGF0b3IsXHJcbiAgY3BmQ25wak1hc2tDb21wbGV0ZVZhbGlkYXRvcixcclxuICBmaXhlZERpZ2l0c01hc2tDb21wbGV0ZVZhbGlkYXRvcixcclxuICBwaG9uZUJyTWFza0NvbXBsZXRlVmFsaWRhdG9yLFxyXG59IGZyb20gJy4vX3V0aWxzL21hc2stY29tcGxldGUudmFsaWRhdG9ycyc7XHJcblxyXG5leHBvcnQgdHlwZSB7IEZpZWxkQ29tbW9uSW5wdXRzIH0gZnJvbSAnLi9fbW9kZWxzJztcclxuXHJcbmV4cG9ydCB7XHJcbiAgQlJfRVNUQURPU19OT01FX1NJR0xBLFxyXG4gIG1hcEVzdGFkb3NUb09wdGlvbnMsXHJcbn0gZnJvbSAnLi4vLi4vX3V0aWxzL2VzdGFkb3MtYnIuZGF0YSc7XHJcblxyXG5leHBvcnQge1xyXG4gIHNhbml0aXplSW50ZWdlckRpZ2l0cyxcclxuICBwYXJzZUludGVnZXJTdHJpbmcsXHJcbn0gZnJvbSAnLi4vLi4vX3V0aWxzL2ludGVnZXItdmFsdWUudXRpbHMnO1xyXG5cclxuZXhwb3J0IHtcclxuICBmb3JtYXRJbnRlZ2VyVGhvdXNhbmRzQnIsXHJcbiAgc2VtYW50aWNJbnRlZ2VyRGlnaXRDb3VudExlZnQsXHJcbiAgY2FyZXRJbmRleEZyb21JbnRlZ2VyRGlnaXRDb3VudCxcclxufSBmcm9tICcuLi8uLi9fdXRpbHMvaW50ZWdlci1ici51dGlscyc7XHJcblxyXG5leHBvcnQge1xyXG4gIHNhbml0aXplRGVjaW1hbEJySW5wdXQsXHJcbiAgcGFyc2VEZWNpbWFsQnIsXHJcbiAgZm9ybWF0RGVjaW1hbEJyLFxyXG4gIGV4dHJhY3REZWNpbWFsQnJQYXJ0cyxcclxuICBidWlsZERlY2ltYWxCckRpc3BsYXksXHJcbiAgYnVpbGREZWNpbWFsQnJQYXJzZVN0cmluZyxcclxuICBzZW1hbnRpY0NhcmV0QXQsXHJcbiAgY2FyZXRJbmRleEZyb21TZW1hbnRpYyxcclxufSBmcm9tICcuLi8uLi9fdXRpbHMvZGVjaW1hbC1ici51dGlscyc7XHJcblxyXG5leHBvcnQge1xyXG4gIGZvcm1hdERhdGVUaW1lUHRCcixcclxuICBmb3JtYXRVaUZpZWxkRGF0ZVZhbHVlLFxyXG4gIHBhcnNlVWlGaWVsZERhdGVWYWx1ZSxcclxuICBub3JtYWxpemVGb3JtRGF0ZVZhbHVlLFxyXG4gIGFwcGx5UGlja2VkQ2FsZW5kYXJEYXRlLFxyXG59IGZyb20gJy4uLy4uL191dGlscy9kYXRlLXB0LWJyLnV0aWxzJztcclxuIl19
@@ -0,0 +1,52 @@
1
+ import { ChangeDetectionStrategy, Component, HostBinding, Input, forwardRef, } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { BaseFieldComponent } from '../_base/base-field.component';
4
+ import { MaskedTextFieldBase } from '../_base/masked-text-field.base';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Campo de texto com máscara configurável (`#` = dígito).
8
+ * Valor do formulário: apenas dígitos, sem máscara.
9
+ */
10
+ export class InputMaskFieldComponent extends MaskedTextFieldBase {
11
+ constructor() {
12
+ super(...arguments);
13
+ /** Ex.: `#####-###`, `(##) #####-####`. */
14
+ this.maskPattern = '#####-###';
15
+ }
16
+ get hostInvalidClass() {
17
+ return this.uiInvalid;
18
+ }
19
+ onNativeInput(event) {
20
+ this.onMaskedInput(event);
21
+ }
22
+ onBlur() {
23
+ this.onMaskedBlur();
24
+ }
25
+ onClear() {
26
+ this.onMaskedClear();
27
+ }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputMaskFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
29
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: InputMaskFieldComponent, isStandalone: true, selector: "app-input-mask-field", inputs: { maskPattern: "maskPattern" }, host: { properties: { "class.input-mask-field--invalid": "this.hostInvalidClass" } }, providers: [
30
+ {
31
+ provide: NG_VALUE_ACCESSOR,
32
+ useExisting: forwardRef(() => InputMaskFieldComponent),
33
+ multi: true,
34
+ },
35
+ ], usesInheritance: true, ngImport: i0, template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [inputId]=\"controlId\" [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\"\n [prefixIcon]=\"prefixIcon\" [clearable]=\"clearable\" [clearAriaLabel]=\"clearAriaLabel\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <input class=\"input-mask-field__input\" type=\"text\" [id]=\"controlId\" [attr.name]=\"name || null\"\n [attr.placeholder]=\"''\" [attr.autocomplete]=\"autocompleteAttr\" [disabled]=\"disabled\"\n [readonly]=\"readonly\" [required]=\"uiRequiredEffective\" [attr.aria-invalid]=\"uiInvalid\"\n [attr.aria-describedby]=\"uiAriaDescribedBy\" [value]=\"inputText\" (input)=\"onNativeInput($event)\"\n (blur)=\"onBlur()\" />\n</app-base-field>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.input-mask-field__input{display:block;width:100%;max-width:none;box-sizing:border-box;margin:0;padding:1.35rem .75rem .45rem;font-size:1rem;line-height:1.35;font-family:inherit;color:var(--ui-field-float-input-text);border:none;border-radius:0;background:transparent;box-shadow:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.input-mask-field__input::placeholder{color:transparent}.input-mask-field__input:focus,.input-mask-field__input:focus-visible{outline:none}.input-mask-field__input--invalid:not(:disabled)::placeholder{color:transparent}.input-mask-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"], dependencies: [{ kind: "component", type: BaseFieldComponent, selector: "app-base-field", inputs: ["label", "errorMessage", "required", "showRequiredMark", "invalid", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputMaskFieldComponent, decorators: [{
38
+ type: Component,
39
+ args: [{ selector: 'app-input-mask-field', standalone: true, imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
40
+ {
41
+ provide: NG_VALUE_ACCESSOR,
42
+ useExisting: forwardRef(() => InputMaskFieldComponent),
43
+ multi: true,
44
+ },
45
+ ], template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [inputId]=\"controlId\" [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\"\n [prefixIcon]=\"prefixIcon\" [clearable]=\"clearable\" [clearAriaLabel]=\"clearAriaLabel\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <input class=\"input-mask-field__input\" type=\"text\" [id]=\"controlId\" [attr.name]=\"name || null\"\n [attr.placeholder]=\"''\" [attr.autocomplete]=\"autocompleteAttr\" [disabled]=\"disabled\"\n [readonly]=\"readonly\" [required]=\"uiRequiredEffective\" [attr.aria-invalid]=\"uiInvalid\"\n [attr.aria-describedby]=\"uiAriaDescribedBy\" [value]=\"inputText\" (input)=\"onNativeInput($event)\"\n (blur)=\"onBlur()\" />\n</app-base-field>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.input-mask-field__input{display:block;width:100%;max-width:none;box-sizing:border-box;margin:0;padding:1.35rem .75rem .45rem;font-size:1rem;line-height:1.35;font-family:inherit;color:var(--ui-field-float-input-text);border:none;border-radius:0;background:transparent;box-shadow:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.input-mask-field__input::placeholder{color:transparent}.input-mask-field__input:focus,.input-mask-field__input:focus-visible{outline:none}.input-mask-field__input--invalid:not(:disabled)::placeholder{color:transparent}.input-mask-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"] }]
46
+ }], propDecorators: { hostInvalidClass: [{
47
+ type: HostBinding,
48
+ args: ['class.input-mask-field--invalid']
49
+ }], maskPattern: [{
50
+ type: Input
51
+ }] } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbWFzay1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2ZpZWxkcy9pbnB1dC1maWVsZHMvaW5wdXQtbWFzay1maWVsZC9pbnB1dC1tYXNrLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZmllbGRzL2lucHV0LWZpZWxkcy9pbnB1dC1tYXNrLWZpZWxkL2lucHV0LW1hc2stZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssRUFDTCxVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBRXRFOzs7R0FHRztBQWdCSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsbUJBQW1CO0lBZmhFOztRQXFCRSwyQ0FBMkM7UUFDekIsZ0JBQVcsR0FBRyxXQUFXLENBQUM7S0FhN0M7SUFuQkMsSUFDSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFLRCxhQUFhLENBQUMsS0FBWTtRQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7K0dBbkJVLHVCQUF1QjttR0FBdkIsdUJBQXVCLGlNQVJ2QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7Z0JBQ3RELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixpREM1QkgsaXBDQWNBLGt4QkRJWSxrQkFBa0I7OzRGQVlqQix1QkFBdUI7a0JBZm5DLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLGtCQUFrQixDQUFDLG1CQUdaLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsd0JBQXdCLENBQUM7NEJBQ3RELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzhCQUlHLGdCQUFnQjtzQkFEbkIsV0FBVzt1QkFBQyxpQ0FBaUM7Z0JBTTVCLFdBQVc7c0JBQTVCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBmb3J3YXJkUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQmFzZUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vX2Jhc2UvYmFzZS1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXNrZWRUZXh0RmllbGRCYXNlIH0gZnJvbSAnLi4vX2Jhc2UvbWFza2VkLXRleHQtZmllbGQuYmFzZSc7XHJcblxyXG4vKipcclxuICogQ2FtcG8gZGUgdGV4dG8gY29tIG3DoXNjYXJhIGNvbmZpZ3Vyw6F2ZWwgKGAjYCA9IGTDrWdpdG8pLlxyXG4gKiBWYWxvciBkbyBmb3JtdWzDoXJpbzogYXBlbmFzIGTDrWdpdG9zLCBzZW0gbcOhc2NhcmEuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1pbnB1dC1tYXNrLWZpZWxkJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtCYXNlRmllbGRDb21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1tYXNrLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vaW5wdXQtbWFzay1maWVsZC5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dE1hc2tGaWVsZENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRNYXNrRmllbGRDb21wb25lbnQgZXh0ZW5kcyBNYXNrZWRUZXh0RmllbGRCYXNlIHtcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlucHV0LW1hc2stZmllbGQtLWludmFsaWQnKVxyXG4gIGdldCBob3N0SW52YWxpZENsYXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudWlJbnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgLyoqIEV4LjogYCMjIyMjLSMjI2AsIGAoIyMpICMjIyMjLSMjIyNgLiAqL1xyXG4gIEBJbnB1dCgpIG92ZXJyaWRlIG1hc2tQYXR0ZXJuID0gJyMjIyMjLSMjIyc7XHJcblxyXG4gIG9uTmF0aXZlSW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uTWFza2VkSW5wdXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbk1hc2tlZEJsdXIoKTtcclxuICB9XHJcblxyXG4gIG9uQ2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uTWFza2VkQ2xlYXIoKTtcclxuICB9XHJcbn1cclxuIiwiPGFwcC1iYXNlLWZpZWxkIFtsYWJlbF09XCJmbG9hdExhYmVsQ2FwdGlvblwiIFtmaWxsZWRdPVwiZmlsbGVkVWlcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgW2Vycm9yTWVzc2FnZV09XCJ1aUVycm9yTWVzc2FnZVwiIFtyZXF1aXJlZF09XCJ1aVJlcXVpcmVkRWZmZWN0aXZlXCIgW3Nob3dSZXF1aXJlZE1hcmtdPVwic2hvd1JlcXVpcmVkTWFya1wiXG4gIFtpbnZhbGlkXT1cInVpSW52YWxpZFwiIFtpbnB1dElkXT1cImNvbnRyb2xJZFwiIFtlcnJvcklkXT1cImVycm9yRWxlbWVudElkXCIgW3Nob3dQcmVmaXhJY29uXT1cInNob3dQcmVmaXhJY29uXCJcbiAgW3ByZWZpeEljb25dPVwicHJlZml4SWNvblwiIFtjbGVhcmFibGVdPVwiY2xlYXJhYmxlXCIgW2NsZWFyQXJpYUxhYmVsXT1cImNsZWFyQXJpYUxhYmVsXCJcbiAgW21vc3RyYXJNZW51Q29udGV4dG9dPVwibW9zdHJhck1lbnVDb250ZXh0b1wiIFtjb250ZXh0TWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIiBbY29udGV4dE1lbnVJZF09XCJjb250ZXh0TWVudUlkXCJcbiAgKGNsZWFyKT1cIm9uQ2xlYXIoKVwiIChjb250ZXh0TWVudVNlbGVjdCk9XCJjb250ZXh0TWVudVNlbGVjdC5lbWl0KCRldmVudClcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2FwcEZpZWxkUHJlZml4XVwiIC8+XG4gIDxpbnB1dCBjbGFzcz1cImlucHV0LW1hc2stZmllbGRfX2lucHV0XCIgdHlwZT1cInRleHRcIiBbaWRdPVwiY29udHJvbElkXCIgW2F0dHIubmFtZV09XCJuYW1lIHx8IG51bGxcIlxuICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cIicnXCIgW2F0dHIuYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZUF0dHJcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiIFtyZXF1aXJlZF09XCJ1aVJlcXVpcmVkRWZmZWN0aXZlXCIgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInVpSW52YWxpZFwiXG4gICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJ1aUFyaWFEZXNjcmliZWRCeVwiIFt2YWx1ZV09XCJpbnB1dFRleHRcIiAoaW5wdXQpPVwib25OYXRpdmVJbnB1dCgkZXZlbnQpXCJcbiAgICAoYmx1cik9XCJvbkJsdXIoKVwiIC8+XG48L2FwcC1iYXNlLWZpZWxkPlxuIl19
@@ -0,0 +1,143 @@
1
+ import { ChangeDetectionStrategy, Component, Input, forwardRef, numberAttribute, } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { BaseFieldComponent } from '../_base/base-field.component';
4
+ import { NgControlFieldDirective } from '../_base/ng-control-field.directive';
5
+ import { parseIntegerString, sanitizeIntegerDigits } from '../../../_utils/integer-value.utils';
6
+ import { caretIndexFromIntegerDigitCount, formatIntegerThousandsBr, semanticIntegerDigitCountLeft, } from '../../../_utils/integer-br.utils';
7
+ import * as i0 from "@angular/core";
8
+ export class IntegerFieldComponent extends NgControlFieldDirective {
9
+ constructor() {
10
+ super(...arguments);
11
+ /** Valor máximo permitido (inclusive). */
12
+ this.max = 999999;
13
+ this.inputText = '';
14
+ this.filledUi = false;
15
+ }
16
+ refreshFilledUi() {
17
+ this.filledUi = this.inputText.length > 0;
18
+ }
19
+ afterWriteValue(value) {
20
+ if (value == null) {
21
+ this.inputText = '';
22
+ this.refreshFilledUi();
23
+ if (this.ngControl?.control) {
24
+ this.syncControlUi();
25
+ }
26
+ return;
27
+ }
28
+ const v = Math.min(Math.trunc(value), this.max);
29
+ this.inputText = formatIntegerThousandsBr(String(v));
30
+ if (v !== value) {
31
+ queueMicrotask(() => this.emitModelValue(v));
32
+ }
33
+ this.refreshFilledUi();
34
+ if (this.ngControl?.control) {
35
+ this.syncControlUi();
36
+ }
37
+ }
38
+ onBeforeInput(event) {
39
+ const e = event;
40
+ if (this.disabled || this.readonly || e.isComposing) {
41
+ return;
42
+ }
43
+ if (e.inputType === 'insertText' || e.inputType === 'insertCompositionText') {
44
+ const chunk = e.data ?? '';
45
+ if (chunk.length === 1 && !/^\d$/.test(chunk)) {
46
+ e.preventDefault();
47
+ }
48
+ }
49
+ }
50
+ onNativeInput(event) {
51
+ if (this.disabled || this.readonly) {
52
+ return;
53
+ }
54
+ const input = event.target;
55
+ const raw = input.value;
56
+ const caret = input.selectionStart ?? raw.length;
57
+ const digitsLeftOfCaret = semanticIntegerDigitCountLeft(raw, caret);
58
+ let digits = sanitizeIntegerDigits(raw);
59
+ let parsed = parseIntegerString(digits);
60
+ let clampedByMax = false;
61
+ if (parsed != null && parsed > this.max) {
62
+ parsed = this.max;
63
+ digits = String(this.max);
64
+ clampedByMax = true;
65
+ }
66
+ const display = formatIntegerThousandsBr(digits);
67
+ if (input.value !== display) {
68
+ input.value = display;
69
+ const next = clampedByMax
70
+ ? display.length
71
+ : caretIndexFromIntegerDigitCount(display, Math.min(digitsLeftOfCaret, digits.length));
72
+ input.setSelectionRange(next, next);
73
+ }
74
+ this.inputText = display;
75
+ this.emitModelValue(parsed);
76
+ this.refreshFilledUi();
77
+ if (this.ngControl?.control) {
78
+ this.syncControlUi();
79
+ }
80
+ else {
81
+ this.cdr.markForCheck();
82
+ }
83
+ }
84
+ onBlur() {
85
+ const digits = sanitizeIntegerDigits(this.inputText);
86
+ let parsed = parseIntegerString(digits);
87
+ if (parsed != null && parsed > this.max) {
88
+ parsed = this.max;
89
+ }
90
+ const display = parsed == null ? '' : formatIntegerThousandsBr(String(parsed));
91
+ const ctrl = this.ngControl?.control;
92
+ const current = ctrl?.value ?? null;
93
+ if (parsed !== current) {
94
+ this.emitModelValue(parsed);
95
+ }
96
+ this.inputText = display;
97
+ this.refreshFilledUi();
98
+ this.notifyTouched();
99
+ if (this.ngControl?.control) {
100
+ this.syncControlUi();
101
+ }
102
+ else {
103
+ this.cdr.markForCheck();
104
+ }
105
+ }
106
+ onClear() {
107
+ if (this.disabled || this.readonly) {
108
+ return;
109
+ }
110
+ this.inputText = '';
111
+ this.emitModelValue(null);
112
+ this.notifyTouched();
113
+ this.refreshFilledUi();
114
+ if (this.ngControl?.control) {
115
+ this.syncControlUi();
116
+ }
117
+ else {
118
+ this.cdr.markForCheck();
119
+ }
120
+ }
121
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IntegerFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
122
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: IntegerFieldComponent, isStandalone: true, selector: "app-integer-field", inputs: { max: ["max", "max", numberAttribute] }, providers: [
123
+ {
124
+ provide: NG_VALUE_ACCESSOR,
125
+ useExisting: forwardRef(() => IntegerFieldComponent),
126
+ multi: true,
127
+ },
128
+ ], usesInheritance: true, ngImport: i0, template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [inputId]=\"controlId\"\n [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\" [prefixIcon]=\"prefixIcon\" [clearable]=\"clearable\"\n [clearAriaLabel]=\"clearAriaLabel\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <input class=\"integer-field__input\" type=\"text\" inputmode=\"numeric\" [id]=\"controlId\"\n [attr.name]=\"name || null\" [attr.placeholder]=\"''\" [disabled]=\"disabled\" [readonly]=\"readonly\" [required]=\"uiRequiredEffective\"\n [attr.aria-invalid]=\"uiInvalid\" [attr.aria-describedby]=\"uiAriaDescribedBy\" [value]=\"inputText\"\n (beforeinput)=\"onBeforeInput($event)\" (input)=\"onNativeInput($event)\" (blur)=\"onBlur()\" />\n</app-base-field>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.integer-field__input{display:block;width:100%;max-width:none;box-sizing:border-box;margin:0;padding:1.35rem .75rem .45rem;font-size:1rem;line-height:1.35;font-family:inherit;color:var(--ui-field-float-input-text);border:none;border-radius:0;background:transparent;box-shadow:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.integer-field__input::placeholder{color:transparent}.integer-field__input:focus,.integer-field__input:focus-visible{outline:none}.integer-field__input--invalid:not(:disabled)::placeholder{color:transparent}.integer-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"], dependencies: [{ kind: "component", type: BaseFieldComponent, selector: "app-base-field", inputs: ["label", "errorMessage", "required", "showRequiredMark", "invalid", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
129
+ }
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IntegerFieldComponent, decorators: [{
131
+ type: Component,
132
+ args: [{ selector: 'app-integer-field', standalone: true, imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
133
+ {
134
+ provide: NG_VALUE_ACCESSOR,
135
+ useExisting: forwardRef(() => IntegerFieldComponent),
136
+ multi: true,
137
+ },
138
+ ], template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [inputId]=\"controlId\"\n [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\" [prefixIcon]=\"prefixIcon\" [clearable]=\"clearable\"\n [clearAriaLabel]=\"clearAriaLabel\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <input class=\"integer-field__input\" type=\"text\" inputmode=\"numeric\" [id]=\"controlId\"\n [attr.name]=\"name || null\" [attr.placeholder]=\"''\" [disabled]=\"disabled\" [readonly]=\"readonly\" [required]=\"uiRequiredEffective\"\n [attr.aria-invalid]=\"uiInvalid\" [attr.aria-describedby]=\"uiAriaDescribedBy\" [value]=\"inputText\"\n (beforeinput)=\"onBeforeInput($event)\" (input)=\"onNativeInput($event)\" (blur)=\"onBlur()\" />\n</app-base-field>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.integer-field__input{display:block;width:100%;max-width:none;box-sizing:border-box;margin:0;padding:1.35rem .75rem .45rem;font-size:1rem;line-height:1.35;font-family:inherit;color:var(--ui-field-float-input-text);border:none;border-radius:0;background:transparent;box-shadow:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.integer-field__input::placeholder{color:transparent}.integer-field__input:focus,.integer-field__input:focus-visible{outline:none}.integer-field__input--invalid:not(:disabled)::placeholder{color:transparent}.integer-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"] }]
139
+ }], propDecorators: { max: [{
140
+ type: Input,
141
+ args: [{ transform: numberAttribute }]
142
+ }] } });
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdlci1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2ZpZWxkcy9pbnB1dC1maWVsZHMvaW50ZWdlci1maWVsZC9pbnRlZ2VyLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZmllbGRzL2lucHV0LWZpZWxkcy9pbnRlZ2VyLWZpZWxkL2ludGVnZXItZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFVBQVUsRUFDVixlQUFlLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2hHLE9BQU8sRUFDTCwrQkFBK0IsRUFDL0Isd0JBQXdCLEVBQ3hCLDZCQUE2QixHQUM5QixNQUFNLGtDQUFrQyxDQUFDOztBQWlCMUMsTUFBTSxPQUFPLHFCQUFzQixTQUFRLHVCQUFzQztJQWZqRjs7UUFnQkUsMENBQTBDO1FBQ0gsUUFBRyxHQUFHLE1BQU0sQ0FBQztRQUVwRCxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWYsYUFBUSxHQUFHLEtBQUssQ0FBQztLQW9IbEI7SUFsSFMsZUFBZTtRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRWtCLGVBQWUsQ0FBQyxLQUFvQjtRQUNyRCxJQUFJLEtBQUss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LGlEQzlCSCxpcUNBY0EsZ3dCRE1ZLGtCQUFrQjs7NEZBWWpCLHFCQUFxQjtrQkFmakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsa0JBQWtCLENBQUMsbUJBR1osdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQzs0QkFDcEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBSXNDLEdBQUc7c0JBQXpDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgZm9yd2FyZFJlZixcclxuICBudW1iZXJBdHRyaWJ1dGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBCYXNlRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9fYmFzZS9iYXNlLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5nQ29udHJvbEZpZWxkRGlyZWN0aXZlIH0gZnJvbSAnLi4vX2Jhc2UvbmctY29udHJvbC1maWVsZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBwYXJzZUludGVnZXJTdHJpbmcsIHNhbml0aXplSW50ZWdlckRpZ2l0cyB9IGZyb20gJy4uLy4uLy4uL191dGlscy9pbnRlZ2VyLXZhbHVlLnV0aWxzJztcclxuaW1wb3J0IHtcclxuICBjYXJldEluZGV4RnJvbUludGVnZXJEaWdpdENvdW50LFxyXG4gIGZvcm1hdEludGVnZXJUaG91c2FuZHNCcixcclxuICBzZW1hbnRpY0ludGVnZXJEaWdpdENvdW50TGVmdCxcclxufSBmcm9tICcuLi8uLi8uLi9fdXRpbHMvaW50ZWdlci1ici51dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1pbnRlZ2VyLWZpZWxkJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtCYXNlRmllbGRDb21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnRlZ2VyLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vaW50ZWdlci1maWVsZC5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnRlZ2VyRmllbGRDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEludGVnZXJGaWVsZENvbXBvbmVudCBleHRlbmRzIE5nQ29udHJvbEZpZWxkRGlyZWN0aXZlPG51bWJlciB8IG51bGw+IHtcclxuICAvKiogVmFsb3IgbcOheGltbyBwZXJtaXRpZG8gKGluY2x1c2l2ZSkuICovXHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgbWF4ID0gOTk5OTk5O1xyXG5cclxuICBpbnB1dFRleHQgPSAnJztcclxuXHJcbiAgZmlsbGVkVWkgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSByZWZyZXNoRmlsbGVkVWkoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGxlZFVpID0gdGhpcy5pbnB1dFRleHQubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhZnRlcldyaXRlVmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMucmVmcmVzaEZpbGxlZFVpKCk7XHJcbiAgICAgIGlmICh0aGlzLm5nQ29udHJvbD8uY29udHJvbCkge1xyXG4gICAgICAgIHRoaXMuc3luY0NvbnRyb2xVaSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHYgPSBNYXRoLm1pbihNYXRoLnRydW5jKHZhbHVlKSwgdGhpcy5tYXgpO1xyXG4gICAgdGhpcy5pbnB1dFRleHQgPSBmb3JtYXRJbnRlZ2VyVGhvdXNhbmRzQnIoU3RyaW5nKHYpKTtcclxuICAgIGlmICh2ICE9PSB2YWx1ZSkge1xyXG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB0aGlzLmVtaXRNb2RlbFZhbHVlKHYpKTtcclxuICAgIH1cclxuICAgIHRoaXMucmVmcmVzaEZpbGxlZFVpKCk7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wpIHtcclxuICAgICAgdGhpcy5zeW5jQ29udHJvbFVpKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkJlZm9yZUlucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgZSA9IGV2ZW50IGFzIElucHV0RXZlbnQ7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5IHx8IGUuaXNDb21wb3NpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGUuaW5wdXRUeXBlID09PSAnaW5zZXJ0VGV4dCcgfHwgZS5pbnB1dFR5cGUgPT09ICdpbnNlcnRDb21wb3NpdGlvblRleHQnKSB7XHJcbiAgICAgIGNvbnN0IGNodW5rID0gZS5kYXRhID8/ICcnO1xyXG4gICAgICBpZiAoY2h1bmsubGVuZ3RoID09PSAxICYmICEvXlxcZCQvLnRlc3QoY2h1bmspKSB7XHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk5hdGl2ZUlucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgY29uc3QgcmF3ID0gaW5wdXQudmFsdWU7XHJcbiAgICBjb25zdCBjYXJldCA9IGlucHV0LnNlbGVjdGlvblN0YXJ0ID8/IHJhdy5sZW5ndGg7XHJcbiAgICBjb25zdCBkaWdpdHNMZWZ0T2ZDYXJldCA9IHNlbWFudGljSW50ZWdlckRpZ2l0Q291bnRMZWZ0KHJhdywgY2FyZXQpO1xyXG5cclxuICAgIGxldCBkaWdpdHMgPSBzYW5pdGl6ZUludGVnZXJEaWdpdHMocmF3KTtcclxuICAgIGxldCBwYXJzZWQgPSBwYXJzZUludGVnZXJTdHJpbmcoZGlnaXRzKTtcclxuICAgIGxldCBjbGFtcGVkQnlNYXggPSBmYWxzZTtcclxuICAgIGlmIChwYXJzZWQgIT0gbnVsbCAmJiBwYXJzZWQgPiB0aGlzLm1heCkge1xyXG4gICAgICBwYXJzZWQgPSB0aGlzLm1heDtcclxuICAgICAgZGlnaXRzID0gU3RyaW5nKHRoaXMubWF4KTtcclxuICAgICAgY2xhbXBlZEJ5TWF4ID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkaXNwbGF5ID0gZm9ybWF0SW50ZWdlclRob3VzYW5kc0JyKGRpZ2l0cyk7XHJcblxyXG4gICAgaWYgKGlucHV0LnZhbHVlICE9PSBkaXNwbGF5KSB7XHJcbiAgICAgIGlucHV0LnZhbHVlID0gZGlzcGxheTtcclxuICAgICAgY29uc3QgbmV4dCA9IGNsYW1wZWRCeU1heFxyXG4gICAgICAgID8gZGlzcGxheS5sZW5ndGhcclxuICAgICAgICA6IGNhcmV0SW5kZXhGcm9tSW50ZWdlckRpZ2l0Q291bnQoXHJcbiAgICAgICAgICBkaXNwbGF5LFxyXG4gICAgICAgICAgTWF0aC5taW4oZGlnaXRzTGVmdE9mQ2FyZXQsIGRpZ2l0cy5sZW5ndGgpLFxyXG4gICAgICAgICk7XHJcbiAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKG5leHQsIG5leHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaW5wdXRUZXh0ID0gZGlzcGxheTtcclxuICAgIHRoaXMuZW1pdE1vZGVsVmFsdWUocGFyc2VkKTtcclxuICAgIHRoaXMucmVmcmVzaEZpbGxlZFVpKCk7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wpIHtcclxuICAgICAgdGhpcy5zeW5jQ29udHJvbFVpKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQmx1cigpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRpZ2l0cyA9IHNhbml0aXplSW50ZWdlckRpZ2l0cyh0aGlzLmlucHV0VGV4dCk7XHJcbiAgICBsZXQgcGFyc2VkID0gcGFyc2VJbnRlZ2VyU3RyaW5nKGRpZ2l0cyk7XHJcbiAgICBpZiAocGFyc2VkICE9IG51bGwgJiYgcGFyc2VkID4gdGhpcy5tYXgpIHtcclxuICAgICAgcGFyc2VkID0gdGhpcy5tYXg7XHJcbiAgICB9XHJcbiAgICBjb25zdCBkaXNwbGF5ID0gcGFyc2VkID09IG51bGwgPyAnJyA6IGZvcm1hdEludGVnZXJUaG91c2FuZHNCcihTdHJpbmcocGFyc2VkKSk7XHJcbiAgICBjb25zdCBjdHJsID0gdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w7XHJcbiAgICBjb25zdCBjdXJyZW50ID0gY3RybD8udmFsdWUgPz8gbnVsbDtcclxuICAgIGlmIChwYXJzZWQgIT09IGN1cnJlbnQpIHtcclxuICAgICAgdGhpcy5lbWl0TW9kZWxWYWx1ZShwYXJzZWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbnB1dFRleHQgPSBkaXNwbGF5O1xyXG4gICAgdGhpcy5yZWZyZXNoRmlsbGVkVWkoKTtcclxuICAgIHRoaXMubm90aWZ5VG91Y2hlZCgpO1xyXG4gICAgaWYgKHRoaXMubmdDb250cm9sPy5jb250cm9sKSB7XHJcbiAgICAgIHRoaXMuc3luY0NvbnRyb2xVaSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNsZWFyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmlucHV0VGV4dCA9ICcnO1xyXG4gICAgdGhpcy5lbWl0TW9kZWxWYWx1ZShudWxsKTtcclxuICAgIHRoaXMubm90aWZ5VG91Y2hlZCgpO1xyXG4gICAgdGhpcy5yZWZyZXNoRmlsbGVkVWkoKTtcclxuICAgIGlmICh0aGlzLm5nQ29udHJvbD8uY29udHJvbCkge1xyXG4gICAgICB0aGlzLnN5bmNDb250cm9sVWkoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8YXBwLWJhc2UtZmllbGQgW2xhYmVsXT1cImZsb2F0TGFiZWxDYXB0aW9uXCIgW2ZpbGxlZF09XCJmaWxsZWRVaVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICBbZXJyb3JNZXNzYWdlXT1cInVpRXJyb3JNZXNzYWdlXCIgW3JlcXVpcmVkXT1cInVpUmVxdWlyZWRFZmZlY3RpdmVcIiBbc2hvd1JlcXVpcmVkTWFya109XCJzaG93UmVxdWlyZWRNYXJrXCJcbiAgW2ludmFsaWRdPVwidWlJbnZhbGlkXCIgW2lucHV0SWRdPVwiY29udHJvbElkXCJcbiAgW2Vycm9ySWRdPVwiZXJyb3JFbGVtZW50SWRcIiBbc2hvd1ByZWZpeEljb25dPVwic2hvd1ByZWZpeEljb25cIiBbcHJlZml4SWNvbl09XCJwcmVmaXhJY29uXCIgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxuICBbY2xlYXJBcmlhTGFiZWxdPVwiY2xlYXJBcmlhTGFiZWxcIlxuICBbbW9zdHJhck1lbnVDb250ZXh0b109XCJtb3N0cmFyTWVudUNvbnRleHRvXCIgW2NvbnRleHRNZW51SXRlbXNdPVwiY29udGV4dE1lbnVJdGVtc1wiIFtjb250ZXh0TWVudUlkXT1cImNvbnRleHRNZW51SWRcIlxuICAoY2xlYXIpPVwib25DbGVhcigpXCIgKGNvbnRleHRNZW51U2VsZWN0KT1cImNvbnRleHRNZW51U2VsZWN0LmVtaXQoJGV2ZW50KVwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbYXBwRmllbGRQcmVmaXhdXCIgLz5cbiAgPGlucHV0IGNsYXNzPVwiaW50ZWdlci1maWVsZF9faW5wdXRcIiB0eXBlPVwidGV4dFwiIGlucHV0bW9kZT1cIm51bWVyaWNcIiBbaWRdPVwiY29udHJvbElkXCJcbiAgICBbYXR0ci5uYW1lXT1cIm5hbWUgfHwgbnVsbFwiIFthdHRyLnBsYWNlaG9sZGVyXT1cIicnXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW3JlcXVpcmVkXT1cInVpUmVxdWlyZWRFZmZlY3RpdmVcIlxuICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJ1aUludmFsaWRcIiBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInVpQXJpYURlc2NyaWJlZEJ5XCIgW3ZhbHVlXT1cImlucHV0VGV4dFwiXG4gICAgKGJlZm9yZWlucHV0KT1cIm9uQmVmb3JlSW5wdXQoJGV2ZW50KVwiIChpbnB1dCk9XCJvbk5hdGl2ZUlucHV0KCRldmVudClcIiAoYmx1cik9XCJvbkJsdXIoKVwiIC8+XG48L2FwcC1iYXNlLWZpZWxkPlxuIl19