q2-tecton-elements 1.65.0 → 1.66.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle-report.json +1904 -742
- package/dist/cjs/{action-sheet-CiK2Bap_.js → action-sheet-D71RSc-w.js} +5 -2
- package/dist/cjs/action-sheet-D71RSc-w.js.map +1 -0
- package/dist/cjs/component-DRAntnCA.js +47 -0
- package/dist/cjs/component-DRAntnCA.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-group.q2-resize-observer.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-action-group_2.cjs.entry.js +121 -45
- package/dist/cjs/q2-action-group_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-action-sheet.cjs.entry.js +9 -5
- package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-action-sheet.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-avatar.cjs.entry.js +2 -2
- package/dist/cjs/q2-avatar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-avatar.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-btn.q2-loading.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js +13 -4
- package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +3 -3
- package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-card-image.cjs.entry.js +5 -5
- package/dist/cjs/q2-card-image.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-card-image.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-card.cjs.entry.js +1 -1
- package/dist/cjs/q2-card.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-card.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +7 -3
- package/dist/cjs/q2-carousel-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel-pane.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +12 -2
- package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-donut.cjs.entry.js +1 -1
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +5 -1
- package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-checkbox-group.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-checkbox.cjs.entry.js +3 -4
- package/dist/cjs/q2-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-checkbox.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-context.cjs.entry.js +1 -1
- package/dist/cjs/q2-context.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-context.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-currency.cjs.entry.js +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +19 -9
- package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-data-table.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-detail.cjs.entry.js +2 -2
- package/dist/cjs/q2-detail.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-detail.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +3 -1
- package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown-item.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +33 -8
- package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
- package/dist/cjs/q2-example.cjs.entry.js +1 -1
- package/dist/cjs/q2-file-picker.cjs.entry.js +2 -2
- package/dist/cjs/q2-file-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-file-picker.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-form.cjs.entry.js +1 -1
- package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
- package/dist/cjs/q2-grid-area.cjs.entry.js +9 -1
- package/dist/cjs/q2-grid-area.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-grid-area.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +6 -0
- package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-icon.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-input.cjs.entry.js +8 -6
- package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-input.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-item.cjs.entry.js +17 -17
- package/dist/cjs/q2-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-item.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-legend.cjs.entry.js +1 -1
- package/dist/cjs/q2-link.q2-list.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-link_2.cjs.entry.js +11 -7
- package/dist/cjs/q2-link_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-message.cjs.entry.js +2 -2
- package/dist/cjs/q2-message.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-message.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-meter.cjs.entry.js +1 -1
- package/dist/cjs/q2-modal.cjs.entry.js +2 -2
- package/dist/cjs/q2-month-picker.cjs.entry.js +2 -2
- package/dist/cjs/q2-mutation-observer.cjs.entry.js +1 -1
- package/dist/cjs/q2-optgroup.cjs.entry.js +4 -2
- package/dist/cjs/q2-optgroup.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-optgroup.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-option-list.q2-popover.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-option-list_2.cjs.entry.js +5 -3
- package/dist/cjs/q2-option-list_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-option.cjs.entry.js +3 -1
- package/dist/cjs/q2-option.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-option.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-pagination.cjs.entry.js +10 -12
- package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pagination.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-pill.cjs.entry.js +2 -2
- package/dist/cjs/q2-radio.cjs.entry.js +2 -2
- package/dist/cjs/q2-radio.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-relative-time.cjs.entry.js +1 -1
- package/dist/cjs/q2-section-container.cjs.entry.js +2 -0
- package/dist/cjs/q2-section-container.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-section-container.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-section.cjs.entry.js +2 -2
- package/dist/cjs/q2-select.cjs.entry.js +7 -3
- package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-select.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js +3 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-pane.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +1 -1
- package/dist/cjs/q2-stepper.cjs.entry.js +6 -2
- package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-tab-container.cjs.entry.js +5 -1
- package/dist/cjs/q2-tab-container.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tab-container.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-tab-pane.cjs.entry.js +8 -1
- package/dist/cjs/q2-tab-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tab-pane.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-tag.cjs.entry.js +3 -3
- package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tag.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +2 -2
- package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-textarea.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-toast.cjs.entry.js +192 -0
- package/dist/cjs/q2-toast.cjs.entry.js.map +1 -0
- package/dist/cjs/q2-toast.entry.cjs.js.map +1 -0
- package/dist/cjs/{sanitize-html-string-DPqrzfM9.js → sanitize-html-string-C2iwHNz5.js} +30 -6
- package/dist/cjs/sanitize-html-string-C2iwHNz5.js.map +1 -0
- package/dist/cjs/tecton-tab-pane.cjs.entry.js +4 -2
- package/dist/cjs/tecton-tab-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/tecton-tab-pane.entry.cjs.js.map +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/q2-action-group/q2-action-group.css +11 -4
- package/dist/collection/components/q2-action-group/q2-action-group.js +121 -45
- package/dist/collection/components/q2-action-group/q2-action-group.js.map +1 -1
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.css +8 -0
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +9 -5
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
- package/dist/collection/components/q2-avatar/q2-avatar.css +3 -0
- package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
- package/dist/collection/components/q2-btn/q2-btn.css +9 -1
- package/dist/collection/components/q2-btn/q2-btn.js +1 -1
- package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar.css +5 -1
- package/dist/collection/components/q2-calendar/q2-calendar.js +2 -2
- package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
- package/dist/collection/components/q2-card/q2-card.css +1 -0
- package/dist/collection/components/q2-card-image/q2-card-image.js +6 -6
- package/dist/collection/components/q2-card-image/q2-card-image.js.map +1 -1
- package/dist/collection/components/q2-carousel/q2-carousel.css +1 -1
- package/dist/collection/components/q2-carousel/q2-carousel.js +11 -1
- package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.css +11 -1
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +6 -2
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js.map +1 -1
- package/dist/collection/components/q2-chart-area/q2-chart-area.js +1 -1
- package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +1 -1
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +1 -1
- package/dist/collection/components/q2-checkbox/q2-checkbox.css +135 -14
- package/dist/collection/components/q2-checkbox/q2-checkbox.js +2 -8
- package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +5 -1
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
- package/dist/collection/components/q2-context/q2-context.js +1 -1
- package/dist/collection/components/q2-context/q2-context.js.map +1 -1
- package/dist/collection/components/q2-currency/q2-currency.js +1 -1
- package/dist/collection/components/q2-data-table/q2-data-table.css +3 -0
- package/dist/collection/components/q2-data-table/q2-data-table.js +53 -20
- package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
- package/dist/collection/components/q2-detail/q2-detail.css +6 -0
- package/dist/collection/components/q2-detail/q2-detail.js +1 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.css +17 -0
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +75 -8
- package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.css +1 -0
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js +2 -0
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
- package/dist/collection/components/q2-editable-field/q2-editable-field.js +1 -1
- package/dist/collection/components/q2-example/q2-example.js +1 -1
- package/dist/collection/components/q2-file-picker/q2-file-picker.css +4 -1
- package/dist/collection/components/q2-file-picker/q2-file-picker.js +4 -4
- package/dist/collection/components/q2-file-picker/q2-file-picker.js.map +1 -1
- package/dist/collection/components/q2-form/q2-form.js +1 -1
- package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
- package/dist/collection/components/q2-grid/q2-grid.js +30 -30
- package/dist/collection/components/q2-grid-area/q2-grid-area.js +51 -43
- package/dist/collection/components/q2-grid-area/q2-grid-area.js.map +1 -1
- package/dist/collection/components/q2-icon/assets/brand.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/browsersos.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/cards.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/communication.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/currencies.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/devices.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/filetypes.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/gestures.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/icon-list.json +1 -1
- package/dist/collection/components/q2-icon/assets/icon-map.json +1 -1
- package/dist/collection/components/q2-icon/assets/legacy.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/mobile.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/standard.symbol.svg +1 -1
- package/dist/collection/components/q2-input/formatting/phone.js +4 -2
- package/dist/collection/components/q2-input/formatting/phone.js.map +1 -1
- package/dist/collection/components/q2-input/q2-input.css +3 -0
- package/dist/collection/components/q2-input/q2-input.js +6 -6
- package/dist/collection/components/q2-input/q2-input.js.map +1 -1
- package/dist/collection/components/q2-item/q2-item.css +3 -0
- package/dist/collection/components/q2-item/q2-item.js +19 -18
- package/dist/collection/components/q2-item/q2-item.js.map +1 -1
- package/dist/collection/components/q2-legend/q2-legend.js +1 -1
- package/dist/collection/components/q2-link/q2-link.css +53 -1
- package/dist/collection/components/q2-link/q2-link.js +50 -8
- package/dist/collection/components/q2-link/q2-link.js.map +1 -1
- package/dist/collection/components/q2-list/q2-list.js +1 -1
- package/dist/collection/components/q2-loading/q2-loading.css +1 -1
- package/dist/collection/components/q2-loading/q2-loading.js +10 -1
- package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
- package/dist/collection/components/q2-message/q2-message.css +1 -0
- package/dist/collection/components/q2-message/q2-message.js +1 -1
- package/dist/collection/components/q2-meter/q2-meter.js +1 -1
- package/dist/collection/components/q2-modal/q2-modal.js +1 -1
- package/dist/collection/components/q2-mutation-observer/q2-mutation-observer.js +1 -1
- package/dist/collection/components/q2-optgroup/q2-optgroup.css +6 -4
- package/dist/collection/components/q2-optgroup/q2-optgroup.js +3 -1
- package/dist/collection/components/q2-optgroup/q2-optgroup.js.map +1 -1
- package/dist/collection/components/q2-option/q2-option.css +5 -0
- package/dist/collection/components/q2-option/q2-option.js +2 -0
- package/dist/collection/components/q2-option/q2-option.js.map +1 -1
- package/dist/collection/components/q2-option-list/q2-option-list.js +8 -6
- package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
- package/dist/collection/components/q2-pagination/q2-pagination.css +3 -0
- package/dist/collection/components/q2-pagination/q2-pagination.js +20 -17
- package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
- package/dist/collection/components/q2-pill/q2-pill.js +1 -1
- package/dist/collection/components/q2-popover/q2-popover.css +1 -1
- package/dist/collection/components/q2-popover/q2-popover.js +1 -1
- package/dist/collection/components/q2-radio/q2-radio.css +85 -35
- package/dist/collection/components/q2-radio/q2-radio.js +1 -1
- package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
- package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
- package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
- package/dist/collection/components/q2-section/q2-section.js +2 -2
- package/dist/collection/components/q2-section-container/q2-section-container.js +2 -0
- package/dist/collection/components/q2-section-container/q2-section-container.js.map +1 -1
- package/dist/collection/components/q2-select/q2-select.js +6 -5
- package/dist/collection/components/q2-select/q2-select.js.map +1 -1
- package/dist/collection/components/q2-stepper/q2-stepper.css +1 -3
- package/dist/collection/components/q2-stepper/q2-stepper.js +6 -2
- package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +7 -5
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
- package/dist/collection/components/q2-tab-container/q2-tab-container.js +5 -1
- package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +8 -1
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js.map +1 -1
- package/dist/collection/components/q2-tag/q2-tag.css +8 -0
- package/dist/collection/components/q2-tag/q2-tag.js +1 -1
- package/dist/collection/components/q2-textarea/q2-textarea.css +2 -1
- package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
- package/dist/collection/components/q2-toast/q2-toast.css +230 -0
- package/dist/collection/components/q2-toast/q2-toast.js +452 -0
- package/dist/collection/components/q2-toast/q2-toast.js.map +1 -0
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +4 -2
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js.map +1 -1
- package/dist/collection/utils/action-sheet.js +3 -0
- package/dist/collection/utils/action-sheet.js.map +1 -1
- package/dist/collection/utils/component.js +38 -0
- package/dist/collection/utils/component.js.map +1 -0
- package/dist/collection/utils/helpers.js +6 -1
- package/dist/collection/utils/helpers.js.map +1 -1
- package/dist/collection/utils/sanitize-html-string.js +6 -0
- package/dist/collection/utils/sanitize-html-string.js.map +1 -1
- package/dist/components/action-sheet.js +3 -0
- package/dist/components/action-sheet.js.map +1 -1
- package/dist/components/component.js +42 -0
- package/dist/components/component.js.map +1 -0
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/q2-action-group2.js +121 -45
- package/dist/components/q2-action-group2.js.map +1 -1
- package/dist/components/q2-action-sheet.js +9 -5
- package/dist/components/q2-action-sheet.js.map +1 -1
- package/dist/components/q2-avatar2.js +2 -2
- package/dist/components/q2-avatar2.js.map +1 -1
- package/dist/components/q2-btn2.js +2 -2
- package/dist/components/q2-btn2.js.map +1 -1
- package/dist/components/q2-calendar.js +3 -3
- package/dist/components/q2-calendar.js.map +1 -1
- package/dist/components/q2-card-image.js +6 -6
- package/dist/components/q2-card-image.js.map +1 -1
- package/dist/components/q2-card.js +1 -1
- package/dist/components/q2-card.js.map +1 -1
- package/dist/components/q2-carousel-pane.js +7 -3
- package/dist/components/q2-carousel-pane.js.map +1 -1
- package/dist/components/q2-carousel.js +12 -2
- package/dist/components/q2-carousel.js.map +1 -1
- package/dist/components/q2-chart-area.js +1 -1
- package/dist/components/q2-chart-bar.js +1 -1
- package/dist/components/q2-chart-donut.js +1 -1
- package/dist/components/q2-checkbox-group.js +5 -1
- package/dist/components/q2-checkbox-group.js.map +1 -1
- package/dist/components/q2-checkbox2.js +3 -4
- package/dist/components/q2-checkbox2.js.map +1 -1
- package/dist/components/q2-context.js +1 -1
- package/dist/components/q2-context.js.map +1 -1
- package/dist/components/q2-currency.js +1 -1
- package/dist/components/q2-data-table.js +20 -9
- package/dist/components/q2-data-table.js.map +1 -1
- package/dist/components/q2-detail.js +2 -2
- package/dist/components/q2-detail.js.map +1 -1
- package/dist/components/q2-dropdown-item2.js +3 -1
- package/dist/components/q2-dropdown-item2.js.map +1 -1
- package/dist/components/q2-dropdown.js +34 -7
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-editable-field.js +1 -1
- package/dist/components/q2-example.js +1 -1
- package/dist/components/q2-file-picker.js +2 -2
- package/dist/components/q2-file-picker.js.map +1 -1
- package/dist/components/q2-form.js +1 -1
- package/dist/components/q2-formatted-text.js +1 -1
- package/dist/components/q2-grid-area.js +9 -1
- package/dist/components/q2-grid-area.js.map +1 -1
- package/dist/components/q2-icon2.js +6 -0
- package/dist/components/q2-icon2.js.map +1 -1
- package/dist/components/q2-input2.js +8 -6
- package/dist/components/q2-input2.js.map +1 -1
- package/dist/components/q2-item2.js +17 -17
- package/dist/components/q2-item2.js.map +1 -1
- package/dist/components/q2-legend2.js +1 -1
- package/dist/components/q2-link2.js +12 -6
- package/dist/components/q2-link2.js.map +1 -1
- package/dist/components/q2-list2.js +1 -1
- package/dist/components/q2-loading2.js +11 -2
- package/dist/components/q2-loading2.js.map +1 -1
- package/dist/components/q2-message2.js +2 -2
- package/dist/components/q2-message2.js.map +1 -1
- package/dist/components/q2-meter.js +1 -1
- package/dist/components/q2-modal.js +1 -1
- package/dist/components/q2-month-picker.js +2 -2
- package/dist/components/q2-mutation-observer.js +1 -1
- package/dist/components/q2-optgroup2.js +4 -2
- package/dist/components/q2-optgroup2.js.map +1 -1
- package/dist/components/q2-option-list2.js +3 -1
- package/dist/components/q2-option-list2.js.map +1 -1
- package/dist/components/q2-option2.js +3 -1
- package/dist/components/q2-option2.js.map +1 -1
- package/dist/components/q2-pagination.js +11 -13
- package/dist/components/q2-pagination.js.map +1 -1
- package/dist/components/q2-pill.js +1 -1
- package/dist/components/q2-popover2.js +2 -2
- package/dist/components/q2-popover2.js.map +1 -1
- package/dist/components/q2-radio.js +2 -2
- package/dist/components/q2-radio.js.map +1 -1
- package/dist/components/q2-relative-time.js +1 -1
- package/dist/components/q2-resize-observer2.js +1 -1
- package/dist/components/q2-section-container.js +2 -0
- package/dist/components/q2-section-container.js.map +1 -1
- package/dist/components/q2-section.js +2 -2
- package/dist/components/q2-select2.js +6 -2
- package/dist/components/q2-select2.js.map +1 -1
- package/dist/components/q2-stepper-pane.js +3 -1
- package/dist/components/q2-stepper-pane.js.map +1 -1
- package/dist/components/q2-stepper-vertical.js +1 -1
- package/dist/components/q2-stepper.js +7 -3
- package/dist/components/q2-stepper.js.map +1 -1
- package/dist/components/q2-tab-container.js +5 -1
- package/dist/components/q2-tab-container.js.map +1 -1
- package/dist/components/q2-tab-pane.js +8 -1
- package/dist/components/q2-tab-pane.js.map +1 -1
- package/dist/components/q2-tag.js +2 -2
- package/dist/components/q2-tag.js.map +1 -1
- package/dist/components/q2-textarea.js +2 -2
- package/dist/components/q2-textarea.js.map +1 -1
- package/dist/components/q2-toast.d.ts +11 -0
- package/dist/components/q2-toast.js +233 -0
- package/dist/components/q2-toast.js.map +1 -0
- package/dist/components/sanitize-html-string.js +28 -5
- package/dist/components/sanitize-html-string.js.map +1 -1
- package/dist/components/tecton-tab-pane.js +4 -2
- package/dist/components/tecton-tab-pane.js.map +1 -1
- package/dist/esm/{action-sheet-WwoBwnIp.js → action-sheet-B7adb3xs.js} +5 -2
- package/dist/esm/action-sheet-B7adb3xs.js.map +1 -0
- package/dist/esm/component-DVxzK3WH.js +42 -0
- package/dist/esm/component-DVxzK3WH.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-group.q2-resize-observer.entry.js.map +1 -1
- package/dist/esm/q2-action-group_2.entry.js +121 -45
- package/dist/esm/q2-action-group_2.entry.js.map +1 -1
- package/dist/esm/q2-action-sheet.entry.js +9 -5
- package/dist/esm/q2-action-sheet.entry.js.map +1 -1
- package/dist/esm/q2-avatar.entry.js +2 -2
- package/dist/esm/q2-avatar.entry.js.map +1 -1
- package/dist/esm/q2-btn.q2-loading.entry.js.map +1 -1
- package/dist/esm/q2-btn_2.entry.js +13 -4
- package/dist/esm/q2-btn_2.entry.js.map +1 -1
- package/dist/esm/q2-calendar.entry.js +3 -3
- package/dist/esm/q2-calendar.entry.js.map +1 -1
- package/dist/esm/q2-card-image.entry.js +6 -6
- package/dist/esm/q2-card-image.entry.js.map +1 -1
- package/dist/esm/q2-card.entry.js +1 -1
- package/dist/esm/q2-card.entry.js.map +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +7 -3
- package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
- package/dist/esm/q2-carousel.entry.js +12 -2
- package/dist/esm/q2-carousel.entry.js.map +1 -1
- package/dist/esm/q2-chart-area.entry.js +1 -1
- package/dist/esm/q2-chart-bar.entry.js +1 -1
- package/dist/esm/q2-chart-donut.entry.js +1 -1
- package/dist/esm/q2-checkbox-group.entry.js +5 -1
- package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
- package/dist/esm/q2-checkbox.entry.js +3 -4
- package/dist/esm/q2-checkbox.entry.js.map +1 -1
- package/dist/esm/q2-context.entry.js +1 -1
- package/dist/esm/q2-context.entry.js.map +1 -1
- package/dist/esm/q2-currency.entry.js +1 -1
- package/dist/esm/q2-data-table.entry.js +19 -9
- package/dist/esm/q2-data-table.entry.js.map +1 -1
- package/dist/esm/q2-detail.entry.js +2 -2
- package/dist/esm/q2-detail.entry.js.map +1 -1
- package/dist/esm/q2-dropdown-item.entry.js +3 -1
- package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
- package/dist/esm/q2-dropdown.entry.js +33 -8
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-editable-field.entry.js +1 -1
- package/dist/esm/q2-example.entry.js +1 -1
- package/dist/esm/q2-file-picker.entry.js +2 -2
- package/dist/esm/q2-file-picker.entry.js.map +1 -1
- package/dist/esm/q2-form.entry.js +1 -1
- package/dist/esm/q2-formatted-text.entry.js +1 -1
- package/dist/esm/q2-grid-area.entry.js +10 -2
- package/dist/esm/q2-grid-area.entry.js.map +1 -1
- package/dist/esm/q2-icon.entry.js +6 -0
- package/dist/esm/q2-icon.entry.js.map +1 -1
- package/dist/esm/q2-input.entry.js +8 -6
- package/dist/esm/q2-input.entry.js.map +1 -1
- package/dist/esm/q2-item.entry.js +17 -17
- package/dist/esm/q2-item.entry.js.map +1 -1
- package/dist/esm/q2-legend.entry.js +1 -1
- package/dist/esm/q2-link.q2-list.entry.js.map +1 -1
- package/dist/esm/q2-link_2.entry.js +11 -7
- package/dist/esm/q2-link_2.entry.js.map +1 -1
- package/dist/esm/q2-message.entry.js +2 -2
- package/dist/esm/q2-message.entry.js.map +1 -1
- package/dist/esm/q2-meter.entry.js +1 -1
- package/dist/esm/q2-modal.entry.js +2 -2
- package/dist/esm/q2-month-picker.entry.js +2 -2
- package/dist/esm/q2-mutation-observer.entry.js +1 -1
- package/dist/esm/q2-optgroup.entry.js +4 -2
- package/dist/esm/q2-optgroup.entry.js.map +1 -1
- package/dist/esm/q2-option-list.q2-popover.entry.js.map +1 -1
- package/dist/esm/q2-option-list_2.entry.js +5 -3
- package/dist/esm/q2-option-list_2.entry.js.map +1 -1
- package/dist/esm/q2-option.entry.js +3 -1
- package/dist/esm/q2-option.entry.js.map +1 -1
- package/dist/esm/q2-pagination.entry.js +10 -12
- package/dist/esm/q2-pagination.entry.js.map +1 -1
- package/dist/esm/q2-pill.entry.js +2 -2
- package/dist/esm/q2-radio.entry.js +2 -2
- package/dist/esm/q2-radio.entry.js.map +1 -1
- package/dist/esm/q2-relative-time.entry.js +1 -1
- package/dist/esm/q2-section-container.entry.js +2 -0
- package/dist/esm/q2-section-container.entry.js.map +1 -1
- package/dist/esm/q2-section.entry.js +2 -2
- package/dist/esm/q2-select.entry.js +7 -3
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +3 -1
- package/dist/esm/q2-stepper-pane.entry.js.map +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js +1 -1
- package/dist/esm/q2-stepper.entry.js +7 -3
- package/dist/esm/q2-stepper.entry.js.map +1 -1
- package/dist/esm/q2-tab-container.entry.js +5 -1
- package/dist/esm/q2-tab-container.entry.js.map +1 -1
- package/dist/esm/q2-tab-pane.entry.js +9 -2
- package/dist/esm/q2-tab-pane.entry.js.map +1 -1
- package/dist/esm/q2-tag.entry.js +3 -3
- package/dist/esm/q2-tag.entry.js.map +1 -1
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +2 -2
- package/dist/esm/q2-textarea.entry.js.map +1 -1
- package/dist/esm/q2-toast.entry.js +190 -0
- package/dist/esm/q2-toast.entry.js.map +1 -0
- package/dist/esm/{sanitize-html-string-DOVERJq5.js → sanitize-html-string-BPwFpYg-.js} +30 -7
- package/dist/esm/sanitize-html-string-BPwFpYg-.js.map +1 -0
- package/dist/esm/tecton-tab-pane.entry.js +4 -2
- package/dist/esm/tecton-tab-pane.entry.js.map +1 -1
- package/dist/jest.e2e-coverage.js +25 -0
- package/dist/jest.e2e-coverage.js.map +1 -0
- package/dist/q2-tecton-elements/{action-sheet-WwoBwnIp.js → action-sheet-B7adb3xs.js} +19 -14
- package/dist/q2-tecton-elements/action-sheet-B7adb3xs.js.map +1 -0
- package/dist/q2-tecton-elements/assets/brand.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/browsersos.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/cards.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/communication.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/currencies.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/devices.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/filetypes.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/gestures.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/icon-list.json +1 -1
- package/dist/q2-tecton-elements/assets/icon-map.json +1 -1
- package/dist/q2-tecton-elements/assets/legacy.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/mobile.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/standard.symbol.svg +1 -1
- package/dist/q2-tecton-elements/component-DVxzK3WH.js +40 -0
- package/dist/q2-tecton-elements/component-DVxzK3WH.js.map +1 -0
- package/dist/q2-tecton-elements/q2-action-group.q2-resize-observer.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-action-group_2.entry.js +131 -63
- package/dist/q2-tecton-elements/q2-action-group_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-action-sheet.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-action-sheet.entry.js +79 -75
- package/dist/q2-tecton-elements/q2-action-sheet.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-avatar.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-avatar.entry.js +7 -7
- package/dist/q2-tecton-elements/q2-avatar.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-btn.q2-loading.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-btn_2.entry.js +11 -4
- package/dist/q2-tecton-elements/q2-btn_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-calendar.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-calendar.entry.js +4 -3
- package/dist/q2-tecton-elements/q2-calendar.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-card-image.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-card-image.entry.js +11 -11
- package/dist/q2-tecton-elements/q2-card-image.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-card.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-card.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +25 -20
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel.entry.js +79 -67
- package/dist/q2-tecton-elements/q2-carousel.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-chart-area.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-chart-bar.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-chart-donut.entry.js +9 -9
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +20 -15
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox.entry.js +70 -71
- package/dist/q2-tecton-elements/q2-checkbox.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-context.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-context.entry.js +12 -12
- package/dist/q2-tecton-elements/q2-context.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-currency.entry.js +8 -8
- package/dist/q2-tecton-elements/q2-data-table.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-data-table.entry.js +40 -27
- package/dist/q2-tecton-elements/q2-data-table.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-detail.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-detail.entry.js +10 -10
- package/dist/q2-tecton-elements/q2-detail.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +11 -8
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-dropdown.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-dropdown.entry.js +113 -85
- package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-editable-field.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-example.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.js +3 -2
- package/dist/q2-tecton-elements/q2-file-picker.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-form.entry.js +7 -7
- package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-grid-area.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-grid-area.entry.js +18 -7
- package/dist/q2-tecton-elements/q2-grid-area.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-icon.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-icon.entry.js +145 -137
- package/dist/q2-tecton-elements/q2-icon.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-input.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-input.entry.js +14 -8
- package/dist/q2-tecton-elements/q2-input.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-item.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-item.entry.js +56 -53
- package/dist/q2-tecton-elements/q2-item.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-legend.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-link.q2-list.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-link_2.entry.js +22 -18
- package/dist/q2-tecton-elements/q2-link_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-message.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-message.entry.js +9 -9
- package/dist/q2-tecton-elements/q2-message.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-meter.entry.js +7 -7
- package/dist/q2-tecton-elements/q2-modal.entry.js +21 -21
- package/dist/q2-tecton-elements/q2-month-picker.entry.js +30 -30
- package/dist/q2-tecton-elements/q2-mutation-observer.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-optgroup.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-optgroup.entry.js +15 -12
- package/dist/q2-tecton-elements/q2-optgroup.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-option-list.q2-popover.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-option-list_2.entry.js +52 -49
- package/dist/q2-tecton-elements/q2-option-list_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-option.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-option.entry.js +15 -12
- package/dist/q2-tecton-elements/q2-option.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pagination.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pagination.entry.js +66 -66
- package/dist/q2-tecton-elements/q2-pagination.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pill.entry.js +37 -37
- package/dist/q2-tecton-elements/q2-radio.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio.entry.js +47 -45
- package/dist/q2-tecton-elements/q2-radio.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-relative-time.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-section-container.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-section-container.entry.js +5 -2
- package/dist/q2-tecton-elements/q2-section-container.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-section.entry.js +11 -11
- package/dist/q2-tecton-elements/q2-select.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-select.entry.js +6 -3
- package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +22 -19
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +69 -69
- package/dist/q2-tecton-elements/q2-stepper.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper.entry.js +42 -39
- package/dist/q2-tecton-elements/q2-stepper.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-container.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-container.entry.js +21 -16
- package/dist/q2-tecton-elements/q2-tab-container.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-pane.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-pane.entry.js +17 -7
- package/dist/q2-tecton-elements/q2-tab-pane.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tag.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tag.entry.js +65 -65
- package/dist/q2-tecton-elements/q2-tag.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/q2-tecton-elements/q2-textarea.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-textarea.entry.js +3 -3
- package/dist/q2-tecton-elements/q2-textarea.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-toast.entry.esm.js.map +1 -0
- package/dist/q2-tecton-elements/q2-toast.entry.js +222 -0
- package/dist/q2-tecton-elements/q2-toast.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{sanitize-html-string-DOVERJq5.js → sanitize-html-string-BPwFpYg-.js} +167 -145
- package/dist/q2-tecton-elements/sanitize-html-string-BPwFpYg-.js.map +1 -0
- package/dist/q2-tecton-elements/tecton-tab-pane.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +8 -8
- package/dist/q2-tecton-elements/tecton-tab-pane.entry.js.map +1 -1
- package/dist/scripts/docs-generator/index.js +1 -1
- package/dist/scripts/docs-generator/index.js.map +1 -1
- package/dist/types/Users/kvanhouten/Documents/Work/tecton/packages/q2-tecton-elements/.stencil/jest.e2e-coverage.d.ts +1 -0
- package/dist/types/components/q2-action-group/q2-action-group.d.ts +7 -4
- package/dist/types/components/q2-carousel-pane/q2-carousel-pane.d.ts +1 -0
- package/dist/types/components/q2-checkbox/q2-checkbox.d.ts +0 -5
- package/dist/types/components/q2-data-table/q2-data-table.d.ts +8 -0
- package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +22 -3
- package/dist/types/components/q2-grid-area/q2-grid-area.d.ts +2 -0
- package/dist/types/components/q2-input/q2-input.d.ts +4 -5
- package/dist/types/components/q2-item/q2-item.d.ts +5 -4
- package/dist/types/components/q2-link/q2-link.d.ts +4 -0
- package/dist/types/components/q2-pagination/q2-pagination.d.ts +11 -3
- package/dist/types/components/q2-select/q2-select.d.ts +1 -2
- package/dist/types/components/q2-tab-pane/q2-tab-pane.d.ts +2 -0
- package/dist/types/components/q2-toast/q2-toast.d.ts +67 -0
- package/dist/types/components.d.ts +189 -34
- package/dist/types/utils/action-sheet.d.ts +2 -1
- package/dist/types/utils/component.d.ts +4 -0
- package/dist/types/utils/sanitize-html-string.d.ts +1 -0
- package/package.json +11 -7
- package/dist/cjs/action-sheet-CiK2Bap_.js.map +0 -1
- package/dist/cjs/sanitize-html-string-DPqrzfM9.js.map +0 -1
- package/dist/esm/action-sheet-WwoBwnIp.js.map +0 -1
- package/dist/esm/sanitize-html-string-DOVERJq5.js.map +0 -1
- package/dist/q2-tecton-elements/action-sheet-WwoBwnIp.js.map +0 -1
- package/dist/q2-tecton-elements/sanitize-html-string-DOVERJq5.js.map +0 -1
- /package/dist/types/Users/kvanhouten/Documents/Work/{tecton_extra → tecton}/packages/q2-tecton-elements/.stencil/jest.setup.d.ts +0 -0
- /package/dist/types/Users/kvanhouten/Documents/Work/{tecton_extra → tecton}/packages/q2-tecton-elements/.stencil/scripts/docs-generator/index.d.ts +0 -0
- /package/dist/types/Users/kvanhouten/Documents/Work/{tecton_extra → tecton}/packages/q2-tecton-elements/.stencil/scripts/docs-generator/markdown-generator.d.ts +0 -0
- /package/dist/types/Users/kvanhouten/Documents/Work/{tecton_extra → tecton}/packages/q2-tecton-elements/.stencil/scripts/docs-generator/tag-handlers.d.ts +0 -0
- /package/dist/types/Users/kvanhouten/Documents/Work/{tecton_extra → tecton}/packages/q2-tecton-elements/.stencil/scripts/docs-generator/types.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["formatNumber","val","options","prefix","suffix","decimals","decimalSeparator","thousandsSeparator","allowDecimal","allowNegative","explicit","isNegative","value","parsedValue","replace","Number","toFixed","integerString","decimalString","splitValue","negativeSymbol","formattedValue","fullyFormattedValue","formattingCharacterCount","length","maxlength","MAX_SAFE_INTEGER","toString","unformattedValue","splitIndex","substring","padStart","formatValue","mask","trim","generateMask","minFormattedLength","getMinimumFormattedLength","optionalValidatingChars","isOptionalValidatingChar","character","includes","knownValidatingChars","isKnownValidatingChar","getStaticFormattingChars","knownChars","join","formattingChars","RegExp","split","Set","isStaticFormattingChar","has","getValidatedChar","char","matcher","toUpperCase","maskArray","currentValueIndex","reduce","acc","getNextNonFormattingCharIndex","validChar","currencyFormats","AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHF","CLF","CLP","CNY","COP","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EEK","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LTL","LVL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SKK","SLL","SOS","SRD","STN","SVC","SYP","SZL","THB","TJS","TMM","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","UYU","UZS","VEF","VND","VUV","WST","XAF","XCD","XOF","XPF","YER","ZAR","ZMW","ZWD","formatCurrency","currencyCode","processedCurrencyCode","currencyFormat","phoneNumberFormats","AC","AD","AE","AF","AG","AI","AL","AM","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TA","TC","TD","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW","formatPhoneNumber","isoCode","formatSSN","formatTIN","formatAlphanumeric","formatAlpha","modifier","getNumberFormat","formatOptions","numberFormat","formatParts","match","formatNumeric","formatPercentage","undefined","postalCodeFormats","GS","PN","YU","formatPostalCode","dateFormats","formatDate","format","formattedValueObject","detectedType","formatCreditCard","detectCreditCardTypeFromValue","creditCardFormatters","leftIcon","unknownFormatter","unknownFn","valueObject","type","leftIconMuted","amexFormatter","amexFn","discoverFormatter","discoverFn","masterCardFormatter","masterCardFn","visaFormatter","visaFn","dinersClubInternationalFormatter","dinersClub","discover","amex","masterCard","visa","unknown","firstInt","parseInt","charAt","secondInt","firstfour","substr","thirdInt","firstthree","firstsix","formatCIF","formatRoutingNumber","formatSwift","formatIBAN","formatCLABE","q2InputCss","inputTypeMap","text","tel","number","password","search","url","email","currency","phone","ssn","alphanumeric","alpha","numeric","percentage","postal","date","cif","routingnumber","swift","iban","clabe","Q2Input","constructor","hostRef","this","guid","createGuid","isClickEvent","isMobile","scheduledAfterRender","checkSlotCount","isSmall","_preventEntry","_role","disabled","showVisibilityToggle","handleCurrencyKeydown","event","key","inputElement","inputField","textSelectedForDeletion","selectionStart","selectionEnd","handleValueAndCursor","cursorPosition","calculateCursorPositionOnInput","mirrorEmit","setCursorPosition","initMutationObserver","window","observer","MutationObserver","onMutationObserved","observe","hostElement","childList","mutationObserver","onClearInput","eventDetail","focus","onInputBlur","hasFocus","setMessageHeight","valueOnFocus","onInputClick","shouldCursorStayAtEnd","placeCursorAtEnd","onInputFocus","tagName","push","shouldCursorStartAtEnd","calculateCursorPositionOnFocus","onInputInput","stopPropagation","handleCurrencyDeletion","newFormattedValue","getFormattedValue","target","handleDataInput","validateInput","onInputKeydown","keysThatMoveCursor","preventDefault","onInputMousedown","onInputPaste","clipboardData","getData","onRefocusInput","showMessages","onToggleVisibility","dispatchEvent","FocusEvent","textHidden","validity","_a","inputRef","_b","valid","_c","disconnectedCallback","manageClearableResizeObserver","disconnect","componentWillLoad","isNaN","stringValue","Object","defineProperty","get","handleAriaLabel","updateComboboxAriaLabel","clearable","componentDidLoad","overrideFocus","pseudo","autofocus","componentDidRender","forEach","fn","onHostElementChange","CustomEvent","onchange","detail","onHostElementFocus","isEventFromElement","checkValidity","clearValue","setValue","InputEvent","label","setAttribute","loc","ariaLabelObserver","isSmallThreshold","resizeObserver","ResizeObserver","entry","contentRect","width","unobserve","errorsObserver","formatModifierObserver","formatAndUpdateValueFromProp","formattedValueObjectObserver","hintsObserver","typeObserver","valueObserver","ariaAttributes","ariaActivedescendant","getAriaValueFromProp","ariaControls","ariaExpanded","ariaHaspopup","ariaOwns","canSetSelection","computedType","clearClasses","classes","computedAutocomplete","autocomplete","computedClassForIconLeft","className","computedIconLeft","iconLeft","hasCustomDisplaySlot","hasSlotContent","hasError","Array","isArray","errors","hasInputLeftSlot","hasInputRightSlot","inputDescribedBy","inputId","shadowRoot","querySelector","inputMode","inputModeMap","tin","isMaskedType","maskedTypes","messages","hints","showIconSeparator","hideMessages","notCoercable","prototype","call","String","visibilityToggleAriaLabel","visibilityToggleText","wrapperClasses","classNames","iconRight","valueLength","startingPosition","previousValueLength","hasSelection","getSelection","input","formattedLength","currentValueLength","defaultPosition","valueChangedFromProperty","formattingFunctions","formatModifier","inputType","cursorMap","valueBeforeCursor","isPrevCharAlphaNum","test","leftIndex","rightIndex","afterCursorOffset","newCursorOffset","valueAfterCursor","isNextCharAlphaNum","newValue","charactersAfterCursor","newCursorPosition","Math","max","setSelectionRange","nextPaint","cursorData","difference","newPosition","renderCountDOM","showCount","h","class","renderInputContainerDOM","tabindex","name","onClick","renderPseudoInputDOM","renderStandardInputDOM","hideLabel","onKeyDown","e","badgeValue","size","theme","badgeTheme","showPlaceholder","placeholder","id","role","onFocus","onBlur","inputClasses","Fragment","ref","el","min","step","current","optional","autocapitalize","autocorrect","readonly","onMouseDown","onInput","onPaste","inputmode","pattern","render","Host","renderLabel","renderMessages"],"sources":["src/components/q2-input/formatting/number.ts","src/components/q2-input/formatting/generic.ts","src/components/q2-input/formatting/currency.ts","src/components/q2-input/formatting/phone-number-formats.ts","src/components/q2-input/formatting/phone.ts","src/components/q2-input/formatting/ssn.ts","src/components/q2-input/formatting/tin.ts","src/components/q2-input/formatting/alphanumeric.ts","src/components/q2-input/formatting/alpha.ts","src/components/q2-input/formatting/numeric.ts","src/components/q2-input/formatting/postal.ts","src/components/q2-input/formatting/date.ts","src/components/q2-input/formatting/credit-card.ts","src/components/q2-input/formatting/cif.ts","src/components/q2-input/formatting/routingnumber.ts","src/components/q2-input/formatting/swift.ts","src/components/q2-input/formatting/iban.ts","src/components/q2-input/formatting/clabe.ts","src/components/q2-input/q2-input.scss?tag=q2-input&encapsulation=shadow","src/components/q2-input/q2-input.tsx"],"sourcesContent":["import { IFormatterValueObject, INumberInputFormatOptions } from '../q2-input-types';\n\nexport default function formatNumber(\n val: string = '',\n options: INumberInputFormatOptions = {\n prefix: '',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: '',\n allowDecimal: false,\n allowNegative: true,\n },\n explicit: boolean = false\n): IFormatterValueObject {\n const isNegative = val[0] === '-';\n\n let value = val;\n\n const allowDecimal = !!options.allowDecimal && !!options.decimals;\n\n if (explicit) {\n const parsedValue = value.replace(/[^\\d.]/g, '');\n value = (parsedValue && Number(parsedValue).toFixed(allowDecimal ? options.decimals : 0)) || '';\n }\n\n value = value.replace(/[^\\d]/g, '');\n\n let { integerString, decimalString } = splitValue(value, allowDecimal, options.decimals);\n\n // define decimalString\n let decimalSeparator = options.decimalSeparator;\n if (!allowDecimal) {\n decimalSeparator = '';\n decimalString = '';\n }\n\n // define negative\n const negativeSymbol = options.allowNegative && isNegative ? '-' : '';\n\n value = `${negativeSymbol}${integerString}${decimalSeparator}${decimalString}`;\n\n // format integerString\n integerString = integerString.replace(/\\B(?=(\\d{3})+(?!\\d))/g, options.thousandsSeparator);\n\n const formattedValue: string =\n negativeSymbol || integerString ? `${negativeSymbol}${integerString}${decimalSeparator}${decimalString}` : '';\n\n const fullyFormattedValue: string =\n negativeSymbol || integerString\n ? `${negativeSymbol}${options.prefix}${integerString}${decimalSeparator}${decimalString}${options.suffix}`\n : '';\n\n let formattingCharacterCount = formattedValue.length - value.length;\n\n if (decimalSeparator) {\n formattingCharacterCount = formattingCharacterCount + options.decimalSeparator.length;\n }\n\n const prefix = options.prefix || options.suffix;\n const maxlength = Number.MAX_SAFE_INTEGER.toString().length + formattingCharacterCount + decimalString.length;\n\n const unformattedValue = `${integerString.replace(/[^0-9]/g, '')}${decimalString}`.replace(/^0+/, '');\n\n return {\n value,\n formattedValue,\n fullyFormattedValue,\n prefix,\n suffix: '',\n formattingCharacterCount,\n maxlength,\n unformattedValue,\n };\n}\n\nfunction splitValue(\n value: string,\n allowDecimal: boolean = false,\n decimals: number\n): { integerString: string; decimalString: string } {\n if (!allowDecimal) {\n return {\n integerString: value,\n decimalString: '',\n };\n }\n\n const splitIndex = value.length - decimals;\n\n let integerString = value.substring(0, splitIndex).padStart(1, '0');\n if (integerString.length > 1 && integerString[0] === '0') {\n integerString = integerString.substring(1);\n }\n\n const decimalString = value.substring(splitIndex).padStart(decimals, '0');\n\n return {\n integerString,\n decimalString,\n };\n}\n","import { IFormatterValueObject } from '../q2-input-types';\n\nexport default function formatValue(\n value: string = '',\n mask: string = '',\n options?: {\n prefix?: string;\n suffix?: string;\n }\n): IFormatterValueObject {\n const prefix = (options && options.prefix) || '';\n const suffix = (options && options.suffix) || '';\n\n if (!value || !mask) {\n const fullyFormattedValue = `${prefix}${value}${suffix}`;\n return {\n value,\n formattedValue: value,\n fullyFormattedValue,\n prefix: prefix.trim() || suffix.trim(),\n formattingCharacterCount: 0,\n unformattedValue: value,\n };\n }\n\n const { unformattedValue, formattedValue, formattingCharacterCount } = generateMask(value, mask);\n\n const fullyFormattedValue = `${prefix}${formattedValue}${suffix}`;\n const maxlength = mask.length;\n const minFormattedLength = getMinimumFormattedLength(mask, prefix, suffix);\n\n return {\n value: unformattedValue,\n formattedValue,\n fullyFormattedValue,\n prefix: prefix.trim() || suffix.trim(),\n formattingCharacterCount,\n maxlength,\n minFormattedLength,\n unformattedValue,\n };\n}\n\nconst optionalValidatingChars = ['?'];\nfunction isOptionalValidatingChar(character: string): boolean {\n return optionalValidatingChars.includes(character);\n}\n\nconst knownValidatingChars = ['#', '@', '*', ...optionalValidatingChars];\nfunction isKnownValidatingChar(character: string): boolean {\n return knownValidatingChars.includes(character);\n}\n\nfunction getStaticFormattingChars(mask: string): Set<string> {\n const knownChars = knownValidatingChars.join('|');\n const formattingChars = mask.replace(new RegExp(`[${knownChars}]`, 'g'), '').split('');\n return new Set(formattingChars);\n}\n\nfunction isStaticFormattingChar(character: string, formattingChars: Set<string>): boolean {\n return formattingChars.has(character);\n}\n\nfunction getValidatedChar(char: string, matcher: string) {\n switch (matcher) {\n case '#':\n char = char.replace(/[^\\d]/g, '');\n break;\n case '@':\n char = char.toUpperCase().replace(/[^A-Z]+/g, ''); // allows only upper case\n break;\n case '*':\n char = char.toUpperCase().replace(/[^\\dA-Z]+/g, '');\n break;\n case '?':\n char = char.replace(/[^\\d]/g, '');\n break;\n default:\n return char;\n }\n return char;\n}\n\nfunction generateMask(value: string, mask: string) {\n const maskArray = mask.split('');\n const formattingChars = getStaticFormattingChars(mask);\n let currentValueIndex: number = 0;\n let formattingCharacterCount: number = 0;\n let unformattedValue: string = '';\n\n const formattedValue = maskArray.reduce((acc: string, character: string) => {\n if (currentValueIndex >= value.length) {\n return acc;\n }\n\n if (isOptionalValidatingChar(character) && isStaticFormattingChar(value[currentValueIndex], formattingChars)) {\n return acc;\n }\n\n if (isKnownValidatingChar(character)) {\n // Step value index if formatting character pushed out of place by user input\n currentValueIndex = getNextNonFormattingCharIndex(value, currentValueIndex, formattingChars);\n\n if (currentValueIndex >= value.length) {\n return acc;\n }\n\n const validChar = getValidatedChar(value[currentValueIndex], character);\n acc += validChar;\n unformattedValue += validChar;\n currentValueIndex++;\n } else {\n // Static formatting characters added directly to formatted string\n acc += character;\n formattingCharacterCount++;\n\n if (character === value[currentValueIndex]) {\n // Continue to walk value if next value at this index matches formatting character\n currentValueIndex++;\n }\n }\n\n return acc;\n }, '');\n\n return {\n unformattedValue,\n formattedValue,\n formattingCharacterCount,\n };\n}\n\nfunction getNextNonFormattingCharIndex(value: string, currentValueIndex: number, formattingChars: Set<string>): number {\n if (isStaticFormattingChar(value[currentValueIndex], formattingChars)) {\n currentValueIndex++;\n return getNextNonFormattingCharIndex(value, currentValueIndex, formattingChars);\n }\n\n return currentValueIndex;\n}\n\nfunction getMinimumFormattedLength(mask: string, prefix: string, suffix: string): number {\n return (\n mask.replace(new RegExp(`[${optionalValidatingChars.join('|')}]`, 'g'), '').length +\n prefix.length +\n suffix.length\n );\n}\n","import formatNumber from './number';\nimport formatValue from './generic';\nimport { IFormatterValueObject, INumberInputFormatOptions } from '../q2-input-types';\n\n// decimal data source: http://www.iso.org/iso/home/standards/currency_codes.htm 09/Nov/2016\nexport const currencyFormats = {\n AED: {\n prefix: '',\n suffix: 'د.إ',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.99د.إ'\n AFN: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n ALL: {\n prefix: 'L',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'L9,999.99'\n AMD: {\n prefix: 'դր.',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'դր.9,999.99'\n ANG: {\n prefix: 'ƒ',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'ƒ9,999.99'\n AOA: {\n prefix: 'Kz',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Kz9,999.99'\n ARS: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n AUD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n AWG: {\n prefix: 'ƒ',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'ƒ9,999.99'\n AZN: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n BAM: {\n prefix: 'КМ',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'КМ9,999.99'\n BBD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n BDT: {\n prefix: '৳',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '৳9,999.99'\n BGN: {\n prefix: '৳',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '৳9,999.99'\n BHD: {\n prefix: '',\n suffix: 'ب.د',\n decimals: 3,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.999ب.د'\n BIF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999'\n BMD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n BND: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n BOB: {\n prefix: 'Bs.',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Bs.9,999.99'\n BRL: {\n prefix: 'R$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'R$9,999.99'\n BSD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n BTN: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n BWP: {\n prefix: 'P',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'P9,999.99'\n BYN: {\n prefix: 'Br',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Br9,999'\n BZD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n CAD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n CDF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999.99'\n CHF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999.99'\n CLF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 4,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9.999.9999'\n CLP: {\n prefix: '$',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999'\n CNY: {\n prefix: '¥',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¥9,999.99'\n COP: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n CRC: {\n prefix: '₡',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₡9,999.99'\n CUC: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n CUP: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n CVE: {\n prefix: '$',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999'\n CZK: {\n prefix: 'Kč',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Kč9,999.99'\n DJF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999'\n DKK: {\n prefix: 'kr',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'kr9,999.99'\n DOP: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n DZD: {\n prefix: '',\n suffix: 'د.ج',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.99د.ج'\n EEK: {\n prefix: 'KR',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'KR9,999.99'\n EGP: {\n prefix: '£',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '£9,999.99'\n ERN: {\n prefix: 'Nfk',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Nfk9,999.99'\n ETB: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n EUR: {\n prefix: '€',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '€9,999.99'\n FJD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n FKP: {\n prefix: '£',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '£9,999.99'\n GBP: {\n prefix: '£',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '£9,999.99'\n GEL: {\n prefix: 'ლ',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'ლ9,999.99'\n GHS: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n GIP: {\n prefix: '£',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '£9,999.99'\n GMD: {\n prefix: 'D',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'D9,999.99'\n GNF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999'\n GTQ: {\n prefix: 'Q',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Q9,999.99'\n GYD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n HKD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.9'\n HNL: {\n prefix: 'L',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'L9,999.99'\n HRK: {\n prefix: 'kn',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'kn9,999.99'\n HTG: {\n prefix: 'G',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'G9,999.99'\n HUF: {\n prefix: 'Ft',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Ft9,999.99'\n IDR: {\n prefix: 'Rs',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Rs9,999.99'\n ILS: {\n prefix: '₪',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₪9,999.99'\n INR: {\n prefix: '₨',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₨9,999.99'\n IQD: {\n prefix: '',\n suffix: 'ع.د',\n decimals: 3,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.999ع.د'\n IRR: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n ISK: {\n prefix: 'kr',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'kr9,999'\n JMD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n JOD: {\n prefix: '',\n suffix: 'د.ا',\n decimals: 3,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.99د.ا'\n JPY: {\n prefix: '¥',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¥9,999'\n KES: {\n prefix: 'Sh',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Sh9,999.99'\n KGS: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n KHR: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n KMF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999'\n KPW: {\n prefix: '₩',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₩9,999.99'\n KRW: {\n prefix: '₩',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₩9,999.99'\n KWD: {\n prefix: 'د.ك',\n suffix: '',\n decimals: 3,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.999د.ك'\n KYD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n KZT: {\n prefix: '〒',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '〒9,999.99'\n LAK: {\n prefix: '₭',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₭9,999.99'\n LBP: {\n prefix: '',\n suffix: 'ل.ل',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'ل.ل9,999.99'\n LKR: {\n prefix: 'Rs',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Rs9,999.99'\n LRD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n LSL: {\n prefix: 'L',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'L9,999.99'\n LTL: {\n prefix: 'Lt',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Lt9,999.99'\n LVL: {\n prefix: 'Ls',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Ls9,999.99'\n LYD: {\n prefix: '',\n suffix: 'ل.د',\n decimals: 3,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.999ل.د'\n MAD: {\n prefix: '',\n suffix: 'د.م.',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.99د.م.'\n MDL: {\n prefix: 'L',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'L9,999.99'\n MGA: {\n prefix: '¤',\n suffix: '',\n decimals: 1,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.9'\n MKD: {\n prefix: 'ден',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'ден9,999.99'\n MMK: {\n prefix: 'K',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'K9,999.99'\n MNT: {\n prefix: '₮',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₮9,999.99'\n MOP: {\n prefix: 'P',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'P9,999.99'\n MRU: {\n prefix: 'UM',\n suffix: '',\n decimals: 1,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'UM9,999.9'\n MUR: {\n prefix: '₨',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₨9,999.99'\n MVR: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n MWK: {\n prefix: 'MK',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'MK9,999.99'\n MXN: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n MYR: {\n prefix: 'RM',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'RM9,999.99'\n MZN: {\n prefix: 'MTn',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'MTn9,999.99'\n NAD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n NGN: {\n prefix: '₦',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₦9,999.99'\n NIO: {\n prefix: 'C$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'C$9,999.99'\n NOK: {\n prefix: 'kr',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'kr9,999.99'\n NPR: {\n prefix: '₨',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₨9,999.99'\n NZD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n OMR: {\n prefix: '',\n suffix: 'ر.ع.',\n decimals: 3,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.999ر.ع.'\n PAB: {\n prefix: 'B/.',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'B/.9,999.99'\n PEN: {\n prefix: 'S/.',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'S/.9,999.99'\n PGK: {\n prefix: 'K',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'K9,999.99'\n PHP: {\n prefix: 'p',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'p9,999.99'\n PKR: {\n prefix: '₨',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₨9,999.99'\n PLN: {\n prefix: 'zł',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'zł9,999.99'\n PYG: {\n prefix: '¤',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999'\n QAR: {\n prefix: '',\n suffix: 'ر.ق',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.99ر.ق'\n RON: {\n prefix: 'L',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'L9,999.99'\n RSD: {\n prefix: 'дин.',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'дин.9,999.99'\n RUB: {\n prefix: 'руб.',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'руб.9,999.99'\n RWF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999'\n SAR: {\n prefix: '',\n suffix: 'ر.س',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.99ر.س'\n SBD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n SCR: {\n prefix: '₨',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₨9,999.99'\n SDG: {\n prefix: '£',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '£9,999.99'\n SEK: {\n prefix: 'kr',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'kr9,999.99'\n SGD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n SHP: {\n prefix: '£',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '£9,999.99'\n SKK: {\n prefix: 'Sk',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Sk9,999.99'\n SLL: {\n prefix: 'Le',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Le9,999.99'\n SOS: {\n prefix: 'Sh',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Sh9,999.99'\n SRD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n STN: {\n prefix: 'Db',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Db9,999.99'\n SVC: {\n prefix: '₡',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₡9,999.99'\n SYP: {\n prefix: '£',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '£9,999.99'\n SZL: {\n prefix: 'L',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'L9,999.99'\n THB: {\n prefix: '฿',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '฿9,999.99'\n TJS: {\n prefix: 'ЅМ',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'ЅМ9,999.99'\n TMM: {\n prefix: 'm',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'm9,999.99'\n TND: {\n prefix: '',\n suffix: 'د.ت',\n decimals: 3,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.999د.ت'\n TOP: {\n prefix: 'T$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'T$9,999.99'\n TRY: {\n prefix: 'YTL',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'YTL9,999.99'\n TTD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n TWD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n TZS: {\n prefix: 'Sh',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Sh9,999.99'\n UAH: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n UGX: {\n prefix: 'Sh',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Sh9,999'\n USD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n UYU: {\n prefix: '$',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999'\n UZS: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n VEF: {\n prefix: 'Bs F',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Bs F9,999.99'\n VND: {\n prefix: '₫',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₫9,999'\n VUV: {\n prefix: 'Vt',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Vt9,999'\n WST: {\n prefix: 'T',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'T9,999.99'\n XAF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999'\n XCD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n XOF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999'\n XPF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999'\n YER: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n ZAR: {\n prefix: 'R',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'R9,999.99'\n ZMW: {\n prefix: 'ZK',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'ZK9,999.99'\n ZWD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n};\n\nexport default function formatCurrency(\n value: string,\n currencyCode: string = 'USD',\n explicit: boolean = false\n): IFormatterValueObject {\n let processedCurrencyCode = currencyCode || '';\n let allowDecimal = true;\n\n if (processedCurrencyCode.includes('-integer')) {\n processedCurrencyCode = processedCurrencyCode.split('-integer')[0];\n allowDecimal = false;\n }\n\n const currencyFormat = currencyFormats[processedCurrencyCode];\n\n if (!currencyFormat) {\n return formatValue(value);\n }\n\n const options: INumberInputFormatOptions = {\n ...currencyFormat,\n allowDecimal: allowDecimal && currencyFormat.decimals > 0,\n allowNegative: false,\n };\n\n return formatNumber(value, options, explicit);\n}\n","/**\n * This file is generated by scripts/generatePhoneFormats.js\n * DO NOT edit by hand.\n *\n * To regenerate this file, run: pnpm generate:phone-formats\n * Only regenerate when upgrading google-libphonenumber or fixing generation bugs.\n * See scripts/generatePhoneFormats.js for details.\n */\n\nexport const phoneNumberFormats = {\n AC: {\n mask: '#####',\n prefix: '+247 ',\n },\n AD: {\n mask: '### ###',\n prefix: '+376 ',\n },\n AE: {\n mask: '### ### ####',\n prefix: '+971 ',\n },\n AF: {\n mask: '### ### ####',\n prefix: '+93 ',\n },\n AG: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n AI: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n AL: {\n mask: '### ### ####',\n prefix: '+355 ',\n },\n AM: {\n mask: '### ######',\n prefix: '+374 ',\n },\n AO: {\n mask: '### ### ###',\n prefix: '+244 ',\n },\n AR: {\n mask: '### ##-####-####',\n prefix: '+54 ',\n },\n AS: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n AT: {\n mask: '## #########',\n prefix: '+43 ',\n },\n AU: {\n mask: '#### ### ###',\n prefix: '+61 ',\n },\n AW: {\n mask: '### ####',\n prefix: '+297 ',\n },\n AX: {\n mask: '### #######',\n prefix: '+358 ',\n },\n AZ: {\n mask: '### ### ## ##',\n prefix: '+994 ',\n },\n BA: {\n mask: '### ### ###',\n prefix: '+387 ',\n },\n BB: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n BD: {\n mask: '#####-######',\n prefix: '+880 ',\n },\n BE: {\n mask: '#### ## ## ##',\n prefix: '+32 ',\n },\n BF: {\n mask: '## ## ## ##',\n prefix: '+226 ',\n },\n BG: {\n mask: '### ### ###',\n prefix: '+359 ',\n },\n BH: {\n mask: '#### ####',\n prefix: '+973 ',\n },\n BI: {\n mask: '## ## ## ##',\n prefix: '+257 ',\n },\n BJ: {\n mask: '## ## ## ## ##',\n prefix: '+229 ',\n },\n BL: {\n mask: '#### ## ## ##',\n prefix: '+590 ',\n },\n BM: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n BN: {\n mask: '### ####',\n prefix: '+673 ',\n },\n BO: {\n mask: '########',\n prefix: '+591 ',\n },\n BQ: {\n mask: '### ####',\n prefix: '+599 ',\n },\n BR: {\n mask: '(##) #####-####',\n prefix: '+55 ',\n },\n BS: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n BT: {\n mask: '## ## ## ##',\n prefix: '+975 ',\n },\n BW: {\n mask: '## ### ###',\n prefix: '+267 ',\n },\n BY: {\n mask: '# ### ###-##-##',\n prefix: '+375 ',\n },\n BZ: {\n mask: '###-####',\n prefix: '+501 ',\n },\n CA: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n CC: {\n mask: '#### ### ###',\n prefix: '+61 ',\n },\n CD: {\n mask: '#### ### ###',\n prefix: '+243 ',\n },\n CF: {\n mask: '## ## ## ##',\n prefix: '+236 ',\n },\n CG: {\n mask: '## ### ####',\n prefix: '+242 ',\n },\n CH: {\n mask: '### ### ## ##',\n prefix: '+41 ',\n },\n CI: {\n mask: '## ## ## ####',\n prefix: '+225 ',\n },\n CK: {\n mask: '## ###',\n prefix: '+682 ',\n },\n CL: {\n mask: '(#) #### ####',\n prefix: '+56 ',\n },\n CM: {\n mask: '# ## ## ## ##',\n prefix: '+237 ',\n },\n CN: {\n mask: '### #### ####',\n prefix: '+86 ',\n },\n CO: {\n mask: '### #######',\n prefix: '+57 ',\n },\n CR: {\n mask: '#### ####',\n prefix: '+506 ',\n },\n CU: {\n mask: '## #######',\n prefix: '+53 ',\n },\n CV: {\n mask: '### ## ##',\n prefix: '+238 ',\n },\n CW: {\n mask: '# ### ####',\n prefix: '+599 ',\n },\n CX: {\n mask: '#### ### ###',\n prefix: '+61 ',\n },\n CY: {\n mask: '## ######',\n prefix: '+357 ',\n },\n CZ: {\n mask: '### ### ###',\n prefix: '+420 ',\n },\n DE: {\n mask: '##### #######',\n prefix: '+49 ',\n },\n DJ: {\n mask: '## ## ## ##',\n prefix: '+253 ',\n },\n DK: {\n mask: '## ## ## ##',\n prefix: '+45 ',\n },\n DM: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n DO: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n DZ: {\n mask: '#### ## ## ##',\n prefix: '+213 ',\n },\n EC: {\n mask: '### ### ####',\n prefix: '+593 ',\n },\n EE: {\n mask: '#### ####',\n prefix: '+372 ',\n },\n EG: {\n mask: '### ########',\n prefix: '+20 ',\n },\n EH: {\n mask: '## ## ## ## ##',\n prefix: '+212 ',\n },\n ER: {\n mask: '## ### ###',\n prefix: '+291 ',\n },\n ES: {\n mask: '### ## ## ##',\n prefix: '+34 ',\n },\n ET: {\n mask: '### ### ####',\n prefix: '+251 ',\n },\n FI: {\n mask: '### #######',\n prefix: '+358 ',\n },\n FJ: {\n mask: '### ####',\n prefix: '+679 ',\n },\n FK: {\n mask: '#####',\n prefix: '+500 ',\n },\n FM: {\n mask: '### ####',\n prefix: '+691 ',\n },\n FO: {\n mask: '######',\n prefix: '+298 ',\n },\n FR: {\n mask: '## ## ## ## ##',\n prefix: '+33 ',\n },\n GA: {\n mask: '## ## ## ##',\n prefix: '+241 ',\n },\n GB: {\n mask: '##### ######',\n prefix: '+44 ',\n },\n GD: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n GE: {\n mask: '### ### ## ##',\n prefix: '+995 ',\n },\n GF: {\n mask: '#### ## ## ##',\n prefix: '+594 ',\n },\n GG: {\n mask: '##### ######',\n prefix: '+44 ',\n },\n GH: {\n mask: '### ### ####',\n prefix: '+233 ',\n },\n GI: {\n mask: '########',\n prefix: '+350 ',\n },\n GL: {\n mask: '## ## ##',\n prefix: '+299 ',\n },\n GM: {\n mask: '### ####',\n prefix: '+220 ',\n },\n GN: {\n mask: '### ## ## ##',\n prefix: '+224 ',\n },\n GP: {\n mask: '#### ## ## ##',\n prefix: '+590 ',\n },\n GQ: {\n mask: '### ### ###',\n prefix: '+240 ',\n },\n GR: {\n mask: '### ### ####',\n prefix: '+30 ',\n },\n GT: {\n mask: '#### ####',\n prefix: '+502 ',\n },\n GU: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n GW: {\n mask: '### ### ###',\n prefix: '+245 ',\n },\n GY: {\n mask: '### ####',\n prefix: '+592 ',\n },\n HK: {\n mask: '#### ####',\n prefix: '+852 ',\n },\n HN: {\n mask: '####-####',\n prefix: '+504 ',\n },\n HR: {\n mask: '### ### ####',\n prefix: '+385 ',\n },\n HT: {\n mask: '## ## ####',\n prefix: '+509 ',\n },\n HU: {\n mask: '## ## ### ####',\n prefix: '+36 ',\n },\n ID: {\n mask: '####-###-###',\n prefix: '+62 ',\n },\n IE: {\n mask: '### ### ####',\n prefix: '+353 ',\n },\n IL: {\n mask: '###-###-####',\n prefix: '+972 ',\n },\n IM: {\n mask: '##### ######',\n prefix: '+44 ',\n },\n IN: {\n mask: '###### #####',\n prefix: '+91 ',\n },\n IO: {\n mask: '### ####',\n prefix: '+246 ',\n },\n IQ: {\n mask: '#### ### ####',\n prefix: '+964 ',\n },\n IR: {\n mask: '#### ### ####',\n prefix: '+98 ',\n },\n IS: {\n mask: '### ####',\n prefix: '+354 ',\n },\n IT: {\n mask: '### ### ####',\n prefix: '+39 ',\n },\n JE: {\n mask: '##### ######',\n prefix: '+44 ',\n },\n JM: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n JO: {\n mask: '## #### ####',\n prefix: '+962 ',\n },\n JP: {\n mask: '###-####-####',\n prefix: '+81 ',\n },\n KE: {\n mask: '#### ######',\n prefix: '+254 ',\n },\n KG: {\n mask: '#### ### ###',\n prefix: '+996 ',\n },\n KH: {\n mask: '### ### ###',\n prefix: '+855 ',\n },\n KI: {\n mask: '########',\n prefix: '+686 ',\n },\n KM: {\n mask: '### ## ##',\n prefix: '+269 ',\n },\n KN: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n KP: {\n mask: '#### ### ####',\n prefix: '+850 ',\n },\n KR: {\n mask: '###-####-####',\n prefix: '+82 ',\n },\n KW: {\n mask: '### #####',\n prefix: '+965 ',\n },\n KY: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n KZ: {\n mask: '# (###) ### ####',\n prefix: '+7 ',\n },\n LA: {\n mask: '### ## ### ###',\n prefix: '+856 ',\n },\n LB: {\n mask: '## ### ###',\n prefix: '+961 ',\n },\n LC: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n LI: {\n mask: '### ### ###',\n prefix: '+423 ',\n },\n LK: {\n mask: '### ### ####',\n prefix: '+94 ',\n },\n LR: {\n mask: '### ### ####',\n prefix: '+231 ',\n },\n LS: {\n mask: '#### ####',\n prefix: '+266 ',\n },\n LT: {\n mask: '(#-###) #####',\n prefix: '+370 ',\n },\n LU: {\n mask: '### ### ###',\n prefix: '+352 ',\n },\n LV: {\n mask: '## ### ###',\n prefix: '+371 ',\n },\n LY: {\n mask: '###-#######',\n prefix: '+218 ',\n },\n MA: {\n mask: '## ## ## ## ##',\n prefix: '+212 ',\n },\n MC: {\n mask: '## ## ## ## ##',\n prefix: '+377 ',\n },\n MD: {\n mask: '#### ## ###',\n prefix: '+373 ',\n },\n ME: {\n mask: '### ### ###',\n prefix: '+382 ',\n },\n MF: {\n mask: '#### ## ## ##',\n prefix: '+590 ',\n },\n MG: {\n mask: '### ## ### ##',\n prefix: '+261 ',\n },\n MH: {\n mask: '###-####',\n prefix: '+692 ',\n },\n MK: {\n mask: '### ### ###',\n prefix: '+389 ',\n },\n ML: {\n mask: '## ## ## ##',\n prefix: '+223 ',\n },\n MM: {\n mask: '## ### ####',\n prefix: '+95 ',\n },\n MN: {\n mask: '#### ####',\n prefix: '+976 ',\n },\n MO: {\n mask: '#### ####',\n prefix: '+853 ',\n },\n MP: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n MQ: {\n mask: '#### ## ## ##',\n prefix: '+596 ',\n },\n MR: {\n mask: '## ## ## ##',\n prefix: '+222 ',\n },\n MS: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n MT: {\n mask: '#### ####',\n prefix: '+356 ',\n },\n MU: {\n mask: '#### ####',\n prefix: '+230 ',\n },\n MV: {\n mask: '###-####',\n prefix: '+960 ',\n },\n MW: {\n mask: '#### ## ## ##',\n prefix: '+265 ',\n },\n MX: {\n mask: '### ### ####',\n prefix: '+52 ',\n },\n MY: {\n mask: '###-### ####',\n prefix: '+60 ',\n },\n MZ: {\n mask: '## ### ####',\n prefix: '+258 ',\n },\n NA: {\n mask: '### ### ####',\n prefix: '+264 ',\n },\n NC: {\n mask: '##.##.##',\n prefix: '+687 ',\n },\n NE: {\n mask: '## ## ## ##',\n prefix: '+227 ',\n },\n NF: {\n mask: '# #####',\n prefix: '+672 ',\n },\n NG: {\n mask: '#### ### ####',\n prefix: '+234 ',\n },\n NI: {\n mask: '#### ####',\n prefix: '+505 ',\n },\n NL: {\n mask: '## ########',\n prefix: '+31 ',\n },\n NO: {\n mask: '## ## ## ##',\n prefix: '+47 ',\n },\n NP: {\n mask: '###-#######',\n prefix: '+977 ',\n },\n NR: {\n mask: '### ####',\n prefix: '+674 ',\n },\n NU: {\n mask: '### ####',\n prefix: '+683 ',\n },\n NZ: {\n mask: '### ### ####',\n prefix: '+64 ',\n },\n OM: {\n mask: '#### ####',\n prefix: '+968 ',\n },\n PA: {\n mask: '####-####',\n prefix: '+507 ',\n },\n PE: {\n mask: '### ### ###',\n prefix: '+51 ',\n },\n PF: {\n mask: '## ## ## ##',\n prefix: '+689 ',\n },\n PG: {\n mask: '#### ####',\n prefix: '+675 ',\n },\n PH: {\n mask: '#### ### ####',\n prefix: '+63 ',\n },\n PK: {\n mask: '#### #######',\n prefix: '+92 ',\n },\n PL: {\n mask: '### ### ###',\n prefix: '+48 ',\n },\n PM: {\n mask: '### ## ##',\n prefix: '+508 ',\n },\n PR: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n PS: {\n mask: '#### ### ###',\n prefix: '+970 ',\n },\n PT: {\n mask: '### ### ###',\n prefix: '+351 ',\n },\n PW: {\n mask: '### ####',\n prefix: '+680 ',\n },\n PY: {\n mask: '#### ######',\n prefix: '+595 ',\n },\n QA: {\n mask: '#### ####',\n prefix: '+974 ',\n },\n RE: {\n mask: '#### ## ## ##',\n prefix: '+262 ',\n },\n RO: {\n mask: '#### ### ###',\n prefix: '+40 ',\n },\n RS: {\n mask: '### #######',\n prefix: '+381 ',\n },\n RU: {\n mask: '# (###) ###-##-##',\n prefix: '+7 ',\n },\n RW: {\n mask: '#### ### ###',\n prefix: '+250 ',\n },\n SA: {\n mask: '### ### ####',\n prefix: '+966 ',\n },\n SB: {\n mask: '## #####',\n prefix: '+677 ',\n },\n SC: {\n mask: '# ### ###',\n prefix: '+248 ',\n },\n SD: {\n mask: '### ### ####',\n prefix: '+249 ',\n },\n SE: {\n mask: '###-### ## ##',\n prefix: '+46 ',\n },\n SG: {\n mask: '#### ####',\n prefix: '+65 ',\n },\n SH: {\n mask: '#####',\n prefix: '+290 ',\n },\n SI: {\n mask: '### ### ###',\n prefix: '+386 ',\n },\n SJ: {\n mask: '## ## ## ##',\n prefix: '+47 ',\n },\n SK: {\n mask: '#### ### ###',\n prefix: '+421 ',\n },\n SL: {\n mask: '(###) ######',\n prefix: '+232 ',\n },\n SM: {\n mask: '#### ######',\n prefix: '+378 ',\n },\n SN: {\n mask: '## ### ## ##',\n prefix: '+221 ',\n },\n SO: {\n mask: '# #######',\n prefix: '+252 ',\n },\n SR: {\n mask: '###-####',\n prefix: '+597 ',\n },\n SS: {\n mask: '#### ### ###',\n prefix: '+211 ',\n },\n ST: {\n mask: '### ####',\n prefix: '+239 ',\n },\n SV: {\n mask: '#### ####',\n prefix: '+503 ',\n },\n SX: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n SY: {\n mask: '#### ### ###',\n prefix: '+963 ',\n },\n SZ: {\n mask: '#### ####',\n prefix: '+268 ',\n },\n TA: {\n mask: '####',\n prefix: '+290 ',\n },\n TC: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n TD: {\n mask: '## ## ## ##',\n prefix: '+235 ',\n },\n TG: {\n mask: '## ## ## ##',\n prefix: '+228 ',\n },\n TH: {\n mask: '### ### ####',\n prefix: '+66 ',\n },\n TJ: {\n mask: '## ### ####',\n prefix: '+992 ',\n },\n TK: {\n mask: '####',\n prefix: '+690 ',\n },\n TL: {\n mask: '#### ####',\n prefix: '+670 ',\n },\n TM: {\n mask: '# ## ######',\n prefix: '+993 ',\n },\n TN: {\n mask: '## ### ###',\n prefix: '+216 ',\n },\n TO: {\n mask: '### ####',\n prefix: '+676 ',\n },\n TR: {\n mask: '#### ### ## ##',\n prefix: '+90 ',\n },\n TT: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n TV: {\n mask: '## ####',\n prefix: '+688 ',\n },\n TW: {\n mask: '#### ### ###',\n prefix: '+886 ',\n },\n TZ: {\n mask: '#### ### ###',\n prefix: '+255 ',\n },\n UA: {\n mask: '### ### ####',\n prefix: '+380 ',\n },\n UG: {\n mask: '#### ######',\n prefix: '+256 ',\n },\n US: {\n mask: '(###) ###-####',\n prefix: '',\n },\n UY: {\n mask: '### ### ###',\n prefix: '+598 ',\n },\n UZ: {\n mask: '## ### ## ##',\n prefix: '+998 ',\n },\n VA: {\n mask: '### ### ####',\n prefix: '+39 ',\n },\n VC: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n VE: {\n mask: '####-#######',\n prefix: '+58 ',\n },\n VG: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n VI: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n VN: {\n mask: '#### #### ###',\n prefix: '+84 ',\n },\n VU: {\n mask: '### ####',\n prefix: '+678 ',\n },\n WF: {\n mask: '## ## ##',\n prefix: '+681 ',\n },\n WS: {\n mask: '## #####',\n prefix: '+685 ',\n },\n XK: {\n mask: '### ### ###',\n prefix: '+383 ',\n },\n YE: {\n mask: '#### ### ###',\n prefix: '+967 ',\n },\n YT: {\n mask: '#### ## ## ##',\n prefix: '+262 ',\n },\n ZA: {\n mask: '### ### ####',\n prefix: '+27 ',\n },\n ZM: {\n mask: '### #######',\n prefix: '+260 ',\n },\n ZW: {\n mask: '### ### ####',\n prefix: '+263 ',\n },\n};\n","import { IFormatterValueObject } from '../q2-input-types';\nimport formatValue from './generic';\nimport { phoneNumberFormats } from './phone-number-formats';\n\nexport default function formatPhoneNumber(value: string, isoCode: string = 'US'): IFormatterValueObject {\n const { mask, prefix } = phoneNumberFormats[isoCode] || phoneNumberFormats.US;\n\n const options = {\n prefix,\n };\n\n const val = value || '';\n // Brazil need edge case handle, mobile: (xx) xxxxx-xxxx, land phone: (xx) xxxx-xxxx\n if (isoCode === 'BR' && val.replace(/[^0-9]/g, '').length === 11) {\n return formatValue(val, '(##) #####-####', options);\n } else {\n return formatValue(val, mask, options);\n }\n}\n","import formatValue from './generic';\n\nexport default function formatSSN(value: string) {\n return formatValue(value, '###-##-####');\n}\n","import formatValue from './generic';\n\nexport default function formatTIN(value: string) {\n return formatValue(value, '##-#######');\n}\n","import formatValue from './generic';\n\nexport default function formatAlphanumeric(value: string) {\n const val = (value || '').replace(/[^\\da-zA-Z]/g, '');\n return formatValue(val);\n}\n","import formatValue from './generic';\n\nexport default function formatAlpha(value: string, modifier?: string) {\n let val = value || '';\n\n if (modifier === 'spaced') {\n val = val.replace(/[^a-zA-Z ]/g, '');\n } else {\n val = val.replace(/[^a-zA-Z]/g, '');\n }\n\n return formatValue(val);\n}\n","import formatNumber from './number';\nimport formatValue from './generic';\nimport { INumberInputFormatOptions } from '../q2-input-types';\n\nfunction getNumberFormat(formatOptions: string): INumberInputFormatOptions | undefined {\n const numberFormat: INumberInputFormatOptions = {\n prefix: '',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: '',\n allowDecimal: false,\n allowNegative: true,\n };\n const formatParts = formatOptions.split('-');\n\n // handle deprecated formats\n if (formatParts[0] === 'delimited') {\n // `delimited` - to be replaced by `integer-delimited`\n numberFormat.thousandsSeparator = ',';\n } else if (formatParts[0].match(/^[0-9]+dec$/)) {\n // `Ndec` - to be replaced by `Ndecimal`\n numberFormat.decimals = Number(formatParts[0].replace('dec', ''));\n numberFormat.allowDecimal = true;\n numberFormat.thousandsSeparator = ',';\n } else {\n // determine number type\n if (formatParts[0].includes('decimal')) {\n numberFormat.decimals = Number(formatParts[0].replace('decimal', ''));\n numberFormat.allowDecimal = true;\n } else if (formatParts[0] !== 'integer') {\n // Ignore any formats that don't start with Ndecimal or integer\n return;\n }\n\n // determine if negative numbers are allowed\n if (formatParts.includes('positive')) {\n numberFormat.allowNegative = false;\n }\n\n // determine if number is delimited\n if (formatParts.includes('delimited')) {\n numberFormat.thousandsSeparator = ',';\n }\n }\n\n return numberFormat;\n}\n\nfunction formatNumeric(value: string = '', modifier: string = '', explicit: boolean = false) {\n const numberFormat = getNumberFormat(modifier);\n\n if (!numberFormat) {\n const val = (value || '').replace(/[^\\d.,-]/g, '');\n return formatValue(val);\n }\n\n return formatNumber(value, numberFormat, explicit);\n}\n\nexport function formatPercentage(value: string = '', modifier: string = '', explicit: boolean = false) {\n const numberFormat = getNumberFormat(modifier);\n\n if (!numberFormat) {\n const val = (value || '').replace(/[^\\d.,-]/g, '');\n return formatValue(val, undefined, { suffix: '%' });\n }\n\n numberFormat.suffix = '%';\n\n return formatNumber(value, numberFormat, explicit);\n}\n\nexport default formatNumeric;\n","import formatValue from './generic';\nimport formatAlphanumeric from './alphanumeric';\n\nexport const postalCodeFormats = {\n AF: '####',\n AL: '####',\n DZ: '#####',\n AC: 'ASCN 1ZZ',\n AD: 'AD###', // pre\n AR: '####',\n 'AR+': '@####@@@',\n AI: 'AI-2640',\n AM: '####',\n AS: '#####',\n 'AS+4': '#####-####',\n AU: '####',\n AT: '####',\n AZ: 'AZ ####', // pre\n BH: '###?',\n BD: '####',\n BB: 'BB#####', // pre\n BY: '######',\n BE: '####',\n BM: '@@ **',\n BT: '#####',\n BA: '######',\n BR: '#####',\n 'BR+3': '#####-###',\n VG: 'VG####', // pre\n BN: '@@####',\n BG: '####',\n KH: '#####',\n KY: 'KY#-####', // pre\n CA: '@#@ #@#',\n CL: '###-####',\n CN: '######',\n CX: '####',\n CC: '####',\n CO: '######',\n CR: '#####',\n 'CR+4': '#####-####',\n CV: '####',\n HR: '#####',\n CU: '#####',\n CY: '####',\n CZ: '### ##',\n DK: '####',\n DO: '#####',\n EC: '######',\n SV: '####',\n EG: '#####',\n EE: '#####',\n ET: '####',\n FK: 'FIQQ 1ZZ',\n FO: '###',\n FI: '#####',\n FR: '#####',\n GF: '973##', // pre?\n PF: '987##', // pre?\n GI: 'GX11 1AA',\n GE: '####',\n DE: '#####',\n GR: '### ##',\n GL: '####',\n GP: '971##', // pre?\n GU: '#####',\n 'GU+4': '#####-####',\n GT: '#####',\n GG: 'GY#? #@@',\n GN: '###',\n GS: 'SIQQ 1ZZ',\n GW: '####',\n HT: '####',\n HN: '@@####',\n 'HN-': '#####',\n HU: '####',\n IS: '###',\n IN: '### ###',\n ID: '#####',\n IE: '*** ****',\n IR: '##########',\n IQ: '#####',\n IM: 'IM#? #@@', // pre\n IL: '#######',\n IT: '#####',\n JM: '##',\n JP: '###-####',\n JE: 'JE#? #@@', // pre\n JO: '#####',\n KZ: '######',\n KE: '#####',\n KR: '#####',\n KN: 'KN####',\n XK: '#####',\n KW: '#####',\n KG: '######',\n LA: '#####',\n LV: 'LV-####', // pre\n LB: '####? ????', // also 00000\n LS: '###',\n LR: '####',\n LI: '####',\n LT: '#####', // pre-\n LU: '####',\n MK: '####',\n MG: '###',\n MY: '#####',\n MV: '#####',\n MT: '@@@ ####',\n MH: '#####',\n 'MH+4': '#####-####',\n MU: '#####',\n MQ: '972##', // pre?\n MW: '######',\n YT: '976##', // pre?\n MX: '#####',\n FM: '#####',\n 'FM+4': '#####-####',\n MD: '####', // pre\n MC: '980##', // pre?\n MN: '#####',\n ME: '#####',\n MA: '#####',\n MZ: '####',\n MM: '#####',\n NA: '#####',\n NP: '#####',\n NC: '988##', // pre?\n NZ: '####',\n NI: '#####',\n NE: '####',\n NG: '######',\n NF: '####',\n MP: '#####',\n NO: '####',\n OM: '###',\n PK: '#####',\n PW: '#####',\n 'PW+4': '#####-####',\n PS: '###',\n PA: '####',\n PG: '###',\n PY: '####',\n PE: '#####',\n 'PE+': '####', // pre\n PH: '####',\n PL: '##-###',\n PT: '####',\n 'PT+3': '####-###',\n PR: '#####',\n 'PR+4': '#####-####',\n RE: '974##', // pre?\n PM: '975##',\n PN: 'PCRN 1ZZ',\n RO: '######',\n RU: '######',\n LC: 'LC## ###', // pre\n VC: '####', // pre\n WS: '####', // pre\n SM: '4879#', // pre?\n SA: '#####',\n 'SA+4': '#####-####',\n SN: '#####',\n RS: '#####',\n SG: '######',\n SH: '@@@@ 1ZZ',\n SK: '### ##',\n SI: '####', // pre?\n SO: '@@ #####',\n ZA: '####',\n ES: '#####',\n LK: '#####',\n SD: '#####',\n SZ: '@###',\n SE: '### ##',\n CH: '####',\n SJ: '####',\n TW: '###',\n 'TW+2': '###-##?',\n TJ: '######',\n TZ: '#####',\n TH: '#####',\n TT: '######',\n TN: '####',\n TR: '#####',\n TM: '######',\n UA: '#####',\n UY: '#####',\n VI: '#####',\n 'VI+4': '#####-####',\n UZ: '######',\n VE: '####',\n 'VE-': '####-@',\n VN: '#####?',\n YU: '#####',\n WF: '986##', // pre?\n ZM: '#####',\n US: '#####',\n 'US+4': '#####-####',\n};\nexport default function formatPostalCode(value: string, modifier: string = 'US') {\n const mask = postalCodeFormats[modifier];\n\n if (!mask) {\n return formatAlphanumeric(value);\n }\n\n return formatValue(value, mask);\n}\n","import formatValue from './generic';\n\nexport const dateFormats = {\n 'MM/DD/YYYY': '##/##/####',\n 'M/D/YYYY': '#?/#?/####',\n 'MM/DD/YY': '##/##/##',\n 'M/D/YY': '#?/#?/##',\n 'MM/YY': '##/##',\n 'M/YY': '#?/##',\n 'DD/MM/YYYY': '##/##/####',\n 'D/M/YYYY': '#?/#?/####',\n 'DD/MM/YY': '##/##/##',\n 'D/M/YY': '#?/#?/##',\n 'MM-DD-YYYY': '##-##-####',\n 'M-D-YYYY': '#?-#?-####',\n 'MM-DD-YY': '##-##-##',\n 'M-D-YY': '#?-#?-##',\n 'MM-YY': '##-##',\n 'M-YY': '#?-##',\n 'DD-MM-YYYY': '##-##-####',\n 'D-M-YYYY': '#?-#?-####',\n 'DD-MM-YY': '##-##-##',\n 'D-M-YY': '#?-#?-##',\n};\n\nexport default function formatDate(value: string, format: string = 'MM/DD/YYYY') {\n const mask = dateFormats[format?.toUpperCase()] || dateFormats['MM/DD/YYYY'];\n\n const formattedValueObject = formatValue(value, mask);\n\n return {\n ...formattedValueObject,\n value: formattedValueObject.formattedValue,\n };\n}\n","import formatValue from './generic';\nimport { IFormatterValueObject } from '../q2-input-types';\n\ninterface FormattedCreditCardObject extends IFormatterValueObject {\n type: string;\n leftIcon: string;\n leftIconMuted: boolean;\n}\n\ntype Formatter = (value: string) => FormattedCreditCardObject;\n\nfunction format(value: string): FormattedCreditCardObject {\n // have a initial generic mask which then converts to specific mask\n const detectedType = formatCreditCard.detectCreditCardTypeFromValue(value);\n const formattedValueObject = creditCardFormatters[detectedType](value);\n\n if (value.length < 2 && detectedType === 'unknown') {\n formattedValueObject.leftIcon = 'card';\n }\n return formattedValueObject;\n}\n\nconst unknownFormatter: Formatter = function unknownFn(value) {\n const valueObject = formatValue(value, '#### #### #### ####');\n\n return {\n ...valueObject,\n type: 'unknown',\n leftIcon: 'card-unknown',\n leftIconMuted: value.length < 16,\n };\n};\n\nconst amexFormatter: Formatter = function amexFn(value) {\n const valueObject = formatValue(value, '#### ###### #####');\n\n return {\n ...valueObject,\n type: 'amex',\n leftIcon: 'card-amex-color',\n leftIconMuted: value.length < 15,\n };\n};\n\nconst discoverFormatter: Formatter = function discoverFn(value) {\n const valueObject = formatValue(value, '#### #### #### ####');\n\n return {\n ...valueObject,\n type: 'discover',\n leftIcon: 'card-discover-color',\n leftIconMuted: value.length < 16,\n };\n};\n\nconst masterCardFormatter: Formatter = function masterCardFn(value) {\n const valueObject = formatValue(value, '#### #### #### ####');\n\n return {\n ...valueObject,\n type: 'masterCard',\n leftIcon: 'card-mastercard-color',\n leftIconMuted: value.length < 16,\n };\n};\n\nconst visaFormatter: Formatter = function visaFn(value) {\n const valueObject = formatValue(value, '#### #### #### ####');\n\n return {\n ...valueObject,\n type: 'visa',\n leftIcon: 'card-visa-color',\n leftIconMuted: value.length < 16,\n };\n};\n\nconst dinersClubInternationalFormatter: Formatter = function dinersClub(value) {\n const valueObject = formatValue(value, '#### ###### ####');\n\n return {\n ...valueObject,\n type: 'dinersClub',\n leftIcon: 'card-dinersclub-color',\n leftIconMuted: value.length < 14,\n };\n};\n\nconst creditCardFormatters = {\n discover: discoverFormatter,\n amex: amexFormatter,\n masterCard: masterCardFormatter,\n visa: visaFormatter,\n dinersClub: dinersClubInternationalFormatter,\n unknown: unknownFormatter,\n};\n\n/* tslint:disable:cyclomatic-complexity */\nfunction detectCreditCardTypeFromValue(value: string): string {\n // use value and some algorithm from the internet to detect and return card type based on string\n // return string 'unknown' if algorithm cannot detect or returns a type that is not one of our 5 supported types\n const firstInt = parseInt(value.charAt(0));\n const secondInt = parseInt(value.charAt(1));\n\n switch (firstInt) {\n case 2:\n if (secondInt > 1 && secondInt < 8) {\n if (value.length >= 4) {\n const firstfour = parseInt(value.substr(0, 4));\n if (firstfour >= 2221 && firstfour < 2721) {\n return 'masterCard';\n }\n } else {\n return 'masterCard';\n }\n }\n break;\n case 3:\n if (secondInt === 4 || secondInt === 7) {\n return 'amex';\n }\n if (secondInt === 0) {\n if (value.length > 2) {\n const thirdInt = parseInt(value.charAt(2));\n if (thirdInt < 6 || thirdInt === 9) {\n return 'dinersClub';\n }\n } else {\n return 'dinersClub';\n }\n }\n if (secondInt === 6 || secondInt === 8 || secondInt === 9) {\n return 'dinersClub';\n }\n break;\n case 4:\n return 'visa';\n case 5:\n if (secondInt > 0 && secondInt < 6) {\n return 'masterCard';\n }\n break;\n case 6:\n if (secondInt === 0) {\n if (value.length > 3) {\n const firstfour = value.substr(0, 4);\n if (firstfour === '6011') {\n return 'discover';\n }\n } else {\n return 'discover';\n }\n }\n if (secondInt === 4) {\n if (value.length > 2) {\n const firstthree = parseInt(value.substr(0, 3));\n if (firstthree > 643) {\n return 'discover';\n }\n } else {\n return 'discover';\n }\n }\n if (secondInt === 5) {\n return 'discover';\n }\n if (secondInt === 2) {\n if (value.length > 5) {\n const firstsix = parseInt(value.substr(0, 6));\n if (firstsix >= 622126 && firstsix <= 622925) {\n return 'discover';\n }\n } else {\n return 'discover';\n }\n }\n break;\n default:\n return 'unknown';\n }\n return 'unknown';\n}\n/* tslint:enable:cyclomatic-complexity */\n\nconst formatCreditCard = {\n detectCreditCardTypeFromValue,\n format,\n amexFormatter,\n dinersClubInternationalFormatter,\n discoverFormatter,\n masterCardFormatter,\n visaFormatter,\n unknownFormatter,\n};\n\nexport default formatCreditCard;\n","import formatValue from './generic';\n\nexport default function formatCIF(value: string) {\n return formatValue(value, '###########');\n}\n","import formatValue from './generic';\n\nexport default function formatRoutingNumber(value: string) {\n return formatValue(value, '#########');\n}\n","import formatValue from './generic';\n\nexport default function formatSwift(value: string) {\n return formatValue(value, '***********');\n}\n","import formatValue from './generic';\n\nexport default function formatIBAN(value: string) {\n return formatValue(value, '**********************************');\n}\n","import formatValue from './generic';\n\nexport default function formatCLABE(value: string) {\n return formatValue(value, '##################');\n}\n","@import '../../styles/host';\n@import '../../styles/functions';\n\n:host {\n --comp-default-input-margin: #{var-list(var-prefixer(input-margin-top), --app-scale-5x, 25px) 0\n var-list(var-prefixer(input-margin-bottom), --app-scale-5x, 25px)};\n display: block;\n margin: var-list(--tct-input-margin, --comp-default-input-margin);\n font-size: var-list(var-prefixer(input-font-size), --app-font-size, inherit);\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.field-container,\n.input-container {\n position: relative;\n}\n.field-container {\n --comp-input-tween: #{var-list(var-prefixer(input-tween), --tct-tween-2, --app-tween-2, unquote('0.4s ease'))};\n\n &.is-small {\n .btn-clear {\n --tct-btn-icon-width: 20px;\n --tct-icon-size: 17px;\n }\n }\n}\n\n.input-label {\n --comp-label-padding: #{var-list(\n --tct-input-label-padding,\n unquote(\n '0 #{var-list(var-prefixer(input-label-padding-right), 0)} 0 #{var-list(var-prefixer(input-label-padding-left), 0)}'\n )\n )};\n display: block;\n padding: var(--comp-label-padding);\n color: var-list(var-prefixer(input-label-font-color), inherit);\n font-size: var-list(var-prefixer(input-label-font-size), inherit);\n font-weight: var-list(var-prefixer(input-label-font-weight), 600);\n text-transform: var-list(var-prefixer(input-label-text-transform), none);\n letter-spacing: var-list(var-prefixer(input-label-letter-spacing), inherit);\n transition: color var(--comp-input-tween);\n}\n\n.optional-tag {\n --comp-label-optional-margin: #{var-list(\n --tct-input-label-optional-margin,\n unquote(\n '0 0 0 #{var-list(var-prefixer(input-label-optional-margin-left), --tct-scale-1, --app-scale-1x, 5px)}'\n )\n )};\n margin: var(--comp-label-optional-margin);\n color: var-list(\n var-prefixer(input-label-optional-font-color),\n --t-textA,\n --t-a11y-gray-color,\n rgba(77, 77, 77, 0.77)\n );\n font-size: var-list(var-prefixer(input-label-optional-font-size), --app-font-size-small, 12px);\n font-weight: var-list(var-prefixer(input-label-optional-font-weight), 400);\n line-height: 1em;\n}\n\n.count-tag {\n color: var-list(--tct-input-count-font-color, --t-textA, --t-a11y-gray-color, rgba(77, 77, 77, 0.77));\n font-size: var-list(--tct-input-count-font-size, --app-font-size-small, 12px);\n font-weight: var-list(--tct-input-count-font-weight, 400);\n text-align: right;\n width: var(--tct-input-count-width, auto);\n}\n\n.label-wrapper {\n --comp-label-margin: #{var-list(\n --tct-input-label-margin,\n unquote(\n '#{var-list(var-prefixer(input-label-margin-top), 0)} 0 #{var-list(var-prefixer(input-label-margin-bottom), --tct-scale-1, --app-scale-1x, 5px)}'\n )\n )};\n display: flex;\n gap: var-list(--tct-input-label-gap, --app-scale-2x, 10px);\n justify-content: space-between;\n align-items: end;\n margin: var(--comp-label-margin);\n line-height: var-list(var-prefixer(input-label-line-height), inherit);\n\n &:has(label.sr) {\n margin: 0;\n }\n}\n\n.input-container {\n --comp-input-background: #{var-list(--tct-input-background, var-prefixer(input-bg), --t-gray-14, #fcfcfd)};\n --comp-input-backdrop-filter: #{var-list(--tct-input-backdrop-filter, none)};\n --comp-input-horizontal-gap: #{var-list(var-prefixer(input-horizontal-gap), 0)};\n --comp-input-border-top-left-radius: #{var-list(\n var-prefixer(input-border-top-left-radius),\n --tct-border-radius-1,\n --app-border-radius-1,\n 4px\n )};\n --comp-input-border-top-right-radius: #{var-list(\n var-prefixer(input-border-top-right-radius),\n --tct-border-radius-1,\n --app-border-radius-1,\n 4px\n )};\n --comp-input-border-bottom-right-radius: #{var-list(\n var-prefixer(input-border-bottom-right-radius),\n --tct-border-radius-1,\n --app-border-radius-1,\n 4px\n )};\n --comp-input-border-bottom-left-radius: #{var-list(\n var-prefixer(input-border-bottom-left-radius),\n --tct-border-radius-1,\n --app-border-radius-1,\n 4px\n )};\n --comp-calc-input-border-top-left-radius: calc(\n var(--comp-input-border-top-left-radius) - #{var-list(var-prefixer(input-border-top-width), 1px)} - #{var-list(\n var-prefixer(input-border-left-width),\n 1px\n )}\n );\n --comp-calc-input-border-top-right-radius: calc(\n var(--comp-input-border-top-right-radius) - #{var-list(var-prefixer(input-border-top-width), 1px)} - #{var-list(\n var-prefixer(input-border-right-width),\n 1px\n )}\n );\n --comp-calc-input-border-bottom-left-radius: calc(\n var(--comp-input-border-bottom-left-radius) - #{var-list(var-prefixer(input-border-bottom-width), 1px)} - #{var-list(\n var-prefixer(input-border-left-width),\n 1px\n )}\n );\n --comp-calc-input-border-bottom-right-radius: calc(\n var(--comp-input-border-bottom-right-radius) - #{var-list(var-prefixer(input-border-bottom-width), 1px)} - #{var-list(\n var-prefixer(input-border-right-width),\n 1px\n )}\n );\n --comp-input-border-radius: var(--comp-input-border-top-left-radius) var(--comp-input-border-top-right-radius)\n var(--comp-input-border-bottom-right-radius) var(--comp-input-border-bottom-left-radius);\n --comp-input-border-width: var(--tct-input-border-top-width, 1px) var(--tct-input-border-right-width, 1px)\n var(--tct-input-border-bottom-width, 1px) var(--tct-input-border-left-width, 1px);\n --comp-input-border-color: #{var-list(var-prefixer(input-border-color), --t-a11y-gray-color-AA, #404040)};\n --comp-input-prefix-clearance: calc(3 * var(--tct-input-prefix-font-size, 14px) + var(--tct-scale-1, 5px));\n --comp-input-icon-clearance: 34px;\n --comp-input-min-height: #{var-list(var-prefixer(input-min-height), 44px)};\n --comp-input-max-height: #{var-list(var-prefixer(input-max-height))};\n\n --comp-input-hover-ring-color: #{var-list(var-prefixer(input-hover-ring-color))};\n --comp-input-hover-ring: #{0 0 0 2px var(--t-base), 0 0 0 4px var(--comp-input-hover-ring-color),\n var-list(var-prefixer(input-hover-box-shadow), unquote('0 0 transparent'))};\n\n background: var(--comp-input-background);\n backdrop-filter: var(--comp-input-backdrop-filter);\n display: flex;\n align-items: center;\n gap: var-list(--tct-input-container-gap, --app-scale-2x, 10px);\n padding-inline: var-list(--tct-input-container-padding-inline);\n border-width: var(--comp-input-border-width);\n border-style: solid;\n border-color: var(--comp-input-border-color);\n border-radius: var(--comp-input-border-radius);\n box-shadow: var-list(var-prefixer(input-box-shadow), none);\n transition:\n background var(--comp-input-tween),\n backdrop-filter var(--comp-input-tween),\n border-width var(--comp-input-tween),\n border-color var(--comp-input-tween),\n box-shadow var(--comp-input-tween);\n\n :host([disabled]:not([disabled='false'])) & {\n cursor: not-allowed;\n opacity: var-list(var-prefixer(input-disabled-opacity), --tct-disabled-opacity, --app-disabled-opacity, 0.4);\n backdrop-filter: var-list(--tct-input-disabled-backdrop-filter, --comp-input-backdrop-filter);\n }\n\n .has-error & {\n border-color: var-list(--tct-input-error-border-color, --const-stoplight-alert, #d20a0a);\n backdrop-filter: var-list(--tct-input-error-backdrop-filter, --comp-input-backdrop-filter);\n background: var-list(--tct-input-error-background, --comp-input-background);\n box-shadow: var-list(--tct-input-error-box-shadow, --comp-input-hover-ring);\n }\n\n &:hover {\n border-color: var-list(--tct-input-hover-border-color, --comp-input-border-color);\n background: var-list(--tct-input-hover-background, --comp-input-background);\n backdrop-filter: var-list(--tct-input-hover-backdrop-filter, --comp-input-backdrop-filter);\n box-shadow: var-list(--tct-input-hover-box-shadow, --comp-input-hover-ring);\n\n .has-error & {\n border-color: var-list(\n --tct-input-error-hover-border-color,\n --tct-input-error-border-color,\n --const-stoplight-alert,\n #d20a0a\n );\n backdrop-filter: var-list(\n --tct-input-error-hover-backdrop-filter,\n --tct-input-error-backdrop-filter,\n --tct-input-hover-backdrop-filter,\n --comp-input-backdrop-filter\n );\n background: var-list(\n --tct-input-error-hover-background,\n --tct-input-error-background,\n --comp-input-background\n );\n box-shadow: var-list(\n --tct-input-error-hover-box-shadow,\n --tct-input-error-box-shadow,\n --comp-input-hover-ring\n );\n }\n }\n\n .has-focus & {\n border-color: var-list(var-prefixer(input-focus-border-color), --comp-input-border-color);\n background: var-list(--tct-input-focus-background, --comp-input-background);\n backdrop-filter: var-list(--tct-input-focus-backdrop-filter, --comp-input-backdrop-filter);\n box-shadow: var-list(--tct-input-focus-box-shadow, --const-double-focus-ring);\n }\n\n .has-focus.has-error &,\n .has-focus.has-error &:hover {\n border-color: var-list(\n --tct-input-error-focus-border-color,\n --tct-input-error-border-color,\n --const-stoplight-alert,\n #d20a0a\n );\n backdrop-filter: var-list(\n --tct-input-error-focus-backdrop-filter,\n --tct-input-error-backdrop-filter,\n --tct-input-focus-backdrop-filter,\n --comp-input-backdrop-filter\n );\n background: var-list(--tct-input-error-focus-background, --tct-input-error-background, --comp-input-background);\n box-shadow: var-list(\n --tct-input-error-focus-box-shadow,\n --tct-input-error-box-shadow,\n --const-double-focus-ring\n );\n }\n\n &:has(.input-field:is(:-webkit-autofill, :autofill)) {\n background: var(--tct-input-autofill-background, #faffbc);\n color: var-list(--tct-input-autofill-font-color, --t-text, inherit);\n .input-field {\n box-shadow: 0 0 0 1000px var(--tct-input-autofill-background, #faffbc) inset;\n color: var-list(--tct-input-autofill-font-color, --t-text, inherit);\n -webkit-text-fill-color: var-list(--tct-input-autofill-font-color, --t-text, inherit);\n }\n }\n}\n\n.input-field {\n flex: 1;\n border: 0;\n -webkit-appearance: none;\n appearance: none;\n box-sizing: border-box;\n min-height: var(--comp-input-min-height);\n max-height: var(--comp-input-max-height);\n overflow-y: hidden;\n height: var-list(var-prefixer(input-height), 44px);\n width: 100%;\n padding: var(--tct-input-padding, 0);\n background: transparent;\n color: var-list(var-prefixer(input-font-color), --t-text, inherit);\n display: inline-block;\n text-align: var(--tct-input-align, 'start');\n font-weight: var-list(var-prefixer(input-font-weight), 400);\n letter-spacing: var-list(var-prefixer(input-letter-spacing), inherit);\n\n &:focus {\n outline: none;\n box-shadow: none;\n }\n /* To remove up/down arrow in number field for webkit based browser */\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n /* For Firefox */\n &[type='number'] {\n -moz-appearance: textfield;\n }\n\n &::-ms-reveal,\n &::-ms-clear {\n display: none;\n }\n\n &[type='search'] {\n &::-webkit-search-decoration,\n &::-webkit-search-cancel-button,\n &::-webkit-search-results-button,\n &::-webkit-search-results-decoration {\n display: none;\n }\n }\n\n &[disabled]:not([disabled='false']) {\n cursor: not-allowed;\n }\n\n .right-aligned & {\n text-align: right;\n }\n\n &:is(input) {\n flex: 1;\n }\n\n &:is(button) {\n display: inline-flex;\n align-items: center;\n\n .has-custom-display & {\n height: auto;\n padding: 0;\n }\n\n span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n }\n }\n}\n\n.custom-display-container {\n max-width: 100%;\n\n .has-custom-display & {\n --comp-default-padding: var(--app-scale-2x, 10px) var(--app-scale-2x, 10px) var(--app-scale-3x, 15px);\n padding: var-list(var-prefixer(input-padding), --comp-default-padding);\n width: 100%;\n }\n}\n\n.input-field::placeholder,\n.placeholder-text {\n color: var-list(var-prefixer(input-placeholder-font-color), --t-textA, --app-gray-d1, rgba(77, 77, 77, 0.77));\n}\n\n.pseudo-input-container {\n min-width: 0;\n flex: 1;\n}\n\n.input-icons-container-left,\n.input-icons-container-right {\n --tct-btn-icon-hover-background: var(--tct-input-btn-hover-background);\n --tct-btn-hover-background: var(--tct-input-btn-hover-background);\n\n q2-btn q2-icon,\n ::slotted(q2-btn) {\n --tct-icon-stroke-primary: var(--tct-input-btn-icon-stroke-primary);\n --tct-icon-stroke-secondary: var(--tct-input-btn-icon-stroke-secondary);\n }\n\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--comp-input-horizontal-gap);\n\n > div:not(.vertical-separator) {\n min-width: var-list(--tct-input-icon-container-icon-min-width, 44px);\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: var-list(--tct-input-icon-container-font-size, inherit);\n }\n\n &:empty {\n display: var(--tct-input-icon-container-empty-display, block);\n }\n}\n\n.input-icons-container-left {\n padding-left: var(--comp-input-horizontal-gap);\n q2-btn:first-child,\n ::slotted(q2-btn:first-child) {\n --tct-btn-icon-border-radius: var(--comp-calc-input-border-top-left-radius) 0 0\n var(--comp-calc-input-border-bottom-left-radius);\n }\n}\n\n.input-icons-container-right {\n padding-right: var(--comp-input-horizontal-gap);\n --comp-visibility-toggle-padding: 0px #{var-list(--app-scale-2x, 10px)};\n\n q2-btn:last-child,\n ::slotted(q2-btn:last-child) {\n --tct-btn-icon-border-radius: 0 var(--comp-calc-input-border-top-right-radius)\n var(--comp-calc-input-border-bottom-right-radius) 0;\n }\n\n .btn-visibility-toggle {\n --tct-btn-height: var(--comp-input-min-height);\n --tct-btn-padding-inline: #{var-list(--tct-input-visibility-toggle-padding, --app-scale-2x, 10px)};\n --tct-btn-font-weight: #{var-list(--tct-input-visibility-toggle-font-weight, 400)};\n\n color: var-list(--tct-input-visibility-toggle-font-color, --t-primary, #0079c1);\n font-size: var-list(--tct-input-visibility-toggle-font-size, --app-font-size-small, 12px);\n }\n}\n\nq2-icon {\n margin-top: calc(#{var-list(var-prefixer(input-border-top-width), 1px)} / 2);\n margin-bottom: calc(#{var-list(var-prefixer(input-border-bottom-width), 1px)} / 2);\n pointer-events: none;\n color: var-list(var-prefixer(input-icon-stroke-primary), --t-a11y-gray-color, --t-textA, --app-gray, #747474);\n --tct-icon-stroke-primary: #{var-list(\n var-prefixer(input-icon-stroke-primary),\n --t-a11y-gray-color,\n --t-textA,\n --app-gray,\n #747474\n )};\n --tct-icon-stroke-secondary: #{var-list(\n --tct-input-icon-stroke-secondary,\n --t-a11y-gray-color,\n --t-textA,\n --app-gray,\n #747474\n )};\n}\n\n.icon-left-muted {\n opacity: 0.5;\n}\n\n.input-prefix,\n.input-suffix {\n min-height: var(--comp-input-min-height);\n max-height: var(--comp-input-max-height);\n height: var-list(var-prefixer(input-height), 44px);\n font-size: var-list(var-prefixer(input-prefix-font-size), inherit);\n font-weight: var-list(--tct-input-prefix-font-weight, 400);\n color: var-list(var-prefixer(input-prefix-font-color), inherit);\n background: var-list(\n --tct-input-prefix-background,\n var-prefixer(input-prefix-bg),\n --tct-input-background,\n var-prefixer(input-bg),\n var-prefixer(gray-14),\n #f2f2f2\n );\n transition:\n color var(--comp-input-tween),\n background var(--comp-input-tween);\n}\n\n.input-prefix {\n border-top-left-radius: var(--comp-calc-input-border-top-left-radius);\n border-bottom-left-radius: var(--comp-calc-input-border-bottom-left-radius);\n pointer-events: none; /* used to allow iOS voiceover to display keyboard in input TCT-1194 */\n}\n\n.input-suffix {\n border-top-right-radius: var(--comp-calc-input-border-top-right-radius);\n border-bottom-right-radius: var(--comp-calc-input-border-bottom-right-radius);\n}\n\n.icon-error {\n color: var-list(--tct-stoplight-error, --const-stoplight-alert, #d20a0a);\n --tct-icon-stroke-primary: #{var-list(--tct-stoplight-error, --const-stoplight-alert, #d20a0a)};\n}\n\n.messages-container {\n height: 0px;\n overflow: hidden;\n background: var-list(\n --tct-message-background,\n var-prefixer(message-bg),\n var-prefixer(gray-14),\n --tct-gray-l3,\n --app-gray-l3,\n #f2f2f2\n );\n box-shadow: var-list(\n var-prefixer(input-message-box-shadow),\n --tct-box-shadow-1,\n --app-shadow-1,\n unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)')\n );\n transition: height var-list(var-prefixer(input-messages-tween), --tct-tween-1, --app-tween-1, unquote('0.2s ease'));\n margin-top: var-list(--tct-input-messages-margin-top, 2px);\n z-index: var-list(--tct-input-messages-z-index, 5);\n position: absolute;\n width: 100%;\n color: var-list(var-prefixer(input-messages-font-color), inherit);\n\n // Sync up border radius with q2-message\n border-radius: var(--tct-message-border-radius, --app-border-radius-1, inherit);\n}\n\n.has-error label {\n color: var-list(var-prefixer(input-error-label-font-color), var-prefixer(input-label-font-color), inherit);\n}\n\n.has-error:not(.has-focus) .input-prefix,\n.has-error:not(.has-focus) .input-suffix {\n color: var-list(var-prefixer(input-error-prefix-font-color), inherit);\n background: var-list(\n --tct-input-error-prefix-background,\n var-prefixer(input-error-prefix-bg),\n --tct-input-background,\n var-prefixer(input-bg),\n var-prefixer(gray-14),\n --tct-gray-l3,\n --app-gray-l3,\n #f2f2f2\n );\n}\n\n.icon-left {\n width: 26px;\n height: 26px;\n}\n\n.vertical-separator {\n height: calc(var(--comp-input-min-height) - 2px);\n border-right-width: var(--tct-input-prefix-border-width, 1px);\n border-right-style: solid;\n border-right-color: var-list(\n var-prefixer(input-prefix-border-color),\n var-prefixer(input-border-color),\n --t-a11y-gray-color-AA,\n #404040\n );\n}\n","import {\n Component,\n Prop,\n Element,\n State,\n Event,\n EventEmitter,\n h,\n Host,\n Watch,\n Listen,\n Fragment,\n Method,\n} from '@stencil/core';\nimport {\n createGuid,\n getAriaValueFromProp,\n renderLabel,\n loc,\n renderMessages,\n setMessageHeight,\n handleAriaLabel,\n overrideFocus,\n isEventFromElement,\n isMobile,\n hasSlotContent,\n nextPaint,\n} from 'src/utils';\nimport mirrorEmit from '@/utils/mirror-emit';\nimport { IFormatterValueObject, ICursorData, IEventDetail } from './q2-input-types';\nimport formatCurrency from './formatting/currency';\nimport formatPhoneNumber from './formatting/phone';\nimport formatSSN from './formatting/ssn';\nimport formatTIN from './formatting/tin';\nimport formatAlphanumeric from './formatting/alphanumeric';\nimport formatAlpha from './formatting/alpha';\nimport formatNumeric, { formatPercentage } from './formatting/numeric';\nimport formatPostalCode from './formatting/postal';\nimport formatDate from './formatting/date';\nimport formatCreditCard from './formatting/credit-card';\nimport formatCIF from './formatting/cif';\nimport formatRoutingNumber from './formatting/routingnumber';\nimport formatSwift from './formatting/swift';\nimport formatIBAN from './formatting/iban';\nimport formatCLABE from './formatting/clabe';\nimport { Q2Icon } from '../q2-icon/q2-icon';\nimport { Q2Badge } from '../q2-badge/q2-badge';\n\nconst inputTypeMap = {\n text: 'text',\n tel: 'tel',\n number: 'number',\n password: 'text',\n search: 'search',\n url: 'url',\n email: 'email',\n currency: 'text',\n phone: 'tel',\n ssn: 'text',\n alphanumeric: 'text',\n alpha: 'text',\n numeric: 'text',\n percentage: 'text',\n postal: 'text',\n date: 'text',\n 'credit-card': 'text',\n cif: 'text',\n routingnumber: 'text',\n swift: 'text',\n iban: 'text',\n clabe: 'text',\n};\n\nexport type InputType = keyof typeof inputTypeMap;\n\n/**\n * @name Input\n * @category Forms\n * @summary Use for single-line text entry including email, phone, currency, SSN, and password.\n * @slot label - An optional slot to display a custom label.\n * @slot input-left - An optional slot to add a [Button](https://tecton.q2developer.com/design-system/q2-btn) on the left-hand side of the input field.\n * @slot input-right - An optional slot to add a [Button](https://tecton.q2developer.com/design-system/q2-btn) on the right-hand side of the input field.\n * @slot custom-display - An optional slot to display custom content in the input field.\n */\n@Component({ tag: 'q2-input', shadow: true, styleUrl: 'q2-input.scss' })\nexport class Q2Input {\n // #region Own Properties\n\n guid = createGuid();\n inputRef: HTMLInputElement;\n isClickEvent: boolean = false;\n isMobile: boolean = isMobile();\n mutationObserver: MutationObserver;\n resizeObserver: ResizeObserver;\n scheduledAfterRender: (() => void)[] = [];\n textSelectedForDeletion: boolean;\n valueOnFocus: string;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n checkSlotCount: number = 0;\n\n @State()\n formattedValueObject: IFormatterValueObject;\n\n @State()\n hasFocus: boolean;\n\n @State()\n isSmall: boolean = false;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Sets readonly to true on the input without adding the \"read only\" label.\n *\n * Can be used to prevent user input while still presenting the necessary information for assistive technology.\n * @private\n */\n @Prop({ mutable: true })\n _preventEntry: boolean = undefined;\n\n /**\n * Allows for correct semantics of q2-input element when aria-expanded.\n * @private\n * Defaults to undefined\n * Will assign role to combobox when used inside q2-select and q2-calendar.\n */\n @Prop({ mutable: true })\n _role: 'combobox' | undefined = undefined;\n\n @Prop()\n ariaActivedescendant: string;\n\n @Prop()\n ariaControls: string;\n\n @Prop({ reflect: true })\n ariaExpanded: string;\n\n @Prop()\n ariaHaspopup: string;\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n @Prop()\n ariaOwns: string;\n\n /**\n * The `autocapitalize` attribute is an enumerated attribute that controls whether and how text input is automatically capitalized as it is entered/edited by the user.\n *\n * [See MDN for a list of supported values](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize#value).\n * @info\n * This attribute only affects the behavior of input mechanisms like virtual keyboards on mobile devices and voice input.\n */\n @Prop({ reflect: true })\n autocapitalize: string;\n\n /**\n * The HTML autocomplete attribute lets web developers specify what permission (if any) the user agent has to provide automated assistance in filling out form field values,\n * as well as guidance to the browser as to the type of information expected in the field.\n *\n * [See MDN for a list of supported values](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values).\n */\n @Prop({ reflect: true })\n autocomplete: string;\n\n /**\n * A string that indicates whether or not to activate automatic correction while the user is editing this field.\n * @warning\n * This is currently only supported in Safari.\n */\n @Prop({ reflect: true })\n autocorrect: 'on' | 'off';\n\n /**\n * Autofocus is enabled when the property is added to an element. To disable, remove attribute or set it to false.\n * If applied to multiple elements, the first one will receive focus.\n */\n @Prop({ reflect: true })\n autofocus: boolean;\n\n /** The color of the badge when in the active state. The property `badgeValue` must be provided. */\n @Prop({ reflect: true })\n badgeTheme: Q2Badge['theme'];\n\n /** Displays a `q2-badge` element on the right side of the input. */\n @Prop({ reflect: true })\n badgeValue: string;\n\n /** Renders an icon button when the field is non-empty. Pressing the button clears all input from the field. */\n @Prop({ reflect: true })\n clearable: boolean;\n\n /**\n * If provided a value, it sets the `aria-current` attribute on the inner input.\n * [See MDN for more information on aria-current](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current).\n */\n @Prop()\n current: 'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false';\n\n /** Indicates the field cannot be focused or interacted with. */\n @Prop({ reflect: true })\n disabled: boolean = false;\n\n /**\n * Each item in the `errors` array will appear below the input field when the field is focused.\n * @localizable\n */\n @Prop()\n errors: string[];\n\n /**\n * Defines the field's expected input format, and automatically masks user input to conform.\n * Specific types support different modifier options. See the section on Format Modifiers for all available options.\n */\n @Prop({ reflect: true })\n formatModifier: string;\n\n /**\n * Hide's the field's `<label>` element from view.\n * @warning\n * Only use when a visible label is impractical.\n */\n @Prop({ reflect: true, mutable: true })\n hideLabel: boolean;\n\n /**\n * When `true` and the input field has an active validation error, the field shows the error state without displaying associated error messages below the field (from the errors array).\n * Primarily used for dropdown selects and date pickers whose controls appear below the input field (where the error messages, if displayed, would also appear).\n */\n @Prop({ reflect: true })\n hideMessages: boolean;\n\n /**\n * Each item in the `hints` array will appear below the input field when the field is focused.\n * @info\n * The `errors` array takes precedence over the `hints` array. If an input field has both hints and errors, only the errors will display.\n * Once all errors are resolved, the hints display the next time the field is focused.\n * @localizable\n */\n @Prop()\n hints: string[];\n\n /** Shows a left-aligned [q2-icon](https://tecton.q2developer.com/design-system/q2-icon/) within the field. */\n @Prop({ reflect: true })\n iconLeft: Q2Icon['type'];\n\n /** Shows a right-aligned [q2-icon](https://tecton.q2developer.com/design-system/q2-icon/) within the field. */\n @Prop({ reflect: true })\n iconRight: Q2Icon['type'];\n\n /**\n * The label that appears above the field. This is announced by screen readers when the field is focused.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /**\n * When present, it does not allow a value greater than `max` when the user uses the Up/Down arrow keys to change the value.\n * @info\n * Only applicable when `type=\"number\"`.\n */\n @Prop({ reflect: true })\n max: number;\n\n /**\n * Defines the maximum allowed input length in characters. Formatting characters (e.g. `.`, `-`, etc) are included in the `maxlength` comparison.\n * Make sure you account for them when setting the `maxlength` value. Input types that use masks have their own inherent `maxlength`.\n */\n @Prop({ reflect: true, mutable: true })\n maxlength: number;\n\n /**\n * When present, it does not allow a value less than the `min` when the user uses the Up/Down arrow keys to change the value.\n * @info\n * Only applicable when `type=\"number\"`.\n */\n @Prop({ reflect: true })\n min: number;\n\n /** Appends \"(optional)\" to the field label, and sets `aria-required` on the nested input tag to `false`. */\n @Prop({ reflect: true })\n optional: boolean;\n\n /**\n * Applies the value as a RegEx pattern to assess the validity of the input field's value.\n * Check the ValidityState's `patternMismatch` property for the result.\n *\n * **Example:**\n * @snippet\n * <q2-input label=\"My input\" pattern=\"[a-zA-Z0-9]{3,5}\" id=\"myInput\"></q2-input>\n * // enter \"abcdefgh\" in the input field (too many characters)\n * const myInput = document.querySelector('#myInput');\n * console.log(myInput.validity.patternMismatch); // true\n */\n @Prop({ reflect: true, mutable: true })\n pattern: string;\n\n /**\n * Text that appears within the field when it is blurred and empty.\n * Placeholder text disappears when the user focuses on the field and provides input.\n * @info\n * Primarily used for rare cases in which a visible form label is not expected (e.g., search fields).\n * @localizable\n */\n @Prop({ reflect: true })\n placeholder: string;\n\n /** Component will display as a clickable `<button>` styled to be identical to the default `<input>` field. */\n @Prop({ reflect: true })\n pseudo: boolean;\n\n /**\n * Appends \"(read only)\" to the field label, and field becomes unusable, but remains focusable.\n * Takes priority over `optional` if both are `true`.\n */\n @Prop({ reflect: true })\n readonly: boolean;\n\n /**\n * Indicates the element's intended purpose to assistive technology.\n * @deprecated\n */\n @Prop()\n role: string;\n\n /**\n * Shows a character counter above the input field to track the number of characters currently in the field.\n * If `maxlength` is set, `showCount` displays the number of characters in relation the `maxlength` value.\n */\n @Prop({ reflect: true })\n showCount: boolean;\n\n /**\n * Displays a toggle button at the end of the input field which shows or hides the actual value.\n * @info\n * Only applicable when `type` is `text`, `password`, or `ssn`.\n */\n @Prop({ reflect: true })\n showVisibilityToggle: boolean = false;\n\n /**\n * When present, it jumps the value in increments of `step` when the user uses the Up/Down arrow keys to change the value.\n * @info\n * Only applicable when `type=\"number\"`.\n */\n @Prop({ reflect: true })\n step: number;\n\n /**\n * Controls visibility of the value when the type is `text`, `password`, or `ssn`.\n * When the input type is `password`, it will default to `true`, hiding the text.\n */\n @Prop({ reflect: true, mutable: true })\n textHidden: boolean;\n\n /** Specifies the field's expected [input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types), and provides the optimal keyboard on mobile devices. */\n @Prop({ reflect: true })\n type: InputType = 'text';\n\n /**\n * Returns a read-only `ValidityState` object representing the validity states of the element.\n * [See MDN for more information on ValidityState](https://developer.mozilla.org/en-US/docs/Web/API/ValidityState).\n */\n @Prop({ reflect: true, mutable: true })\n validity: ValidityState;\n\n /**\n * The value of the input field.\n * @info\n * The visible value of formatted input fields may not match the element's `value` property.\n * When setting an input's value programmatically (e.g. pre-populating a form), ensure that the supplied value is in a format that can be handled by its consuming logic.\n * `q2-input` does not change its own `value` outside of its default change event handler.\n *\n * In `q2-input` where `type=\"currency\"`\n * - element.value = 1234.56\n * - visible value: $1,234.56\n *\n */\n @Prop({ mutable: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the field loses focus after the value has been changed.\n * @deprecated Use 'tctChange' instead\n * @legacyEvent\n */\n @Event()\n change: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the field value is cleared.\n *\n * Requires the `clearable` prop to be set to `true`.\n *\n * @deprecated Use 'tctClear' instead\n */\n @Event()\n clear: EventEmitter<undefined>;\n\n /**\n * Emitted when the field value is formatted.\n *\n * @deprecated Use 'tctFormatted' instead\n */\n @Event()\n formatted: EventEmitter<IFormatterValueObject>;\n\n /**\n * Emitted when the field value is updated.\n * @deprecated Use 'tctInput' instead\n * @legacyEvent\n */\n @Event()\n input: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the validation is updated.\n * @deprecated Use 'tctInvalid' instead\n * @legacyEvent\n */\n @Event()\n invalid: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the field loses focus after the value has been changed.\n * @legacyEvent\n */\n @Event()\n tctChange: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the field value is cleared.\n *\n * Requires the `clearable` prop to be set to `true`.\n */\n @Event()\n tctClear: EventEmitter<undefined>;\n\n /**\n * Emitted when the field value is formatted.\n */\n @Event()\n tctFormatted: EventEmitter<IFormatterValueObject>;\n\n /**\n * Emitted when the field value is updated.\n * @legacyEvent\n */\n @Event()\n tctInput: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the validation is updated.\n * @legacyEvent\n */\n @Event()\n tctInvalid: EventEmitter<IEventDetail>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.manageClearableResizeObserver();\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n }\n\n componentWillLoad() {\n if (isNaN(this.maxlength)) {\n this.maxlength = undefined;\n }\n this.formattedValueObject = this.getFormattedValue(this.stringValue, true);\n\n Object.defineProperty(this.hostElement, 'formattedValue', {\n get: () => this.formattedValueObject?.formattedValue ?? '',\n });\n\n handleAriaLabel(this);\n this.updateComboboxAriaLabel();\n if (this.textHidden === undefined) {\n this.textHidden = this.type === 'password';\n }\n\n this.manageClearableResizeObserver(this.clearable);\n }\n\n componentDidLoad() {\n overrideFocus(this.hostElement);\n\n if (!this.pseudo) this.inputField.value = this.formattedValueObject.formattedValue;\n if (!!this.autofocus) this.inputField.focus();\n\n this.initMutationObserver();\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('change')\n onHostElementChange(event: CustomEvent | Event) {\n if (!(event instanceof CustomEvent)) {\n event.stopPropagation();\n return;\n }\n if (event.target === this.hostElement && !this.hostElement.onchange) {\n this.value = event.detail.value;\n }\n }\n\n @Listen('focus')\n onHostElementFocus(event) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.inputField.focus();\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates firing checkValidity on `<input>`, emits `invalid` event if validation failed.\n */\n @Method()\n async checkValidity() {\n this.inputRef.checkValidity();\n return this.validateInput();\n }\n\n /**\n * Emulates clicking the clear button when the input is clearable.\n *\n * @warning\n * Only applicable when the input is clearable.\n *\n * @testOnly\n */\n @Method()\n async clearValue() {\n if (!this.clearable) return;\n this.onClearInput();\n }\n\n /**\n * Emulates focusing the `<input>`, entering the provided value, and emitting an `input` event.\n *\n * This method leaves the focus on the `<input>` and as a result does not trigger the `change` event. If you want\n * to trigger the` change` event, move the focus to another element after calling this method.\n *\n * @testOnly\n */\n @Method()\n setValue(value: string) {\n const { inputField } = this;\n inputField.focus();\n inputField.dispatchEvent(new FocusEvent('focus'));\n inputField.value = value;\n inputField.dispatchEvent(new InputEvent('input'));\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('_role')\n @Watch('label')\n updateComboboxAriaLabel() {\n // Set aria-label directly on host for combobox role\n // (can't use ariaLabel prop as it has deprecated handling that hides the label)\n if (this._role === 'combobox' && this.label) {\n this.hostElement.setAttribute('aria-label', loc(this.label));\n }\n }\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n // Skip deprecated ariaLabel handling for combobox role\n // (combobox sets aria-label directly for accessibility without hiding the visual label)\n if (this._role === 'combobox') return;\n handleAriaLabel(this);\n }\n\n @Watch('clearable')\n manageClearableResizeObserver(clearable?: boolean) {\n if ('ResizeObserver' in window === false) return;\n const isSmallThreshold = 190;\n if (clearable) {\n if (this.resizeObserver) return;\n if (typeof ResizeObserver === 'undefined') return;\n this.resizeObserver = new ResizeObserver(([entry]) => {\n this.isSmall = isSmallThreshold > entry.contentRect.width;\n });\n this.resizeObserver.observe(this.hostElement);\n } else {\n this.isSmall = false;\n this.resizeObserver?.unobserve(this.hostElement);\n this.resizeObserver = null;\n }\n }\n\n @Watch('errors')\n errorsObserver() {\n this.hasFocus && this.scheduledAfterRender.push(() => setMessageHeight(this));\n }\n\n @Watch('formatModifier')\n formatModifierObserver() {\n this.formatAndUpdateValueFromProp();\n }\n\n @Watch('formattedValueObject')\n formattedValueObjectObserver() {\n mirrorEmit(this, ['formatted', 'tctFormatted'], this.formattedValueObject);\n }\n\n @Watch('hints')\n hintsObserver() {\n this.hasFocus && this.scheduledAfterRender.push(() => setMessageHeight(this));\n }\n\n @Watch('type')\n typeObserver() {\n this.formatAndUpdateValueFromProp();\n }\n\n @Watch('value')\n valueObserver() {\n this.formatAndUpdateValueFromProp();\n }\n\n // #endregion\n // #region Local Methods\n\n get ariaAttributes() {\n return {\n ariaActivedescendant: getAriaValueFromProp(this.ariaActivedescendant),\n ariaControls: getAriaValueFromProp(this.ariaControls),\n ariaExpanded: getAriaValueFromProp(this.ariaExpanded, ['true', 'false']),\n ariaHaspopup: getAriaValueFromProp(this.ariaHaspopup, [\n 'true',\n 'false',\n 'menu',\n 'listbox',\n 'tree',\n 'grid',\n 'dialog',\n ]),\n ariaOwns: getAriaValueFromProp(this.ariaOwns),\n };\n }\n\n get canSetSelection(): boolean {\n // email and number type don't support setSelectionRange\n return !['email', 'number'].includes(this.computedType);\n }\n\n get clearClasses(): string[] {\n const classes = ['btn-clear'];\n if (!this.clearable || !(this.inputField?.value || this.value)) {\n classes.push('hidden');\n }\n return classes;\n }\n\n get computedAutocomplete(): string {\n // force off for currency type\n if (this.type === 'currency') return 'transaction-amount';\n return this.autocomplete || 'off';\n }\n\n get computedClassForIconLeft(): string | undefined {\n let className = 'icon-left';\n if (this.formattedValueObject.leftIconMuted) {\n className += ' icon-left-muted';\n }\n return className;\n }\n\n get computedIconLeft(): string | undefined {\n if (this.formattedValueObject.prefix) {\n return;\n }\n\n if (this.type === 'search') {\n return 'search';\n }\n\n if (this.formattedValueObject.leftIcon) {\n return this.formattedValueObject.leftIcon;\n }\n\n return this.iconLeft;\n }\n\n get computedType(): string {\n if (['password', 'text', 'ssn'].includes(this.type) && this.textHidden) {\n return 'password';\n } else {\n return (this.type && inputTypeMap[this.type]) || 'text';\n }\n }\n\n get hasCustomDisplaySlot(): boolean {\n return hasSlotContent(this.hostElement, 'custom-display');\n }\n\n get hasError(): boolean {\n return Array.isArray(this.errors) && this.errors.length > 0;\n }\n\n get hasInputLeftSlot(): boolean {\n return hasSlotContent(this.hostElement, 'input-left');\n }\n\n get hasInputRightSlot(): boolean {\n return hasSlotContent(this.hostElement, 'input-right');\n }\n\n get inputDescribedBy(): string | undefined {\n return this.showMessages ? `${this.inputId}-description` : undefined;\n }\n\n get inputField(): HTMLInputElement {\n return this.hostElement.shadowRoot.querySelector<HTMLInputElement>('.input-field');\n }\n\n get inputId() {\n return `input-guid-${this.guid}`;\n }\n\n get inputMode() {\n const inputModeMap = {\n currency: 'numeric',\n ssn: 'numeric',\n tin: 'numeric',\n numeric: 'decimal',\n percentage: 'decimal',\n date: 'numeric',\n 'credit-card': 'numeric',\n };\n\n return (this.type && inputModeMap[this.type]) || undefined;\n }\n\n get isMaskedType(): boolean {\n const maskedTypes: string[] = [\n 'currency',\n 'phone',\n 'ssn',\n 'tin',\n 'alphanumeric',\n 'alpha',\n 'numeric',\n 'percentage',\n 'postal',\n 'date',\n 'credit-card',\n 'cif',\n 'routingnumber',\n 'swift',\n 'iban',\n 'clabe',\n ];\n\n return maskedTypes.includes(this.type);\n }\n\n get messages(): string[] {\n return (\n (this.errors && this.errors.length > 0 && this.errors) ||\n (this.hints && this.hints.length > 0 && this.hints) ||\n []\n );\n }\n\n get shouldCursorStartAtEnd(): boolean {\n return this.type === 'currency';\n }\n\n get shouldCursorStayAtEnd(): boolean {\n return this.isMobile && this.type === 'currency';\n }\n\n get showIconSeparator(): boolean {\n return this.type === 'credit-card' || !!this.formattedValueObject.prefix;\n }\n\n get showMessages(): boolean {\n return this.messages.length > 0 && !this.hideMessages;\n }\n\n get stringValue(): string {\n const notCoercable = Object.prototype.toString.call(this.value) === '[object Object]';\n return notCoercable ? '' : (this.value && String(this.value)) || '';\n }\n\n get visibilityToggleAriaLabel(): string {\n return `tecton.element.input.toggleAriaLabel.${this.textHidden ? 'show' : 'hide'}`;\n }\n\n get visibilityToggleText(): string {\n return loc(`tecton.element.input.toggle.${this.textHidden ? 'show' : 'hide'}`);\n }\n\n get wrapperClasses() {\n const classNames = ['field-container'];\n if (this.hasError) classNames.push('has-error');\n if (!!this.value) classNames.push('has-value');\n if (this.clearable && !!this.value) classNames.push('has-clear');\n if (this.hasFocus) classNames.push('has-focus');\n if (this.isSmall) classNames.push('is-small');\n if (this.formattedValueObject.prefix) classNames.push('has-prefix');\n if (this.computedIconLeft) classNames.push('has-icon-left');\n if (this.showIconSeparator) classNames.push('has-icon-separator');\n if (this.formattedValueObject.suffix) classNames.push('has-suffix');\n if (!this.formattedValueObject.suffix && this.iconRight) classNames.push('has-icon-right');\n if (this.type === 'currency') classNames.push('right-aligned');\n else classNames.push('left-aligned');\n if (this.hasCustomDisplaySlot) classNames.push('has-custom-display');\n\n return classNames.join(' ');\n }\n\n calculateCursorPositionOnFocus(): ICursorData {\n const { inputField } = this;\n const valueLength = inputField?.value?.length ?? 0;\n const startingPosition = inputField?.selectionStart ?? valueLength;\n\n return {\n startingPosition,\n valueLength,\n previousValueLength: valueLength,\n hasSelection: window.getSelection().toString().length > 0,\n };\n }\n\n calculateCursorPositionOnInput(): ICursorData {\n const input = this.inputField;\n const formattedLength = this.formattedValueObject.formattedValue.length;\n const currentValueLength = input.value.length;\n const defaultPosition = this.type === 'currency' ? formattedLength : 0;\n return {\n startingPosition: (input && input.selectionStart) || defaultPosition,\n valueLength: formattedLength,\n previousValueLength: input && currentValueLength,\n hasSelection: false,\n };\n }\n\n formatAndUpdateValueFromProp() {\n this.formattedValueObject = this.getFormattedValue(this.stringValue, true);\n\n if (!this.pseudo) {\n const setValue = () => {\n this.inputField.value = this.formattedValueObject.formattedValue;\n };\n\n this.inputField ? setValue() : this.scheduledAfterRender.push(() => setValue());\n }\n }\n\n getFormattedValue(value: string, valueChangedFromProperty: boolean): IFormatterValueObject {\n const formattingFunctions = {\n currency: formatCurrency,\n phone: formatPhoneNumber,\n ssn: formatSSN,\n tin: formatTIN,\n alphanumeric: formatAlphanumeric,\n alpha: formatAlpha,\n numeric: formatNumeric,\n percentage: formatPercentage,\n postal: formatPostalCode,\n date: formatDate,\n cif: formatCIF,\n routingnumber: formatRoutingNumber,\n swift: formatSwift,\n iban: formatIBAN,\n clabe: formatCLABE,\n 'credit-card': formatCreditCard.format,\n };\n\n if (formattingFunctions[this.type]) {\n return formattingFunctions[this.type](value, this.formatModifier, valueChangedFromProperty);\n }\n\n return {\n value,\n formattedValue: value,\n fullyFormattedValue: value,\n formattingCharacterCount: 0,\n unformattedValue: value,\n };\n }\n\n handleCurrencyDeletion(event: InputEvent) {\n // Don't do anything if text was selected for deletion\n if (this.textSelectedForDeletion) {\n this.textSelectedForDeletion = false;\n return;\n }\n // We only care about \"Backspace\" and \"Delete\" events\n if (!['deleteContentBackward', 'deleteContentForward'].includes(event.inputType)) return;\n\n const input = event.target as HTMLInputElement;\n const cursorPosition = input.selectionStart;\n const { formattedValue } = this.formattedValueObject;\n\n if (cursorPosition === null) return;\n\n let cursorMap;\n switch (event.inputType) {\n case 'deleteContentBackward':\n const valueBeforeCursor = formattedValue.substring(0, cursorPosition + 1);\n const isPrevCharAlphaNum = /[a-zA-Z0-9]$/.test(valueBeforeCursor);\n cursorMap = {\n leftIndex: isPrevCharAlphaNum ? cursorPosition : cursorPosition - 1,\n rightIndex: isPrevCharAlphaNum ? cursorPosition + 1 : cursorPosition,\n afterCursorOffset: 0,\n newCursorOffset: 1,\n };\n break;\n case 'deleteContentForward':\n const valueAfterCursor = formattedValue.substring(cursorPosition);\n const isNextCharAlphaNum = /^[a-zA-Z0-9]/.test(valueAfterCursor);\n cursorMap = {\n leftIndex: isNextCharAlphaNum ? cursorPosition : cursorPosition + 1,\n rightIndex: isNextCharAlphaNum ? cursorPosition + 1 : cursorPosition + 2,\n afterCursorOffset: 1,\n newCursorOffset: 0,\n };\n break;\n default:\n return;\n }\n\n // Ensure the cursor doesn't move with a newly formatted value\n const newValue = [\n formattedValue.substring(0, cursorMap.leftIndex),\n formattedValue.substring(cursorMap.rightIndex),\n ].join('');\n const charactersAfterCursor = formattedValue.length - cursorPosition - cursorMap.afterCursorOffset;\n const newFormattedValue = this.getFormattedValue(newValue, false).formattedValue;\n const newCursorPosition = Math.max(\n newFormattedValue.length - charactersAfterCursor + cursorMap.newCursorOffset,\n 0\n );\n\n input.value = newFormattedValue;\n input.setSelectionRange(newCursorPosition, newCursorPosition);\n\n // This handles a runtime issue when a character is deleted from the beginning of the input\n if (newCursorPosition === 0) {\n nextPaint(() => input.setSelectionRange(newCursorPosition, newCursorPosition));\n }\n }\n\n /**\n * Sets textSelectedForDeletion to true if the user has selected text for deletion\n * This is used to prevent other logic from running when text is deleted\n */\n handleCurrencyKeydown = (event: KeyboardEvent) => {\n if (!['Backspace', 'Delete'].includes(event.key)) return;\n const inputElement = this.inputField;\n this.textSelectedForDeletion = inputElement.selectionStart !== inputElement.selectionEnd;\n };\n\n handleDataInput(newFormattedValue: IFormatterValueObject) {\n if (\n this.maxlength === undefined ||\n newFormattedValue.unformattedValue.length <= this.maxlength ||\n newFormattedValue.unformattedValue.length <= this.formattedValueObject.unformattedValue.length\n ) {\n this.formattedValueObject = newFormattedValue;\n } else if (this.maxlength) {\n newFormattedValue = this.getFormattedValue(\n newFormattedValue.unformattedValue.substring(0, this.maxlength),\n false\n );\n this.formattedValueObject = newFormattedValue;\n }\n this.handleValueAndCursor();\n }\n\n handleValueAndCursor = () => {\n // ORDER IMPORTANT: calculate cursor position -> set value -> set cursor position\n const cursorPosition = this.calculateCursorPositionOnInput();\n // when type=number: returns only valid decimal on input event, should not update itself (e.g. typing \"1.\" )\n if (this.type !== 'number') this.inputField.value = this.formattedValueObject.formattedValue;\n mirrorEmit(this, ['input', 'tctInput'], {\n value: this.formattedValueObject.value,\n formattedValue: this.formattedValueObject.fullyFormattedValue,\n minFormattedLength: this.formattedValueObject.minFormattedLength,\n ...(this.formattedValueObject.type && { type: this.formattedValueObject.type }),\n });\n if (!this.formattedValueObject.value) {\n mirrorEmit(this, ['clear', 'tctClear'], undefined);\n }\n this.setCursorPosition(cursorPosition);\n };\n\n initMutationObserver = () => {\n if (!('MutationObserver' in window)) return;\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true });\n this.mutationObserver = observer;\n };\n\n onClearInput = () => {\n const eventDetail = {\n value: '',\n formattedValue: '',\n minFormattedLength: this.formattedValueObject.minFormattedLength,\n };\n mirrorEmit(this, ['input', 'tctInput'], eventDetail);\n mirrorEmit(this, ['change', 'tctChange'], eventDetail);\n mirrorEmit(this, ['clear', 'tctClear'], undefined);\n this.inputField.focus();\n };\n\n onInputBlur = () => {\n this.hasFocus = false;\n setMessageHeight(this);\n if (this.valueOnFocus !== this.formattedValueObject.value) {\n this.valueOnFocus = this.formattedValueObject.value;\n mirrorEmit(this, ['change', 'tctChange'], {\n value: this.formattedValueObject.value,\n formattedValue: this.formattedValueObject.fullyFormattedValue,\n minFormattedLength: this.formattedValueObject.minFormattedLength,\n ...(this.formattedValueObject.type && { type: this.formattedValueObject.type }),\n });\n }\n };\n\n onInputClick = () => {\n if (this.shouldCursorStayAtEnd) this.placeCursorAtEnd();\n };\n\n onInputFocus = () => {\n if (this.inputField.tagName === 'INPUT') {\n this.scheduledAfterRender.push(() => {\n if (this.isClickEvent && this.shouldCursorStartAtEnd) {\n this.placeCursorAtEnd();\n } else {\n this.setCursorPosition(this.calculateCursorPositionOnFocus());\n }\n this.isClickEvent = false;\n });\n }\n this.hasFocus = true;\n setMessageHeight(this);\n this.valueOnFocus = this.value;\n };\n\n onInputInput = (event: InputEvent) => {\n event.stopPropagation();\n if (this.type === 'currency') this.handleCurrencyDeletion(event);\n const newFormattedValue = this.getFormattedValue((event.target as HTMLInputElement).value, false);\n this.handleDataInput(newFormattedValue);\n this.validateInput();\n };\n\n onInputKeydown = (event: KeyboardEvent) => {\n const keysThatMoveCursor = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'];\n const { key } = event;\n\n if (this.type === 'currency') this.handleCurrencyKeydown(event);\n if (this.shouldCursorStayAtEnd && keysThatMoveCursor.includes(key)) event.preventDefault();\n if (key === 'Enter' && this.valueOnFocus !== this.formattedValueObject.value) {\n this.valueOnFocus = this.formattedValueObject.value;\n mirrorEmit(this, ['change', 'tctChange'], {\n value: this.formattedValueObject.value,\n formattedValue: this.formattedValueObject.fullyFormattedValue,\n minFormattedLength: this.formattedValueObject.minFormattedLength,\n ...(this.formattedValueObject.type && { type: this.formattedValueObject.type }),\n });\n }\n };\n\n onInputMousedown = () => {\n this.isClickEvent = true;\n };\n\n onInputPaste = (event: ClipboardEvent) => {\n if (this.type === 'currency') {\n const clipboardData = event.clipboardData.getData('text');\n const newFormattedValue = this.getFormattedValue(clipboardData, true);\n event.preventDefault();\n this.handleDataInput(newFormattedValue);\n }\n };\n\n onMutationObserved = () => {\n // Updating checkSlotCount to force re-render when slot content changes\n this.checkSlotCount = this.checkSlotCount + 1;\n };\n\n onRefocusInput = () => {\n if (this.showMessages) {\n this.inputField.focus();\n setMessageHeight(this);\n }\n };\n\n onToggleVisibility = () => {\n this.hostElement.dispatchEvent(new FocusEvent('focus'));\n this.textHidden = !this.textHidden;\n };\n\n placeCursorAtEnd() {\n const { inputField } = this;\n inputField.selectionStart = inputField.selectionEnd = inputField.value.length;\n }\n\n setCursorPosition(cursorData: ICursorData) {\n if (this.canSetSelection && !cursorData.hasSelection) {\n const input = this.inputField;\n const { valueLength, previousValueLength, startingPosition } = cursorData;\n\n if (this.type === 'currency') {\n if (previousValueLength - valueLength === 1) {\n input.setSelectionRange(startingPosition - 1, startingPosition - 1);\n } else {\n const difference = previousValueLength - valueLength;\n input.setSelectionRange(startingPosition - difference, startingPosition - difference);\n }\n }\n\n if (this.type !== 'currency') {\n const difference = valueLength - previousValueLength;\n // Never allow the cursor to move in reverse\n const newPosition = startingPosition + (difference > 0 ? difference : 0);\n input.setSelectionRange(newPosition, newPosition);\n }\n }\n }\n\n validateInput = () => {\n this.validity = this.inputRef?.validity;\n if (this.validity?.valid === false) {\n mirrorEmit(this, ['invalid', 'tctInvalid'], undefined);\n }\n return !!this.validity?.valid;\n };\n\n // #endregion\n // #region Render Methods\n\n renderCountDOM() {\n if (!this.showCount) return;\n const { maxlength, formattedValueObject } = this;\n\n return (\n <div class=\"count-tag\">\n {formattedValueObject.unformattedValue.length}\n {maxlength && `/${maxlength}`}\n </div>\n );\n }\n\n renderInputContainerDOM() {\n const { hasInputLeftSlot, hasInputRightSlot } = this;\n return (\n <div\n class=\"input-container\"\n tabindex={-1}\n test-id=\"inputContainer\"\n >\n <div class=\"input-icons-container-left\">\n {this.formattedValueObject.prefix && (\n <div class=\"input-prefix\">{this.formattedValueObject.prefix}</div>\n )}\n {this.computedIconLeft && (\n <div>\n <q2-icon\n type={this.computedIconLeft}\n class={this.computedClassForIconLeft}\n />\n </div>\n )}\n {hasInputLeftSlot && <slot name=\"input-left\" />}\n {this.showIconSeparator && <div class=\"vertical-separator\" />}\n {this.hasError && this.type === 'currency' && (\n <div\n test-id=\"divIconError\"\n onClick={this.onRefocusInput}\n >\n <q2-icon\n type=\"error\"\n class=\"icon-error\"\n test-id=\"iconError\"\n />\n </div>\n )}\n </div>\n {this.pseudo ? this.renderPseudoInputDOM() : this.renderStandardInputDOM()}\n <div class=\"input-icons-container-right\">\n <q2-btn\n class={this.clearClasses.join(' ')}\n label={loc('tecton.element.input.clear', [this.label])}\n hideLabel={true}\n test-id=\"clearButton\"\n onClick={this.onClearInput}\n onKeyDown={e => e.stopPropagation()}\n >\n <q2-icon\n type=\"close\"\n class=\"icon-clear\"\n />\n </q2-btn>\n {['password', 'text', 'ssn', 'tin'].includes(this.type) && this.showVisibilityToggle && (\n <q2-btn\n class=\"btn-visibility-toggle\"\n test-id=\"toggleVisibilityButton\"\n onClick={this.onToggleVisibility}\n label={loc(this.visibilityToggleAriaLabel, { label: this.label })}\n hide-label={true}\n >\n {this.visibilityToggleText}\n </q2-btn>\n )}\n {this.formattedValueObject.suffix && (\n <span class=\"input-suffix\">{this.formattedValueObject.suffix}</span>\n )}\n {this.badgeValue && (\n <q2-badge\n size=\"large\"\n theme={this.badgeTheme}\n >\n {this.badgeValue}\n </q2-badge>\n )}\n {this.hasError && this.type !== 'currency' && (\n <div\n test-id=\"divIconError\"\n onClick={this.onRefocusInput}\n >\n <q2-icon\n type=\"error\"\n class=\"icon-error\"\n test-id=\"iconError\"\n />\n </div>\n )}\n {this.iconRight && !this.formattedValueObject.suffix && (\n <div>\n <q2-icon\n type={this.iconRight}\n class=\"icon-right\"\n />\n </div>\n )}\n {hasInputRightSlot && <slot name=\"input-right\" />}\n </div>\n </div>\n );\n }\n\n renderPseudoInputDOM() {\n const showPlaceholder = !this.value && !!this.placeholder;\n const { ariaOwns, ariaHaspopup, ariaExpanded, ariaActivedescendant } = this.ariaAttributes;\n\n return (\n <div class=\"pseudo-input-container\">\n <button\n class=\"input-field\"\n type=\"button\"\n id={this.inputId}\n aria-describedby={this.inputDescribedBy}\n aria-invalid={`${this.hasError}`}\n aria-owns={ariaOwns}\n aria-haspopup={ariaHaspopup}\n aria-expanded={ariaExpanded}\n aria-activedescendant={ariaActivedescendant}\n role={this.role || undefined}\n disabled={!!this.disabled}\n test-id=\"q2InputInnerClearButton\"\n onFocus={this.onInputFocus}\n onBlur={this.onInputBlur}\n >\n <div class=\"custom-display-container\">\n <slot name=\"custom-display\">\n <span class={showPlaceholder ? 'placeholder-text' : ''}>\n {showPlaceholder ? loc(this.placeholder) : loc(this.value)}\n </span>\n </slot>\n </div>\n </button>\n </div>\n );\n }\n\n renderStandardInputDOM() {\n const { hasCustomDisplaySlot } = this;\n const inputClasses = ['input-field'];\n const { ariaOwns, ariaHaspopup, ariaActivedescendant } = this.ariaAttributes;\n if (hasCustomDisplaySlot) inputClasses.push('sr');\n return (\n <Fragment>\n {hasCustomDisplaySlot && (\n <div class=\"custom-display-container\">\n <slot name=\"custom-display\"></slot>\n </div>\n )}\n <input\n ref={el => (this.inputRef = el)}\n class={inputClasses.join(' ')}\n id={this.inputId}\n type={this.computedType}\n size={this.formattedValueObject.prefix ? 10 : undefined}\n maxlength={['date', 'currency'].includes(this.type) ? undefined : this.maxlength || undefined}\n max={this.max}\n min={this.min}\n step={this.step}\n aria-current={this.current || undefined}\n aria-describedby={this.inputDescribedBy}\n aria-required={`${!this.optional}`}\n aria-invalid={`${this.hasError}`}\n aria-owns={ariaOwns}\n aria-haspopup={ariaHaspopup}\n aria-activedescendant={ariaActivedescendant}\n autocomplete={this.computedAutocomplete}\n autocapitalize={this.autocapitalize}\n autocorrect={this.autocorrect === 'on' ? 'on' : 'off'}\n autofocus={this.autofocus}\n placeholder={(this.placeholder && loc(this.placeholder)) || undefined}\n test-id=\"inputField\"\n readonly={this.readonly || this._preventEntry}\n disabled={!!this.disabled}\n onFocus={this.onInputFocus}\n onBlur={this.onInputBlur}\n onClick={this.onInputClick}\n onKeyDown={this.onInputKeydown}\n onMouseDown={this.onInputMousedown}\n onInput={this.onInputInput}\n onPaste={this.onInputPaste}\n inputmode={this.inputMode}\n pattern={this.pattern || undefined}\n />\n </Fragment>\n );\n }\n\n render() {\n const { ariaControls, ariaExpanded } = this.ariaAttributes;\n return (\n <Host\n role={this._role}\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n >\n <div class={this.wrapperClasses}>\n <div class=\"label-wrapper\">\n {renderLabel(this)}\n {this.renderCountDOM()}\n </div>\n {this.renderInputContainerDOM()}\n {renderMessages(this)}\n </div>\n </Host>\n );\n }\n\n // #endregion\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["formatNumber","val","options","prefix","suffix","decimals","decimalSeparator","thousandsSeparator","allowDecimal","allowNegative","explicit","isNegative","value","parsedValue","replace","Number","toFixed","integerString","decimalString","splitValue","negativeSymbol","formattedValue","fullyFormattedValue","formattingCharacterCount","length","maxlength","MAX_SAFE_INTEGER","toString","unformattedValue","splitIndex","substring","padStart","formatValue","mask","trim","generateMask","minFormattedLength","getMinimumFormattedLength","optionalValidatingChars","isOptionalValidatingChar","character","includes","knownValidatingChars","isKnownValidatingChar","getStaticFormattingChars","knownChars","join","formattingChars","RegExp","split","Set","isStaticFormattingChar","has","getValidatedChar","char","matcher","toUpperCase","maskArray","currentValueIndex","reduce","acc","getNextNonFormattingCharIndex","validChar","currencyFormats","AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHF","CLF","CLP","CNY","COP","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EEK","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LTL","LVL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SKK","SLL","SOS","SRD","STN","SVC","SYP","SZL","THB","TJS","TMM","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","UYU","UZS","VEF","VND","VUV","WST","XAF","XCD","XOF","XPF","YER","ZAR","ZMW","ZWD","formatCurrency","currencyCode","processedCurrencyCode","currencyFormat","phoneNumberFormats","AC","AD","AE","AF","AG","AI","AL","AM","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TA","TC","TD","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW","formatPhoneNumber","isoCode","formatSSN","formatTIN","formatAlphanumeric","formatAlpha","modifier","getNumberFormat","formatOptions","numberFormat","formatParts","match","formatNumeric","formatPercentage","undefined","postalCodeFormats","GS","PN","YU","formatPostalCode","dateFormats","formatDate","format","formattedValueObject","detectedType","formatCreditCard","detectCreditCardTypeFromValue","creditCardFormatters","leftIcon","unknownFormatter","unknownFn","valueObject","type","leftIconMuted","amexFormatter","amexFn","discoverFormatter","discoverFn","masterCardFormatter","masterCardFn","visaFormatter","visaFn","dinersClubInternationalFormatter","dinersClub","discover","amex","masterCard","visa","unknown","firstInt","parseInt","charAt","secondInt","firstfour","substr","thirdInt","firstthree","firstsix","formatCIF","formatRoutingNumber","formatSwift","formatIBAN","formatCLABE","q2InputCss","inputTypeMap","text","tel","number","password","search","url","email","currency","phone","ssn","alphanumeric","alpha","numeric","percentage","postal","date","cif","routingnumber","swift","iban","clabe","Q2Input","constructor","hostRef","this","guid","createGuid","isClickEvent","isMobile","scheduledAfterRender","checkSlotCount","isSmall","_preventEntry","_role","disabled","showVisibilityToggle","handleCurrencyKeydown","event","key","inputElement","inputField","textSelectedForDeletion","selectionStart","selectionEnd","handleValueAndCursor","cursorPosition","calculateCursorPositionOnInput","mirrorEmit","source","setCursorPosition","initMutationObserver","window","observer","MutationObserver","onMutationObserved","observe","hostElement","childList","mutationObserver","onClearInput","eventDetail","focus","onInputBlur","hasFocus","setMessageHeight","valueOnFocus","onInputClick","shouldCursorStayAtEnd","placeCursorAtEnd","onInputFocus","tagName","push","shouldCursorStartAtEnd","calculateCursorPositionOnFocus","onInputInput","stopPropagation","handleCurrencyDeletion","newFormattedValue","getFormattedValue","target","handleDataInput","validateInput","onInputKeydown","keysThatMoveCursor","preventDefault","onInputMousedown","onInputPaste","clipboardData","getData","onRefocusInput","showMessages","onToggleVisibility","dispatchEvent","FocusEvent","textHidden","validity","_a","inputRef","_b","valid","_c","disconnectedCallback","manageClearableResizeObserver","disconnect","componentWillLoad","isNaN","stringValue","Object","defineProperty","get","handleAriaLabel","updateComboboxAriaLabel","clearable","componentDidLoad","overrideFocus","pseudo","autofocus","componentDidRender","forEach","fn","onHostElementChange","CustomEvent","onchange","detail","onHostElementFocus","isEventFromElement","checkValidity","clearValue","setValue","InputEvent","label","setAttribute","loc","ariaLabelObserver","isSmallThreshold","resizeObserver","ResizeObserver","entry","contentRect","width","unobserve","errorsObserver","formatModifierObserver","formatAndUpdateValueFromProp","formattedValueObjectObserver","hintsObserver","typeObserver","valueObserver","ariaAttributes","ariaActivedescendant","getAriaValueFromProp","ariaControls","ariaExpanded","ariaHaspopup","ariaOwns","canSetSelection","computedType","clearClasses","classes","computedAutocomplete","autocomplete","computedClassForIconLeft","className","computedIconLeft","iconLeft","hasCustomDisplaySlot","hasSlotContent","hasError","Array","isArray","errors","hasInputLeftSlot","hasInputRightSlot","inputDescribedBy","inputId","shadowRoot","querySelector","inputMode","inputModeMap","tin","isMaskedType","maskedTypes","messages","hints","showIconSeparator","hideMessages","notCoercable","prototype","call","String","visibilityToggleAriaLabel","visibilityToggleText","wrapperClasses","classNames","iconRight","valueLength","startingPosition","previousValueLength","hasSelection","getSelection","input","formattedLength","currentValueLength","defaultPosition","valueChangedFromProperty","formattingFunctions","formatModifier","inputType","cursorMap","valueBeforeCursor","isPrevCharAlphaNum","test","leftIndex","rightIndex","afterCursorOffset","newCursorOffset","valueAfterCursor","isNextCharAlphaNum","newValue","charactersAfterCursor","newCursorPosition","Math","max","setSelectionRange","nextPaint","cursorData","difference","newPosition","renderCountDOM","showCount","h","class","renderInputContainerDOM","tabindex","name","onClick","renderPseudoInputDOM","renderStandardInputDOM","hideLabel","onKeyDown","e","badgeValue","size","theme","badgeTheme","showPlaceholder","placeholder","id","role","onFocus","onBlur","inputClasses","Fragment","ref","el","min","step","current","optional","autocapitalize","autocorrect","readonly","onMouseDown","onInput","onPaste","inputmode","pattern","render","Host","renderLabel","renderMessages"],"sources":["src/components/q2-input/formatting/number.ts","src/components/q2-input/formatting/generic.ts","src/components/q2-input/formatting/currency.ts","src/components/q2-input/formatting/phone-number-formats.ts","src/components/q2-input/formatting/phone.ts","src/components/q2-input/formatting/ssn.ts","src/components/q2-input/formatting/tin.ts","src/components/q2-input/formatting/alphanumeric.ts","src/components/q2-input/formatting/alpha.ts","src/components/q2-input/formatting/numeric.ts","src/components/q2-input/formatting/postal.ts","src/components/q2-input/formatting/date.ts","src/components/q2-input/formatting/credit-card.ts","src/components/q2-input/formatting/cif.ts","src/components/q2-input/formatting/routingnumber.ts","src/components/q2-input/formatting/swift.ts","src/components/q2-input/formatting/iban.ts","src/components/q2-input/formatting/clabe.ts","src/components/q2-input/q2-input.scss?tag=q2-input&encapsulation=shadow","src/components/q2-input/q2-input.tsx"],"sourcesContent":["import { IFormatterValueObject, INumberInputFormatOptions } from '../q2-input-types';\n\nexport default function formatNumber(\n val: string = '',\n options: INumberInputFormatOptions = {\n prefix: '',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: '',\n allowDecimal: false,\n allowNegative: true,\n },\n explicit: boolean = false\n): IFormatterValueObject {\n const isNegative = val[0] === '-';\n\n let value = val;\n\n const allowDecimal = !!options.allowDecimal && !!options.decimals;\n\n if (explicit) {\n const parsedValue = value.replace(/[^\\d.]/g, '');\n value = (parsedValue && Number(parsedValue).toFixed(allowDecimal ? options.decimals : 0)) || '';\n }\n\n value = value.replace(/[^\\d]/g, '');\n\n let { integerString, decimalString } = splitValue(value, allowDecimal, options.decimals);\n\n // define decimalString\n let decimalSeparator = options.decimalSeparator;\n if (!allowDecimal) {\n decimalSeparator = '';\n decimalString = '';\n }\n\n // define negative\n const negativeSymbol = options.allowNegative && isNegative ? '-' : '';\n\n value = `${negativeSymbol}${integerString}${decimalSeparator}${decimalString}`;\n\n // format integerString\n integerString = integerString.replace(/\\B(?=(\\d{3})+(?!\\d))/g, options.thousandsSeparator);\n\n const formattedValue: string =\n negativeSymbol || integerString ? `${negativeSymbol}${integerString}${decimalSeparator}${decimalString}` : '';\n\n const fullyFormattedValue: string =\n negativeSymbol || integerString\n ? `${negativeSymbol}${options.prefix}${integerString}${decimalSeparator}${decimalString}${options.suffix}`\n : '';\n\n let formattingCharacterCount = formattedValue.length - value.length;\n\n if (decimalSeparator) {\n formattingCharacterCount = formattingCharacterCount + options.decimalSeparator.length;\n }\n\n const prefix = options.prefix || options.suffix;\n const maxlength = Number.MAX_SAFE_INTEGER.toString().length + formattingCharacterCount + decimalString.length;\n\n const unformattedValue = `${integerString.replace(/[^0-9]/g, '')}${decimalString}`.replace(/^0+/, '');\n\n return {\n value,\n formattedValue,\n fullyFormattedValue,\n prefix,\n suffix: '',\n formattingCharacterCount,\n maxlength,\n unformattedValue,\n };\n}\n\nfunction splitValue(\n value: string,\n allowDecimal: boolean = false,\n decimals: number\n): { integerString: string; decimalString: string } {\n if (!allowDecimal) {\n return {\n integerString: value,\n decimalString: '',\n };\n }\n\n const splitIndex = value.length - decimals;\n\n let integerString = value.substring(0, splitIndex).padStart(1, '0');\n if (integerString.length > 1 && integerString[0] === '0') {\n integerString = integerString.substring(1);\n }\n\n const decimalString = value.substring(splitIndex).padStart(decimals, '0');\n\n return {\n integerString,\n decimalString,\n };\n}\n","import { IFormatterValueObject } from '../q2-input-types';\n\nexport default function formatValue(\n value: string = '',\n mask: string = '',\n options?: {\n prefix?: string;\n suffix?: string;\n }\n): IFormatterValueObject {\n const prefix = (options && options.prefix) || '';\n const suffix = (options && options.suffix) || '';\n\n if (!value || !mask) {\n const fullyFormattedValue = `${prefix}${value}${suffix}`;\n return {\n value,\n formattedValue: value,\n fullyFormattedValue,\n prefix: prefix.trim() || suffix.trim(),\n formattingCharacterCount: 0,\n unformattedValue: value,\n };\n }\n\n const { unformattedValue, formattedValue, formattingCharacterCount } = generateMask(value, mask);\n\n const fullyFormattedValue = `${prefix}${formattedValue}${suffix}`;\n const maxlength = mask.length;\n const minFormattedLength = getMinimumFormattedLength(mask, prefix, suffix);\n\n return {\n value: unformattedValue,\n formattedValue,\n fullyFormattedValue,\n prefix: prefix.trim() || suffix.trim(),\n formattingCharacterCount,\n maxlength,\n minFormattedLength,\n unformattedValue,\n };\n}\n\nconst optionalValidatingChars = ['?'];\nfunction isOptionalValidatingChar(character: string): boolean {\n return optionalValidatingChars.includes(character);\n}\n\nconst knownValidatingChars = ['#', '@', '*', ...optionalValidatingChars];\nfunction isKnownValidatingChar(character: string): boolean {\n return knownValidatingChars.includes(character);\n}\n\nfunction getStaticFormattingChars(mask: string): Set<string> {\n const knownChars = knownValidatingChars.join('|');\n const formattingChars = mask.replace(new RegExp(`[${knownChars}]`, 'g'), '').split('');\n return new Set(formattingChars);\n}\n\nfunction isStaticFormattingChar(character: string, formattingChars: Set<string>): boolean {\n return formattingChars.has(character);\n}\n\nfunction getValidatedChar(char: string, matcher: string) {\n switch (matcher) {\n case '#':\n char = char.replace(/[^\\d]/g, '');\n break;\n case '@':\n char = char.toUpperCase().replace(/[^A-Z]+/g, ''); // allows only upper case\n break;\n case '*':\n char = char.toUpperCase().replace(/[^\\dA-Z]+/g, '');\n break;\n case '?':\n char = char.replace(/[^\\d]/g, '');\n break;\n default:\n return char;\n }\n return char;\n}\n\nfunction generateMask(value: string, mask: string) {\n const maskArray = mask.split('');\n const formattingChars = getStaticFormattingChars(mask);\n let currentValueIndex: number = 0;\n let formattingCharacterCount: number = 0;\n let unformattedValue: string = '';\n\n const formattedValue = maskArray.reduce((acc: string, character: string) => {\n if (currentValueIndex >= value.length) {\n return acc;\n }\n\n if (isOptionalValidatingChar(character) && isStaticFormattingChar(value[currentValueIndex], formattingChars)) {\n return acc;\n }\n\n if (isKnownValidatingChar(character)) {\n // Step value index if formatting character pushed out of place by user input\n currentValueIndex = getNextNonFormattingCharIndex(value, currentValueIndex, formattingChars);\n\n if (currentValueIndex >= value.length) {\n return acc;\n }\n\n const validChar = getValidatedChar(value[currentValueIndex], character);\n acc += validChar;\n unformattedValue += validChar;\n currentValueIndex++;\n } else {\n // Static formatting characters added directly to formatted string\n acc += character;\n formattingCharacterCount++;\n\n if (character === value[currentValueIndex]) {\n // Continue to walk value if next value at this index matches formatting character\n currentValueIndex++;\n }\n }\n\n return acc;\n }, '');\n\n return {\n unformattedValue,\n formattedValue,\n formattingCharacterCount,\n };\n}\n\nfunction getNextNonFormattingCharIndex(value: string, currentValueIndex: number, formattingChars: Set<string>): number {\n if (isStaticFormattingChar(value[currentValueIndex], formattingChars)) {\n currentValueIndex++;\n return getNextNonFormattingCharIndex(value, currentValueIndex, formattingChars);\n }\n\n return currentValueIndex;\n}\n\nfunction getMinimumFormattedLength(mask: string, prefix: string, suffix: string): number {\n return (\n mask.replace(new RegExp(`[${optionalValidatingChars.join('|')}]`, 'g'), '').length +\n prefix.length +\n suffix.length\n );\n}\n","import formatNumber from './number';\nimport formatValue from './generic';\nimport { IFormatterValueObject, INumberInputFormatOptions } from '../q2-input-types';\n\n// decimal data source: http://www.iso.org/iso/home/standards/currency_codes.htm 09/Nov/2016\nexport const currencyFormats = {\n AED: {\n prefix: '',\n suffix: 'د.إ',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.99د.إ'\n AFN: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n ALL: {\n prefix: 'L',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'L9,999.99'\n AMD: {\n prefix: 'դր.',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'դր.9,999.99'\n ANG: {\n prefix: 'ƒ',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'ƒ9,999.99'\n AOA: {\n prefix: 'Kz',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Kz9,999.99'\n ARS: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n AUD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n AWG: {\n prefix: 'ƒ',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'ƒ9,999.99'\n AZN: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n BAM: {\n prefix: 'КМ',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'КМ9,999.99'\n BBD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n BDT: {\n prefix: '৳',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '৳9,999.99'\n BGN: {\n prefix: '৳',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '৳9,999.99'\n BHD: {\n prefix: '',\n suffix: 'ب.د',\n decimals: 3,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.999ب.د'\n BIF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999'\n BMD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n BND: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n BOB: {\n prefix: 'Bs.',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Bs.9,999.99'\n BRL: {\n prefix: 'R$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'R$9,999.99'\n BSD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n BTN: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n BWP: {\n prefix: 'P',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'P9,999.99'\n BYN: {\n prefix: 'Br',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Br9,999'\n BZD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n CAD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n CDF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999.99'\n CHF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999.99'\n CLF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 4,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9.999.9999'\n CLP: {\n prefix: '$',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999'\n CNY: {\n prefix: '¥',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¥9,999.99'\n COP: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n CRC: {\n prefix: '₡',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₡9,999.99'\n CUC: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n CUP: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n CVE: {\n prefix: '$',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999'\n CZK: {\n prefix: 'Kč',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Kč9,999.99'\n DJF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999'\n DKK: {\n prefix: 'kr',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'kr9,999.99'\n DOP: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n DZD: {\n prefix: '',\n suffix: 'د.ج',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.99د.ج'\n EEK: {\n prefix: 'KR',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'KR9,999.99'\n EGP: {\n prefix: '£',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '£9,999.99'\n ERN: {\n prefix: 'Nfk',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Nfk9,999.99'\n ETB: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n EUR: {\n prefix: '€',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '€9,999.99'\n FJD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n FKP: {\n prefix: '£',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '£9,999.99'\n GBP: {\n prefix: '£',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '£9,999.99'\n GEL: {\n prefix: 'ლ',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'ლ9,999.99'\n GHS: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n GIP: {\n prefix: '£',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '£9,999.99'\n GMD: {\n prefix: 'D',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'D9,999.99'\n GNF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999'\n GTQ: {\n prefix: 'Q',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Q9,999.99'\n GYD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n HKD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.9'\n HNL: {\n prefix: 'L',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'L9,999.99'\n HRK: {\n prefix: 'kn',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'kn9,999.99'\n HTG: {\n prefix: 'G',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'G9,999.99'\n HUF: {\n prefix: 'Ft',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Ft9,999.99'\n IDR: {\n prefix: 'Rs',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Rs9,999.99'\n ILS: {\n prefix: '₪',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₪9,999.99'\n INR: {\n prefix: '₨',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₨9,999.99'\n IQD: {\n prefix: '',\n suffix: 'ع.د',\n decimals: 3,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.999ع.د'\n IRR: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n ISK: {\n prefix: 'kr',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'kr9,999'\n JMD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n JOD: {\n prefix: '',\n suffix: 'د.ا',\n decimals: 3,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.99د.ا'\n JPY: {\n prefix: '¥',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¥9,999'\n KES: {\n prefix: 'Sh',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Sh9,999.99'\n KGS: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n KHR: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n KMF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999'\n KPW: {\n prefix: '₩',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₩9,999.99'\n KRW: {\n prefix: '₩',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₩9,999.99'\n KWD: {\n prefix: 'د.ك',\n suffix: '',\n decimals: 3,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.999د.ك'\n KYD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n KZT: {\n prefix: '〒',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '〒9,999.99'\n LAK: {\n prefix: '₭',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₭9,999.99'\n LBP: {\n prefix: '',\n suffix: 'ل.ل',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'ل.ل9,999.99'\n LKR: {\n prefix: 'Rs',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Rs9,999.99'\n LRD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n LSL: {\n prefix: 'L',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'L9,999.99'\n LTL: {\n prefix: 'Lt',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Lt9,999.99'\n LVL: {\n prefix: 'Ls',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Ls9,999.99'\n LYD: {\n prefix: '',\n suffix: 'ل.د',\n decimals: 3,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.999ل.د'\n MAD: {\n prefix: '',\n suffix: 'د.م.',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.99د.م.'\n MDL: {\n prefix: 'L',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'L9,999.99'\n MGA: {\n prefix: '¤',\n suffix: '',\n decimals: 1,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.9'\n MKD: {\n prefix: 'ден',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'ден9,999.99'\n MMK: {\n prefix: 'K',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'K9,999.99'\n MNT: {\n prefix: '₮',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₮9,999.99'\n MOP: {\n prefix: 'P',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'P9,999.99'\n MRU: {\n prefix: 'UM',\n suffix: '',\n decimals: 1,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'UM9,999.9'\n MUR: {\n prefix: '₨',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₨9,999.99'\n MVR: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n MWK: {\n prefix: 'MK',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'MK9,999.99'\n MXN: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n MYR: {\n prefix: 'RM',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'RM9,999.99'\n MZN: {\n prefix: 'MTn',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'MTn9,999.99'\n NAD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n NGN: {\n prefix: '₦',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₦9,999.99'\n NIO: {\n prefix: 'C$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'C$9,999.99'\n NOK: {\n prefix: 'kr',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'kr9,999.99'\n NPR: {\n prefix: '₨',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₨9,999.99'\n NZD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n OMR: {\n prefix: '',\n suffix: 'ر.ع.',\n decimals: 3,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.999ر.ع.'\n PAB: {\n prefix: 'B/.',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'B/.9,999.99'\n PEN: {\n prefix: 'S/.',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'S/.9,999.99'\n PGK: {\n prefix: 'K',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'K9,999.99'\n PHP: {\n prefix: 'p',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'p9,999.99'\n PKR: {\n prefix: '₨',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₨9,999.99'\n PLN: {\n prefix: 'zł',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'zł9,999.99'\n PYG: {\n prefix: '¤',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999'\n QAR: {\n prefix: '',\n suffix: 'ر.ق',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.99ر.ق'\n RON: {\n prefix: 'L',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'L9,999.99'\n RSD: {\n prefix: 'дин.',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'дин.9,999.99'\n RUB: {\n prefix: 'руб.',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'руб.9,999.99'\n RWF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999'\n SAR: {\n prefix: '',\n suffix: 'ر.س',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.99ر.س'\n SBD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n SCR: {\n prefix: '₨',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₨9,999.99'\n SDG: {\n prefix: '£',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '£9,999.99'\n SEK: {\n prefix: 'kr',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'kr9,999.99'\n SGD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n SHP: {\n prefix: '£',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '£9,999.99'\n SKK: {\n prefix: 'Sk',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Sk9,999.99'\n SLL: {\n prefix: 'Le',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Le9,999.99'\n SOS: {\n prefix: 'Sh',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Sh9,999.99'\n SRD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n STN: {\n prefix: 'Db',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Db9,999.99'\n SVC: {\n prefix: '₡',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₡9,999.99'\n SYP: {\n prefix: '£',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '£9,999.99'\n SZL: {\n prefix: 'L',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'L9,999.99'\n THB: {\n prefix: '฿',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '฿9,999.99'\n TJS: {\n prefix: 'ЅМ',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'ЅМ9,999.99'\n TMM: {\n prefix: 'm',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'm9,999.99'\n TND: {\n prefix: '',\n suffix: 'د.ت',\n decimals: 3,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '9,999.999د.ت'\n TOP: {\n prefix: 'T$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'T$9,999.99'\n TRY: {\n prefix: 'YTL',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'YTL9,999.99'\n TTD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n TWD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n TZS: {\n prefix: 'Sh',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Sh9,999.99'\n UAH: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n UGX: {\n prefix: 'Sh',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Sh9,999'\n USD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n UYU: {\n prefix: '$',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999'\n UZS: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n VEF: {\n prefix: 'Bs F',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Bs F9,999.99'\n VND: {\n prefix: '₫',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '₫9,999'\n VUV: {\n prefix: 'Vt',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Vt9,999'\n WST: {\n prefix: 'T',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'T9,999.99'\n XAF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999'\n XCD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n XOF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999'\n XPF: {\n prefix: 'Fr',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'Fr9,999'\n YER: {\n prefix: '¤',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '¤9,999.99'\n ZAR: {\n prefix: 'R',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'R9,999.99'\n ZMW: {\n prefix: 'ZK',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // 'ZK9,999.99'\n ZWD: {\n prefix: '$',\n suffix: '',\n decimals: 2,\n decimalSeparator: '.',\n thousandsSeparator: ',',\n }, // '$9,999.99'\n};\n\nexport default function formatCurrency(\n value: string,\n currencyCode: string = 'USD',\n explicit: boolean = false\n): IFormatterValueObject {\n let processedCurrencyCode = currencyCode || '';\n let allowDecimal = true;\n\n if (processedCurrencyCode.includes('-integer')) {\n processedCurrencyCode = processedCurrencyCode.split('-integer')[0];\n allowDecimal = false;\n }\n\n const currencyFormat = currencyFormats[processedCurrencyCode];\n\n if (!currencyFormat) {\n return formatValue(value);\n }\n\n const options: INumberInputFormatOptions = {\n ...currencyFormat,\n allowDecimal: allowDecimal && currencyFormat.decimals > 0,\n allowNegative: false,\n };\n\n return formatNumber(value, options, explicit);\n}\n","/**\n * This file is generated by scripts/generatePhoneFormats.js\n * DO NOT edit by hand.\n *\n * To regenerate this file, run: pnpm generate:phone-formats\n * Only regenerate when upgrading google-libphonenumber or fixing generation bugs.\n * See scripts/generatePhoneFormats.js for details.\n */\n\nexport const phoneNumberFormats = {\n AC: {\n mask: '#####',\n prefix: '+247 ',\n },\n AD: {\n mask: '### ###',\n prefix: '+376 ',\n },\n AE: {\n mask: '### ### ####',\n prefix: '+971 ',\n },\n AF: {\n mask: '### ### ####',\n prefix: '+93 ',\n },\n AG: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n AI: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n AL: {\n mask: '### ### ####',\n prefix: '+355 ',\n },\n AM: {\n mask: '### ######',\n prefix: '+374 ',\n },\n AO: {\n mask: '### ### ###',\n prefix: '+244 ',\n },\n AR: {\n mask: '### ##-####-####',\n prefix: '+54 ',\n },\n AS: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n AT: {\n mask: '## #########',\n prefix: '+43 ',\n },\n AU: {\n mask: '#### ### ###',\n prefix: '+61 ',\n },\n AW: {\n mask: '### ####',\n prefix: '+297 ',\n },\n AX: {\n mask: '### #######',\n prefix: '+358 ',\n },\n AZ: {\n mask: '### ### ## ##',\n prefix: '+994 ',\n },\n BA: {\n mask: '### ### ###',\n prefix: '+387 ',\n },\n BB: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n BD: {\n mask: '#####-######',\n prefix: '+880 ',\n },\n BE: {\n mask: '#### ## ## ##',\n prefix: '+32 ',\n },\n BF: {\n mask: '## ## ## ##',\n prefix: '+226 ',\n },\n BG: {\n mask: '### ### ###',\n prefix: '+359 ',\n },\n BH: {\n mask: '#### ####',\n prefix: '+973 ',\n },\n BI: {\n mask: '## ## ## ##',\n prefix: '+257 ',\n },\n BJ: {\n mask: '## ## ## ## ##',\n prefix: '+229 ',\n },\n BL: {\n mask: '#### ## ## ##',\n prefix: '+590 ',\n },\n BM: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n BN: {\n mask: '### ####',\n prefix: '+673 ',\n },\n BO: {\n mask: '########',\n prefix: '+591 ',\n },\n BQ: {\n mask: '### ####',\n prefix: '+599 ',\n },\n BR: {\n mask: '(##) #####-####',\n prefix: '+55 ',\n },\n BS: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n BT: {\n mask: '## ## ## ##',\n prefix: '+975 ',\n },\n BW: {\n mask: '## ### ###',\n prefix: '+267 ',\n },\n BY: {\n mask: '# ### ###-##-##',\n prefix: '+375 ',\n },\n BZ: {\n mask: '###-####',\n prefix: '+501 ',\n },\n CA: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n CC: {\n mask: '#### ### ###',\n prefix: '+61 ',\n },\n CD: {\n mask: '#### ### ###',\n prefix: '+243 ',\n },\n CF: {\n mask: '## ## ## ##',\n prefix: '+236 ',\n },\n CG: {\n mask: '## ### ####',\n prefix: '+242 ',\n },\n CH: {\n mask: '### ### ## ##',\n prefix: '+41 ',\n },\n CI: {\n mask: '## ## ## ####',\n prefix: '+225 ',\n },\n CK: {\n mask: '## ###',\n prefix: '+682 ',\n },\n CL: {\n mask: '(#) #### ####',\n prefix: '+56 ',\n },\n CM: {\n mask: '# ## ## ## ##',\n prefix: '+237 ',\n },\n CN: {\n mask: '### #### ####',\n prefix: '+86 ',\n },\n CO: {\n mask: '### #######',\n prefix: '+57 ',\n },\n CR: {\n mask: '#### ####',\n prefix: '+506 ',\n },\n CU: {\n mask: '## #######',\n prefix: '+53 ',\n },\n CV: {\n mask: '### ## ##',\n prefix: '+238 ',\n },\n CW: {\n mask: '# ### ####',\n prefix: '+599 ',\n },\n CX: {\n mask: '#### ### ###',\n prefix: '+61 ',\n },\n CY: {\n mask: '## ######',\n prefix: '+357 ',\n },\n CZ: {\n mask: '### ### ###',\n prefix: '+420 ',\n },\n DE: {\n mask: '##### #######',\n prefix: '+49 ',\n },\n DJ: {\n mask: '## ## ## ##',\n prefix: '+253 ',\n },\n DK: {\n mask: '## ## ## ##',\n prefix: '+45 ',\n },\n DM: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n DO: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n DZ: {\n mask: '#### ## ## ##',\n prefix: '+213 ',\n },\n EC: {\n mask: '### ### ####',\n prefix: '+593 ',\n },\n EE: {\n mask: '#### ####',\n prefix: '+372 ',\n },\n EG: {\n mask: '### ########',\n prefix: '+20 ',\n },\n EH: {\n mask: '## ## ## ## ##',\n prefix: '+212 ',\n },\n ER: {\n mask: '## ### ###',\n prefix: '+291 ',\n },\n ES: {\n mask: '### ## ## ##',\n prefix: '+34 ',\n },\n ET: {\n mask: '### ### ####',\n prefix: '+251 ',\n },\n FI: {\n mask: '### #######',\n prefix: '+358 ',\n },\n FJ: {\n mask: '### ####',\n prefix: '+679 ',\n },\n FK: {\n mask: '#####',\n prefix: '+500 ',\n },\n FM: {\n mask: '### ####',\n prefix: '+691 ',\n },\n FO: {\n mask: '######',\n prefix: '+298 ',\n },\n FR: {\n mask: '## ## ## ## ##',\n prefix: '+33 ',\n },\n GA: {\n mask: '## ## ## ##',\n prefix: '+241 ',\n },\n GB: {\n mask: '##### ######',\n prefix: '+44 ',\n },\n GD: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n GE: {\n mask: '### ### ## ##',\n prefix: '+995 ',\n },\n GF: {\n mask: '#### ## ## ##',\n prefix: '+594 ',\n },\n GG: {\n mask: '##### ######',\n prefix: '+44 ',\n },\n GH: {\n mask: '### ### ####',\n prefix: '+233 ',\n },\n GI: {\n mask: '########',\n prefix: '+350 ',\n },\n GL: {\n mask: '## ## ##',\n prefix: '+299 ',\n },\n GM: {\n mask: '### ####',\n prefix: '+220 ',\n },\n GN: {\n mask: '### ## ## ##',\n prefix: '+224 ',\n },\n GP: {\n mask: '#### ## ## ##',\n prefix: '+590 ',\n },\n GQ: {\n mask: '### ### ###',\n prefix: '+240 ',\n },\n GR: {\n mask: '### ### ####',\n prefix: '+30 ',\n },\n GT: {\n mask: '#### ####',\n prefix: '+502 ',\n },\n GU: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n GW: {\n mask: '### ### ###',\n prefix: '+245 ',\n },\n GY: {\n mask: '### ####',\n prefix: '+592 ',\n },\n HK: {\n mask: '#### ####',\n prefix: '+852 ',\n },\n HN: {\n mask: '####-####',\n prefix: '+504 ',\n },\n HR: {\n mask: '### ### ####',\n prefix: '+385 ',\n },\n HT: {\n mask: '## ## ####',\n prefix: '+509 ',\n },\n HU: {\n mask: '## ## ### ####',\n prefix: '+36 ',\n },\n ID: {\n mask: '####-###-###',\n prefix: '+62 ',\n },\n IE: {\n mask: '### ### ####',\n prefix: '+353 ',\n },\n IL: {\n mask: '###-###-####',\n prefix: '+972 ',\n },\n IM: {\n mask: '##### ######',\n prefix: '+44 ',\n },\n IN: {\n mask: '###### #####',\n prefix: '+91 ',\n },\n IO: {\n mask: '### ####',\n prefix: '+246 ',\n },\n IQ: {\n mask: '#### ### ####',\n prefix: '+964 ',\n },\n IR: {\n mask: '#### ### ####',\n prefix: '+98 ',\n },\n IS: {\n mask: '### ####',\n prefix: '+354 ',\n },\n IT: {\n mask: '### ### ####',\n prefix: '+39 ',\n },\n JE: {\n mask: '##### ######',\n prefix: '+44 ',\n },\n JM: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n JO: {\n mask: '## #### ####',\n prefix: '+962 ',\n },\n JP: {\n mask: '###-####-####',\n prefix: '+81 ',\n },\n KE: {\n mask: '#### ######',\n prefix: '+254 ',\n },\n KG: {\n mask: '#### ### ###',\n prefix: '+996 ',\n },\n KH: {\n mask: '### ### ###',\n prefix: '+855 ',\n },\n KI: {\n mask: '########',\n prefix: '+686 ',\n },\n KM: {\n mask: '### ## ##',\n prefix: '+269 ',\n },\n KN: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n KP: {\n mask: '#### ### ####',\n prefix: '+850 ',\n },\n KR: {\n mask: '###-####-####',\n prefix: '+82 ',\n },\n KW: {\n mask: '### #####',\n prefix: '+965 ',\n },\n KY: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n KZ: {\n mask: '# (###) ### ####',\n prefix: '+7 ',\n },\n LA: {\n mask: '### ## ### ###',\n prefix: '+856 ',\n },\n LB: {\n mask: '## ### ###',\n prefix: '+961 ',\n },\n LC: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n LI: {\n mask: '### ### ###',\n prefix: '+423 ',\n },\n LK: {\n mask: '### ### ####',\n prefix: '+94 ',\n },\n LR: {\n mask: '### ### ####',\n prefix: '+231 ',\n },\n LS: {\n mask: '#### ####',\n prefix: '+266 ',\n },\n LT: {\n mask: '(#-###) #####',\n prefix: '+370 ',\n },\n LU: {\n mask: '### ### ###',\n prefix: '+352 ',\n },\n LV: {\n mask: '## ### ###',\n prefix: '+371 ',\n },\n LY: {\n mask: '###-#######',\n prefix: '+218 ',\n },\n MA: {\n mask: '## ## ## ## ##',\n prefix: '+212 ',\n },\n MC: {\n mask: '## ## ## ## ##',\n prefix: '+377 ',\n },\n MD: {\n mask: '#### ## ###',\n prefix: '+373 ',\n },\n ME: {\n mask: '### ### ###',\n prefix: '+382 ',\n },\n MF: {\n mask: '#### ## ## ##',\n prefix: '+590 ',\n },\n MG: {\n mask: '### ## ### ##',\n prefix: '+261 ',\n },\n MH: {\n mask: '###-####',\n prefix: '+692 ',\n },\n MK: {\n mask: '### ### ###',\n prefix: '+389 ',\n },\n ML: {\n mask: '## ## ## ##',\n prefix: '+223 ',\n },\n MM: {\n mask: '## ### ####',\n prefix: '+95 ',\n },\n MN: {\n mask: '#### ####',\n prefix: '+976 ',\n },\n MO: {\n mask: '#### ####',\n prefix: '+853 ',\n },\n MP: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n MQ: {\n mask: '#### ## ## ##',\n prefix: '+596 ',\n },\n MR: {\n mask: '## ## ## ##',\n prefix: '+222 ',\n },\n MS: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n MT: {\n mask: '#### ####',\n prefix: '+356 ',\n },\n MU: {\n mask: '#### ####',\n prefix: '+230 ',\n },\n MV: {\n mask: '###-####',\n prefix: '+960 ',\n },\n MW: {\n mask: '#### ## ## ##',\n prefix: '+265 ',\n },\n MX: {\n mask: '### ### ####',\n prefix: '+52 ',\n },\n MY: {\n mask: '###-### ####',\n prefix: '+60 ',\n },\n MZ: {\n mask: '## ### ####',\n prefix: '+258 ',\n },\n NA: {\n mask: '### ### ####',\n prefix: '+264 ',\n },\n NC: {\n mask: '##.##.##',\n prefix: '+687 ',\n },\n NE: {\n mask: '## ## ## ##',\n prefix: '+227 ',\n },\n NF: {\n mask: '# #####',\n prefix: '+672 ',\n },\n NG: {\n mask: '#### ### ####',\n prefix: '+234 ',\n },\n NI: {\n mask: '#### ####',\n prefix: '+505 ',\n },\n NL: {\n mask: '## ########',\n prefix: '+31 ',\n },\n NO: {\n mask: '## ## ## ##',\n prefix: '+47 ',\n },\n NP: {\n mask: '###-#######',\n prefix: '+977 ',\n },\n NR: {\n mask: '### ####',\n prefix: '+674 ',\n },\n NU: {\n mask: '### ####',\n prefix: '+683 ',\n },\n NZ: {\n mask: '### ### ####',\n prefix: '+64 ',\n },\n OM: {\n mask: '#### ####',\n prefix: '+968 ',\n },\n PA: {\n mask: '####-####',\n prefix: '+507 ',\n },\n PE: {\n mask: '### ### ###',\n prefix: '+51 ',\n },\n PF: {\n mask: '## ## ## ##',\n prefix: '+689 ',\n },\n PG: {\n mask: '#### ####',\n prefix: '+675 ',\n },\n PH: {\n mask: '#### ### ####',\n prefix: '+63 ',\n },\n PK: {\n mask: '#### #######',\n prefix: '+92 ',\n },\n PL: {\n mask: '### ### ###',\n prefix: '+48 ',\n },\n PM: {\n mask: '### ## ##',\n prefix: '+508 ',\n },\n PR: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n PS: {\n mask: '#### ### ###',\n prefix: '+970 ',\n },\n PT: {\n mask: '### ### ###',\n prefix: '+351 ',\n },\n PW: {\n mask: '### ####',\n prefix: '+680 ',\n },\n PY: {\n mask: '#### ######',\n prefix: '+595 ',\n },\n QA: {\n mask: '#### ####',\n prefix: '+974 ',\n },\n RE: {\n mask: '#### ## ## ##',\n prefix: '+262 ',\n },\n RO: {\n mask: '#### ### ###',\n prefix: '+40 ',\n },\n RS: {\n mask: '### #######',\n prefix: '+381 ',\n },\n RU: {\n mask: '# (###) ###-##-##',\n prefix: '+7 ',\n },\n RW: {\n mask: '#### ### ###',\n prefix: '+250 ',\n },\n SA: {\n mask: '### ### ####',\n prefix: '+966 ',\n },\n SB: {\n mask: '## #####',\n prefix: '+677 ',\n },\n SC: {\n mask: '# ### ###',\n prefix: '+248 ',\n },\n SD: {\n mask: '### ### ####',\n prefix: '+249 ',\n },\n SE: {\n mask: '###-### ## ##',\n prefix: '+46 ',\n },\n SG: {\n mask: '#### ####',\n prefix: '+65 ',\n },\n SH: {\n mask: '#####',\n prefix: '+290 ',\n },\n SI: {\n mask: '### ### ###',\n prefix: '+386 ',\n },\n SJ: {\n mask: '## ## ## ##',\n prefix: '+47 ',\n },\n SK: {\n mask: '#### ### ###',\n prefix: '+421 ',\n },\n SL: {\n mask: '(###) ######',\n prefix: '+232 ',\n },\n SM: {\n mask: '#### ######',\n prefix: '+378 ',\n },\n SN: {\n mask: '## ### ## ##',\n prefix: '+221 ',\n },\n SO: {\n mask: '# #######',\n prefix: '+252 ',\n },\n SR: {\n mask: '###-####',\n prefix: '+597 ',\n },\n SS: {\n mask: '#### ### ###',\n prefix: '+211 ',\n },\n ST: {\n mask: '### ####',\n prefix: '+239 ',\n },\n SV: {\n mask: '#### ####',\n prefix: '+503 ',\n },\n SX: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n SY: {\n mask: '#### ### ###',\n prefix: '+963 ',\n },\n SZ: {\n mask: '#### ####',\n prefix: '+268 ',\n },\n TA: {\n mask: '####',\n prefix: '+290 ',\n },\n TC: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n TD: {\n mask: '## ## ## ##',\n prefix: '+235 ',\n },\n TG: {\n mask: '## ## ## ##',\n prefix: '+228 ',\n },\n TH: {\n mask: '### ### ####',\n prefix: '+66 ',\n },\n TJ: {\n mask: '## ### ####',\n prefix: '+992 ',\n },\n TK: {\n mask: '####',\n prefix: '+690 ',\n },\n TL: {\n mask: '#### ####',\n prefix: '+670 ',\n },\n TM: {\n mask: '# ## ######',\n prefix: '+993 ',\n },\n TN: {\n mask: '## ### ###',\n prefix: '+216 ',\n },\n TO: {\n mask: '### ####',\n prefix: '+676 ',\n },\n TR: {\n mask: '#### ### ## ##',\n prefix: '+90 ',\n },\n TT: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n TV: {\n mask: '## ####',\n prefix: '+688 ',\n },\n TW: {\n mask: '#### ### ###',\n prefix: '+886 ',\n },\n TZ: {\n mask: '#### ### ###',\n prefix: '+255 ',\n },\n UA: {\n mask: '### ### ####',\n prefix: '+380 ',\n },\n UG: {\n mask: '#### ######',\n prefix: '+256 ',\n },\n US: {\n mask: '(###) ###-####',\n prefix: '',\n },\n UY: {\n mask: '### ### ###',\n prefix: '+598 ',\n },\n UZ: {\n mask: '## ### ## ##',\n prefix: '+998 ',\n },\n VA: {\n mask: '### ### ####',\n prefix: '+39 ',\n },\n VC: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n VE: {\n mask: '####-#######',\n prefix: '+58 ',\n },\n VG: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n VI: {\n mask: '(###) ###-####',\n prefix: '+1 ',\n },\n VN: {\n mask: '#### #### ###',\n prefix: '+84 ',\n },\n VU: {\n mask: '### ####',\n prefix: '+678 ',\n },\n WF: {\n mask: '## ## ##',\n prefix: '+681 ',\n },\n WS: {\n mask: '## #####',\n prefix: '+685 ',\n },\n XK: {\n mask: '### ### ###',\n prefix: '+383 ',\n },\n YE: {\n mask: '#### ### ###',\n prefix: '+967 ',\n },\n YT: {\n mask: '#### ## ## ##',\n prefix: '+262 ',\n },\n ZA: {\n mask: '### ### ####',\n prefix: '+27 ',\n },\n ZM: {\n mask: '### #######',\n prefix: '+260 ',\n },\n ZW: {\n mask: '### ### ####',\n prefix: '+263 ',\n },\n};\n","import { IFormatterValueObject } from '../q2-input-types';\nimport formatValue from './generic';\nimport { phoneNumberFormats } from './phone-number-formats';\n\nexport default function formatPhoneNumber(value: string, isoCode: string = 'US'): IFormatterValueObject {\n const { mask, prefix } = phoneNumberFormats[isoCode] || phoneNumberFormats.US;\n\n const options = {\n prefix,\n };\n\n // Strip non-digit characters so pasting mixed text (e.g. \"abc123\") behaves\n // the same as typing digits one-by-one, where alpha characters are blocked.\n const val = (value || '').replace(/[^0-9]/g, '');\n // Brazil need edge case handle, mobile: (xx) xxxxx-xxxx, land phone: (xx) xxxx-xxxx\n if (isoCode === 'BR' && val.length === 11) {\n return formatValue(val, '(##) #####-####', options);\n } else {\n return formatValue(val, mask, options);\n }\n}\n","import formatValue from './generic';\n\nexport default function formatSSN(value: string) {\n return formatValue(value, '###-##-####');\n}\n","import formatValue from './generic';\n\nexport default function formatTIN(value: string) {\n return formatValue(value, '##-#######');\n}\n","import formatValue from './generic';\n\nexport default function formatAlphanumeric(value: string) {\n const val = (value || '').replace(/[^\\da-zA-Z]/g, '');\n return formatValue(val);\n}\n","import formatValue from './generic';\n\nexport default function formatAlpha(value: string, modifier?: string) {\n let val = value || '';\n\n if (modifier === 'spaced') {\n val = val.replace(/[^a-zA-Z ]/g, '');\n } else {\n val = val.replace(/[^a-zA-Z]/g, '');\n }\n\n return formatValue(val);\n}\n","import formatNumber from './number';\nimport formatValue from './generic';\nimport { INumberInputFormatOptions } from '../q2-input-types';\n\nfunction getNumberFormat(formatOptions: string): INumberInputFormatOptions | undefined {\n const numberFormat: INumberInputFormatOptions = {\n prefix: '',\n suffix: '',\n decimals: 0,\n decimalSeparator: '.',\n thousandsSeparator: '',\n allowDecimal: false,\n allowNegative: true,\n };\n const formatParts = formatOptions.split('-');\n\n // handle deprecated formats\n if (formatParts[0] === 'delimited') {\n // `delimited` - to be replaced by `integer-delimited`\n numberFormat.thousandsSeparator = ',';\n } else if (formatParts[0].match(/^[0-9]+dec$/)) {\n // `Ndec` - to be replaced by `Ndecimal`\n numberFormat.decimals = Number(formatParts[0].replace('dec', ''));\n numberFormat.allowDecimal = true;\n numberFormat.thousandsSeparator = ',';\n } else {\n // determine number type\n if (formatParts[0].includes('decimal')) {\n numberFormat.decimals = Number(formatParts[0].replace('decimal', ''));\n numberFormat.allowDecimal = true;\n } else if (formatParts[0] !== 'integer') {\n // Ignore any formats that don't start with Ndecimal or integer\n return;\n }\n\n // determine if negative numbers are allowed\n if (formatParts.includes('positive')) {\n numberFormat.allowNegative = false;\n }\n\n // determine if number is delimited\n if (formatParts.includes('delimited')) {\n numberFormat.thousandsSeparator = ',';\n }\n }\n\n return numberFormat;\n}\n\nfunction formatNumeric(value: string = '', modifier: string = '', explicit: boolean = false) {\n const numberFormat = getNumberFormat(modifier);\n\n if (!numberFormat) {\n const val = (value || '').replace(/[^\\d.,-]/g, '');\n return formatValue(val);\n }\n\n return formatNumber(value, numberFormat, explicit);\n}\n\nexport function formatPercentage(value: string = '', modifier: string = '', explicit: boolean = false) {\n const numberFormat = getNumberFormat(modifier);\n\n if (!numberFormat) {\n const val = (value || '').replace(/[^\\d.,-]/g, '');\n return formatValue(val, undefined, { suffix: '%' });\n }\n\n numberFormat.suffix = '%';\n\n return formatNumber(value, numberFormat, explicit);\n}\n\nexport default formatNumeric;\n","import formatValue from './generic';\nimport formatAlphanumeric from './alphanumeric';\n\nexport const postalCodeFormats = {\n AF: '####',\n AL: '####',\n DZ: '#####',\n AC: 'ASCN 1ZZ',\n AD: 'AD###', // pre\n AR: '####',\n 'AR+': '@####@@@',\n AI: 'AI-2640',\n AM: '####',\n AS: '#####',\n 'AS+4': '#####-####',\n AU: '####',\n AT: '####',\n AZ: 'AZ ####', // pre\n BH: '###?',\n BD: '####',\n BB: 'BB#####', // pre\n BY: '######',\n BE: '####',\n BM: '@@ **',\n BT: '#####',\n BA: '######',\n BR: '#####',\n 'BR+3': '#####-###',\n VG: 'VG####', // pre\n BN: '@@####',\n BG: '####',\n KH: '#####',\n KY: 'KY#-####', // pre\n CA: '@#@ #@#',\n CL: '###-####',\n CN: '######',\n CX: '####',\n CC: '####',\n CO: '######',\n CR: '#####',\n 'CR+4': '#####-####',\n CV: '####',\n HR: '#####',\n CU: '#####',\n CY: '####',\n CZ: '### ##',\n DK: '####',\n DO: '#####',\n EC: '######',\n SV: '####',\n EG: '#####',\n EE: '#####',\n ET: '####',\n FK: 'FIQQ 1ZZ',\n FO: '###',\n FI: '#####',\n FR: '#####',\n GF: '973##', // pre?\n PF: '987##', // pre?\n GI: 'GX11 1AA',\n GE: '####',\n DE: '#####',\n GR: '### ##',\n GL: '####',\n GP: '971##', // pre?\n GU: '#####',\n 'GU+4': '#####-####',\n GT: '#####',\n GG: 'GY#? #@@',\n GN: '###',\n GS: 'SIQQ 1ZZ',\n GW: '####',\n HT: '####',\n HN: '@@####',\n 'HN-': '#####',\n HU: '####',\n IS: '###',\n IN: '### ###',\n ID: '#####',\n IE: '*** ****',\n IR: '##########',\n IQ: '#####',\n IM: 'IM#? #@@', // pre\n IL: '#######',\n IT: '#####',\n JM: '##',\n JP: '###-####',\n JE: 'JE#? #@@', // pre\n JO: '#####',\n KZ: '######',\n KE: '#####',\n KR: '#####',\n KN: 'KN####',\n XK: '#####',\n KW: '#####',\n KG: '######',\n LA: '#####',\n LV: 'LV-####', // pre\n LB: '####? ????', // also 00000\n LS: '###',\n LR: '####',\n LI: '####',\n LT: '#####', // pre-\n LU: '####',\n MK: '####',\n MG: '###',\n MY: '#####',\n MV: '#####',\n MT: '@@@ ####',\n MH: '#####',\n 'MH+4': '#####-####',\n MU: '#####',\n MQ: '972##', // pre?\n MW: '######',\n YT: '976##', // pre?\n MX: '#####',\n FM: '#####',\n 'FM+4': '#####-####',\n MD: '####', // pre\n MC: '980##', // pre?\n MN: '#####',\n ME: '#####',\n MA: '#####',\n MZ: '####',\n MM: '#####',\n NA: '#####',\n NP: '#####',\n NC: '988##', // pre?\n NZ: '####',\n NI: '#####',\n NE: '####',\n NG: '######',\n NF: '####',\n MP: '#####',\n NO: '####',\n OM: '###',\n PK: '#####',\n PW: '#####',\n 'PW+4': '#####-####',\n PS: '###',\n PA: '####',\n PG: '###',\n PY: '####',\n PE: '#####',\n 'PE+': '####', // pre\n PH: '####',\n PL: '##-###',\n PT: '####',\n 'PT+3': '####-###',\n PR: '#####',\n 'PR+4': '#####-####',\n RE: '974##', // pre?\n PM: '975##',\n PN: 'PCRN 1ZZ',\n RO: '######',\n RU: '######',\n LC: 'LC## ###', // pre\n VC: '####', // pre\n WS: '####', // pre\n SM: '4879#', // pre?\n SA: '#####',\n 'SA+4': '#####-####',\n SN: '#####',\n RS: '#####',\n SG: '######',\n SH: '@@@@ 1ZZ',\n SK: '### ##',\n SI: '####', // pre?\n SO: '@@ #####',\n ZA: '####',\n ES: '#####',\n LK: '#####',\n SD: '#####',\n SZ: '@###',\n SE: '### ##',\n CH: '####',\n SJ: '####',\n TW: '###',\n 'TW+2': '###-##?',\n TJ: '######',\n TZ: '#####',\n TH: '#####',\n TT: '######',\n TN: '####',\n TR: '#####',\n TM: '######',\n UA: '#####',\n UY: '#####',\n VI: '#####',\n 'VI+4': '#####-####',\n UZ: '######',\n VE: '####',\n 'VE-': '####-@',\n VN: '#####?',\n YU: '#####',\n WF: '986##', // pre?\n ZM: '#####',\n US: '#####',\n 'US+4': '#####-####',\n};\nexport default function formatPostalCode(value: string, modifier: string = 'US') {\n const mask = postalCodeFormats[modifier];\n\n if (!mask) {\n return formatAlphanumeric(value);\n }\n\n return formatValue(value, mask);\n}\n","import formatValue from './generic';\n\nexport const dateFormats = {\n 'MM/DD/YYYY': '##/##/####',\n 'M/D/YYYY': '#?/#?/####',\n 'MM/DD/YY': '##/##/##',\n 'M/D/YY': '#?/#?/##',\n 'MM/YY': '##/##',\n 'M/YY': '#?/##',\n 'DD/MM/YYYY': '##/##/####',\n 'D/M/YYYY': '#?/#?/####',\n 'DD/MM/YY': '##/##/##',\n 'D/M/YY': '#?/#?/##',\n 'MM-DD-YYYY': '##-##-####',\n 'M-D-YYYY': '#?-#?-####',\n 'MM-DD-YY': '##-##-##',\n 'M-D-YY': '#?-#?-##',\n 'MM-YY': '##-##',\n 'M-YY': '#?-##',\n 'DD-MM-YYYY': '##-##-####',\n 'D-M-YYYY': '#?-#?-####',\n 'DD-MM-YY': '##-##-##',\n 'D-M-YY': '#?-#?-##',\n};\n\nexport default function formatDate(value: string, format: string = 'MM/DD/YYYY') {\n const mask = dateFormats[format?.toUpperCase()] || dateFormats['MM/DD/YYYY'];\n\n const formattedValueObject = formatValue(value, mask);\n\n return {\n ...formattedValueObject,\n value: formattedValueObject.formattedValue,\n };\n}\n","import formatValue from './generic';\nimport { IFormatterValueObject } from '../q2-input-types';\n\ninterface FormattedCreditCardObject extends IFormatterValueObject {\n type: string;\n leftIcon: string;\n leftIconMuted: boolean;\n}\n\ntype Formatter = (value: string) => FormattedCreditCardObject;\n\nfunction format(value: string): FormattedCreditCardObject {\n // have a initial generic mask which then converts to specific mask\n const detectedType = formatCreditCard.detectCreditCardTypeFromValue(value);\n const formattedValueObject = creditCardFormatters[detectedType](value);\n\n if (value.length < 2 && detectedType === 'unknown') {\n formattedValueObject.leftIcon = 'card';\n }\n return formattedValueObject;\n}\n\nconst unknownFormatter: Formatter = function unknownFn(value) {\n const valueObject = formatValue(value, '#### #### #### ####');\n\n return {\n ...valueObject,\n type: 'unknown',\n leftIcon: 'card-unknown',\n leftIconMuted: value.length < 16,\n };\n};\n\nconst amexFormatter: Formatter = function amexFn(value) {\n const valueObject = formatValue(value, '#### ###### #####');\n\n return {\n ...valueObject,\n type: 'amex',\n leftIcon: 'card-amex-color',\n leftIconMuted: value.length < 15,\n };\n};\n\nconst discoverFormatter: Formatter = function discoverFn(value) {\n const valueObject = formatValue(value, '#### #### #### ####');\n\n return {\n ...valueObject,\n type: 'discover',\n leftIcon: 'card-discover-color',\n leftIconMuted: value.length < 16,\n };\n};\n\nconst masterCardFormatter: Formatter = function masterCardFn(value) {\n const valueObject = formatValue(value, '#### #### #### ####');\n\n return {\n ...valueObject,\n type: 'masterCard',\n leftIcon: 'card-mastercard-color',\n leftIconMuted: value.length < 16,\n };\n};\n\nconst visaFormatter: Formatter = function visaFn(value) {\n const valueObject = formatValue(value, '#### #### #### ####');\n\n return {\n ...valueObject,\n type: 'visa',\n leftIcon: 'card-visa-color',\n leftIconMuted: value.length < 16,\n };\n};\n\nconst dinersClubInternationalFormatter: Formatter = function dinersClub(value) {\n const valueObject = formatValue(value, '#### ###### ####');\n\n return {\n ...valueObject,\n type: 'dinersClub',\n leftIcon: 'card-dinersclub-color',\n leftIconMuted: value.length < 14,\n };\n};\n\nconst creditCardFormatters = {\n discover: discoverFormatter,\n amex: amexFormatter,\n masterCard: masterCardFormatter,\n visa: visaFormatter,\n dinersClub: dinersClubInternationalFormatter,\n unknown: unknownFormatter,\n};\n\n/* tslint:disable:cyclomatic-complexity */\nfunction detectCreditCardTypeFromValue(value: string): string {\n // use value and some algorithm from the internet to detect and return card type based on string\n // return string 'unknown' if algorithm cannot detect or returns a type that is not one of our 5 supported types\n const firstInt = parseInt(value.charAt(0));\n const secondInt = parseInt(value.charAt(1));\n\n switch (firstInt) {\n case 2:\n if (secondInt > 1 && secondInt < 8) {\n if (value.length >= 4) {\n const firstfour = parseInt(value.substr(0, 4));\n if (firstfour >= 2221 && firstfour < 2721) {\n return 'masterCard';\n }\n } else {\n return 'masterCard';\n }\n }\n break;\n case 3:\n if (secondInt === 4 || secondInt === 7) {\n return 'amex';\n }\n if (secondInt === 0) {\n if (value.length > 2) {\n const thirdInt = parseInt(value.charAt(2));\n if (thirdInt < 6 || thirdInt === 9) {\n return 'dinersClub';\n }\n } else {\n return 'dinersClub';\n }\n }\n if (secondInt === 6 || secondInt === 8 || secondInt === 9) {\n return 'dinersClub';\n }\n break;\n case 4:\n return 'visa';\n case 5:\n if (secondInt > 0 && secondInt < 6) {\n return 'masterCard';\n }\n break;\n case 6:\n if (secondInt === 0) {\n if (value.length > 3) {\n const firstfour = value.substr(0, 4);\n if (firstfour === '6011') {\n return 'discover';\n }\n } else {\n return 'discover';\n }\n }\n if (secondInt === 4) {\n if (value.length > 2) {\n const firstthree = parseInt(value.substr(0, 3));\n if (firstthree > 643) {\n return 'discover';\n }\n } else {\n return 'discover';\n }\n }\n if (secondInt === 5) {\n return 'discover';\n }\n if (secondInt === 2) {\n if (value.length > 5) {\n const firstsix = parseInt(value.substr(0, 6));\n if (firstsix >= 622126 && firstsix <= 622925) {\n return 'discover';\n }\n } else {\n return 'discover';\n }\n }\n break;\n default:\n return 'unknown';\n }\n return 'unknown';\n}\n/* tslint:enable:cyclomatic-complexity */\n\nconst formatCreditCard = {\n detectCreditCardTypeFromValue,\n format,\n amexFormatter,\n dinersClubInternationalFormatter,\n discoverFormatter,\n masterCardFormatter,\n visaFormatter,\n unknownFormatter,\n};\n\nexport default formatCreditCard;\n","import formatValue from './generic';\n\nexport default function formatCIF(value: string) {\n return formatValue(value, '###########');\n}\n","import formatValue from './generic';\n\nexport default function formatRoutingNumber(value: string) {\n return formatValue(value, '#########');\n}\n","import formatValue from './generic';\n\nexport default function formatSwift(value: string) {\n return formatValue(value, '***********');\n}\n","import formatValue from './generic';\n\nexport default function formatIBAN(value: string) {\n return formatValue(value, '**********************************');\n}\n","import formatValue from './generic';\n\nexport default function formatCLABE(value: string) {\n return formatValue(value, '##################');\n}\n","@import '../../styles/host';\n@import '../../styles/functions';\n\n:host {\n --comp-default-input-margin: #{var-list(var-prefixer(input-margin-top), --app-scale-5x, 25px) 0\n var-list(var-prefixer(input-margin-bottom), --app-scale-5x, 25px)};\n display: block;\n margin: var-list(--tct-input-margin, --comp-default-input-margin);\n font-size: var-list(var-prefixer(input-font-size), --app-font-size, inherit);\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.field-container,\n.input-container {\n position: relative;\n}\n.field-container {\n --comp-input-tween: #{var-list(var-prefixer(input-tween), --tct-tween-2, --app-tween-2, unquote('0.4s ease'))};\n\n &.is-small {\n .btn-clear {\n --tct-btn-icon-width: 20px;\n --tct-icon-size: 17px;\n }\n }\n}\n\n.input-label {\n --comp-label-padding: #{var-list(\n --tct-input-label-padding,\n unquote(\n '0 #{var-list(var-prefixer(input-label-padding-right), 0)} 0 #{var-list(var-prefixer(input-label-padding-left), 0)}'\n )\n )};\n display: block;\n padding: var(--comp-label-padding);\n color: var-list(var-prefixer(input-label-font-color), inherit);\n font-size: var-list(var-prefixer(input-label-font-size), inherit);\n font-weight: var-list(var-prefixer(input-label-font-weight), 600);\n text-transform: var-list(var-prefixer(input-label-text-transform), none);\n letter-spacing: var-list(var-prefixer(input-label-letter-spacing), inherit);\n transition: color var(--comp-input-tween);\n}\n\n.optional-tag {\n --comp-label-optional-margin: #{var-list(\n --tct-input-label-optional-margin,\n unquote(\n '0 0 0 #{var-list(var-prefixer(input-label-optional-margin-left), --tct-scale-1, --app-scale-1x, 5px)}'\n )\n )};\n margin: var(--comp-label-optional-margin);\n color: var-list(\n var-prefixer(input-label-optional-font-color),\n --t-textA,\n --t-a11y-gray-color,\n rgba(77, 77, 77, 0.77)\n );\n font-size: var-list(var-prefixer(input-label-optional-font-size), --app-font-size-small, 12px);\n font-weight: var-list(var-prefixer(input-label-optional-font-weight), 400);\n line-height: 1em;\n}\n\n.count-tag {\n color: var-list(--tct-input-count-font-color, --t-textA, --t-a11y-gray-color, rgba(77, 77, 77, 0.77));\n font-size: var-list(--tct-input-count-font-size, --app-font-size-small, 12px);\n font-weight: var-list(--tct-input-count-font-weight, 400);\n text-align: right;\n width: var(--tct-input-count-width, auto);\n}\n\n.label-wrapper {\n --comp-label-margin: #{var-list(\n --tct-input-label-margin,\n unquote(\n '#{var-list(var-prefixer(input-label-margin-top), 0)} 0 #{var-list(var-prefixer(input-label-margin-bottom), --tct-scale-1, --app-scale-1x, 5px)}'\n )\n )};\n display: flex;\n gap: var-list(--tct-input-label-gap, --app-scale-2x, 10px);\n justify-content: space-between;\n align-items: end;\n margin: var(--comp-label-margin);\n line-height: var-list(var-prefixer(input-label-line-height), inherit);\n\n &:has(label.sr) {\n margin: 0;\n }\n}\n\n.input-container {\n --comp-input-background: #{var-list(--tct-input-background, var-prefixer(input-bg), --t-gray-14, #fcfcfd)};\n --comp-input-backdrop-filter: #{var-list(--tct-input-backdrop-filter, none)};\n --comp-input-horizontal-gap: #{var-list(var-prefixer(input-horizontal-gap), 0)};\n --comp-input-border-top-left-radius: #{var-list(\n var-prefixer(input-border-top-left-radius),\n --tct-border-radius-1,\n --app-border-radius-1,\n 4px\n )};\n --comp-input-border-top-right-radius: #{var-list(\n var-prefixer(input-border-top-right-radius),\n --tct-border-radius-1,\n --app-border-radius-1,\n 4px\n )};\n --comp-input-border-bottom-right-radius: #{var-list(\n var-prefixer(input-border-bottom-right-radius),\n --tct-border-radius-1,\n --app-border-radius-1,\n 4px\n )};\n --comp-input-border-bottom-left-radius: #{var-list(\n var-prefixer(input-border-bottom-left-radius),\n --tct-border-radius-1,\n --app-border-radius-1,\n 4px\n )};\n --comp-calc-input-border-top-left-radius: calc(\n var(--comp-input-border-top-left-radius) - #{var-list(var-prefixer(input-border-top-width), 1px)} - #{var-list(\n var-prefixer(input-border-left-width),\n 1px\n )}\n );\n --comp-calc-input-border-top-right-radius: calc(\n var(--comp-input-border-top-right-radius) - #{var-list(var-prefixer(input-border-top-width), 1px)} - #{var-list(\n var-prefixer(input-border-right-width),\n 1px\n )}\n );\n --comp-calc-input-border-bottom-left-radius: calc(\n var(--comp-input-border-bottom-left-radius) - #{var-list(var-prefixer(input-border-bottom-width), 1px)} - #{var-list(\n var-prefixer(input-border-left-width),\n 1px\n )}\n );\n --comp-calc-input-border-bottom-right-radius: calc(\n var(--comp-input-border-bottom-right-radius) - #{var-list(var-prefixer(input-border-bottom-width), 1px)} - #{var-list(\n var-prefixer(input-border-right-width),\n 1px\n )}\n );\n --comp-input-border-radius: var(--comp-input-border-top-left-radius) var(--comp-input-border-top-right-radius)\n var(--comp-input-border-bottom-right-radius) var(--comp-input-border-bottom-left-radius);\n --comp-input-border-width: var(--tct-input-border-top-width, 1px) var(--tct-input-border-right-width, 1px)\n var(--tct-input-border-bottom-width, 1px) var(--tct-input-border-left-width, 1px);\n --comp-input-border-color: #{var-list(var-prefixer(input-border-color), --t-a11y-gray-color-AA, #404040)};\n --comp-input-prefix-clearance: calc(3 * var(--tct-input-prefix-font-size, 14px) + var(--tct-scale-1, 5px));\n --comp-input-icon-clearance: 34px;\n --comp-input-min-height: #{var-list(var-prefixer(input-min-height), 44px)};\n --comp-input-max-height: #{var-list(var-prefixer(input-max-height))};\n\n --comp-input-hover-ring-color: #{var-list(var-prefixer(input-hover-ring-color))};\n --comp-input-hover-ring: #{0 0 0 2px var(--t-base), 0 0 0 4px var(--comp-input-hover-ring-color),\n var-list(var-prefixer(input-hover-box-shadow), unquote('0 0 transparent'))};\n\n background: var(--comp-input-background);\n backdrop-filter: var(--comp-input-backdrop-filter);\n display: flex;\n align-items: center;\n gap: var-list(--tct-input-container-gap, --app-scale-2x, 10px);\n padding-inline: var-list(--tct-input-container-padding-inline);\n border-width: var(--comp-input-border-width);\n border-style: solid;\n border-color: var(--comp-input-border-color);\n border-radius: var(--comp-input-border-radius);\n box-shadow: var-list(var-prefixer(input-box-shadow), none);\n transition:\n background var(--comp-input-tween),\n backdrop-filter var(--comp-input-tween),\n border-width var(--comp-input-tween),\n border-color var(--comp-input-tween),\n box-shadow var(--comp-input-tween);\n\n :host([disabled]:not([disabled='false'])) & {\n cursor: not-allowed;\n opacity: var-list(var-prefixer(input-disabled-opacity), --tct-disabled-opacity, --app-disabled-opacity, 0.4);\n backdrop-filter: var-list(--tct-input-disabled-backdrop-filter, --comp-input-backdrop-filter);\n }\n\n .has-error & {\n border-color: var-list(--tct-input-error-border-color, --const-stoplight-alert, #d20a0a);\n backdrop-filter: var-list(--tct-input-error-backdrop-filter, --comp-input-backdrop-filter);\n background: var-list(--tct-input-error-background, --comp-input-background);\n box-shadow: var-list(--tct-input-error-box-shadow, --comp-input-hover-ring);\n }\n\n &:hover {\n border-color: var-list(--tct-input-hover-border-color, --comp-input-border-color);\n background: var-list(--tct-input-hover-background, --comp-input-background);\n backdrop-filter: var-list(--tct-input-hover-backdrop-filter, --comp-input-backdrop-filter);\n box-shadow: var-list(--tct-input-hover-box-shadow, --comp-input-hover-ring);\n\n .has-error & {\n border-color: var-list(\n --tct-input-error-hover-border-color,\n --tct-input-error-border-color,\n --const-stoplight-alert,\n #d20a0a\n );\n backdrop-filter: var-list(\n --tct-input-error-hover-backdrop-filter,\n --tct-input-error-backdrop-filter,\n --tct-input-hover-backdrop-filter,\n --comp-input-backdrop-filter\n );\n background: var-list(\n --tct-input-error-hover-background,\n --tct-input-error-background,\n --comp-input-background\n );\n box-shadow: var-list(\n --tct-input-error-hover-box-shadow,\n --tct-input-error-box-shadow,\n --comp-input-hover-ring\n );\n }\n }\n\n .has-focus & {\n border-color: var-list(var-prefixer(input-focus-border-color), --comp-input-border-color);\n background: var-list(--tct-input-focus-background, --comp-input-background);\n backdrop-filter: var-list(--tct-input-focus-backdrop-filter, --comp-input-backdrop-filter);\n box-shadow: var-list(--tct-input-focus-box-shadow, --const-double-focus-ring);\n }\n\n .has-focus.has-error &,\n .has-focus.has-error &:hover {\n border-color: var-list(\n --tct-input-error-focus-border-color,\n --tct-input-error-border-color,\n --const-stoplight-alert,\n #d20a0a\n );\n backdrop-filter: var-list(\n --tct-input-error-focus-backdrop-filter,\n --tct-input-error-backdrop-filter,\n --tct-input-focus-backdrop-filter,\n --comp-input-backdrop-filter\n );\n background: var-list(--tct-input-error-focus-background, --tct-input-error-background, --comp-input-background);\n box-shadow: var-list(\n --tct-input-error-focus-box-shadow,\n --tct-input-error-box-shadow,\n --const-double-focus-ring\n );\n }\n\n &:has(.input-field:is(:-webkit-autofill, :autofill)) {\n background: var(--tct-input-autofill-background, #faffbc);\n color: var-list(--tct-input-autofill-font-color, --t-text, inherit);\n .input-field {\n box-shadow: 0 0 0 1000px var(--tct-input-autofill-background, #faffbc) inset;\n color: var-list(--tct-input-autofill-font-color, --t-text, inherit);\n -webkit-text-fill-color: var-list(--tct-input-autofill-font-color, --t-text, inherit);\n }\n }\n}\n\n.input-field {\n flex: 1;\n border: 0;\n -webkit-appearance: none;\n appearance: none;\n box-sizing: border-box;\n min-height: var(--comp-input-min-height);\n max-height: var(--comp-input-max-height);\n overflow-y: hidden;\n height: var-list(var-prefixer(input-height), 44px);\n width: 100%;\n padding: var(--tct-input-padding, 0);\n background: transparent;\n color: var-list(var-prefixer(input-font-color), --t-text, inherit);\n display: inline-block;\n text-align: var(--tct-input-align, 'start');\n font-weight: var-list(var-prefixer(input-font-weight), 400);\n letter-spacing: var-list(var-prefixer(input-letter-spacing), inherit);\n\n &:focus {\n outline: none;\n box-shadow: none;\n }\n /* To remove up/down arrow in number field for webkit based browser */\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n /* For Firefox */\n &[type='number'] {\n -moz-appearance: textfield;\n }\n\n &::-ms-reveal,\n &::-ms-clear {\n display: none;\n }\n\n &[type='search'] {\n &::-webkit-search-decoration,\n &::-webkit-search-cancel-button,\n &::-webkit-search-results-button,\n &::-webkit-search-results-decoration {\n display: none;\n }\n }\n\n &[disabled]:not([disabled='false']) {\n cursor: not-allowed;\n }\n\n .right-aligned & {\n text-align: right;\n }\n\n &:is(input) {\n flex: 1;\n }\n\n &:is(button) {\n display: inline-flex;\n align-items: center;\n\n .has-custom-display & {\n height: auto;\n padding: 0;\n }\n\n span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n }\n }\n\n &[readonly]:not([readonly=\"false\"]) {\n pointer-events: none;\n }\n}\n\n.custom-display-container {\n max-width: 100%;\n\n .has-custom-display & {\n --comp-default-padding: var(--app-scale-2x, 10px) var(--app-scale-2x, 10px) var(--app-scale-3x, 15px);\n padding: var-list(var-prefixer(input-padding), --comp-default-padding);\n width: 100%;\n }\n}\n\n.input-field::placeholder,\n.placeholder-text {\n color: var-list(var-prefixer(input-placeholder-font-color), --t-textA, --app-gray-d1, rgba(77, 77, 77, 0.77));\n}\n\n.pseudo-input-container {\n min-width: 0;\n flex: 1;\n}\n\n.input-icons-container-left,\n.input-icons-container-right {\n --tct-btn-icon-hover-background: var(--tct-input-btn-hover-background);\n --tct-btn-hover-background: var(--tct-input-btn-hover-background);\n\n q2-btn q2-icon,\n ::slotted(q2-btn) {\n --tct-icon-stroke-primary: var(--tct-input-btn-icon-stroke-primary);\n --tct-icon-stroke-secondary: var(--tct-input-btn-icon-stroke-secondary);\n }\n\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--comp-input-horizontal-gap);\n\n > div:not(.vertical-separator) {\n min-width: var-list(--tct-input-icon-container-icon-min-width, 44px);\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: var-list(--tct-input-icon-container-font-size, inherit);\n }\n\n &:empty {\n display: var(--tct-input-icon-container-empty-display, block);\n }\n}\n\n.input-icons-container-left {\n padding-left: var(--comp-input-horizontal-gap);\n q2-btn:first-child,\n ::slotted(q2-btn:first-child) {\n --tct-btn-icon-border-radius: var(--comp-calc-input-border-top-left-radius) 0 0\n var(--comp-calc-input-border-bottom-left-radius);\n }\n}\n\n.input-icons-container-right {\n padding-right: var(--comp-input-horizontal-gap);\n --comp-visibility-toggle-padding: 0px #{var-list(--app-scale-2x, 10px)};\n\n q2-btn:last-child,\n ::slotted(q2-btn:last-child) {\n --tct-btn-icon-border-radius: 0 var(--comp-calc-input-border-top-right-radius)\n var(--comp-calc-input-border-bottom-right-radius) 0;\n }\n\n .btn-visibility-toggle {\n --tct-btn-height: var(--comp-input-min-height);\n --tct-btn-padding-inline: #{var-list(--tct-input-visibility-toggle-padding, --app-scale-2x, 10px)};\n --tct-btn-font-weight: #{var-list(--tct-input-visibility-toggle-font-weight, 400)};\n\n color: var-list(--tct-input-visibility-toggle-font-color, --t-primary, #0079c1);\n font-size: var-list(--tct-input-visibility-toggle-font-size, --app-font-size-small, 12px);\n }\n}\n\nq2-icon {\n margin-top: calc(#{var-list(var-prefixer(input-border-top-width), 1px)} / 2);\n margin-bottom: calc(#{var-list(var-prefixer(input-border-bottom-width), 1px)} / 2);\n pointer-events: none;\n color: var-list(var-prefixer(input-icon-stroke-primary), --t-a11y-gray-color, --t-textA, --app-gray, #747474);\n --tct-icon-stroke-primary: #{var-list(\n var-prefixer(input-icon-stroke-primary),\n --t-a11y-gray-color,\n --t-textA,\n --app-gray,\n #747474\n )};\n --tct-icon-stroke-secondary: #{var-list(\n --tct-input-icon-stroke-secondary,\n --t-a11y-gray-color,\n --t-textA,\n --app-gray,\n #747474\n )};\n}\n\n.icon-left-muted {\n opacity: 0.5;\n}\n\n.input-prefix,\n.input-suffix {\n min-height: var(--comp-input-min-height);\n max-height: var(--comp-input-max-height);\n height: var-list(var-prefixer(input-height), 44px);\n font-size: var-list(var-prefixer(input-prefix-font-size), inherit);\n font-weight: var-list(--tct-input-prefix-font-weight, 400);\n color: var-list(var-prefixer(input-prefix-font-color), inherit);\n background: var-list(\n --tct-input-prefix-background,\n var-prefixer(input-prefix-bg),\n --tct-input-background,\n var-prefixer(input-bg),\n var-prefixer(gray-14),\n #f2f2f2\n );\n transition:\n color var(--comp-input-tween),\n background var(--comp-input-tween);\n}\n\n.input-prefix {\n border-top-left-radius: var(--comp-calc-input-border-top-left-radius);\n border-bottom-left-radius: var(--comp-calc-input-border-bottom-left-radius);\n pointer-events: none; /* used to allow iOS voiceover to display keyboard in input TCT-1194 */\n}\n\n.input-suffix {\n border-top-right-radius: var(--comp-calc-input-border-top-right-radius);\n border-bottom-right-radius: var(--comp-calc-input-border-bottom-right-radius);\n}\n\n.icon-error {\n color: var-list(--tct-stoplight-error, --const-stoplight-alert, #d20a0a);\n --tct-icon-stroke-primary: #{var-list(--tct-stoplight-error, --const-stoplight-alert, #d20a0a)};\n}\n\n.messages-container {\n height: 0px;\n overflow: hidden;\n background: var-list(\n --tct-message-background,\n var-prefixer(message-bg),\n var-prefixer(gray-14),\n --tct-gray-l3,\n --app-gray-l3,\n #f2f2f2\n );\n box-shadow: var-list(\n var-prefixer(input-message-box-shadow),\n --tct-box-shadow-1,\n --app-shadow-1,\n unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)')\n );\n transition: height var-list(var-prefixer(input-messages-tween), --tct-tween-1, --app-tween-1, unquote('0.2s ease'));\n margin-top: var-list(--tct-input-messages-margin-top, 2px);\n z-index: var-list(--tct-input-messages-z-index, 5);\n position: absolute;\n width: 100%;\n color: var-list(var-prefixer(input-messages-font-color), inherit);\n\n // Sync up border radius with q2-message\n border-radius: var(--tct-message-border-radius, --app-border-radius-1, inherit);\n}\n\n.has-error label {\n color: var-list(var-prefixer(input-error-label-font-color), var-prefixer(input-label-font-color), inherit);\n}\n\n.has-error:not(.has-focus) .input-prefix,\n.has-error:not(.has-focus) .input-suffix {\n color: var-list(var-prefixer(input-error-prefix-font-color), inherit);\n background: var-list(\n --tct-input-error-prefix-background,\n var-prefixer(input-error-prefix-bg),\n --tct-input-background,\n var-prefixer(input-bg),\n var-prefixer(gray-14),\n --tct-gray-l3,\n --app-gray-l3,\n #f2f2f2\n );\n}\n\n.icon-left {\n width: 26px;\n height: 26px;\n}\n\n.vertical-separator {\n height: calc(var(--comp-input-min-height) - 2px);\n border-right-width: var(--tct-input-prefix-border-width, 1px);\n border-right-style: solid;\n border-right-color: var-list(\n var-prefixer(input-prefix-border-color),\n var-prefixer(input-border-color),\n --t-a11y-gray-color-AA,\n #404040\n );\n}\n","import {\n Component,\n Prop,\n Element,\n State,\n Event,\n EventEmitter,\n h,\n Host,\n Watch,\n Listen,\n Fragment,\n Method,\n} from '@stencil/core';\nimport {\n createGuid,\n getAriaValueFromProp,\n renderLabel,\n loc,\n renderMessages,\n setMessageHeight,\n handleAriaLabel,\n overrideFocus,\n isEventFromElement,\n isMobile,\n hasSlotContent,\n nextPaint,\n} from 'src/utils';\nimport mirrorEmit from '@/utils/mirror-emit';\nimport { IFormatterValueObject, ICursorData, IEventDetail } from './q2-input-types';\nimport formatCurrency from './formatting/currency';\nimport formatPhoneNumber from './formatting/phone';\nimport formatSSN from './formatting/ssn';\nimport formatTIN from './formatting/tin';\nimport formatAlphanumeric from './formatting/alphanumeric';\nimport formatAlpha from './formatting/alpha';\nimport formatNumeric, { formatPercentage } from './formatting/numeric';\nimport formatPostalCode from './formatting/postal';\nimport formatDate from './formatting/date';\nimport formatCreditCard from './formatting/credit-card';\nimport formatCIF from './formatting/cif';\nimport formatRoutingNumber from './formatting/routingnumber';\nimport formatSwift from './formatting/swift';\nimport formatIBAN from './formatting/iban';\nimport formatCLABE from './formatting/clabe';\nimport { Q2Icon } from '../q2-icon/q2-icon';\nimport { Q2Badge } from '../q2-badge/q2-badge';\n\nconst inputTypeMap = {\n text: 'text',\n tel: 'tel',\n number: 'number',\n password: 'text',\n search: 'search',\n url: 'url',\n email: 'email',\n currency: 'text',\n phone: 'tel',\n ssn: 'text',\n alphanumeric: 'text',\n alpha: 'text',\n numeric: 'text',\n percentage: 'text',\n postal: 'text',\n date: 'text',\n 'credit-card': 'text',\n cif: 'text',\n routingnumber: 'text',\n swift: 'text',\n iban: 'text',\n clabe: 'text',\n};\n\nexport type InputType = keyof typeof inputTypeMap;\n\n/**\n * @name Input\n * @category Forms\n * @summary Use for single-line text entry including email, phone, currency, SSN, and password.\n * @slot label - An optional slot to display a custom label.\n * @slot input-left - An optional slot to add a [Button](https://tecton.q2developer.com/design-system/q2-btn) on the left-hand side of the input field.\n * @slot input-right - An optional slot to add a [Button](https://tecton.q2developer.com/design-system/q2-btn) on the right-hand side of the input field.\n * @slot custom-display - An optional slot to display custom content in the input field.\n */\n@Component({ tag: 'q2-input', shadow: true, styleUrl: 'q2-input.scss' })\nexport class Q2Input {\n // #region Own Properties\n\n guid = createGuid();\n inputRef: HTMLInputElement;\n isClickEvent: boolean = false;\n isMobile: boolean = isMobile();\n mutationObserver: MutationObserver;\n resizeObserver: ResizeObserver;\n scheduledAfterRender: (() => void)[] = [];\n textSelectedForDeletion: boolean;\n valueOnFocus: string;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n checkSlotCount: number = 0;\n\n @State()\n formattedValueObject: IFormatterValueObject;\n\n @State()\n hasFocus: boolean;\n\n @State()\n isSmall: boolean = false;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Sets readonly to true on the input without adding the \"read only\" label.\n *\n * Can be used to prevent user input while still presenting the necessary information for assistive technology.\n * @private\n */\n @Prop({ mutable: true })\n _preventEntry: boolean = undefined;\n\n /**\n * Allows for correct semantics of q2-input element when aria-expanded.\n * @private\n * Defaults to undefined\n * Will assign role to combobox when used inside q2-select and q2-calendar.\n */\n @Prop({ mutable: true })\n _role: 'combobox' | undefined = undefined;\n\n @Prop()\n ariaActivedescendant: string;\n\n @Prop()\n ariaControls: string;\n\n @Prop({ reflect: true })\n ariaExpanded: string;\n\n @Prop()\n ariaHaspopup: string;\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n @Prop()\n ariaOwns: string;\n\n /**\n * The `autocapitalize` attribute is an enumerated attribute that controls whether and how text input is automatically capitalized as it is entered/edited by the user.\n *\n * [See MDN for a list of supported values](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize#value).\n * @info\n * This attribute only affects the behavior of input mechanisms like virtual keyboards on mobile devices and voice input.\n */\n @Prop({ reflect: true })\n autocapitalize: string;\n\n /**\n * The HTML autocomplete attribute lets web developers specify what permission (if any) the user agent has to provide automated assistance in filling out form field values,\n * as well as guidance to the browser as to the type of information expected in the field.\n *\n * [See MDN for a list of supported values](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values).\n */\n @Prop({ reflect: true })\n autocomplete: string;\n\n /**\n * A string that indicates whether or not to activate automatic correction while the user is editing this field.\n * @warning\n * This is currently only supported in Safari.\n */\n @Prop({ reflect: true })\n autocorrect: 'on' | 'off';\n\n /**\n * Autofocus is enabled when the property is added to an element. To disable, remove attribute or set it to false.\n * If applied to multiple elements, the first one will receive focus.\n */\n @Prop({ reflect: true })\n autofocus: boolean;\n\n /** The color of the badge when in the active state. The property `badgeValue` must be provided. */\n @Prop({ reflect: true })\n badgeTheme: Q2Badge['theme'];\n\n /** Displays a `q2-badge` element on the right side of the input. */\n @Prop({ reflect: true })\n badgeValue: string;\n\n /** Renders an icon button when the field is non-empty. Pressing the button clears all input from the field. */\n @Prop({ reflect: true })\n clearable: boolean;\n\n /**\n * If provided a value, it sets the `aria-current` attribute on the inner input.\n * [See MDN for more information on aria-current](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current).\n */\n @Prop()\n current: 'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false';\n\n /** Indicates the field cannot be focused or interacted with. */\n @Prop({ reflect: true })\n disabled: boolean = false;\n\n /**\n * Each item in the `errors` array will appear below the input field when the field is focused.\n * @localizable\n */\n @Prop()\n errors: string[];\n\n /**\n * Defines the field's expected input format, and automatically masks user input to conform.\n * Specific types support different modifier options. See the section on Format Modifiers for all available options.\n */\n @Prop({ reflect: true })\n formatModifier: string;\n\n /**\n * Hide's the field's `<label>` element from view.\n * @warning\n * Only use when a visible label is impractical.\n */\n @Prop({ reflect: true, mutable: true })\n hideLabel: boolean;\n\n /**\n * When `true` and the input field has an active validation error, the field shows the error state without displaying associated error messages below the field (from the errors array).\n * Primarily used for dropdown selects and date pickers whose controls appear below the input field (where the error messages, if displayed, would also appear).\n */\n @Prop({ reflect: true })\n hideMessages: boolean;\n\n /**\n * Each item in the `hints` array will appear below the input field when the field is focused.\n * @info\n * The `errors` array takes precedence over the `hints` array. If an input field has both hints and errors, only the errors will display.\n * Once all errors are resolved, the hints display the next time the field is focused.\n * @localizable\n */\n @Prop()\n hints: string[];\n\n /** Shows a left-aligned [q2-icon](https://tecton.q2developer.com/design-system/q2-icon/) within the field. */\n @Prop({ reflect: true })\n iconLeft: Q2Icon['type'];\n\n /** Shows a right-aligned [q2-icon](https://tecton.q2developer.com/design-system/q2-icon/) within the field. */\n @Prop({ reflect: true })\n iconRight: Q2Icon['type'];\n\n /**\n * The label that appears above the field. This is announced by screen readers when the field is focused.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /**\n * When present, it does not allow a value greater than `max` when the user uses the Up/Down arrow keys to change the value.\n * @info\n * Only applicable when `type=\"number\"`.\n */\n @Prop({ reflect: true })\n max: number;\n\n /**\n * Defines the maximum allowed input length in characters. Formatting characters (e.g. `.`, `-`, etc) are included in the `maxlength` comparison.\n * Make sure you account for them when setting the `maxlength` value. Input types that use masks have their own inherent `maxlength`.\n */\n @Prop({ reflect: true, mutable: true })\n maxlength: number;\n\n /**\n * When present, it does not allow a value less than the `min` when the user uses the Up/Down arrow keys to change the value.\n * @info\n * Only applicable when `type=\"number\"`.\n */\n @Prop({ reflect: true })\n min: number;\n\n /** Appends \"(optional)\" to the field label, and sets `aria-required` on the nested input tag to `false`. */\n @Prop({ reflect: true })\n optional: boolean;\n\n /**\n * Applies the value as a RegEx pattern to assess the validity of the input field's value.\n * Check the ValidityState's `patternMismatch` property for the result.\n *\n * **Example:**\n * @snippet\n * <q2-input label=\"My input\" pattern=\"[a-zA-Z0-9]{3,5}\" id=\"myInput\"></q2-input>\n * // enter \"abcdefgh\" in the input field (too many characters)\n * const myInput = document.querySelector('#myInput');\n * console.log(myInput.validity.patternMismatch); // true\n */\n @Prop({ reflect: true, mutable: true })\n pattern: string;\n\n /**\n * Text that appears within the field when it is blurred and empty.\n * Placeholder text disappears when the user focuses on the field and provides input.\n * @info\n * Primarily used for rare cases in which a visible form label is not expected (e.g., search fields).\n * @localizable\n */\n @Prop({ reflect: true })\n placeholder: string;\n\n /** Component will display as a clickable `<button>` styled to be identical to the default `<input>` field. */\n @Prop({ reflect: true })\n pseudo: boolean;\n\n /**\n * Appends \"(read only)\" to the field label, and field becomes unusable, but remains focusable.\n * Takes priority over `optional` if both are `true`.\n */\n @Prop({ reflect: true })\n readonly: boolean;\n\n /**\n * Indicates the element's intended purpose to assistive technology.\n * @deprecated\n */\n @Prop()\n role: string;\n\n /**\n * Shows a character counter above the input field to track the number of characters currently in the field.\n * If `maxlength` is set, `showCount` displays the number of characters in relation the `maxlength` value.\n */\n @Prop({ reflect: true })\n showCount: boolean;\n\n /**\n * Displays a toggle button at the end of the input field which shows or hides the actual value.\n * @info\n * Only applicable when `type` is `text`, `password`, or `ssn`.\n */\n @Prop({ reflect: true })\n showVisibilityToggle: boolean = false;\n\n /**\n * When present, it jumps the value in increments of `step` when the user uses the Up/Down arrow keys to change the value.\n * @info\n * Only applicable when `type=\"number\"`.\n */\n @Prop({ reflect: true })\n step: number;\n\n /**\n * Controls visibility of the value when the type is `text`, `password`, or `ssn`.\n * When the input type is `password`, it will default to `true`, hiding the text.\n */\n @Prop({ reflect: true, mutable: true })\n textHidden: boolean;\n\n /** Specifies the field's expected [input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types), and provides the optimal keyboard on mobile devices. */\n @Prop({ reflect: true })\n type: InputType = 'text';\n\n /**\n * Returns a read-only `ValidityState` object representing the validity states of the element.\n * [See MDN for more information on ValidityState](https://developer.mozilla.org/en-US/docs/Web/API/ValidityState).\n */\n @Prop({ reflect: true, mutable: true })\n validity: ValidityState;\n\n /**\n * The value of the input field.\n * @info\n * The visible value of formatted input fields may not match the element's `value` property.\n * When setting an input's value programmatically (e.g. pre-populating a form), ensure that the supplied value is in a format that can be handled by its consuming logic.\n * `q2-input` does not change its own `value` outside of its default change event handler.\n *\n * In `q2-input` where `type=\"currency\"`\n * - element.value = 1234.56\n * - visible value: $1,234.56\n *\n */\n @Prop({ mutable: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the field loses focus after the value has been changed.\n * @deprecated Use 'tctChange' instead\n * @legacyEvent\n */\n @Event()\n change: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the field value is cleared.\n * Emitted with `{ source: 'input' }` when search text is cleared by keyboard.\n * Emitted with `{ source: 'button' }` when search text is cleared by clicking clear icon.\n * @deprecated Use 'tctClear' instead\n */\n @Event()\n clear: EventEmitter<undefined>;\n\n /**\n * Emitted when the field value is formatted.\n *\n * @deprecated Use 'tctFormatted' instead\n */\n @Event()\n formatted: EventEmitter<IFormatterValueObject>;\n\n /**\n * Emitted when the field value is updated.\n * @deprecated Use 'tctInput' instead\n * @legacyEvent\n */\n @Event()\n input: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the validation is updated.\n * @deprecated Use 'tctInvalid' instead\n * @legacyEvent\n */\n @Event()\n invalid: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the field loses focus after the value has been changed.\n * @legacyEvent\n */\n @Event()\n tctChange: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the field value is cleared.\n * Emitted with `{ source: 'input' }` when search text is cleared by keyboard.\n * Emitted with `{ source: 'button' }` when search text is cleared by clicking clear icon.\n */\n @Event()\n tctClear: EventEmitter<undefined>;\n\n /**\n * Emitted when the field value is formatted.\n */\n @Event()\n tctFormatted: EventEmitter<IFormatterValueObject>;\n\n /**\n * Emitted when the field value is updated.\n * @legacyEvent\n */\n @Event()\n tctInput: EventEmitter<IEventDetail>;\n\n /**\n * Emitted when the validation is updated.\n * @legacyEvent\n */\n @Event()\n tctInvalid: EventEmitter<IEventDetail>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.manageClearableResizeObserver();\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n }\n\n componentWillLoad() {\n if (isNaN(this.maxlength)) {\n this.maxlength = undefined;\n }\n this.formattedValueObject = this.getFormattedValue(this.stringValue, true);\n\n Object.defineProperty(this.hostElement, 'formattedValue', {\n get: () => this.formattedValueObject?.formattedValue ?? '',\n });\n\n handleAriaLabel(this);\n this.updateComboboxAriaLabel();\n if (this.textHidden === undefined) {\n this.textHidden = this.type === 'password';\n }\n\n this.manageClearableResizeObserver(this.clearable);\n }\n\n componentDidLoad() {\n overrideFocus(this.hostElement);\n\n if (!this.pseudo) this.inputField.value = this.formattedValueObject.formattedValue;\n if (!!this.autofocus) this.inputField.focus();\n\n this.initMutationObserver();\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('change')\n onHostElementChange(event: CustomEvent | Event) {\n if (!(event instanceof CustomEvent)) {\n event.stopPropagation();\n return;\n }\n if (event.target === this.hostElement && !this.hostElement.onchange) {\n this.value = event.detail.value;\n }\n }\n\n @Listen('focus')\n onHostElementFocus(event) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.inputField.focus();\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates firing checkValidity on `<input>`, emits `invalid` event if validation failed.\n */\n @Method()\n async checkValidity() {\n this.inputRef.checkValidity();\n return this.validateInput();\n }\n\n /**\n * Emulates clicking the clear button when the input is clearable.\n *\n * @warning\n * Only applicable when the input is clearable.\n *\n * @testOnly\n */\n @Method()\n async clearValue() {\n if (!this.clearable) return;\n this.onClearInput();\n }\n\n /**\n * Emulates focusing the `<input>`, entering the provided value, and emitting an `input` event.\n *\n * This method leaves the focus on the `<input>` and as a result does not trigger the `change` event. If you want\n * to trigger the` change` event, move the focus to another element after calling this method.\n *\n * @testOnly\n */\n @Method()\n setValue(value: string) {\n const { inputField } = this;\n inputField.focus();\n inputField.dispatchEvent(new FocusEvent('focus'));\n inputField.value = value;\n inputField.dispatchEvent(new InputEvent('input'));\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('_role')\n @Watch('label')\n updateComboboxAriaLabel() {\n // Set aria-label directly on host for combobox role\n // (can't use ariaLabel prop as it has deprecated handling that hides the label)\n if (this._role === 'combobox' && this.label) {\n this.hostElement.setAttribute('aria-label', loc(this.label));\n }\n }\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n // Skip deprecated ariaLabel handling for combobox role\n // (combobox sets aria-label directly for accessibility without hiding the visual label)\n if (this._role === 'combobox') return;\n handleAriaLabel(this);\n }\n\n @Watch('clearable')\n manageClearableResizeObserver(clearable?: boolean) {\n if ('ResizeObserver' in window === false) return;\n const isSmallThreshold = 190;\n if (clearable) {\n if (this.resizeObserver) return;\n if (typeof ResizeObserver === 'undefined') return;\n this.resizeObserver = new ResizeObserver(([entry]) => {\n this.isSmall = isSmallThreshold > entry.contentRect.width;\n });\n this.resizeObserver.observe(this.hostElement);\n } else {\n this.isSmall = false;\n this.resizeObserver?.unobserve(this.hostElement);\n this.resizeObserver = null;\n }\n }\n\n @Watch('errors')\n errorsObserver() {\n this.hasFocus && this.scheduledAfterRender.push(() => setMessageHeight(this));\n }\n\n @Watch('formatModifier')\n formatModifierObserver() {\n this.formatAndUpdateValueFromProp();\n }\n\n @Watch('formattedValueObject')\n formattedValueObjectObserver() {\n mirrorEmit(this, ['formatted', 'tctFormatted'], this.formattedValueObject);\n }\n\n @Watch('hints')\n hintsObserver() {\n this.hasFocus && this.scheduledAfterRender.push(() => setMessageHeight(this));\n }\n\n @Watch('type')\n typeObserver() {\n this.formatAndUpdateValueFromProp();\n }\n\n @Watch('value')\n valueObserver() {\n this.formatAndUpdateValueFromProp();\n }\n\n // #endregion\n // #region Local Methods\n\n get ariaAttributes() {\n return {\n ariaActivedescendant: getAriaValueFromProp(this.ariaActivedescendant),\n ariaControls: getAriaValueFromProp(this.ariaControls),\n ariaExpanded: getAriaValueFromProp(this.ariaExpanded, ['true', 'false']),\n ariaHaspopup: getAriaValueFromProp(this.ariaHaspopup, [\n 'true',\n 'false',\n 'menu',\n 'listbox',\n 'tree',\n 'grid',\n 'dialog',\n ]),\n ariaOwns: getAriaValueFromProp(this.ariaOwns),\n };\n }\n\n get canSetSelection(): boolean {\n // email and number type don't support setSelectionRange\n return !['email', 'number'].includes(this.computedType);\n }\n\n get clearClasses(): string[] {\n const classes = ['btn-clear'];\n if (!this.clearable || !(this.inputField?.value || this.value)) {\n classes.push('hidden');\n }\n return classes;\n }\n\n get computedAutocomplete(): string {\n // force off for currency type\n if (this.type === 'currency') return 'transaction-amount';\n return this.autocomplete || 'off';\n }\n\n get computedClassForIconLeft(): string | undefined {\n let className = 'icon-left';\n if (this.formattedValueObject.leftIconMuted) {\n className += ' icon-left-muted';\n }\n return className;\n }\n\n get computedIconLeft(): string | undefined {\n if (this.formattedValueObject.prefix) {\n return;\n }\n\n if (this.type === 'search') {\n return 'search';\n }\n\n if (this.formattedValueObject.leftIcon) {\n return this.formattedValueObject.leftIcon;\n }\n\n return this.iconLeft;\n }\n\n get computedType(): string {\n if (['password', 'text', 'ssn'].includes(this.type) && this.textHidden) {\n return 'password';\n } else {\n return (this.type && inputTypeMap[this.type]) || 'text';\n }\n }\n\n get hasCustomDisplaySlot(): boolean {\n return hasSlotContent(this.hostElement, 'custom-display');\n }\n\n get hasError(): boolean {\n return Array.isArray(this.errors) && this.errors.length > 0;\n }\n\n get hasInputLeftSlot(): boolean {\n return hasSlotContent(this.hostElement, 'input-left');\n }\n\n get hasInputRightSlot(): boolean {\n return hasSlotContent(this.hostElement, 'input-right');\n }\n\n get inputDescribedBy(): string | undefined {\n return this.showMessages ? `${this.inputId}-description` : undefined;\n }\n\n get inputField(): HTMLInputElement {\n return this.hostElement.shadowRoot.querySelector<HTMLInputElement>('.input-field');\n }\n\n get inputId() {\n return `input-guid-${this.guid}`;\n }\n\n get inputMode() {\n const inputModeMap = {\n currency: 'numeric',\n ssn: 'numeric',\n tin: 'numeric',\n numeric: 'decimal',\n percentage: 'decimal',\n date: 'numeric',\n 'credit-card': 'numeric',\n };\n\n return (this.type && inputModeMap[this.type]) || undefined;\n }\n\n get isMaskedType(): boolean {\n const maskedTypes: string[] = [\n 'currency',\n 'phone',\n 'ssn',\n 'tin',\n 'alphanumeric',\n 'alpha',\n 'numeric',\n 'percentage',\n 'postal',\n 'date',\n 'credit-card',\n 'cif',\n 'routingnumber',\n 'swift',\n 'iban',\n 'clabe',\n ];\n\n return maskedTypes.includes(this.type);\n }\n\n get messages(): string[] {\n return (\n (this.errors && this.errors.length > 0 && this.errors) ||\n (this.hints && this.hints.length > 0 && this.hints) ||\n []\n );\n }\n\n get shouldCursorStartAtEnd(): boolean {\n return this.type === 'currency';\n }\n\n get shouldCursorStayAtEnd(): boolean {\n return this.isMobile && this.type === 'currency';\n }\n\n get showIconSeparator(): boolean {\n return this.type === 'credit-card' || !!this.formattedValueObject.prefix;\n }\n\n get showMessages(): boolean {\n return this.messages.length > 0 && !this.hideMessages;\n }\n\n get stringValue(): string {\n const notCoercable = Object.prototype.toString.call(this.value) === '[object Object]';\n return notCoercable ? '' : (this.value && String(this.value)) || '';\n }\n\n get visibilityToggleAriaLabel(): string {\n return `tecton.element.input.toggleAriaLabel.${this.textHidden ? 'show' : 'hide'}`;\n }\n\n get visibilityToggleText(): string {\n return loc(`tecton.element.input.toggle.${this.textHidden ? 'show' : 'hide'}`);\n }\n\n get wrapperClasses() {\n const classNames = ['field-container'];\n if (this.hasError) classNames.push('has-error');\n if (!!this.value) classNames.push('has-value');\n if (this.clearable && !!this.value) classNames.push('has-clear');\n if (this.hasFocus) classNames.push('has-focus');\n if (this.isSmall) classNames.push('is-small');\n if (this.formattedValueObject.prefix) classNames.push('has-prefix');\n if (this.computedIconLeft) classNames.push('has-icon-left');\n if (this.showIconSeparator) classNames.push('has-icon-separator');\n if (this.formattedValueObject.suffix) classNames.push('has-suffix');\n if (!this.formattedValueObject.suffix && this.iconRight) classNames.push('has-icon-right');\n if (this.type === 'currency') classNames.push('right-aligned');\n else classNames.push('left-aligned');\n if (this.hasCustomDisplaySlot) classNames.push('has-custom-display');\n\n return classNames.join(' ');\n }\n\n calculateCursorPositionOnFocus(): ICursorData {\n const { inputField } = this;\n const valueLength = inputField?.value?.length ?? 0;\n const startingPosition = inputField?.selectionStart ?? valueLength;\n\n return {\n startingPosition,\n valueLength,\n previousValueLength: valueLength,\n hasSelection: window.getSelection().toString().length > 0,\n };\n }\n\n calculateCursorPositionOnInput(): ICursorData {\n const input = this.inputField;\n const formattedLength = this.formattedValueObject.formattedValue.length;\n const currentValueLength = input.value.length;\n const defaultPosition = this.type === 'currency' ? formattedLength : 0;\n return {\n startingPosition: (input && input.selectionStart) || defaultPosition,\n valueLength: formattedLength,\n previousValueLength: input && currentValueLength,\n hasSelection: false,\n };\n }\n\n formatAndUpdateValueFromProp() {\n this.formattedValueObject = this.getFormattedValue(this.stringValue, true);\n\n if (!this.pseudo) {\n const setValue = () => {\n this.inputField.value = this.formattedValueObject.formattedValue;\n };\n\n this.inputField ? setValue() : this.scheduledAfterRender.push(() => setValue());\n }\n }\n\n getFormattedValue(value: string, valueChangedFromProperty: boolean): IFormatterValueObject {\n const formattingFunctions = {\n currency: formatCurrency,\n phone: formatPhoneNumber,\n ssn: formatSSN,\n tin: formatTIN,\n alphanumeric: formatAlphanumeric,\n alpha: formatAlpha,\n numeric: formatNumeric,\n percentage: formatPercentage,\n postal: formatPostalCode,\n date: formatDate,\n cif: formatCIF,\n routingnumber: formatRoutingNumber,\n swift: formatSwift,\n iban: formatIBAN,\n clabe: formatCLABE,\n 'credit-card': formatCreditCard.format,\n };\n\n if (formattingFunctions[this.type]) {\n return formattingFunctions[this.type](value, this.formatModifier, valueChangedFromProperty);\n }\n\n return {\n value,\n formattedValue: value,\n fullyFormattedValue: value,\n formattingCharacterCount: 0,\n unformattedValue: value,\n };\n }\n\n handleCurrencyDeletion(event: InputEvent) {\n // Don't do anything if text was selected for deletion\n if (this.textSelectedForDeletion) {\n this.textSelectedForDeletion = false;\n return;\n }\n // We only care about \"Backspace\" and \"Delete\" events\n if (!['deleteContentBackward', 'deleteContentForward'].includes(event.inputType)) return;\n\n const input = event.target as HTMLInputElement;\n const cursorPosition = input.selectionStart;\n const { formattedValue } = this.formattedValueObject;\n\n if (cursorPosition === null) return;\n\n let cursorMap;\n switch (event.inputType) {\n case 'deleteContentBackward':\n const valueBeforeCursor = formattedValue.substring(0, cursorPosition + 1);\n const isPrevCharAlphaNum = /[a-zA-Z0-9]$/.test(valueBeforeCursor);\n cursorMap = {\n leftIndex: isPrevCharAlphaNum ? cursorPosition : cursorPosition - 1,\n rightIndex: isPrevCharAlphaNum ? cursorPosition + 1 : cursorPosition,\n afterCursorOffset: 0,\n newCursorOffset: 1,\n };\n break;\n case 'deleteContentForward':\n const valueAfterCursor = formattedValue.substring(cursorPosition);\n const isNextCharAlphaNum = /^[a-zA-Z0-9]/.test(valueAfterCursor);\n cursorMap = {\n leftIndex: isNextCharAlphaNum ? cursorPosition : cursorPosition + 1,\n rightIndex: isNextCharAlphaNum ? cursorPosition + 1 : cursorPosition + 2,\n afterCursorOffset: 1,\n newCursorOffset: 0,\n };\n break;\n default:\n return;\n }\n\n // Ensure the cursor doesn't move with a newly formatted value\n const newValue = [\n formattedValue.substring(0, cursorMap.leftIndex),\n formattedValue.substring(cursorMap.rightIndex),\n ].join('');\n const charactersAfterCursor = formattedValue.length - cursorPosition - cursorMap.afterCursorOffset;\n const newFormattedValue = this.getFormattedValue(newValue, false).formattedValue;\n const newCursorPosition = Math.max(\n newFormattedValue.length - charactersAfterCursor + cursorMap.newCursorOffset,\n 0\n );\n\n input.value = newFormattedValue;\n input.setSelectionRange(newCursorPosition, newCursorPosition);\n\n // This handles a runtime issue when a character is deleted from the beginning of the input\n if (newCursorPosition === 0) {\n nextPaint(() => input.setSelectionRange(newCursorPosition, newCursorPosition));\n }\n }\n\n /**\n * Sets textSelectedForDeletion to true if the user has selected text for deletion\n * This is used to prevent other logic from running when text is deleted\n */\n handleCurrencyKeydown = (event: KeyboardEvent) => {\n if (!['Backspace', 'Delete'].includes(event.key)) return;\n const inputElement = this.inputField;\n this.textSelectedForDeletion = inputElement.selectionStart !== inputElement.selectionEnd;\n };\n\n handleDataInput(newFormattedValue: IFormatterValueObject) {\n if (\n this.maxlength === undefined ||\n newFormattedValue.unformattedValue.length <= this.maxlength ||\n newFormattedValue.unformattedValue.length <= this.formattedValueObject.unformattedValue.length\n ) {\n this.formattedValueObject = newFormattedValue;\n } else if (this.maxlength) {\n newFormattedValue = this.getFormattedValue(\n newFormattedValue.unformattedValue.substring(0, this.maxlength),\n false\n );\n this.formattedValueObject = newFormattedValue;\n }\n this.handleValueAndCursor();\n }\n\n handleValueAndCursor = () => {\n // ORDER IMPORTANT: calculate cursor position -> set value -> set cursor position\n const cursorPosition = this.calculateCursorPositionOnInput();\n // when type=number: returns only valid decimal on input event, should not update itself (e.g. typing \"1.\" )\n if (this.type !== 'number') this.inputField.value = this.formattedValueObject.formattedValue;\n mirrorEmit(this, ['input', 'tctInput'], {\n value: this.formattedValueObject.value,\n formattedValue: this.formattedValueObject.fullyFormattedValue,\n minFormattedLength: this.formattedValueObject.minFormattedLength,\n ...(this.formattedValueObject.type && { type: this.formattedValueObject.type }),\n });\n if (!this.formattedValueObject.value) {\n mirrorEmit(this, ['clear', 'tctClear'], { source: 'input' });\n }\n this.setCursorPosition(cursorPosition);\n };\n\n initMutationObserver = () => {\n if (!('MutationObserver' in window)) return;\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true });\n this.mutationObserver = observer;\n };\n\n onClearInput = () => {\n const eventDetail = {\n value: '',\n formattedValue: '',\n minFormattedLength: this.formattedValueObject.minFormattedLength,\n };\n mirrorEmit(this, ['input', 'tctInput'], eventDetail);\n mirrorEmit(this, ['change', 'tctChange'], eventDetail);\n mirrorEmit(this, ['clear', 'tctClear'], { source: 'button' });\n this.inputField.focus();\n };\n\n onInputBlur = () => {\n this.hasFocus = false;\n setMessageHeight(this);\n if (this.valueOnFocus !== this.formattedValueObject.value) {\n this.valueOnFocus = this.formattedValueObject.value;\n mirrorEmit(this, ['change', 'tctChange'], {\n value: this.formattedValueObject.value,\n formattedValue: this.formattedValueObject.fullyFormattedValue,\n minFormattedLength: this.formattedValueObject.minFormattedLength,\n ...(this.formattedValueObject.type && { type: this.formattedValueObject.type }),\n });\n }\n };\n\n onInputClick = () => {\n if (this.shouldCursorStayAtEnd) this.placeCursorAtEnd();\n };\n\n onInputFocus = () => {\n if (this.inputField.tagName === 'INPUT') {\n this.scheduledAfterRender.push(() => {\n if (this.isClickEvent && this.shouldCursorStartAtEnd) {\n this.placeCursorAtEnd();\n } else {\n this.setCursorPosition(this.calculateCursorPositionOnFocus());\n }\n this.isClickEvent = false;\n });\n }\n this.hasFocus = true;\n setMessageHeight(this);\n this.valueOnFocus = this.value;\n };\n\n onInputInput = (event: InputEvent) => {\n event.stopPropagation();\n if (this.type === 'currency') this.handleCurrencyDeletion(event);\n const newFormattedValue = this.getFormattedValue((event.target as HTMLInputElement).value, false);\n this.handleDataInput(newFormattedValue);\n this.validateInput();\n };\n\n onInputKeydown = (event: KeyboardEvent) => {\n const keysThatMoveCursor = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'];\n const { key } = event;\n\n if (this.type === 'currency') this.handleCurrencyKeydown(event);\n if (this.shouldCursorStayAtEnd && keysThatMoveCursor.includes(key)) event.preventDefault();\n if (key === 'Enter' && this.valueOnFocus !== this.formattedValueObject.value) {\n this.valueOnFocus = this.formattedValueObject.value;\n mirrorEmit(this, ['change', 'tctChange'], {\n value: this.formattedValueObject.value,\n formattedValue: this.formattedValueObject.fullyFormattedValue,\n minFormattedLength: this.formattedValueObject.minFormattedLength,\n ...(this.formattedValueObject.type && { type: this.formattedValueObject.type }),\n });\n }\n };\n\n onInputMousedown = () => {\n this.isClickEvent = true;\n };\n\n onInputPaste = (event: ClipboardEvent) => {\n if (this.type === 'currency') {\n const clipboardData = event.clipboardData.getData('text');\n const newFormattedValue = this.getFormattedValue(clipboardData, true);\n event.preventDefault();\n this.handleDataInput(newFormattedValue);\n }\n };\n\n onMutationObserved = () => {\n // Updating checkSlotCount to force re-render when slot content changes\n this.checkSlotCount = this.checkSlotCount + 1;\n };\n\n onRefocusInput = () => {\n if (this.showMessages) {\n this.inputField.focus();\n setMessageHeight(this);\n }\n };\n\n onToggleVisibility = () => {\n this.hostElement.dispatchEvent(new FocusEvent('focus'));\n this.textHidden = !this.textHidden;\n };\n\n placeCursorAtEnd() {\n const { inputField } = this;\n inputField.selectionStart = inputField.selectionEnd = inputField.value.length;\n }\n\n setCursorPosition(cursorData: ICursorData) {\n if (this.canSetSelection && !cursorData.hasSelection) {\n const input = this.inputField;\n const { valueLength, previousValueLength, startingPosition } = cursorData;\n\n if (this.type === 'currency') {\n if (previousValueLength - valueLength === 1) {\n input.setSelectionRange(startingPosition - 1, startingPosition - 1);\n } else {\n const difference = previousValueLength - valueLength;\n input.setSelectionRange(startingPosition - difference, startingPosition - difference);\n }\n }\n\n if (this.type !== 'currency') {\n const difference = valueLength - previousValueLength;\n // Never allow the cursor to move in reverse\n const newPosition = startingPosition + (difference > 0 ? difference : 0);\n input.setSelectionRange(newPosition, newPosition);\n }\n }\n }\n\n validateInput = () => {\n this.validity = this.inputRef?.validity;\n if (this.validity?.valid === false) {\n mirrorEmit(this, ['invalid', 'tctInvalid'], undefined);\n }\n return !!this.validity?.valid;\n };\n\n // #endregion\n // #region Render Methods\n\n renderCountDOM() {\n if (!this.showCount) return;\n const { maxlength, formattedValueObject } = this;\n\n return (\n <div class=\"count-tag\">\n {formattedValueObject.unformattedValue.length}\n {maxlength && `/${maxlength}`}\n </div>\n );\n }\n\n renderInputContainerDOM() {\n const { hasInputLeftSlot, hasInputRightSlot } = this;\n return (\n <div\n class=\"input-container\"\n tabindex={-1}\n test-id=\"inputContainer\"\n >\n <div class=\"input-icons-container-left\">\n {this.formattedValueObject.prefix && (\n <div class=\"input-prefix\">{this.formattedValueObject.prefix}</div>\n )}\n {this.computedIconLeft && (\n <div>\n <q2-icon\n type={this.computedIconLeft}\n class={this.computedClassForIconLeft}\n />\n </div>\n )}\n {hasInputLeftSlot && <slot name=\"input-left\" />}\n {this.showIconSeparator && <div class=\"vertical-separator\" />}\n {this.hasError && this.type === 'currency' && (\n <div\n test-id=\"divIconError\"\n onClick={this.onRefocusInput}\n >\n <q2-icon\n type=\"error\"\n class=\"icon-error\"\n test-id=\"iconError\"\n />\n </div>\n )}\n </div>\n {this.pseudo ? this.renderPseudoInputDOM() : this.renderStandardInputDOM()}\n <div class=\"input-icons-container-right\">\n <q2-btn\n class={this.clearClasses.join(' ')}\n label={loc('tecton.element.input.clear', [this.label])}\n hideLabel={true}\n test-id=\"clearButton\"\n onClick={this.onClearInput}\n onKeyDown={e => e.stopPropagation()}\n >\n <q2-icon\n type=\"close\"\n class=\"icon-clear\"\n />\n </q2-btn>\n {['password', 'text', 'ssn', 'tin'].includes(this.type) && this.showVisibilityToggle && (\n <q2-btn\n class=\"btn-visibility-toggle\"\n test-id=\"toggleVisibilityButton\"\n onClick={this.onToggleVisibility}\n label={loc(this.visibilityToggleAriaLabel, { label: this.label })}\n hide-label={true}\n >\n {this.visibilityToggleText}\n </q2-btn>\n )}\n {this.formattedValueObject.suffix && (\n <span class=\"input-suffix\">{this.formattedValueObject.suffix}</span>\n )}\n {this.badgeValue && (\n <q2-badge\n size=\"large\"\n theme={this.badgeTheme}\n >\n {this.badgeValue}\n </q2-badge>\n )}\n {this.hasError && this.type !== 'currency' && (\n <div\n test-id=\"divIconError\"\n onClick={this.onRefocusInput}\n >\n <q2-icon\n type=\"error\"\n class=\"icon-error\"\n test-id=\"iconError\"\n />\n </div>\n )}\n {this.iconRight && !this.formattedValueObject.suffix && (\n <div>\n <q2-icon\n type={this.iconRight}\n class=\"icon-right\"\n />\n </div>\n )}\n {hasInputRightSlot && <slot name=\"input-right\" />}\n </div>\n </div>\n );\n }\n\n renderPseudoInputDOM() {\n const showPlaceholder = !this.value && !!this.placeholder;\n const { ariaOwns, ariaHaspopup, ariaExpanded, ariaActivedescendant } = this.ariaAttributes;\n\n return (\n <div class=\"pseudo-input-container\">\n <button\n class=\"input-field\"\n type=\"button\"\n id={this.inputId}\n aria-describedby={this.inputDescribedBy}\n aria-invalid={`${this.hasError}`}\n aria-owns={ariaOwns}\n aria-haspopup={ariaHaspopup}\n aria-expanded={ariaExpanded}\n aria-activedescendant={ariaActivedescendant}\n role={this.role || undefined}\n disabled={!!this.disabled}\n test-id=\"q2InputInnerClearButton\"\n onFocus={this.onInputFocus}\n onBlur={this.onInputBlur}\n >\n <div class=\"custom-display-container\">\n <slot name=\"custom-display\">\n <span class={showPlaceholder ? 'placeholder-text' : ''}>\n {showPlaceholder ? loc(this.placeholder) : loc(this.value)}\n </span>\n </slot>\n </div>\n </button>\n </div>\n );\n }\n\n renderStandardInputDOM() {\n const { hasCustomDisplaySlot } = this;\n const inputClasses = ['input-field'];\n const { ariaOwns, ariaHaspopup, ariaActivedescendant } = this.ariaAttributes;\n if (hasCustomDisplaySlot) inputClasses.push('sr');\n return (\n <Fragment>\n {hasCustomDisplaySlot && (\n <div class=\"custom-display-container\">\n <slot name=\"custom-display\"></slot>\n </div>\n )}\n <input\n ref={el => (this.inputRef = el)}\n class={inputClasses.join(' ')}\n id={this.inputId}\n type={this.computedType}\n size={this.formattedValueObject.prefix ? 10 : undefined}\n maxlength={['date', 'currency'].includes(this.type) ? undefined : this.maxlength || undefined}\n max={this.max}\n min={this.min}\n step={this.step}\n aria-current={this.current || undefined}\n aria-describedby={this.inputDescribedBy}\n aria-required={`${!this.optional}`}\n aria-invalid={`${this.hasError}`}\n aria-owns={ariaOwns}\n aria-haspopup={ariaHaspopup}\n aria-activedescendant={ariaActivedescendant}\n autocomplete={this.computedAutocomplete}\n autocapitalize={this.autocapitalize}\n autocorrect={this.autocorrect === 'on' ? 'on' : 'off'}\n autofocus={this.autofocus}\n placeholder={(this.placeholder && loc(this.placeholder)) || undefined}\n test-id=\"inputField\"\n readonly={this.readonly || this._preventEntry}\n disabled={!!this.disabled}\n onFocus={this.onInputFocus}\n onBlur={this.onInputBlur}\n onClick={this.onInputClick}\n onKeyDown={this.onInputKeydown}\n onMouseDown={this.onInputMousedown}\n onInput={this.onInputInput}\n onPaste={this.onInputPaste}\n inputmode={this.inputMode}\n pattern={this.pattern || undefined}\n />\n </Fragment>\n );\n }\n\n render() {\n const { ariaControls, ariaExpanded } = this.ariaAttributes;\n return (\n <Host\n role={this._role}\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n >\n <div class={this.wrapperClasses}>\n <div class=\"label-wrapper\">\n {renderLabel(this)}\n {this.renderCountDOM()}\n </div>\n {this.renderInputContainerDOM()}\n {renderMessages(this)}\n </div>\n </Host>\n );\n }\n\n // #endregion\n}\n"],"mappings":"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","ignoreList":[]}
|