@rededor/cura 1.8.2-alpha.0 → 2.0.0-alpha.10
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/assets/assets/icons/iconset-default-list.ts +1 -1
- package/dist/assets/assets/icons/iconset-default-tmp.svg +40 -0
- package/dist/assets/assets/icons/iconset-default.svg +1 -1
- package/dist/cjs/{cura-accordion_20.cjs.entry.js → cura-accordion_21.cjs.entry.js} +1826 -26
- package/dist/cjs/cura-accordion_21.cjs.entry.js.map +1 -0
- package/dist/cjs/cura-alert.cjs.entry.js +4 -3
- package/dist/cjs/cura-alert.cjs.entry.js.map +1 -1
- package/dist/cjs/cura-alert.entry.cjs.js.map +1 -1
- package/dist/cjs/cura-badge-counter.cjs.entry.js +0 -0
- package/dist/cjs/cura-badge-counter.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-badge-counter.entry.cjs.js.map +0 -0
- package/dist/cjs/cura-badge-dot.cjs.entry.js +0 -0
- package/dist/cjs/cura-badge-dot.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-badge-dot.entry.cjs.js.map +0 -0
- package/dist/cjs/cura-badge-pill.cjs.entry.js +0 -0
- package/dist/cjs/cura-badge-pill.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-badge-pill.entry.cjs.js.map +0 -0
- package/dist/cjs/cura-button-outline.cjs.entry.js +0 -0
- package/dist/cjs/cura-button-outline.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-button-outline.entry.cjs.js.map +0 -0
- package/dist/cjs/cura-button-select.cjs.entry.js +0 -0
- package/dist/cjs/cura-button-select.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-button-select.entry.cjs.js.map +0 -0
- package/dist/cjs/cura-button.definitions-B3SK8MaV.js +0 -0
- package/dist/cjs/cura-button.definitions-B3SK8MaV.js.map +0 -0
- package/dist/cjs/cura-calendar.cjs.entry.js +0 -0
- package/dist/cjs/cura-calendar.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-calendar.entry.cjs.js.map +0 -0
- package/dist/cjs/cura-checkbox.cjs.entry.js +0 -0
- package/dist/cjs/cura-checkbox.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-checkbox.entry.cjs.js.map +0 -0
- package/dist/cjs/cura-display.cjs.entry.js +0 -0
- package/dist/cjs/cura-display.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-display.entry.cjs.js.map +0 -0
- package/dist/cjs/cura-dropdown-search-not-found.cjs.entry.js +0 -0
- package/dist/cjs/cura-dropdown-search-not-found.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-dropdown-search-not-found.entry.cjs.js.map +0 -0
- package/dist/cjs/cura-forms.definitions-DVLuO67c.js +0 -0
- package/dist/cjs/cura-forms.definitions-DVLuO67c.js.map +0 -0
- package/dist/cjs/cura-icon.definitions-DT0wF67y.js +0 -0
- package/dist/cjs/cura-icon.definitions-DT0wF67y.js.map +0 -0
- package/dist/cjs/cura-icons-view.cjs.entry.js +1 -1
- package/dist/cjs/cura-icons-view.cjs.entry.js.map +1 -1
- package/dist/cjs/cura-icons-view.entry.cjs.js.map +1 -1
- package/dist/cjs/cura-input-date.cjs.entry.js +0 -0
- package/dist/cjs/cura-input-date.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-input-date.entry.cjs.js.map +0 -0
- package/dist/cjs/cura-loader-bar.cjs.entry.js +0 -0
- package/dist/cjs/cura-loader-bar.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-loader-bar.entry.cjs.js.map +0 -0
- package/dist/cjs/cura-modal.cjs.entry.js +10 -2
- package/dist/cjs/cura-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/cura-modal.entry.cjs.js.map +1 -1
- package/dist/cjs/cura-progress-bar.cura-stepper-item.entry.cjs.js.map +0 -0
- package/dist/cjs/cura-progress-bar_2.cjs.entry.js +0 -0
- package/dist/cjs/cura-progress-bar_2.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-radio.cjs.entry.js +0 -0
- package/dist/cjs/cura-radio.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-radio.entry.cjs.js.map +0 -0
- package/dist/cjs/cura-stepper.cjs.entry.js +0 -0
- package/dist/cjs/cura-stepper.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-stepper.entry.cjs.js.map +0 -0
- package/dist/cjs/cura-switch.cjs.entry.js +0 -0
- package/dist/cjs/cura-switch.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-switch.entry.cjs.js.map +0 -0
- package/dist/cjs/cura-tabs-button.cjs.entry.js +0 -0
- package/dist/cjs/cura-tabs-button.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-tabs-button.entry.cjs.js.map +0 -0
- package/dist/cjs/cura-tabs-transparent.cjs.entry.js +0 -0
- package/dist/cjs/cura-tabs-transparent.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-tabs-transparent.entry.cjs.js.map +0 -0
- package/dist/cjs/cura-tabs.definitions-CGqqGE2e.js +0 -0
- package/dist/cjs/cura-tabs.definitions-CGqqGE2e.js.map +0 -0
- package/dist/cjs/cura-theme-module-CJkmAxBA.js +0 -0
- package/dist/cjs/cura-theme-module-CJkmAxBA.js.map +0 -0
- package/dist/cjs/cura-toast.cjs.entry.js +0 -0
- package/dist/cjs/cura-toast.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-toast.entry.cjs.js.map +0 -0
- package/dist/cjs/cura-tooltip.cjs.entry.js +0 -0
- package/dist/cjs/cura-tooltip.cjs.entry.js.map +0 -0
- package/dist/cjs/cura-tooltip.entry.cjs.js.map +0 -0
- package/dist/cjs/cura.cjs.js +1 -1
- package/dist/cjs/cura.cjs.js.map +0 -0
- package/dist/cjs/index-BK9MSAiE.js +0 -0
- package/dist/cjs/index-BK9MSAiE.js.map +0 -0
- package/dist/cjs/index-EyP6Zlkd.js +0 -0
- package/dist/cjs/index-EyP6Zlkd.js.map +0 -0
- package/dist/cjs/index.cjs.js +0 -0
- package/dist/cjs/index.cjs.js.map +0 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js.map +0 -0
- package/dist/collection/api/cura-api.js +0 -0
- package/dist/collection/api/cura-api.js.map +0 -0
- package/dist/collection/api/cura-api.type.js +0 -0
- package/dist/collection/api/cura-api.type.js.map +0 -0
- package/dist/collection/api/modules/cura-theme-breakpoints-module.js +0 -0
- package/dist/collection/api/modules/cura-theme-breakpoints-module.js.map +0 -0
- package/dist/collection/api/modules/cura-theme-colors-module.js +0 -0
- package/dist/collection/api/modules/cura-theme-colors-module.js.map +0 -0
- package/dist/collection/api/modules/cura-theme-fonts-module.js +0 -0
- package/dist/collection/api/modules/cura-theme-fonts-module.js.map +0 -0
- package/dist/collection/api/modules/cura-theme-module.js +0 -0
- package/dist/collection/api/modules/cura-theme-module.js.map +0 -0
- package/dist/collection/api/modules/cura-theme-spacing-module.js +0 -0
- package/dist/collection/api/modules/cura-theme-spacing-module.js.map +0 -0
- package/dist/collection/api/theme-presets/static.js +0 -0
- package/dist/collection/api/theme-presets/static.js.map +0 -0
- package/dist/collection/api/theme-presets/theme-default.js +0 -0
- package/dist/collection/api/theme-presets/theme-default.js.map +0 -0
- package/dist/collection/api/theme-presets/theme-legacy-default.js +0 -0
- package/dist/collection/api/theme-presets/theme-legacy-default.js.map +0 -0
- package/dist/collection/api/theme-presets/theme-maternity.js +0 -0
- package/dist/collection/api/theme-presets/theme-maternity.js.map +0 -0
- package/dist/collection/api/theme-presets/theme-oncology.js +0 -0
- package/dist/collection/api/theme-presets/theme-oncology.js.map +0 -0
- package/dist/collection/api/theme-presets/theme-perinatal-temporary.js +0 -0
- package/dist/collection/api/theme-presets/theme-perinatal-temporary.js.map +0 -0
- package/dist/collection/api/theme-presets/theme-presets.js +0 -0
- package/dist/collection/api/theme-presets/theme-presets.js.map +0 -0
- package/dist/collection/api/theme-presets/theme-richet.js +0 -0
- package/dist/collection/api/theme-presets/theme-richet.js.map +0 -0
- package/dist/collection/assets/icons/iconset-default-list.js +1 -1
- package/dist/collection/assets/icons/iconset-default-list.js.map +1 -1
- package/dist/collection/assets/icons/iconset-default-tmp.svg +40 -0
- package/dist/collection/assets/icons/iconset-default.svg +1 -1
- package/dist/collection/assets-raw/icons/default/autism.svg +3 -0
- package/dist/collection/assets-raw/icons/default/biop.svg +3 -0
- package/dist/collection/assets-raw/icons/default/lab.svg +3 -0
- package/dist/collection/assets-raw/icons/default/mobileClick.svg +3 -0
- package/dist/collection/assets-raw/icons/default/mobileRotate1.svg +3 -0
- package/dist/collection/assets-raw/icons/default/mobileRotate2.svg +3 -0
- package/dist/collection/assets-raw/icons/default/mobileRotate3.svg +3 -0
- package/dist/collection/assets-raw/icons/default/star.svg +3 -0
- package/dist/collection/assets-raw/icons/default/stop.svg +3 -0
- package/dist/collection/assets-raw/icons/default/xray.svg +3 -0
- package/dist/collection/collection-manifest.json +0 -0
- package/dist/collection/components/accordion/cura-accordion/cura-accordion.css +0 -0
- package/dist/collection/components/accordion/cura-accordion/cura-accordion.js +0 -0
- package/dist/collection/components/accordion/cura-accordion/cura-accordion.js.map +0 -0
- package/dist/collection/components/accordion/cura-accordion/cura-accordion.stories.js +0 -0
- package/dist/collection/components/accordion/cura-accordion/cura-accordion.stories.js.map +0 -0
- package/dist/collection/components/accordion/cura-accordion-item/cura-accordion-item.css +0 -0
- package/dist/collection/components/accordion/cura-accordion-item/cura-accordion-item.js +0 -0
- package/dist/collection/components/accordion/cura-accordion-item/cura-accordion-item.js.map +0 -0
- package/dist/collection/components/badges/cura-badge-counter/cura-badge-counter.css +0 -0
- package/dist/collection/components/badges/cura-badge-counter/cura-badge-counter.js +0 -0
- package/dist/collection/components/badges/cura-badge-counter/cura-badge-counter.js.map +0 -0
- package/dist/collection/components/badges/cura-badge-counter/cura-badge-counter.stories.js +0 -0
- package/dist/collection/components/badges/cura-badge-counter/cura-badge-counter.stories.js.map +0 -0
- package/dist/collection/components/badges/cura-badge-distance/cura-badge-distance.css +0 -0
- package/dist/collection/components/badges/cura-badge-distance/cura-badge-distance.js +0 -0
- package/dist/collection/components/badges/cura-badge-distance/cura-badge-distance.js.map +0 -0
- package/dist/collection/components/badges/cura-badge-distance/cura-badge-distance.stories.js +0 -0
- package/dist/collection/components/badges/cura-badge-distance/cura-badge-distance.stories.js.map +0 -0
- package/dist/collection/components/badges/cura-badge-dot/cura-badge-dot.css +0 -0
- package/dist/collection/components/badges/cura-badge-dot/cura-badge-dot.js +0 -0
- package/dist/collection/components/badges/cura-badge-dot/cura-badge-dot.js.map +0 -0
- package/dist/collection/components/badges/cura-badge-dot/cura-badge-dot.stories.js +0 -0
- package/dist/collection/components/badges/cura-badge-dot/cura-badge-dot.stories.js.map +0 -0
- package/dist/collection/components/badges/cura-badge-pill/cura-badge-pill.css +0 -0
- package/dist/collection/components/badges/cura-badge-pill/cura-badge-pill.js +0 -0
- package/dist/collection/components/badges/cura-badge-pill/cura-badge-pill.js.map +0 -0
- package/dist/collection/components/badges/cura-badge-pill/cura-badge-pill.stories.js +0 -0
- package/dist/collection/components/badges/cura-badge-pill/cura-badge-pill.stories.js.map +0 -0
- package/dist/collection/components/buttons/cura-button/cura-button.css +0 -0
- package/dist/collection/components/buttons/cura-button/cura-button.js +0 -0
- package/dist/collection/components/buttons/cura-button/cura-button.js.map +0 -0
- package/dist/collection/components/buttons/cura-button/cura-button.stories.js +0 -0
- package/dist/collection/components/buttons/cura-button/cura-button.stories.js.map +0 -0
- package/dist/collection/components/buttons/cura-button-outline/cura-button-outline.css +0 -0
- package/dist/collection/components/buttons/cura-button-outline/cura-button-outline.js +0 -0
- package/dist/collection/components/buttons/cura-button-outline/cura-button-outline.js.map +0 -0
- package/dist/collection/components/buttons/cura-button-outline/cura-button-outline.stories.js +0 -0
- package/dist/collection/components/buttons/cura-button-outline/cura-button-outline.stories.js.map +0 -0
- package/dist/collection/components/buttons/cura-button-select/cura-button-select.css +0 -0
- package/dist/collection/components/buttons/cura-button-select/cura-button-select.js +0 -0
- package/dist/collection/components/buttons/cura-button-select/cura-button-select.js.map +0 -0
- package/dist/collection/components/buttons/cura-button-select/cura-button-select.stories.js +0 -0
- package/dist/collection/components/buttons/cura-button-select/cura-button-select.stories.js.map +0 -0
- package/dist/collection/components/buttons/cura-button-transparent/cura-button-transparent.css +0 -0
- package/dist/collection/components/buttons/cura-button-transparent/cura-button-transparent.js +0 -0
- package/dist/collection/components/buttons/cura-button-transparent/cura-button-transparent.js.map +0 -0
- package/dist/collection/components/buttons/cura-button-transparent/cura-button-transparent.stories.js +0 -0
- package/dist/collection/components/buttons/cura-button-transparent/cura-button-transparent.stories.js.map +0 -0
- package/dist/collection/components/buttons/cura-button.definitions.js +0 -0
- package/dist/collection/components/buttons/cura-button.definitions.js.map +0 -0
- package/dist/collection/components/cura-alert/cura-alert.css +0 -0
- package/dist/collection/components/cura-alert/cura-alert.js +4 -3
- package/dist/collection/components/cura-alert/cura-alert.js.map +1 -1
- package/dist/collection/components/cura-alert/cura-alert.stories.js +0 -0
- package/dist/collection/components/cura-alert/cura-alert.stories.js.map +0 -0
- package/dist/collection/components/cura-avatar/cura-avatar.css +0 -0
- package/dist/collection/components/cura-avatar/cura-avatar.definitions.js +0 -0
- package/dist/collection/components/cura-avatar/cura-avatar.definitions.js.map +0 -0
- package/dist/collection/components/cura-avatar/cura-avatar.js +0 -0
- package/dist/collection/components/cura-avatar/cura-avatar.js.map +0 -0
- package/dist/collection/components/cura-avatar/cura-avatar.stories.js +0 -0
- package/dist/collection/components/cura-avatar/cura-avatar.stories.js.map +0 -0
- package/dist/collection/components/cura-calendar/cura-calendar.css +0 -0
- package/dist/collection/components/cura-calendar/cura-calendar.js +0 -0
- package/dist/collection/components/cura-calendar/cura-calendar.js.map +0 -0
- package/dist/collection/components/cura-calendar/cura-calendar.stories.js +0 -0
- package/dist/collection/components/cura-calendar/cura-calendar.stories.js.map +0 -0
- package/dist/collection/components/cura-card/cura-card.css +0 -0
- package/dist/collection/components/cura-card/cura-card.js +0 -0
- package/dist/collection/components/cura-card/cura-card.js.map +0 -0
- package/dist/collection/components/cura-card/cura-card.stories.js +0 -0
- package/dist/collection/components/cura-card/cura-card.stories.js.map +0 -0
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search-category/cura-dropdown-search-category.css +0 -0
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search-category/cura-dropdown-search-category.js +0 -0
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search-category/cura-dropdown-search-category.js.map +0 -0
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search-category/cura-dropdown-search-category.stories.js +0 -0
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search-category/cura-dropdown-search-category.stories.js.map +0 -0
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search-not-found/cura-dropdown-search-not-found.css +0 -0
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search-not-found/cura-dropdown-search-not-found.js +0 -0
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search-not-found/cura-dropdown-search-not-found.js.map +0 -0
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search-not-found/cura-dropdown-search-not-found.stories.js +0 -0
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search-not-found/cura-dropdown-search-not-found.stories.js.map +0 -0
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search-option/cura-dropdown-search-option.css +0 -0
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search-option/cura-dropdown-search-option.js +0 -0
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search-option/cura-dropdown-search-option.js.map +0 -0
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search-option/cura-dropdown-search-option.stories.js +0 -0
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search-option/cura-dropdown-search-option.stories.js.map +0 -0
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search.css +1 -1
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search.js +27 -5
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search.js.map +1 -1
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search.stories.js +0 -0
- package/dist/collection/components/cura-dropdown-search/cura-dropdown-search.stories.js.map +0 -0
- package/dist/collection/components/cura-icon/cura-icon.css +0 -0
- package/dist/collection/components/cura-icon/cura-icon.definitions.js +0 -0
- package/dist/collection/components/cura-icon/cura-icon.definitions.js.map +0 -0
- package/dist/collection/components/cura-icon/cura-icon.js +0 -0
- package/dist/collection/components/cura-icon/cura-icon.js.map +0 -0
- package/dist/collection/components/cura-icon/cura-icon.stories.js +0 -0
- package/dist/collection/components/cura-icon/cura-icon.stories.js.map +0 -0
- package/dist/collection/components/cura-icons-view/cura-icons-view.css +0 -0
- package/dist/collection/components/cura-icons-view/cura-icons-view.js +0 -0
- package/dist/collection/components/cura-icons-view/cura-icons-view.js.map +0 -0
- package/dist/collection/components/cura-icons-view/cura-icons-view.stories.js +0 -0
- package/dist/collection/components/cura-icons-view/cura-icons-view.stories.js.map +0 -0
- package/dist/collection/components/cura-modal/cura-modal.css +0 -0
- package/dist/collection/components/cura-modal/cura-modal.js +30 -2
- package/dist/collection/components/cura-modal/cura-modal.js.map +1 -1
- package/dist/collection/components/cura-modal/cura-modal.stories.js +10 -0
- package/dist/collection/components/cura-modal/cura-modal.stories.js.map +1 -1
- package/dist/collection/components/cura-page-template/cura-page-template.css +0 -0
- package/dist/collection/components/cura-page-template/cura-page-template.js +0 -0
- package/dist/collection/components/cura-page-template/cura-page-template.js.map +0 -0
- package/dist/collection/components/cura-stepper/cura-progress-bar/cura-progress-bar.css +0 -0
- package/dist/collection/components/cura-stepper/cura-progress-bar/cura-progress-bar.js +0 -0
- package/dist/collection/components/cura-stepper/cura-progress-bar/cura-progress-bar.js.map +0 -0
- package/dist/collection/components/cura-stepper/cura-stepper-item/cura-stepper-item.css +0 -0
- package/dist/collection/components/cura-stepper/cura-stepper-item/cura-stepper-item.js +0 -0
- package/dist/collection/components/cura-stepper/cura-stepper-item/cura-stepper-item.js.map +0 -0
- package/dist/collection/components/cura-stepper/cura-stepper.css +0 -0
- package/dist/collection/components/cura-stepper/cura-stepper.js +0 -0
- package/dist/collection/components/cura-stepper/cura-stepper.js.map +0 -0
- package/dist/collection/components/cura-stepper/cura-stepper.stories.js +0 -0
- package/dist/collection/components/cura-stepper/cura-stepper.stories.js.map +0 -0
- package/dist/collection/components/cura-stepper/stepper.type.js +0 -0
- package/dist/collection/components/cura-stepper/stepper.type.js.map +0 -0
- package/dist/collection/components/cura-toast/cura-toast.css +0 -0
- package/dist/collection/components/cura-toast/cura-toast.js +0 -0
- package/dist/collection/components/cura-toast/cura-toast.js.map +0 -0
- package/dist/collection/components/cura-toast/cura-toast.stories.js +0 -0
- package/dist/collection/components/cura-toast/cura-toast.stories.js.map +0 -0
- package/dist/collection/components/cura-tooltip/cura-tooltip.css +0 -0
- package/dist/collection/components/cura-tooltip/cura-tooltip.js +0 -0
- package/dist/collection/components/cura-tooltip/cura-tooltip.js.map +0 -0
- package/dist/collection/components/cura-tooltip/cura-tooltip.stories.js +0 -0
- package/dist/collection/components/cura-tooltip/cura-tooltip.stories.js.map +0 -0
- package/dist/collection/components/forms/cura-checkbox/cura-checkbox.css +0 -0
- package/dist/collection/components/forms/cura-checkbox/cura-checkbox.js +0 -0
- package/dist/collection/components/forms/cura-checkbox/cura-checkbox.js.map +0 -0
- package/dist/collection/components/forms/cura-checkbox/cura-checkbox.stories.js +0 -0
- package/dist/collection/components/forms/cura-checkbox/cura-checkbox.stories.js.map +0 -0
- package/dist/collection/components/forms/cura-forms.definitions.js +0 -0
- package/dist/collection/components/forms/cura-forms.definitions.js.map +0 -0
- package/dist/collection/components/forms/cura-input-date/cura-input-date.css +0 -0
- package/dist/collection/components/forms/cura-input-date/cura-input-date.js +0 -0
- package/dist/collection/components/forms/cura-input-date/cura-input-date.js.map +0 -0
- package/dist/collection/components/forms/cura-input-date/cura-input-date.stories.js +0 -0
- package/dist/collection/components/forms/cura-input-date/cura-input-date.stories.js.map +0 -0
- package/dist/collection/components/forms/cura-input-text/cura-input-text.css +0 -0
- package/dist/collection/components/forms/cura-input-text/cura-input-text.js +8 -5
- package/dist/collection/components/forms/cura-input-text/cura-input-text.js.map +1 -1
- package/dist/collection/components/forms/cura-input-text/cura-input-text.stories.js +0 -0
- package/dist/collection/components/forms/cura-input-text/cura-input-text.stories.js.map +0 -0
- package/dist/collection/components/forms/cura-input-text/mask-presets/input-mask-presets.js +0 -0
- package/dist/collection/components/forms/cura-input-text/mask-presets/input-mask-presets.js.map +0 -0
- package/dist/collection/components/forms/cura-label/cura-label.css +0 -0
- package/dist/collection/components/forms/cura-label/cura-label.js +0 -0
- package/dist/collection/components/forms/cura-label/cura-label.js.map +0 -0
- package/dist/collection/components/forms/cura-label/cura-label.stories.js +0 -0
- package/dist/collection/components/forms/cura-label/cura-label.stories.js.map +0 -0
- package/dist/collection/components/forms/cura-radio/cura-radio.css +0 -0
- package/dist/collection/components/forms/cura-radio/cura-radio.js +0 -0
- package/dist/collection/components/forms/cura-radio/cura-radio.js.map +0 -0
- package/dist/collection/components/forms/cura-radio/cura-radio.stories.js +0 -0
- package/dist/collection/components/forms/cura-radio/cura-radio.stories.js.map +0 -0
- package/dist/collection/components/forms/cura-select/cura-select.css +3 -148
- package/dist/collection/components/forms/cura-select/cura-select.js +103 -11
- package/dist/collection/components/forms/cura-select/cura-select.js.map +1 -1
- package/dist/collection/components/forms/cura-select/cura-select.stories.js +0 -0
- package/dist/collection/components/forms/cura-select/cura-select.stories.js.map +0 -0
- package/dist/collection/components/forms/cura-select-options/cura-select-option.css +15 -0
- package/dist/collection/components/forms/cura-select-options/cura-select-option.js +0 -0
- package/dist/collection/components/forms/cura-select-options/cura-select-option.js.map +0 -0
- package/dist/collection/components/forms/cura-switch/cura-switch.css +0 -0
- package/dist/collection/components/forms/cura-switch/cura-switch.js +0 -0
- package/dist/collection/components/forms/cura-switch/cura-switch.js.map +0 -0
- package/dist/collection/components/forms/cura-switch/cura-switch.stories.js +0 -0
- package/dist/collection/components/forms/cura-switch/cura-switch.stories.js.map +0 -0
- package/dist/collection/components/loaders/cura-loader-bar/cura-loader-bar.css +0 -0
- package/dist/collection/components/loaders/cura-loader-bar/cura-loader-bar.js +0 -0
- package/dist/collection/components/loaders/cura-loader-bar/cura-loader-bar.js.map +0 -0
- package/dist/collection/components/loaders/cura-loader-bar/cura-loader-bar.stories.js +0 -0
- package/dist/collection/components/loaders/cura-loader-bar/cura-loader-bar.stories.js.map +0 -0
- package/dist/collection/components/loaders/cura-loader-circle/cura-loader-circle.css +0 -0
- package/dist/collection/components/loaders/cura-loader-circle/cura-loader-circle.js +0 -0
- package/dist/collection/components/loaders/cura-loader-circle/cura-loader-circle.js.map +0 -0
- package/dist/collection/components/loaders/cura-loader-circle/cura-loader-circle.stories.js +0 -0
- package/dist/collection/components/loaders/cura-loader-circle/cura-loader-circle.stories.js.map +0 -0
- package/dist/collection/components/tabs/cura-tabs/cura-tabs.css +0 -0
- package/dist/collection/components/tabs/cura-tabs/cura-tabs.js +0 -0
- package/dist/collection/components/tabs/cura-tabs/cura-tabs.js.map +0 -0
- package/dist/collection/components/tabs/cura-tabs/cura-tabs.stories.js +0 -0
- package/dist/collection/components/tabs/cura-tabs/cura-tabs.stories.js.map +0 -0
- package/dist/collection/components/tabs/cura-tabs-button/cura-tabs-button.css +0 -0
- package/dist/collection/components/tabs/cura-tabs-button/cura-tabs-button.js +0 -0
- package/dist/collection/components/tabs/cura-tabs-button/cura-tabs-button.js.map +0 -0
- package/dist/collection/components/tabs/cura-tabs-button/cura-tabs-button.stories.js +0 -0
- package/dist/collection/components/tabs/cura-tabs-button/cura-tabs-button.stories.js.map +0 -0
- package/dist/collection/components/tabs/cura-tabs-group/cura-tabs-group.css +0 -0
- package/dist/collection/components/tabs/cura-tabs-group/cura-tabs-group.js +0 -0
- package/dist/collection/components/tabs/cura-tabs-group/cura-tabs-group.js.map +0 -0
- package/dist/collection/components/tabs/cura-tabs-group/cura-tabs-group.stories.js +0 -0
- package/dist/collection/components/tabs/cura-tabs-group/cura-tabs-group.stories.js.map +0 -0
- package/dist/collection/components/tabs/cura-tabs-transparent/cura-tabs-transparent.css +0 -0
- package/dist/collection/components/tabs/cura-tabs-transparent/cura-tabs-transparent.js +0 -0
- package/dist/collection/components/tabs/cura-tabs-transparent/cura-tabs-transparent.js.map +0 -0
- package/dist/collection/components/tabs/cura-tabs-transparent/cura-tabs-transparent.stories.js +0 -0
- package/dist/collection/components/tabs/cura-tabs-transparent/cura-tabs-transparent.stories.js.map +0 -0
- package/dist/collection/components/tabs/cura-tabs.definitions.js +0 -0
- package/dist/collection/components/tabs/cura-tabs.definitions.js.map +0 -0
- package/dist/collection/components/text/cura-display/cura-display.css +0 -0
- package/dist/collection/components/text/cura-display/cura-display.js +0 -0
- package/dist/collection/components/text/cura-display/cura-display.js.map +0 -0
- package/dist/collection/components/text/cura-display/cura-display.stories.js +0 -0
- package/dist/collection/components/text/cura-display/cura-display.stories.js.map +0 -0
- package/dist/collection/components/text/cura-heading/cura-heading.css +0 -0
- package/dist/collection/components/text/cura-heading/cura-heading.js +0 -0
- package/dist/collection/components/text/cura-heading/cura-heading.js.map +0 -0
- package/dist/collection/components/text/cura-heading/cura-heading.stories.js +0 -0
- package/dist/collection/components/text/cura-heading/cura-heading.stories.js.map +0 -0
- package/dist/collection/components/text/cura-paragraph/cura-paragraph.css +0 -0
- package/dist/collection/components/text/cura-paragraph/cura-paragraph.js +0 -0
- package/dist/collection/components/text/cura-paragraph/cura-paragraph.js.map +0 -0
- package/dist/collection/components/text/cura-paragraph/cura-paragraph.stories.js +0 -0
- package/dist/collection/components/text/cura-paragraph/cura-paragraph.stories.js.map +0 -0
- package/dist/collection/index.js +0 -0
- package/dist/collection/index.js.map +0 -0
- package/dist/collection/rededor-cura-start.js +0 -0
- package/dist/collection/rededor-cura-start.js.map +0 -0
- package/dist/collection/utils/FixedElementScrollBehavior.js +0 -0
- package/dist/collection/utils/FixedElementScrollBehavior.js.map +0 -0
- package/dist/collection/utils/utils.js +0 -0
- package/dist/collection/utils/utils.js.map +0 -0
- package/dist/components/cura-accordion-item.d.ts +0 -0
- package/dist/components/cura-accordion-item.js +0 -0
- package/dist/components/cura-accordion-item.js.map +0 -0
- package/dist/components/cura-accordion.d.ts +0 -0
- package/dist/components/cura-accordion.js +0 -0
- package/dist/components/cura-accordion.js.map +0 -0
- package/dist/components/cura-alert.d.ts +0 -0
- package/dist/components/cura-alert.js +4 -3
- package/dist/components/cura-alert.js.map +1 -1
- package/dist/components/cura-avatar.d.ts +0 -0
- package/dist/components/cura-avatar.js +0 -0
- package/dist/components/cura-avatar.js.map +0 -0
- package/dist/components/cura-badge-counter.d.ts +0 -0
- package/dist/components/cura-badge-counter.js +0 -0
- package/dist/components/cura-badge-counter.js.map +0 -0
- package/dist/components/cura-badge-distance.d.ts +0 -0
- package/dist/components/cura-badge-distance.js +0 -0
- package/dist/components/cura-badge-distance.js.map +0 -0
- package/dist/components/cura-badge-dot.d.ts +0 -0
- package/dist/components/cura-badge-dot.js +0 -0
- package/dist/components/cura-badge-dot.js.map +0 -0
- package/dist/components/cura-badge-pill.d.ts +0 -0
- package/dist/components/cura-badge-pill.js +0 -0
- package/dist/components/cura-badge-pill.js.map +0 -0
- package/dist/components/cura-button-outline.d.ts +0 -0
- package/dist/components/cura-button-outline.js +0 -0
- package/dist/components/cura-button-outline.js.map +0 -0
- package/dist/components/cura-button-select.d.ts +0 -0
- package/dist/components/cura-button-select.js +0 -0
- package/dist/components/cura-button-select.js.map +0 -0
- package/dist/components/cura-button-transparent.d.ts +0 -0
- package/dist/components/cura-button-transparent.js +0 -0
- package/dist/components/cura-button-transparent.js.map +0 -0
- package/dist/components/cura-button.d.ts +0 -0
- package/dist/components/cura-button.js +0 -0
- package/dist/components/cura-button.js.map +0 -0
- package/dist/components/cura-calendar.d.ts +0 -0
- package/dist/components/cura-calendar.js +1 -1
- package/dist/components/cura-calendar.js.map +0 -0
- package/dist/components/cura-card.d.ts +0 -0
- package/dist/components/cura-card.js +0 -0
- package/dist/components/cura-card.js.map +0 -0
- package/dist/components/cura-checkbox.d.ts +0 -0
- package/dist/components/cura-checkbox.js +0 -0
- package/dist/components/cura-checkbox.js.map +0 -0
- package/dist/components/cura-display.d.ts +0 -0
- package/dist/components/cura-display.js +0 -0
- package/dist/components/cura-display.js.map +0 -0
- package/dist/components/cura-dropdown-search-category.d.ts +0 -0
- package/dist/components/cura-dropdown-search-category.js +0 -0
- package/dist/components/cura-dropdown-search-category.js.map +0 -0
- package/dist/components/cura-dropdown-search-not-found.d.ts +0 -0
- package/dist/components/cura-dropdown-search-not-found.js +0 -0
- package/dist/components/cura-dropdown-search-not-found.js.map +0 -0
- package/dist/components/cura-dropdown-search-option.d.ts +0 -0
- package/dist/components/cura-dropdown-search-option.js +0 -0
- package/dist/components/cura-dropdown-search-option.js.map +0 -0
- package/dist/components/cura-dropdown-search.d.ts +0 -0
- package/dist/components/cura-dropdown-search.js +29 -7
- package/dist/components/cura-dropdown-search.js.map +1 -1
- package/dist/components/cura-heading.d.ts +0 -0
- package/dist/components/cura-heading.js +0 -0
- package/dist/components/cura-heading.js.map +0 -0
- package/dist/components/cura-icon.d.ts +0 -0
- package/dist/components/cura-icon.js +0 -0
- package/dist/components/cura-icon.js.map +0 -0
- package/dist/components/cura-icons-view.d.ts +0 -0
- package/dist/components/cura-icons-view.js +1 -1
- package/dist/components/cura-icons-view.js.map +1 -1
- package/dist/components/cura-input-date.d.ts +0 -0
- package/dist/components/cura-input-date.js +4 -4
- package/dist/components/cura-input-date.js.map +0 -0
- package/dist/components/cura-input-text.d.ts +0 -0
- package/dist/components/cura-input-text.js +1 -1
- package/dist/components/cura-input-text.js.map +0 -0
- package/dist/components/cura-label.d.ts +0 -0
- package/dist/components/cura-label.js +0 -0
- package/dist/components/cura-label.js.map +0 -0
- package/dist/components/cura-loader-bar.d.ts +0 -0
- package/dist/components/cura-loader-bar.js +0 -0
- package/dist/components/cura-loader-bar.js.map +0 -0
- package/dist/components/cura-loader-circle.d.ts +0 -0
- package/dist/components/cura-loader-circle.js +0 -0
- package/dist/components/cura-loader-circle.js.map +0 -0
- package/dist/components/cura-modal.d.ts +0 -0
- package/dist/components/cura-modal.js +11 -2
- package/dist/components/cura-modal.js.map +1 -1
- package/dist/components/cura-page-template.d.ts +0 -0
- package/dist/components/cura-page-template.js +0 -0
- package/dist/components/cura-page-template.js.map +0 -0
- package/dist/components/cura-paragraph.d.ts +0 -0
- package/dist/components/cura-paragraph.js +0 -0
- package/dist/components/cura-paragraph.js.map +0 -0
- package/dist/components/cura-progress-bar.d.ts +0 -0
- package/dist/components/cura-progress-bar.js +0 -0
- package/dist/components/cura-progress-bar.js.map +0 -0
- package/dist/components/cura-radio.d.ts +0 -0
- package/dist/components/cura-radio.js +0 -0
- package/dist/components/cura-radio.js.map +0 -0
- package/dist/components/cura-select-option.d.ts +0 -0
- package/dist/components/cura-select-option.js +1 -1
- package/dist/components/cura-select-option.js.map +0 -0
- package/dist/components/cura-select.d.ts +0 -0
- package/dist/components/cura-select.js +1 -1
- package/dist/components/cura-select.js.map +0 -0
- package/dist/components/cura-stepper-item.d.ts +0 -0
- package/dist/components/cura-stepper-item.js +0 -0
- package/dist/components/cura-stepper-item.js.map +0 -0
- package/dist/components/cura-stepper.d.ts +0 -0
- package/dist/components/cura-stepper.js +0 -0
- package/dist/components/cura-stepper.js.map +0 -0
- package/dist/components/cura-switch.d.ts +0 -0
- package/dist/components/cura-switch.js +0 -0
- package/dist/components/cura-switch.js.map +0 -0
- package/dist/components/cura-tabs-button.d.ts +0 -0
- package/dist/components/cura-tabs-button.js +0 -0
- package/dist/components/cura-tabs-button.js.map +0 -0
- package/dist/components/cura-tabs-group.d.ts +0 -0
- package/dist/components/cura-tabs-group.js +0 -0
- package/dist/components/cura-tabs-group.js.map +0 -0
- package/dist/components/cura-tabs-transparent.d.ts +0 -0
- package/dist/components/cura-tabs-transparent.js +0 -0
- package/dist/components/cura-tabs-transparent.js.map +0 -0
- package/dist/components/cura-tabs.d.ts +0 -0
- package/dist/components/cura-tabs.js +0 -0
- package/dist/components/cura-tabs.js.map +0 -0
- package/dist/components/cura-toast.d.ts +0 -0
- package/dist/components/cura-toast.js +0 -0
- package/dist/components/cura-toast.js.map +0 -0
- package/dist/components/cura-tooltip.d.ts +0 -0
- package/dist/components/cura-tooltip.js +0 -0
- package/dist/components/cura-tooltip.js.map +0 -0
- package/dist/components/index.d.ts +0 -0
- package/dist/components/index.js +0 -0
- package/dist/components/index.js.map +0 -0
- package/dist/components/p-B5aO1chh.js +0 -0
- package/dist/components/p-B5aO1chh.js.map +0 -0
- package/dist/components/p-BHEafDKD.js +0 -0
- package/dist/components/p-BHEafDKD.js.map +0 -0
- package/dist/components/p-BRDqwZ4N.js +0 -0
- package/dist/components/p-BRDqwZ4N.js.map +0 -0
- package/dist/components/p-BSI2FkNn.js +0 -0
- package/dist/components/p-BSI2FkNn.js.map +0 -0
- package/dist/components/{p-CgMS6FUK.js → p-BrJsfk5q.js} +10 -7
- package/dist/components/p-BrJsfk5q.js.map +1 -0
- package/dist/components/p-C72aF-gL.js +0 -0
- package/dist/components/p-C72aF-gL.js.map +0 -0
- package/dist/components/p-CHcd-uKK.js +0 -0
- package/dist/components/p-CHcd-uKK.js.map +0 -0
- package/dist/components/p-CvdWbsfO.js +2147 -0
- package/dist/components/p-CvdWbsfO.js.map +1 -0
- package/dist/components/p-D1cPOZpG.js +0 -0
- package/dist/components/p-D1cPOZpG.js.map +0 -0
- package/dist/components/{p-BGnJiNyu.js → p-DETZu2ie.js} +4 -4
- package/dist/components/{p-BGnJiNyu.js.map → p-DETZu2ie.js.map} +1 -1
- package/dist/components/p-DI4g-ZH4.js +0 -0
- package/dist/components/p-DI4g-ZH4.js.map +0 -0
- package/dist/components/p-DR1RHrEX.js +0 -0
- package/dist/components/p-DR1RHrEX.js.map +0 -0
- package/dist/components/p-DaPc6Dxl.js +0 -0
- package/dist/components/p-DaPc6Dxl.js.map +0 -0
- package/dist/components/p-Dot54hbB.js +0 -0
- package/dist/components/p-Dot54hbB.js.map +0 -0
- package/dist/components/p-Dqm2sAwv.js +0 -0
- package/dist/components/p-Dqm2sAwv.js.map +0 -0
- package/dist/components/{p-DpIu_Oxz.js → p-Dt450DkQ.js} +3 -3
- package/dist/components/p-Dt450DkQ.js.map +1 -0
- package/dist/components/p-FTSrgi0q.js +0 -0
- package/dist/components/p-FTSrgi0q.js.map +0 -0
- package/dist/components/p-KIQMkSRF.js +0 -0
- package/dist/components/p-KIQMkSRF.js.map +0 -0
- package/dist/components/p-cOEGtL9C.js +0 -0
- package/dist/components/p-cOEGtL9C.js.map +0 -0
- package/dist/cura/cura-alert.entry.esm.js.map +1 -1
- package/dist/cura/cura-badge-counter.entry.esm.js.map +0 -0
- package/dist/cura/cura-badge-dot.entry.esm.js.map +0 -0
- package/dist/cura/cura-badge-pill.entry.esm.js.map +0 -0
- package/dist/cura/cura-button-outline.entry.esm.js.map +0 -0
- package/dist/cura/cura-button-select.entry.esm.js.map +0 -0
- package/dist/cura/cura-calendar.entry.esm.js.map +0 -0
- package/dist/cura/cura-checkbox.entry.esm.js.map +0 -0
- package/dist/cura/cura-display.entry.esm.js.map +0 -0
- package/dist/cura/cura-dropdown-search-not-found.entry.esm.js.map +0 -0
- package/dist/cura/cura-icons-view.entry.esm.js.map +1 -1
- package/dist/cura/cura-input-date.entry.esm.js.map +0 -0
- package/dist/cura/cura-loader-bar.entry.esm.js.map +0 -0
- package/dist/cura/cura-modal.entry.esm.js.map +1 -1
- package/dist/cura/cura-progress-bar.cura-stepper-item.entry.esm.js.map +0 -0
- package/dist/cura/cura-radio.entry.esm.js.map +0 -0
- package/dist/cura/cura-stepper.entry.esm.js.map +0 -0
- package/dist/cura/cura-switch.entry.esm.js.map +0 -0
- package/dist/cura/cura-tabs-button.entry.esm.js.map +0 -0
- package/dist/cura/cura-tabs-transparent.entry.esm.js.map +0 -0
- package/dist/cura/cura-toast.entry.esm.js.map +0 -0
- package/dist/cura/cura-tooltip.entry.esm.js.map +0 -0
- package/dist/cura/cura.esm.js +1 -1
- package/dist/cura/cura.esm.js.map +0 -0
- package/dist/cura/index.esm.js +0 -0
- package/dist/cura/index.esm.js.map +0 -0
- package/dist/cura/loader.esm.js.map +0 -0
- package/dist/cura/p-077019da.entry.js +0 -0
- package/dist/cura/p-077019da.entry.js.map +0 -0
- package/dist/cura/p-07783235.entry.js +0 -0
- package/dist/cura/p-07783235.entry.js.map +0 -0
- package/dist/cura/p-090e297c.entry.js +0 -0
- package/dist/cura/p-090e297c.entry.js.map +0 -0
- package/dist/cura/p-16c0b52c.entry.js +0 -0
- package/dist/cura/p-16c0b52c.entry.js.map +0 -0
- package/dist/cura/p-32015dcc.entry.js +0 -0
- package/dist/cura/p-32015dcc.entry.js.map +0 -0
- package/dist/cura/p-32f94709.entry.js +0 -0
- package/dist/cura/p-32f94709.entry.js.map +0 -0
- package/dist/cura/p-3d6040e2.entry.js +0 -0
- package/dist/cura/p-3d6040e2.entry.js.map +0 -0
- package/dist/cura/p-4ac578a6.entry.js +0 -0
- package/dist/cura/p-4ac578a6.entry.js.map +0 -0
- package/dist/cura/p-4bde448e.entry.js +0 -0
- package/dist/cura/p-4bde448e.entry.js.map +0 -0
- package/dist/cura/p-5ed7ce95.entry.js +2 -0
- package/dist/cura/p-5ed7ce95.entry.js.map +1 -0
- package/dist/cura/p-7586fd07.entry.js +0 -0
- package/dist/cura/p-7586fd07.entry.js.map +0 -0
- package/dist/cura/p-76603652.entry.js +2 -0
- package/dist/cura/p-76603652.entry.js.map +1 -0
- package/dist/cura/p-76cbb798.entry.js +0 -0
- package/dist/cura/p-76cbb798.entry.js.map +0 -0
- package/dist/cura/p-7fd143aa.entry.js +0 -0
- package/dist/cura/p-7fd143aa.entry.js.map +0 -0
- package/dist/cura/p-8c83f259.entry.js +0 -0
- package/dist/cura/p-8c83f259.entry.js.map +0 -0
- package/dist/cura/p-8d10a5a2.entry.js +2 -0
- package/dist/cura/p-8d10a5a2.entry.js.map +1 -0
- package/dist/cura/p-95cd7918.entry.js +0 -0
- package/dist/cura/p-95cd7918.entry.js.map +0 -0
- package/dist/cura/p-964stZ3D.js +0 -0
- package/dist/cura/p-964stZ3D.js.map +0 -0
- package/dist/cura/p-9ef5444e.entry.js +0 -0
- package/dist/cura/p-9ef5444e.entry.js.map +0 -0
- package/dist/cura/p-BPKQjAwN.js +0 -0
- package/dist/cura/p-BPKQjAwN.js.map +0 -0
- package/dist/cura/p-BSI2FkNn.js +0 -0
- package/dist/cura/p-BSI2FkNn.js.map +0 -0
- package/dist/cura/p-CHcd-uKK.js +0 -0
- package/dist/cura/p-CHcd-uKK.js.map +0 -0
- package/dist/cura/p-Dot54hbB.js +0 -0
- package/dist/cura/p-Dot54hbB.js.map +0 -0
- package/dist/cura/p-PPMZr_VE.js +0 -0
- package/dist/cura/p-PPMZr_VE.js.map +0 -0
- package/dist/cura/p-bdfe9af2.entry.js +2 -0
- package/dist/cura/p-bdfe9af2.entry.js.map +1 -0
- package/dist/cura/p-c6f240f0.entry.js +0 -0
- package/dist/cura/p-c6f240f0.entry.js.map +0 -0
- package/dist/cura/p-ceb646df.entry.js +0 -0
- package/dist/cura/p-ceb646df.entry.js.map +0 -0
- package/dist/cura/p-d040f8b9.entry.js +0 -0
- package/dist/cura/p-d040f8b9.entry.js.map +0 -0
- package/dist/cura/p-f9af3a3b.entry.js +0 -0
- package/dist/cura/p-f9af3a3b.entry.js.map +0 -0
- package/dist/cura/p-sjLA93YY.js +0 -0
- package/dist/cura/p-sjLA93YY.js.map +0 -0
- package/dist/esm/{cura-accordion_20.entry.js → cura-accordion_21.entry.js} +1826 -27
- package/dist/esm/cura-accordion_21.entry.js.map +1 -0
- package/dist/esm/cura-alert.entry.js +4 -3
- package/dist/esm/cura-alert.entry.js.map +1 -1
- package/dist/esm/cura-badge-counter.entry.js +0 -0
- package/dist/esm/cura-badge-counter.entry.js.map +0 -0
- package/dist/esm/cura-badge-dot.entry.js +0 -0
- package/dist/esm/cura-badge-dot.entry.js.map +0 -0
- package/dist/esm/cura-badge-pill.entry.js +0 -0
- package/dist/esm/cura-badge-pill.entry.js.map +0 -0
- package/dist/esm/cura-button-outline.entry.js +0 -0
- package/dist/esm/cura-button-outline.entry.js.map +0 -0
- package/dist/esm/cura-button-select.entry.js +0 -0
- package/dist/esm/cura-button-select.entry.js.map +0 -0
- package/dist/esm/cura-button.definitions-BSI2FkNn.js +0 -0
- package/dist/esm/cura-button.definitions-BSI2FkNn.js.map +0 -0
- package/dist/esm/cura-calendar.entry.js +0 -0
- package/dist/esm/cura-calendar.entry.js.map +0 -0
- package/dist/esm/cura-checkbox.entry.js +0 -0
- package/dist/esm/cura-checkbox.entry.js.map +0 -0
- package/dist/esm/cura-display.entry.js +0 -0
- package/dist/esm/cura-display.entry.js.map +0 -0
- package/dist/esm/cura-dropdown-search-not-found.entry.js +0 -0
- package/dist/esm/cura-dropdown-search-not-found.entry.js.map +0 -0
- package/dist/esm/cura-forms.definitions-Dot54hbB.js +0 -0
- package/dist/esm/cura-forms.definitions-Dot54hbB.js.map +0 -0
- package/dist/esm/cura-icon.definitions-sjLA93YY.js +0 -0
- package/dist/esm/cura-icon.definitions-sjLA93YY.js.map +0 -0
- package/dist/esm/cura-icons-view.entry.js +1 -1
- package/dist/esm/cura-icons-view.entry.js.map +1 -1
- package/dist/esm/cura-input-date.entry.js +0 -0
- package/dist/esm/cura-input-date.entry.js.map +0 -0
- package/dist/esm/cura-loader-bar.entry.js +0 -0
- package/dist/esm/cura-loader-bar.entry.js.map +0 -0
- package/dist/esm/cura-modal.entry.js +10 -2
- package/dist/esm/cura-modal.entry.js.map +1 -1
- package/dist/esm/cura-progress-bar.cura-stepper-item.entry.js.map +0 -0
- package/dist/esm/cura-progress-bar_2.entry.js +0 -0
- package/dist/esm/cura-progress-bar_2.entry.js.map +0 -0
- package/dist/esm/cura-radio.entry.js +0 -0
- package/dist/esm/cura-radio.entry.js.map +0 -0
- package/dist/esm/cura-stepper.entry.js +0 -0
- package/dist/esm/cura-stepper.entry.js.map +0 -0
- package/dist/esm/cura-switch.entry.js +0 -0
- package/dist/esm/cura-switch.entry.js.map +0 -0
- package/dist/esm/cura-tabs-button.entry.js +0 -0
- package/dist/esm/cura-tabs-button.entry.js.map +0 -0
- package/dist/esm/cura-tabs-transparent.entry.js +0 -0
- package/dist/esm/cura-tabs-transparent.entry.js.map +0 -0
- package/dist/esm/cura-tabs.definitions-CHcd-uKK.js +0 -0
- package/dist/esm/cura-tabs.definitions-CHcd-uKK.js.map +0 -0
- package/dist/esm/cura-theme-module-BPKQjAwN.js +0 -0
- package/dist/esm/cura-theme-module-BPKQjAwN.js.map +0 -0
- package/dist/esm/cura-toast.entry.js +0 -0
- package/dist/esm/cura-toast.entry.js.map +0 -0
- package/dist/esm/cura-tooltip.entry.js +0 -0
- package/dist/esm/cura-tooltip.entry.js.map +0 -0
- package/dist/esm/cura.js +1 -1
- package/dist/esm/cura.js.map +0 -0
- package/dist/esm/index-964stZ3D.js +0 -0
- package/dist/esm/index-964stZ3D.js.map +0 -0
- package/dist/esm/index-OdKytJIH.js +0 -0
- package/dist/esm/index-OdKytJIH.js.map +0 -0
- package/dist/esm/index.js +0 -0
- package/dist/esm/index.js.map +0 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/loader.js.map +0 -0
- package/dist/index.cjs.js +0 -0
- package/dist/index.js +0 -0
- package/dist/loader/cdn.js +0 -0
- package/dist/loader/index.cjs.js +0 -0
- package/dist/loader/index.d.ts +0 -0
- package/dist/loader/index.es2017.js +0 -0
- package/dist/loader/index.js +0 -0
- package/dist/types/api/cura-api.d.ts +0 -0
- package/dist/types/api/cura-api.type.d.ts +0 -0
- package/dist/types/api/modules/cura-theme-breakpoints-module.d.ts +0 -0
- package/dist/types/api/modules/cura-theme-colors-module.d.ts +0 -0
- package/dist/types/api/modules/cura-theme-fonts-module.d.ts +0 -0
- package/dist/types/api/modules/cura-theme-module.d.ts +0 -0
- package/dist/types/api/modules/cura-theme-spacing-module.d.ts +0 -0
- package/dist/types/api/theme-presets/static.d.ts +0 -0
- package/dist/types/api/theme-presets/theme-default.d.ts +0 -0
- package/dist/types/api/theme-presets/theme-legacy-default.d.ts +0 -0
- package/dist/types/api/theme-presets/theme-maternity.d.ts +0 -0
- package/dist/types/api/theme-presets/theme-oncology.d.ts +0 -0
- package/dist/types/api/theme-presets/theme-perinatal-temporary.d.ts +0 -0
- package/dist/types/api/theme-presets/theme-presets.d.ts +0 -0
- package/dist/types/api/theme-presets/theme-richet.d.ts +0 -0
- package/dist/types/assets/icons/iconset-default-list.d.ts +0 -0
- package/dist/types/components/accordion/cura-accordion/cura-accordion.d.ts +0 -0
- package/dist/types/components/accordion/cura-accordion/cura-accordion.stories.d.ts +0 -0
- package/dist/types/components/accordion/cura-accordion-item/cura-accordion-item.d.ts +0 -0
- package/dist/types/components/badges/cura-badge-counter/cura-badge-counter.d.ts +0 -0
- package/dist/types/components/badges/cura-badge-counter/cura-badge-counter.stories.d.ts +0 -0
- package/dist/types/components/badges/cura-badge-distance/cura-badge-distance.d.ts +0 -0
- package/dist/types/components/badges/cura-badge-distance/cura-badge-distance.stories.d.ts +0 -0
- package/dist/types/components/badges/cura-badge-dot/cura-badge-dot.d.ts +0 -0
- package/dist/types/components/badges/cura-badge-dot/cura-badge-dot.stories.d.ts +0 -0
- package/dist/types/components/badges/cura-badge-pill/cura-badge-pill.d.ts +0 -0
- package/dist/types/components/badges/cura-badge-pill/cura-badge-pill.stories.d.ts +0 -0
- package/dist/types/components/buttons/cura-button/cura-button.d.ts +0 -0
- package/dist/types/components/buttons/cura-button/cura-button.stories.d.ts +0 -0
- package/dist/types/components/buttons/cura-button-outline/cura-button-outline.d.ts +0 -0
- package/dist/types/components/buttons/cura-button-outline/cura-button-outline.stories.d.ts +0 -0
- package/dist/types/components/buttons/cura-button-select/cura-button-select.d.ts +0 -0
- package/dist/types/components/buttons/cura-button-select/cura-button-select.stories.d.ts +0 -0
- package/dist/types/components/buttons/cura-button-transparent/cura-button-transparent.d.ts +0 -0
- package/dist/types/components/buttons/cura-button-transparent/cura-button-transparent.stories.d.ts +0 -0
- package/dist/types/components/buttons/cura-button.definitions.d.ts +0 -0
- package/dist/types/components/cura-alert/cura-alert.d.ts +0 -0
- package/dist/types/components/cura-alert/cura-alert.stories.d.ts +0 -0
- package/dist/types/components/cura-avatar/cura-avatar.d.ts +0 -0
- package/dist/types/components/cura-avatar/cura-avatar.definitions.d.ts +0 -0
- package/dist/types/components/cura-avatar/cura-avatar.stories.d.ts +0 -0
- package/dist/types/components/cura-calendar/cura-calendar.d.ts +0 -0
- package/dist/types/components/cura-calendar/cura-calendar.stories.d.ts +0 -0
- package/dist/types/components/cura-card/cura-card.d.ts +0 -0
- package/dist/types/components/cura-card/cura-card.stories.d.ts +0 -0
- package/dist/types/components/cura-dropdown-search/cura-dropdown-search-category/cura-dropdown-search-category.d.ts +0 -0
- package/dist/types/components/cura-dropdown-search/cura-dropdown-search-category/cura-dropdown-search-category.stories.d.ts +0 -0
- package/dist/types/components/cura-dropdown-search/cura-dropdown-search-not-found/cura-dropdown-search-not-found.d.ts +0 -0
- package/dist/types/components/cura-dropdown-search/cura-dropdown-search-not-found/cura-dropdown-search-not-found.stories.d.ts +0 -0
- package/dist/types/components/cura-dropdown-search/cura-dropdown-search-option/cura-dropdown-search-option.d.ts +0 -0
- package/dist/types/components/cura-dropdown-search/cura-dropdown-search-option/cura-dropdown-search-option.stories.d.ts +0 -0
- package/dist/types/components/cura-dropdown-search/cura-dropdown-search.d.ts +2 -0
- package/dist/types/components/cura-dropdown-search/cura-dropdown-search.stories.d.ts +0 -0
- package/dist/types/components/cura-icon/cura-icon.d.ts +0 -0
- package/dist/types/components/cura-icon/cura-icon.definitions.d.ts +0 -0
- package/dist/types/components/cura-icon/cura-icon.stories.d.ts +0 -0
- package/dist/types/components/cura-icons-view/cura-icons-view.d.ts +0 -0
- package/dist/types/components/cura-icons-view/cura-icons-view.stories.d.ts +0 -0
- package/dist/types/components/cura-modal/cura-modal.d.ts +5 -0
- package/dist/types/components/cura-modal/cura-modal.stories.d.ts +11 -0
- package/dist/types/components/cura-page-template/cura-page-template.d.ts +0 -0
- package/dist/types/components/cura-stepper/cura-progress-bar/cura-progress-bar.d.ts +0 -0
- package/dist/types/components/cura-stepper/cura-stepper-item/cura-stepper-item.d.ts +0 -0
- package/dist/types/components/cura-stepper/cura-stepper.d.ts +0 -0
- package/dist/types/components/cura-stepper/cura-stepper.stories.d.ts +0 -0
- package/dist/types/components/cura-stepper/stepper.type.d.ts +0 -0
- package/dist/types/components/cura-toast/cura-toast.d.ts +0 -0
- package/dist/types/components/cura-toast/cura-toast.stories.d.ts +0 -0
- package/dist/types/components/cura-tooltip/cura-tooltip.d.ts +0 -0
- package/dist/types/components/cura-tooltip/cura-tooltip.stories.d.ts +0 -0
- package/dist/types/components/forms/cura-checkbox/cura-checkbox.d.ts +0 -0
- package/dist/types/components/forms/cura-checkbox/cura-checkbox.stories.d.ts +0 -0
- package/dist/types/components/forms/cura-forms.definitions.d.ts +0 -0
- package/dist/types/components/forms/cura-input-date/cura-input-date.d.ts +0 -0
- package/dist/types/components/forms/cura-input-date/cura-input-date.stories.d.ts +0 -0
- package/dist/types/components/forms/cura-input-text/cura-input-text.d.ts +0 -0
- package/dist/types/components/forms/cura-input-text/cura-input-text.stories.d.ts +0 -0
- package/dist/types/components/forms/cura-input-text/mask-presets/input-mask-presets.d.ts +0 -0
- package/dist/types/components/forms/cura-label/cura-label.d.ts +0 -0
- package/dist/types/components/forms/cura-label/cura-label.stories.d.ts +0 -0
- package/dist/types/components/forms/cura-radio/cura-radio.d.ts +0 -0
- package/dist/types/components/forms/cura-radio/cura-radio.stories.d.ts +0 -0
- package/dist/types/components/forms/cura-select/cura-select.d.ts +21 -0
- package/dist/types/components/forms/cura-select/cura-select.stories.d.ts +0 -0
- package/dist/types/components/forms/cura-select-options/cura-select-option.d.ts +0 -0
- package/dist/types/components/forms/cura-switch/cura-switch.d.ts +0 -0
- package/dist/types/components/forms/cura-switch/cura-switch.stories.d.ts +0 -0
- package/dist/types/components/loaders/cura-loader-bar/cura-loader-bar.d.ts +0 -0
- package/dist/types/components/loaders/cura-loader-bar/cura-loader-bar.stories.d.ts +0 -0
- package/dist/types/components/loaders/cura-loader-circle/cura-loader-circle.d.ts +0 -0
- package/dist/types/components/loaders/cura-loader-circle/cura-loader-circle.stories.d.ts +0 -0
- package/dist/types/components/tabs/cura-tabs/cura-tabs.d.ts +0 -0
- package/dist/types/components/tabs/cura-tabs/cura-tabs.stories.d.ts +0 -0
- package/dist/types/components/tabs/cura-tabs-button/cura-tabs-button.d.ts +0 -0
- package/dist/types/components/tabs/cura-tabs-button/cura-tabs-button.stories.d.ts +0 -0
- package/dist/types/components/tabs/cura-tabs-group/cura-tabs-group.d.ts +0 -0
- package/dist/types/components/tabs/cura-tabs-group/cura-tabs-group.stories.d.ts +0 -0
- package/dist/types/components/tabs/cura-tabs-transparent/cura-tabs-transparent.d.ts +0 -0
- package/dist/types/components/tabs/cura-tabs-transparent/cura-tabs-transparent.stories.d.ts +0 -0
- package/dist/types/components/tabs/cura-tabs.definitions.d.ts +0 -0
- package/dist/types/components/text/cura-display/cura-display.d.ts +0 -0
- package/dist/types/components/text/cura-display/cura-display.stories.d.ts +0 -0
- package/dist/types/components/text/cura-heading/cura-heading.d.ts +0 -0
- package/dist/types/components/text/cura-heading/cura-heading.stories.d.ts +0 -0
- package/dist/types/components/text/cura-paragraph/cura-paragraph.d.ts +0 -0
- package/dist/types/components/text/cura-paragraph/cura-paragraph.stories.d.ts +0 -0
- package/dist/types/components.d.ts +10 -0
- package/dist/types/index.d.ts +0 -0
- package/dist/types/rededor-cura-start.d.ts +0 -0
- package/dist/types/stencil-public-runtime.d.ts +0 -0
- package/dist/types/utils/FixedElementScrollBehavior.d.ts +0 -0
- package/dist/types/utils/utils.d.ts +0 -0
- package/package.json +3 -2
- package/dist/cjs/cura-accordion_20.cjs.entry.js.map +0 -1
- package/dist/cjs/cura-card.cjs.entry.js +0 -81
- package/dist/cjs/cura-card.cjs.entry.js.map +0 -1
- package/dist/cjs/cura-card.entry.cjs.js.map +0 -1
- package/dist/components/p-BTt-pVTn.js +0 -442
- package/dist/components/p-BTt-pVTn.js.map +0 -1
- package/dist/components/p-CgMS6FUK.js.map +0 -1
- package/dist/components/p-DpIu_Oxz.js.map +0 -1
- package/dist/cura/cura-card.entry.esm.js.map +0 -1
- package/dist/cura/p-2632183e.entry.js +0 -2
- package/dist/cura/p-2632183e.entry.js.map +0 -1
- package/dist/cura/p-6feba852.entry.js +0 -2
- package/dist/cura/p-6feba852.entry.js.map +0 -1
- package/dist/cura/p-d8aeca82.entry.js +0 -2
- package/dist/cura/p-d8aeca82.entry.js.map +0 -1
- package/dist/cura/p-deb0b764.entry.js +0 -2
- package/dist/cura/p-deb0b764.entry.js.map +0 -1
- package/dist/cura/p-df7cb250.entry.js +0 -2
- package/dist/cura/p-df7cb250.entry.js.map +0 -1
- package/dist/esm/cura-accordion_20.entry.js.map +0 -1
- package/dist/esm/cura-card.entry.js +0 -79
- package/dist/esm/cura-card.entry.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["curaAccordionCss","CuraAccordion","constructor","hostRef","this","color","colorMode","iconSize","labelIcon","openIcon","closeIcon","iconColor","behavior","level","mutationObserverCallback","mutations","_","mutation","type","attributeName","_a","target","host","querySelectorAll","forEach","item","opened","addedNodes","Array","from","node","setChildProperties","mutationObserver","MutationObserver","styles","handleChangeColor","setColors","connectedCallback","weights","window","CuraAPI","theme","fonts","getWeights","spacing","getSpacing","colors","getColor","getSize","getFamily","regular","componentDidLoad","options","childList","subtree","attributes","observe","disconnectedCallback","disconnect","Object","assign","render","h","Host","key","style","name","curaAccordionItemCss","CuraAccordionItem","label","getClasses","classes","accordionItemClick","renderIcon","size","slot","class","onClick","e","weight","avatarSizes","border","curaAvatarCss","CuraAvatar","backgroundColor","borderRadius","sizeHandler","floating","assetsPath","localAssetsPath","hostCSSProperties","avatarSize","borderColor","onSrcError","imageSrc","imageSrcDefault","role","src","onError","curaBadgeDistanceCss","CuraDistance","distance","displayDistance","isThousandRounded","formatDistance","roundedDistance","parseFloat","toFixed","Math","abs","setCssProperties","curaButtonCss","CuraButton","disabled","isLoading","iconset","iconPosition","iconOnly","background","fontColor","textAlign","justify","hovered","medium","handleMouseEnter","handleMouseLeave","toLowerCase","_b","getIcon","iconName","getSymbolColor","handleClick","preventDefault","href","internals","form","submit","reset","symbolColor","labelSize","labelSizes","onMouseEnter","onMouseLeave","lineHeight","curaButtonTransparentCss","CuraButtonTransparent","checkMobile","innerWidth","Static","breakpoints","min","checkIOS","includes","navigator","userAgent","document","fakeInputIOSHack","targetElement","fakeInput","createElement","setAttribute","position","opacity","height","fontSize","prepend","focus","addBodyScrollLockClass","body","classList","add","removeBodyScrollLockClass","contains","remove","FixedElementScrollBehavior","hostElement","scrollableElement","_stopPropagationEvent","scrollHeight","clientHeight","stopPropagation","_preventEvent","ev","console","error","disableScroll","scrollPosition","scrollY","scrollTo","top","_addEvents","enableScroll","_removeEvents","addEventListener","passive","removeEventListener","curaDropdownSearchCss","CuraDropdownSearch","status","required","placeholder","icon","maxheight","value","searchdelay","searchminchars","zoomState","isOnFocus","resizeTimeoutMs","focusTimeoutMs","blurTimeoutMs","highlightedIndex","dropdownItems","dropdownSelectableItems","handleSlotChange","getSlotElements","handleWindowResize","resizeTimeout","clearTimeout","setTimeout","isMobile","setZoomHeight","handleFocus","focusTimeout","clearHighlight","enterZoom","selectedOptionElement","scrollIntoView","block","inline","handleBlur","blurTimeout","delay","handleFocusout","handleBackClick","exitZoom","handleOptionActionClick","getInputElement","setFocus","handleInputClear","setValue","clearSelectedOptions","handleSelectOption","_selectOption","detail","handleInputValueChange","handleDropdownMouseOver","highlightedElement","handleKeyDown","moveHighlight","selectHighlight","shadowRoot","querySelector","selectOption","optionid","get","dropdownElement","scrollBehavior","removeAllListeners","direction","length","selectableItemsLastPosition","highlighted","selected","blur","valueTimeout","termchange","emit","optionElement","find","option","optionselect","elements","selectable","hasNotFound","assignedElements","push","localName","visualViewport","innerHeight","mobile","zoom","getHostCSSProperties","id","part","mode","onValueChange","onInput","onFocus","onBlur","onFocusout","onInputClear","onKeyDown","onMouseOver","onSlotchange","curaDropdownSearchCategoryCss","CuraDropdownSearchCategory","marginBlock","curaDropdownSearchOptionCss","CuraDropdownSearchOption","handleSelect","selectoption","actionclick","handleActionsClick","curaHeadingCss","CuraHeading","spotColor","textOverflow","setFontProperties","fontSizeBase","bold","black","getHeadingTag","tags","default","curaIconCss","CuraIcon","scaledStroke","iconSizes","stroke","setHostProperty","colorHandler","prop","setProperty","version","viewBox","preserveAspectRatio","xmlns","xlinkHref","isString","str","String","isObject","obj","_obj$constructor","pick","keys","isArray","k","entries","reduce","acc","_ref","v","DIRECTION","NONE","LEFT","FORCE_LEFT","RIGHT","FORCE_RIGHT","forceDirection","escapeRegExp","replace","objectIncludes","b","a","arrA","arrB","i","dateA","Date","dateB","getTime","regexpA","RegExp","regexpB","toString","prototype","hasOwnProperty","call","ActionDetails","opts","slice","startChangePos","oldValue","oldSelection","start","insertedCount","cursorPos","end","inserted","substr","removedCount","max","removed","head","substring","tail","removeDirection","IMask","el","InputMask","maskedClass","mask","Error","MaskedRegExp","MaskedPattern","MaskedDate","Number","MaskedNumber","MaskedDynamic","Masked","Function","MaskedFunction","warn","normalizeOpts","undefined","instanceOpts","_mask","startsWith","createMask","nOpts","MaskedClass","MaskElement","selectionStart","_unsafeSelectionStart","selectionEnd","_unsafeSelectionEnd","select","_unsafeSelect","isActive","KEY_Z","KEY_Y","HTMLMaskElement","input","super","_onKeydown","bind","_onInput","_onBeforeinput","_onCompositionEnd","rootElement","_this$input$getRootNo","_this$input$getRootNo2","_this$input","getRootNode","activeElement","bindEvents","handlers","drop","click","commit","_handlers","redo","keyCode","shiftKey","metaKey","ctrlKey","undo","isComposing","selectionChange","inputType","unbindEvents","HTMLInputMaskElement","setSelectionRange","HTMLContenteditableMaskElement","root","selection","getSelection","anchorOffset","focusOffset","createRange","range","setStart","firstChild","setEnd","lastChild","removeAllRanges","addRange","textContent","InputHistory","states","currentIndex","currentState","isEmpty","state","MAX_LENGTH","shift","go","steps","clear","isContentEditable","tagName","masked","_listeners","_value","_unmaskedValue","_rawInputValue","history","_saveSelection","_onChange","_onDrop","_onFocus","_onClick","_onUndo","_onRedo","alignCursor","alignCursorFriendly","_bindEvents","updateValue","maskEquals","_this$masked","updateOptions","unmaskedValue","updateControl","rawInputValue","typedValue","val","typedValueEquals","displayValue","_unbindEvents","_fireEvent","listeners","l","_cursorChanging","_changingCursorPos","pos","_selection","newUnmaskedValue","newValue","newRawInputValue","newDisplayValue","isChanged","_fireChangeEvents","_historyChanging","restOpts","updateMask","updateOpts","optionsIsChanged","updateCursor","_delayUpdateCursor","_abortUpdateCursor","_inputEvent","isComplete","nearestInputPos","on","handler","off","hIndex","indexOf","splice","details","oldRawValue","offset","raw","doCommit","_applyHistoryState","destroy","ChangeDetails","normalize","prep","rawInserted","tailShift","skip","aggregate","consumed","Boolean","equals","ContinuousTailDetails","stop","extend","appendTo","append","_appendPlaceholder","unshift","beforePos","shiftChar","_update","DEFAULTS","_initialized","withValueRefresh","resolve","flags","parse","format","extractInput","isFilled","totalInputPositions","fromPos","toPos","extractTail","appendTail","_appendCharRaw","ch","_appendChar","checkTail","consistentState","doPrepareChar","autofix","noFixState","fixDetails","pad","chDetails","consistentTail","appended","doValidate","beforeTailState","overwrite","tailDetails","_appendEager","_beforeTailState","doPrepare","ci","d","doSkipInvalid","eager","fn","_refreshing","rawInput","ret","runIsolated","_isolated","skipInvalid","prepare","prepareChar","validate","parent","deleteCount","tailPos","eagerRemove","valLength","tval","EMPTY_VALUES","ChunksTailDetails","chunks","map","join","tailChunk","lastChunk","extendLast","firstTailChunk","blockIndex","chunk","lastBlockIter","_mapPosToBlock","chunkBlock","index","_stops","_blocks","remainChars","c","props","cstate","chunkShiftPos","PatternCursor","_log","ok","_blockStartPos","s","pushState","popState","pop","bindBlock","_pushLeft","_this$block","_pushRight","pushLeftBeforeFilled","isFixed","pushLeftBeforeInput","pushLeftBeforeRequired","isOptional","pushRightBeforeFilled","pushRightBeforeInput","pushRightBeforeRequired","PatternFixedDefinition","isUnmasking","_isRawInput","minPos","maxPos","appendEager","char","isResolved","PatternInputDefinition","placeholderChar","displayChar","lazy","maskOpts","currentMaskFlags","boundPos","_flags$_beforeTailSta","DEFAULT_DEFINITIONS","search","definitions","_rebuildMask","defs","exposeBlock","_maskedBlocks","pattern","unmaskingBlock","optionalBlock","blocks","p","bNames","filter","bName","sort","expose","repeat","bOpts","blockOpts","maskedBlock","RepeatBlock","isInput","STOP_CHAR","ESCAPE_CHAR","def","maskedState","bi","every","_this$_mapPosToBlock","startBlockIndex","blockIter","blockDetails","chunkTail","_forEachBlocksInRange","bFromPos","bToPos","blockChunk","_findStopBefore","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","_blocks2","accVal","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","cursor","total","maskedBlocks","indices","gi","InputDefinition","FixedDefinition","MaskedRange","_matchFrom","maxLength","to","patternOpts","fromStr","padStart","toStr","sameCharsCount","boundaries","minstr","maxstr","num","match","padEnd","firstNonZero","padLength","split","DefaultPattern","extractPatternOptions","patternBlocks","GET_DEFAULT_BLOCKS","Y","getFullYear","m","getMonth","getDate","date","isDateExist","day","month","year","currentMask","exposeMask","compiledMasks","_overwrite","_eager","_skipInvalid","_applyDispatch","prevValueBeforeTail","inputValue","insertValue","tailValue","prevMask","prevMaskState","doDispatch","_flags$_beforeTailSta2","currentMaskRef","dispatch","currentDetails","_this$currentMask","_this$currentMask2","_this$currentMask3","_this$currentMask4","mi","_autofix","oldMask","_this$currentMask5","inputs","isCurrent","startInputPos","i1","i2","MaskedEnum","enum","enum_","eopts","lengths","requiredLength","optionalLength","matchFrom","matches","matchValue","mch","estr","istr","_MaskedNumber","_updateRegExps","allowNegative","mid","scale","radix","_numberRegExp","_mapToRadixRegExp","mapToRadix","_thousandsSeparatorRegExp","thousandsSeparator","_removeThousandsSeparators","_insertThousandsSeparators","parts","prepCh","allowPositive","_separatorsCount","extendOnSeparators","count","_separatorsCountFromSlice","_adjustRangeWithSeparators","prevBeforeTailValue","prevBeforeTailSeparatorsCount","number","accepted","isNaN","fixedNum","UNMASKED_RADIX","appendDetails","beforeTailValue","beforeTailSeparatorsCount","_findSeparatorAround","searchFrom","separatorPos","separatorAroundFromPos","separatorAroundToPos","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","validnum","formatted","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","sign","zeros","test","dropFractional","n","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","toLocaleString","useGrouping","maximumFractionDigits","PIPE_TYPE","MASKED","UNMASKED","TYPED","createPipe","arg","pipe","repeatFrom","Infinity","repeatTo","_ref2","_ref3","_ref4","_this$_blocks","_blockOpts","_allocateBlock","_this$_mapPosToBlock$","allocated","_this$_blocks$bi","_trimEmptyTail","_this$_mapPosToBlock2","_this$_mapPosToBlock3","firstBlockIndex","lastBlockIndex","removeCount","globalThis","maskOptions","cpf_cnpj","cpf","cnpj","phone","dateRange","curaInputTextCss","CuraInputText","inputMode","enableSelectionMode","readOnly","isHovered","isFocused","clearIcon","hideErrorIcon","autocomplete","timeoutMs","inputRef","formStateRestoreCallback","applyValueToMask","setFormValue","formAssociatedCallback","ariaLabel","formResetCallback","handleClearInput","setValidity","formDisabledCallback","transparent","getLabelColor","iconSizeDefaultMode","baseIconSize","iconMap","loading","success","iconConfig","renderHelperText","isError","isSuccess","isDefault","helperTextSize","colorText","initializeMask","destroyMask","handleMaskUpdate","maskedInput","valueChange","inputClear","handleInputFocus","handleInputBlur","shouldDisplayMask","maskPreset","maskRegex","maskAdvanced","initializePresetMask","initializeRegexMask","initializeAdvancedMask","clearMaskValue","cleanedRegexString","config","JSON","handleInputChange","event","handleNumberInputChange","handleTextInputChange","numericValue","handleBlockInvalidNumber","readonly","maxlength","inputmode","ref","onMouseDown","curaLabelCss","CuraLabel","curaLoaderCircleCss","CuraLoaderCircle","sizes","xlarge","large","small","getPxSize","getStyles","fill","cx","cy","r","x1","y1","x2","y2","gradientUnits","curaPageTemplateCss","CuraPageTemplate","contentwidth","curaParagraphCss","CuraParagraph","curaSelectCss","CuraSelect","searchBehavior","caseSensitive","maxHeight","isOpen","activeIndex","textInput","handleMutations","updateSelectedOption","onOptiselected","selectedOption","clearSelectedAttributes","handleKeyNavigation","code","updateActiveIndex","handleClickOutside","clickedOutside","updateOptionHighlights","newActiveINdex","active","filterOptions","newText","searchTermInput","removeAccents","searchTerm","toLocaleLowerCase","optionValue","isVisible","display","componentWillLoad","initializeOptions","setupMutationObserver","addOutsideClickListener","applyStyles","removeOutsideClickListener","isSelected","stringify","fontWeights","colorKeys","attributeFilter","handleValueChange","removeAttribute","wrapper","isStatusDefault","isHoveredOrFocused","open","menu","curaSelectOptionCss","CuraSelectOption","element","sizeMap","curaTabsCss","CuraTabs","borderBottom","computeContentColor","updateDynamicStyles","tabSelect","labelColor","curaTabsGroupCss","CuraTabsGroup","gap","handleTabSelect","updateSelectedTab","tabs","tab"],"sources":["src/components/accordion/cura-accordion/cura-accordion.scss?tag=cura-accordion&encapsulation=shadow","src/components/accordion/cura-accordion/cura-accordion.tsx","src/components/accordion/cura-accordion-item/cura-accordion-item.scss?tag=cura-accordion-item&encapsulation=shadow","src/components/accordion/cura-accordion-item/cura-accordion-item.tsx","src/components/cura-avatar/cura-avatar.definitions.tsx","src/components/cura-avatar/cura-avatar.scss?tag=cura-avatar&encapsulation=shadow","src/components/cura-avatar/cura-avatar.tsx","src/components/badges/cura-badge-distance/cura-badge-distance.scss?tag=cura-badge-distance&encapsulation=shadow","src/components/badges/cura-badge-distance/cura-badge-distance.tsx","src/components/buttons/cura-button/cura-button.scss?tag=cura-button&encapsulation=shadow","src/components/buttons/cura-button/cura-button.tsx","src/components/buttons/cura-button-transparent/cura-button-transparent.scss?tag=cura-button-transparent&encapsulation=shadow","src/components/buttons/cura-button-transparent/cura-button-transparent.tsx","src/utils/utils.ts","src/utils/FixedElementScrollBehavior.ts","src/components/cura-dropdown-search/cura-dropdown-search.scss?tag=cura-dropdown-search&encapsulation=shadow","src/components/cura-dropdown-search/cura-dropdown-search.tsx","src/components/cura-dropdown-search/cura-dropdown-search-category/cura-dropdown-search-category.scss?tag=cura-dropdown-search-category&encapsulation=shadow","src/components/cura-dropdown-search/cura-dropdown-search-category/cura-dropdown-search-category.tsx","src/components/cura-dropdown-search/cura-dropdown-search-option/cura-dropdown-search-option.scss?tag=cura-dropdown-search-option&encapsulation=shadow","src/components/cura-dropdown-search/cura-dropdown-search-option/cura-dropdown-search-option.tsx","src/components/text/cura-heading/cura-heading.scss?tag=cura-heading&encapsulation=shadow","src/components/text/cura-heading/cura-heading.tsx","src/components/cura-icon/cura-icon.scss?tag=cura-icon&encapsulation=shadow","src/components/cura-icon/cura-icon.tsx","../../node_modules/imask/esm/core/utils.js","../../node_modules/imask/esm/core/action-details.js","../../node_modules/imask/esm/core/holder.js","../../node_modules/imask/esm/masked/factory.js","../../node_modules/imask/esm/controls/mask-element.js","../../node_modules/imask/esm/controls/html-mask-element.js","../../node_modules/imask/esm/controls/html-input-mask-element.js","../../node_modules/imask/esm/controls/html-contenteditable-mask-element.js","../../node_modules/imask/esm/controls/input-history.js","../../node_modules/imask/esm/controls/input.js","../../node_modules/imask/esm/core/change-details.js","../../node_modules/imask/esm/core/continuous-tail-details.js","../../node_modules/imask/esm/masked/base.js","../../node_modules/imask/esm/masked/pattern/chunk-tail-details.js","../../node_modules/imask/esm/masked/pattern/cursor.js","../../node_modules/imask/esm/masked/pattern/fixed-definition.js","../../node_modules/imask/esm/masked/pattern/input-definition.js","../../node_modules/imask/esm/masked/regexp.js","../../node_modules/imask/esm/masked/pattern.js","../../node_modules/imask/esm/masked/range.js","../../node_modules/imask/esm/masked/date.js","../../node_modules/imask/esm/masked/dynamic.js","../../node_modules/imask/esm/masked/enum.js","../../node_modules/imask/esm/masked/function.js","../../node_modules/imask/esm/masked/number.js","../../node_modules/imask/esm/masked/pipe.js","../../node_modules/imask/esm/masked/repeat.js","../../node_modules/imask/esm/index.js","src/components/forms/cura-input-text/mask-presets/input-mask-presets.ts","src/components/forms/cura-input-text/cura-input-text.scss?tag=cura-input-text&encapsulation=shadow","src/components/forms/cura-input-text/cura-input-text.tsx","src/components/forms/cura-label/cura-label.scss?tag=cura-label&encapsulation=shadow","src/components/forms/cura-label/cura-label.tsx","src/components/loaders/cura-loader-circle/cura-loader-circle.scss?tag=cura-loader-circle&encapsulation=shadow","src/components/loaders/cura-loader-circle/cura-loader-circle.tsx","src/components/cura-page-template/cura-page-template.scss?tag=cura-page-template&encapsulation=shadow","src/components/cura-page-template/cura-page-template.tsx","src/components/text/cura-paragraph/cura-paragraph.scss?tag=cura-paragraph&encapsulation=shadow","src/components/text/cura-paragraph/cura-paragraph.tsx","src/components/forms/cura-select/cura-select.scss?tag=cura-select&encapsulation=shadow","src/components/forms/cura-select/cura-select.tsx","src/components/forms/cura-select-options/cura-select-option.scss?tag=cura-select-option&encapsulation=shadow","src/components/forms/cura-select-options/cura-select-option.tsx","src/components/tabs/cura-tabs/cura-tabs.scss?tag=cura-tabs&encapsulation=shadow","src/components/tabs/cura-tabs/cura-tabs.tsx","src/components/tabs/cura-tabs-group/cura-tabs-group.scss?tag=cura-tabs-group&encapsulation=shadow","src/components/tabs/cura-tabs-group/cura-tabs-group.tsx"],"sourcesContent":[":host {\n display: block;\n color: var(--font-color);\n font-size: var(--font-size);\n font-size: var(--font-size);\n font-family: var(--font-family);\n font-weight: var(--font-weight-regular);\n}\n","import { Component, Element, Host, Prop, State, Watch, h } from '@stencil/core';\n\n@Component({\n tag: 'cura-accordion',\n styleUrl: 'cura-accordion.scss',\n shadow: true,\n})\nexport class CuraAccordion {\n\n @Element() host: HTMLElement;\n\n /**\n * Color scheme base color\n */\n @Prop({reflect: true}) color = 'primary';\n @Watch('color')\n handleChangeColor() {\n this.setColors();\n }\n\n /**\n * Set the color mode to dark or light\n */\n @Prop({reflect: true}) colorMode: 'dark' | 'light' = 'dark';\n\n /**\n * Accordion items icons\n */\n @Prop({reflect: true}) iconSize = 20;\n @Prop({reflect: true}) labelIcon = '';\n @Prop({reflect: true}) openIcon = 'down';\n @Prop({reflect: true}) closeIcon = 'up';\n\n /**\n * Color scheme base color\n * (By default, the icon will use the same color of 'color')\n */\n @Prop({reflect: true}) iconColor = '';\n\n /**\n * Accordion behavior when item is clicked\n * (The default will close all items except the current one)\n */\n @Prop({reflect: true}) behavior: 'default' | 'keep-open' = 'default';\n\n /**\n * Heading level for semantics. Will render the related HTML tag <h1>, <h2>, ...\n * Values: 1 to 6 (3 default).\n */\n @Prop({reflect: true}) level: 1 | 2 | 3 | 4 | 5 | 6 = 3;\n\n mutationObserverCallback = (mutations: MutationRecord[], _: MutationObserver) => {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'opened' && mutation.target?.['opened']) {\n if (this.behavior !== 'default') continue;\n this.host.querySelectorAll('cura-accordion-item').forEach(item => {\n if (item != mutation.target) {\n item.opened = false;\n }\n });\n }\n if (mutation.type === 'childList') {\n const addedNodes = Array.from(mutation.addedNodes || []);\n for(let node of addedNodes) {\n this.setChildProperties(node as HTMLCuraAccordionItemElement);\n }\n }\n }\n }\n mutationObserver: MutationObserver = new MutationObserver(this.mutationObserverCallback);\n\n @State() styles = {};\n\n connectedCallback() {\n const weights = window.CuraAPI.theme.fonts.getWeights();\n this.styles['--base-spacing'] = window.CuraAPI.theme.spacing.getSpacing();\n this.styles['--neutral-base'] = window.CuraAPI.theme.colors.getColor(`neutral-base`);\n this.styles['--font-size'] = window.CuraAPI.theme.fonts.getSize();\n this.styles['--font-color'] = window.CuraAPI.theme.fonts.getColor();\n this.styles['--font-family'] = window.CuraAPI.theme.fonts.getFamily();\n this.styles['--font-weight-regular'] = weights.regular;\n this.setColors();\n }\n\n componentDidLoad() {\n this.host.querySelectorAll('cura-accordion-item').forEach(item => {\n this.setChildProperties(item);\n });\n const options: MutationObserverInit = {childList: true, subtree: false, attributes: false}\n this.mutationObserver.observe(this.host, options)\n }\n\n disconnectedCallback() {\n this.mutationObserver.disconnect();\n }\n\n setChildProperties(item: HTMLCuraAccordionItemElement) {\n // Theme\n item.colorMode = this.colorMode;\n item.iconColor = this.iconColor || this.color;\n // Icon\n item.iconSize = this.iconSize;\n if (this.labelIcon) item.labelIcon = this.labelIcon; // It's possible to define a specific icon for each item.\n item.openIcon = this.openIcon;\n item.closeIcon = this.closeIcon;\n // Level\n item.level = this.level;\n }\n\n setColors() {\n this.styles = {\n ...this.styles,\n \"--acc-color\": window.CuraAPI.theme.colors.getColor(\"neutral-black\"),\n \"--acc-color-hover\": window.CuraAPI.theme.colors.getColor(`${this.color}-base`),\n \"--acc-color-icon\": window.CuraAPI.theme.colors.getColor(`${this.iconColor || this.color}-base`),\n \"--acc-color-icon-hover\": window.CuraAPI.theme.colors.getColor(`${this.iconColor || this.color}-darker`),\n \"--acc-color-inverted\": window.CuraAPI.theme.colors.getColor(\"neutral-white\"),\n \"--acc-color-hover-inverted\": window.CuraAPI.theme.colors.getColor(`${this.color}-lighter`),\n \"--acc-color-icon-inverted\": window.CuraAPI.theme.colors.getColor(\"neutral-white\"),\n \"--acc-color-icon-hover-inverted\": window.CuraAPI.theme.colors.getColor(`${this.iconColor || this.color}-lighter`),\n };\n }\n\n render() {\n return (\n <Host style={this.styles}>\n <slot name='accordion-item'></slot>\n </Host>\n );\n }\n\n}\n","@import '../../../scss/mixins/responsive.scss';\n@import \"../../../scss/mixins/spacing.scss\";\n\n:host {\n display: block;\n\n .accordion-item {\n width: 100%;\n\n &::after {\n content: \"\";\n display: block;\n border-top: solid 1px var(--neutral-base);\n width: 100%;\n }\n\n &:hover:not(.active)::after {\n content: \"\";\n display: block;\n border-top: solid 1px var(--acc-color-icon-hover);\n width: 100%;\n }\n\n .label {\n display: flex;\n flex-direction: column;\n\n .label-container {\n display: flex;\n flex-grow: 1;\n justify-content: space-between;\n align-items: center;\n gap: #{$spacing-xxxs};\n padding: #{$spacing-xxxs};\n word-break: break-word;\n cursor: pointer;\n font-size: 1.14em;\n font-weight: var(--font-weight-regular);\n\n .label-content {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: #{$spacing-xxxs};\n\n cura-icon {\n --color: var(--acc-color) !important;\n }\n\n cura-heading {\n --color-body: var(--acc-color) !important;\n }\n }\n\n cura-icon {\n --color: var(--acc-color-icon) !important;\n margin-right: 4px;\n }\n\n &:hover {\n cura-heading {\n --color-body: var(--acc-color-hover) !important;\n }\n cura-icon {\n --color: var(--acc-color-icon-hover) !important;\n }\n }\n }\n }\n\n .content {\n font-size: 1em;\n overflow: hidden;\n max-height: 0;\n transition: max-height .25s ease;\n .content-wrapper {\n padding: #{$spacing-xxxs};\n }\n }\n\n &.inverted {\n &:hover:not(.active)::after {\n content: \"\";\n display: block;\n border-top: solid 1px var(--acc-color-icon-hover-inverted);\n width: 100%;\n }\n\n .label .label-container {\n cura-heading {\n --color-body: var(--acc-color-inverted) !important;\n }\n cura-icon {\n --color: var(--acc-color-icon-inverted) !important;\n }\n &:hover {\n cura-heading {\n --color-body: var(--acc-color-hover-inverted) !important;\n }\n cura-icon {\n --color: var(--acc-color-icon-hover-inverted) !important;\n }\n }\n }\n }\n\n &.active {\n .content {\n max-height: 200vh;\n overflow-y: auto;\n transition: max-height .5s ease .14s;\n }\n }\n }\n\n @include medium-only() {\n .accordion-item {\n .label .label-container {\n font-size: 1.29em;\n }\n\n .content {\n font-size: 1.14em;\n }\n }\n }\n\n @include large-up() {\n .accordion-item {\n .label .label-container {\n font-size: 1.29em;\n }\n\n .content {\n font-size: 1.14em;\n }\n }\n }\n}\n","import { Component, Host, Prop, State, h } from '@stencil/core';\n\n@Component({\n tag: 'cura-accordion-item',\n styleUrl: 'cura-accordion-item.scss',\n shadow: true,\n})\nexport class CuraAccordionItem {\n\n /**\n * Text label for accordion item\n */\n @Prop({reflect: true}) label: string = '';\n\n /** ***Properties below are inherited from the cura-accordion*** */\n /**\n * Accordion items icons\n */\n @Prop({reflect: true}) iconSize = 20;\n @Prop({reflect: true}) labelIcon = '';\n @Prop({reflect: true}) openIcon = 'down';\n @Prop({reflect: true}) closeIcon = 'up';\n\n /**\n * Color scheme base color\n * (By default, the icon will use the same color of 'color')\n */\n @Prop({reflect: true}) iconColor = '';\n\n /**\n * Set the color mode to dark or light\n */\n @Prop() colorMode: 'dark' | 'light' = 'dark';\n\n /**\n * Heading level for semantics. Will render the related HTML tag <h1>, <h2>, ...\n * Values: 1 to 6 (3 default).\n */\n @Prop({reflect: true}) level: 1 | 2 | 3 | 4 | 5 | 6 = 3;\n\n @Prop({reflect: true, mutable: true}) opened: boolean = false;\n\n @State() styles = {};\n\n getClasses() {\n const classes = {};\n classes['accordion-item'] = true;\n classes['active'] = this.opened;\n classes['inverted'] = this.colorMode === 'light';\n return classes;\n }\n\n accordionItemClick(_: Event) {\n this.opened = !this.opened;\n }\n\n renderIcon() {\n if (!this.labelIcon) return '';\n return <cura-icon name={this.labelIcon} size={this.iconSize} color={\"neutral-black\"}></cura-icon>;\n }\n\n render() {\n return (\n <Host slot=\"accordion-item\">\n <div class={this.getClasses()} style={this.styles}>\n <div class=\"label\" onClick={e => this.accordionItemClick(e)}>\n <div class=\"label-container\">\n <div class=\"label-content\">\n {this.renderIcon()}\n <cura-heading size=\"small\" level={this.level} weight='bold' margin-block=\"0\" color=\"neutral-black\">\n {this.label}\n </cura-heading>\n </div>\n <cura-icon name={this.opened ? this.closeIcon : this.openIcon} size={this.iconSize} color={\"neutral-black\"}></cura-icon>\n </div>\n </div>\n <div class='content'>\n <div class=\"content-wrapper\">\n <slot></slot>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n\n}\n","export const avatarSizes = {\n '80': { border: 2.5 },\n '40': { border: 2.25 },\n '32': { border: 2 },\n '24': { border: 1.75 },\n};\n",":host {\n display: inline-flex;\n\n .conteiner {\n display: flex;\n box-sizing: border-box;\n justify-content: center;\n align-items: center;\n width: var(--size);\n height: var(--size);\n border: var(--border) solid var(--border-color);\n border-radius: var(--border-radius);\n background: var(--background-color);\n overflow: hidden;\n &.floating {\n box-shadow: 0px 4px 8px 0px rgba(38, 38, 38, 0.16);\n }\n }\n .conteiner img {\n outline: none;\n object-fit: contain;\n width: 100%;\n height: 100%;\n }\n}\n","import { Component, Element, Host, Prop, State, Watch, h } from '@stencil/core';\nimport { avatarSizes } from './cura-avatar.definitions';\n@Component({\n tag: 'cura-avatar',\n styleUrl: 'cura-avatar.scss',\n shadow: true,\n})\nexport class CuraAvatar {\n @Element() host: HTMLElement;\n\n /**\n * Size of the avatar. Values: 80, 40, 32, 24.\n * @default 80\n */\n @Prop() size: '80' | '40' | '32' | '24' = '80';\n /**\n * Background color of the avatar.\n * Accepts any color from the theme.\n * @default neutral-purewhite\n */\n @Prop({ reflect: true }) backgroundColor: string = 'neutral-purewhite';\n /**\n * Border color of the avatar.\n * Accepts any color from the theme.\n */\n @Prop({ reflect: true }) borderColor: string;\n /**\n * Border radius of the avatar.\n * @default 50%\n */\n @Prop({ reflect: true }) borderRadius: string = '50%';\n /**\n * Show border of the avatar.\n * @default false\n */\n @Prop({ reflect: true }) border: boolean = false;\n /**\n * Type of the avatar.\n * @default default\n */\n @Prop({ reflect: true }) type: 'default' | 'branding' = 'default';\n /**\n * Image source of the avatar.\n * Accepts any image source. If not provided, the default image will be used.\n */\n @Prop({ reflect: true, mutable: true }) imageSrc: string;\n /**\n * Default image source of the avatar.\n * Some predefined images are available in the design system assets folder.\n */\n @Prop({ reflect: true }) imageSrcDefault: string;\n /**\n * Floating state of the avatar.\n * @default false\n */\n @Prop({ reflect: true }) floating: boolean;\n\n @State() styles = {};\n\n @Watch('size')\n sizeHandler(size: string) {\n this.styles = {\n ...this.styles,\n '--size': `${size}px`,\n };\n }\n\n assetsPath: string;\n\n getClasses() {\n const classes = {};\n classes['conteiner'] = true;\n classes['floating'] = this.floating;\n return classes;\n }\n\n connectedCallback() {\n this.assetsPath = window.CuraAPI.localAssetsPath;\n this.sizeHandler(this.size);\n }\n\n hostCSSProperties() {\n const avatarSize = avatarSizes[this.size];\n\n return {\n '--background-color': window.CuraAPI.theme.colors.getColor(this.backgroundColor),\n '--border-color': window.CuraAPI.theme.colors.getColor(this.borderColor),\n '--border-radius': `${this.borderRadius}`,\n '--border': this.border ? `${avatarSize.border}px` : '0',\n };\n }\n\n onSrcError() {\n this.imageSrc = this.imageSrcDefault || `${this.assetsPath}/images/avatar/patient-default.svg`;\n }\n\n render() {\n return (\n <Host style={this.hostCSSProperties()} role=\"img\">\n <div class={this.getClasses()} style={this.styles}>\n <img src={this.imageSrc || this.imageSrcDefault || `${this.assetsPath}/images/avatar/patient-default.svg`} onError={() => this.onSrcError()}></img>\n </div>\n </Host>\n );\n }\n}\n","@import \"../../../scss/mixins/spacing.scss\";\n\n:host {\n .container{\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: calc(#{$base-spacing} * 10px);\n height: calc(#{$base-spacing} * 10px);\n border-radius: calc(#{$base-spacing} * 1px);\n background: var(--neutral-pale);\n }\n}\n","import { Component, Host, Prop, State, Watch, h } from '@stencil/core';\n\n@Component({\n tag: 'cura-badge-distance',\n styleUrl: 'cura-badge-distance.scss',\n shadow: true,\n})\nexport class CuraDistance {\n\n @Prop() distance = 0;\n @Prop({ reflect: true }) label = 'km';\n @State() styles = {};\n @State() displayDistance = 0;\n isThousandRounded = false;\n\n theme = window.CuraAPI.theme;\n\n @Watch('distance')\n formatDistance() {\n const roundedDistance = this.distance % 1 !== 0 ? parseFloat(this.distance.toFixed(1)) : this.distance; \n this.isThousandRounded = Math.abs(roundedDistance) >= 1000;\n this.displayDistance = this.isThousandRounded ? parseFloat((roundedDistance / 1000).toFixed(1)) : roundedDistance;\n }\n\n\n connectedCallback(){\n this.setCssProperties();\n this.formatDistance(); \n }\n\n render() {\n return (\n <Host>\n <div class=\"container\" style={this.styles}>\n <cura-label size='xsmall' weight='bold' color='neutral-black'>\n {this.displayDistance}{this.isThousandRounded ? 'K' : ''}\n </cura-label>\n <cura-label size='xsmall' weight='bold' color='neutral-dark'>\n {this.label}\n </cura-label>\n </div>\n </Host>\n );\n }\n\n setCssProperties() {\n this.styles = {\n '--neutral-pale': this.theme.colors.getColor(`neutral-pale`),\n '--base-spacing': this.theme.spacing.getSpacing()\n }\n }\n\n}\n","@import \"../../../scss/mixins/buttons.scss\";\n\n:host {\n @include button-host();\n\n button,\n a {\n @include button-element() {\n background-color: var(--color-base-neutral-purewhite);\n box-sizing: border-box;\n border: none;\n\n &::before {\n content: \"\";\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0px;\n top: 0px;\n box-sizing: border-box;\n border: 2px solid transparent;\n border-radius: var(--border-radius);\n }\n\n &:not(.disabled) {\n &:not(.isLoading)::before {\n border: 2px solid var(--color-base-color-light);\n }\n\n &:hover {\n background: var(--color-base-color-light);\n box-shadow: 0px 4px 8px 0px rgba(38, 38, 38, 0.16);\n }\n &:not(.isLoading):hover::before {\n border-color: var(--color-dark-color-base);\n }\n }\n\n &:not(.isLoading):not(.disabled):active {\n background-color: var(--color-dark-color-light);\n }\n &:not(.isLoading):not(.disabled):active::before {\n border-color: var(--color-dark-color-light);\n }\n }\n\n @include button-shadow-behavior();\n @include button-sizes();\n\n // Children Elements\n @include button-container();\n @include button-label();\n @include button-icon();\n\n // Disabled state\n @include button-disabled() {\n background-color: var(--neutral-pale-neutral-black);\n }\n\n // FAB / Icon-only\n @include button-icon-only-behavior();\n\n // Loading State\n @include button-loading();\n }\n}\n","import { Component, Host, h, Prop, Watch, State, AttachInternals } from '@stencil/core';\nimport { labelSizes } from '../cura-button.definitions';\n\n@Component({\n tag: 'cura-button',\n styleUrl: 'cura-button.scss',\n shadow: true,\n formAssociated: true\n})\nexport class CuraButton {\n\n @AttachInternals() internals: ElementInternals;\n\n /**\n * Button type: button (default) | submit | reset\n */\n @Prop({ reflect: true }) type: 'button' | 'reset' | 'submit' = 'button';\n\n /**\n * Button size: small | medium | large (default)\n */\n @Prop({ reflect: true }) size: 'small' | 'medium' | 'large' = 'large';\n\n /**\n * Disabled state. Boolean.\n */\n @Prop({ reflect: true }) disabled = false;\n /**\n * Loading state. Boolean.\n */\n @Prop({ reflect: true }) isLoading = false;\n\n /**\n * Name of the icon to be used from iconset.\n */\n @Prop({ reflect: true }) iconName: string;\n /**\n * Custom iconset if needed.\n */\n @Prop({ reflect: true }) iconset = 'default';\n /**\n * Icon position: left (default) | right.\n */\n @Prop({ reflect: true }) iconPosition: 'left' | 'right' = 'left';\n /**\n * Set button to FAB/icon only.\n */\n @Prop({ reflect: true }) iconOnly = false;\n\n /**\n * Property href switch button to link.\n */\n @Prop({ reflect: true }) href: string;\n /**\n * Set target if link.\n */\n @Prop({ reflect: true }) target = \"_self\";\n\n /**\n * Color base from color scheme. Default: accent.\n */\n @Prop() color = 'accent';\n\n /**\n * Set the background color to dark or light.\n */\n @Prop({ reflect: true }) background: 'dark' | 'light' = 'light';\n\n /**\n * Set the font color to dark or light.\n */\n @Prop({ reflect: true }) fontColor: 'dark' | 'light' = 'dark';\n\n /**\n * Set text aligment for the button label.\n * Vales: left (default) | center | right.\n */\n @Prop({ reflect: true }) textAlign: 'left' | 'center' | 'right' = 'left';\n\n /**\n * Justify icons and label inside the button.\n * Vales: false (default) | true.\n */\n @Prop({ reflect: true }) justify = false;\n\n @State() styles = {};\n\n @State() hovered = false\n\n weights;\n\n\n connectedCallback() {\n this.weights = window.CuraAPI.theme.fonts.getWeights();\n this.styles['--base-spacing'] = window.CuraAPI.theme.spacing.getSpacing();\n this.styles['--font-size'] = window.CuraAPI.theme.fonts.getSize();\n this.styles['--font-family'] = window.CuraAPI.theme.fonts.getFamily();\n this.styles['--font-weight-medium'] = this.weights.medium;\n this.styles['--text-align'] = this.textAlign;\n this.setColors();\n }\n\n @Watch('background')\n @Watch('color')\n setColors() {\n const colors = [\n { name: '--color-base-neutral-purewhite', theme: `${this.background === 'light' ? `${this.color}-base` : 'neutral-pale'}` },\n { name: '--color-base-color-light', theme: `${this.background === 'light' ? `${this.color}-base` : `${this.color}-lighter`}` },\n { name: '--color-dark-color-light', theme: `${this.background === 'light' ? `${this.color}-dark` : `${this.color}-light`}` },\n { name: '--color-dark-color-base', theme: `${this.background === 'light' ? `${this.color}-dark` : `${this.color}-base`}` },\n { name: '--neutral-pale-neutral-black', theme: `${this.background === 'light' ? 'neutral-pale' : 'neutral-black'}` },\n ]\n\n colors.forEach(color => this.styles[color.name] = window.CuraAPI.theme.colors.getColor(color.theme));\n this.styles = { ...this.styles };\n }\n\n handleMouseEnter() {\n if (this.disabled) return;\n this.hovered = true;\n }\n\n handleMouseLeave() {\n this.hovered = false;\n }\n\n getClasses() {\n const classes = {};\n classes[`${this.size?.toLowerCase()}`] = true;\n classes[`icon-${this.iconPosition?.toLowerCase()}`] = true;\n classes[`icon-only`] = this.iconOnly;\n classes['disabled'] = this.disabled;\n classes['isLoading'] = this.isLoading;\n classes['justify'] = this.justify;\n\n return classes;\n }\n\n getIcon() {\n if (!this.iconName) return '';\n const iconSize = this.size === 'large' ? 20 : 16;\n return <cura-icon name={this.iconName} iconset={this.iconset} size={iconSize} color={this.getSymbolColor()}></cura-icon>;\n }\n\n getSymbolColor() {\n if (this.isLoading && this.fontColor === 'light' ? 'neutral-white' : 'neutral-black')\n return this.disabled\n ? 'neutral-dark'\n : this.fontColor === 'light'\n ? 'neutral-white'\n : 'neutral-black';\n }\n\n handleClick(e: Event) {\n if (this.disabled || this.isLoading) {\n e.preventDefault();\n return;\n }\n if (!this.href) {\n if (this.type === 'submit' && this.internals.form) this.internals.form.submit();\n if (this.type === 'reset' && this.internals.form) this.internals.form.reset();\n }\n }\n\n render() {\n const symbolColor = this.getSymbolColor();\n const labelSize = labelSizes[this.size] || labelSizes[\"default\"];\n return (\n <Host role={ this.href ? 'link' : this.type }\n aria-disabled={this.disabled}>\n {this.href ? (\n <a href={this.disabled ? '' : this.href}\n target={this.target}\n class={this.getClasses()}\n style={this.styles}\n onClick={(e) => this.handleClick(e)}\n onMouseEnter={() => this.handleMouseEnter()}\n onMouseLeave={() => this.handleMouseLeave()}>\n <span class=\"button-container\">\n {this.getIcon()}\n <cura-label class=\"label\" size={labelSize} lineHeight='normal' color={symbolColor}><slot></slot></cura-label>\n </span>\n <cura-loader-circle size={this.size} color={symbolColor}></cura-loader-circle>\n </a>\n ) : (\n <button class={this.getClasses()}\n style={this.styles}\n disabled={this.disabled || null}\n onClick={(e) => this.handleClick(e)}\n onMouseEnter={() => this.handleMouseEnter()}\n onMouseLeave={() => this.handleMouseLeave()}\n type={this.type}>\n <span class=\"button-container\">\n {this.getIcon()}\n <cura-label class=\"label\" size={labelSize} lineHeight='normal' color={symbolColor}><slot></slot></cura-label>\n </span>\n <cura-loader-circle size={this.size} color={symbolColor}></cura-loader-circle>\n </button>\n )}\n </Host>\n );\n }\n\n}\n","@import \"../../../scss/mixins/buttons.scss\";\n\n:host {\n @include button-host();\n\n button, a {\n @include button-element() {\n background-color: transparent;\n border: none;\n }\n\n @include button-sizes();\n\n // Children Elements\n @include button-container();\n @include button-label();\n @include button-icon();\n\n // Disabled state\n @include button-disabled();\n\n // FAB / Icon-only\n @include button-icon-only-behavior();\n\n // Loading State\n @include button-loading();\n\n }\n}\n","import { Component, Host, h, Prop, State, Watch, AttachInternals } from '@stencil/core';\nimport { labelSizes } from '../cura-button.definitions';\n\n@Component({\n tag: 'cura-button-transparent',\n styleUrl: 'cura-button-transparent.scss',\n shadow: true,\n formAssociated: true\n})\nexport class CuraButtonTransparent {\n\n @AttachInternals() internals: ElementInternals;\n\n /**\n * Button type: button (default) | submit | reset\n */\n @Prop({ reflect: true }) type: 'button' | 'reset' | 'submit' = 'button';\n\n /**\n * Button size: small | medium | large (default)\n */\n @Prop({ reflect: true }) size: 'small' | 'medium' | 'large' = 'large';\n\n /**\n * Disabled state. Boolean.\n */\n @Prop({ reflect: true }) disabled = false;\n /**\n * Loading state. Boolean.\n */\n @Prop({ reflect: true }) isLoading = false;\n\n /**\n * Name of the icon to be used from iconset.\n */\n @Prop({ reflect: true }) iconName: string;\n /**\n * Custom iconset if needed.\n */\n @Prop({ reflect: true }) iconset = 'default';\n /**\n * Icon position: left (default) | right.\n */\n @Prop({ reflect: true }) iconPosition: 'left' | 'right' = 'left';\n /**\n * Set button to FAB/icon only.\n */\n @Prop({ reflect: true }) iconOnly = false;\n\n /**\n * Property href switch button to link.\n */\n @Prop({ reflect: true }) href: string;\n /**\n * Set target if link.\n */\n @Prop({ reflect: true }) target = \"_self\";\n\n /**\n * Color base from color scheme. Default: accent.\n */\n @Prop({ reflect: true }) color = 'primary';\n\n /**\n * Set the font color to dark or light.\n * Default: dark.\n */\n @Prop({ reflect: true }) fontColor: 'dark' | 'light' = 'dark';\n /**\n * Set text aligment for the button label.\n * Vales: left (default) | center | right.\n */\n @Prop({ reflect: true }) textAlign: 'left' | 'center' | 'right' = 'left';\n\n /**\n * Justify icons and label inside the button.\n * Vales: false (default) | true.\n */\n @Prop({ reflect: true }) justify = false;\n\n @State() hovered = false;\n\n @State() styles = {};\n\n weights;\n\n connectedCallback() {\n this.weights = window.CuraAPI.theme.fonts.getWeights();\n this.styles['--base-spacing'] = window.CuraAPI.theme.spacing.getSpacing();\n this.styles['--neutral-white'] = window.CuraAPI.theme.colors.getColor(`neutral-white`);\n this.styles['--neutral-base'] = window.CuraAPI.theme.colors.getColor(`neutral-base`);\n this.styles['--neutral-dark'] = window.CuraAPI.theme.colors.getColor(`neutral-dark`);\n this.styles['--font-size'] = window.CuraAPI.theme.fonts.getSize();\n this.styles['--font-family'] = window.CuraAPI.theme.fonts.getFamily();\n this.styles['--font-weight-medium'] = this.weights.medium;\n this.styles['--text-align'] = this.textAlign;\n }\n\n getClasses() {\n const classes = {};\n classes[`${this.size.toLowerCase()}`] = true;\n classes[`icon-${this.iconPosition.toLowerCase()}`] = true;\n classes[`icon-only`] = this.iconOnly;\n classes['disabled'] = this.disabled;\n classes['isLoading'] = this.isLoading;\n classes['justify'] = this.justify;\n return classes;\n }\n\n\n getIcon() {\n if (!this.iconName) return null;\n const iconSize = this.size === 'large' ? 20 : 16;\n return <cura-icon name={this.iconName} iconset={this.iconset} size={iconSize} color={this.getSymbolColor()}></cura-icon>;\n }\n\n handleMouseEnter() {\n if (this.disabled) return;\n this.hovered = true;\n }\n\n handleMouseLeave() {\n this.hovered = false;\n }\n\n @Watch('fontColor')\n @Watch('color')\n getSymbolColor() {\n if (this.disabled) return 'neutral-dark';\n if (this.hovered && !this.isLoading) return this.fontColor === 'light' ? `${this.color}-light` : `${this.color}-darker`;\n return this.fontColor === 'light' ? 'neutral-white' : `${this.color}-dark`;\n }\n\n handleClick(e: Event) {\n if (this.disabled || this.isLoading) {\n e.preventDefault();\n return;\n }\n if (!this.href) {\n if (this.type === 'submit' && this.internals.form) this.internals.form.submit();\n if (this.type === 'reset' && this.internals.form) this.internals.form.reset();\n }\n }\n\n render() {\n const symbolColor = this.getSymbolColor();\n const labelSize = labelSizes[this.size] || labelSizes[\"default\"];\n return (\n <Host role={ this.href ? 'link' : this.type }\n aria-disabled={this.disabled}>\n {this.href ? (\n <a href={this.disabled ? '' : this.href}\n target={this.target}\n class={this.getClasses()}\n style={this.styles}\n onClick={(e) => this.handleClick(e)}\n onMouseEnter={() => this.handleMouseEnter()}\n onMouseLeave={() => this.handleMouseLeave()}>\n <span class=\"button-container\">\n {this.getIcon()}\n <cura-label size={labelSize} lineHeight='normal' color={symbolColor}><slot></slot></cura-label>\n </span>\n <cura-loader-circle size={this.size} color={symbolColor}></cura-loader-circle>\n </a>\n ) : (\n <button class={this.getClasses()}\n style={this.styles}\n disabled={this.disabled || null}\n onClick={(e) => this.handleClick(e)}\n onMouseEnter={() => this.handleMouseEnter()}\n onMouseLeave={() => this.handleMouseLeave()}\n type={this.type}>\n <span class=\"button-container\">\n {this.getIcon()}\n <cura-label size={labelSize} lineHeight='normal' color={symbolColor}><slot></slot></cura-label>\n </span>\n <cura-loader-circle size={this.size} color={symbolColor}></cura-loader-circle>\n </button>\n )}\n </Host>\n );\n }\n\n}\n","import { Static } from '../api/theme-presets/static';\n\nexport function format(first: string, middle: string, last: string): string {\n return (first || '') + (middle ? ` ${middle}` : '') + (last ? ` ${last}` : '');\n}\n\nexport const baseColors = ['primary', 'secondary', 'accent', 'info', 'success', 'error', 'warning', 'neutral', 'whatsapp'];\n\nexport function getColorsWithDepths() {\n const colors = baseColors;\n const colorDepths = ['lighter','light','base','dark','darker'];\n const neutralDepths = ['purewhite','white','pale','lighter','light','base','medium','dark','darker','black'];\n const colorsWithDepths = colors.map(color => {\n const depths = color === 'neutral'\n ? neutralDepths.map(depth => depth === 'base' ? `${color}` : `${color}-${depth}`)\n : colorDepths.map(depth => depth === 'base' ? `${color}` : `${color}-${depth}`);\n return depths;\n }).flat(1);\n return colorsWithDepths;\n}\n\nexport function checkMobile() {\n return window?.innerWidth < Static.breakpoints.medium.min;\n}\n\nexport function checkIOS() {\n return [\n 'iPad Simulator',\n 'iPhone Simulator',\n 'iPod Simulator',\n 'iPad',\n 'iPhone',\n 'iPod'\n ].includes(navigator.userAgent)\n // iPad on iOS 13 detection\n || (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document);\n}\n\nexport function fakeInputIOSHack(targetElement) {\n if(!checkMobile() || !checkIOS()) return null;\n const fakeInput = document.createElement('input');\n fakeInput.setAttribute('type', 'text');\n fakeInput.style.position = 'absolute';\n fakeInput.style.opacity = '0';\n fakeInput.style.height = '0';\n fakeInput.style.fontSize = '16px'; // disable auto zoom\n targetElement.prepend(fakeInput);\n // focus so that subsequent async focus will work\n fakeInput.focus();\n return fakeInput;\n}\n\nexport function addBodyScrollLockClass() {\n document.body.classList.add(\"cura-body-scroll-lock\");\n}\n\nexport function removeBodyScrollLockClass() {\n if( document.body.classList.contains(\"cura-body-scroll-lock\") ) {\n document.body.classList.remove(\"cura-body-scroll-lock\");\n }\n}\n","import { addBodyScrollLockClass, removeBodyScrollLockClass } from './utils';\n\nexport class FixedElementScrollBehavior {\n\n hostElement: any;\n scrollableElement: any;\n scrollPosition: number;\n\n constructor(hostElement: any, scrollableElement: any) {\n if( !hostElement || !scrollableElement ) {\n console.error(\"Componentes host ou scrollable não foram informados corretamente ou não existem.\");\n } else {\n this.hostElement = hostElement;\n this.scrollableElement = scrollableElement;\n }\n }\n\n disableScroll() {\n this.scrollPosition = window.scrollY;\n window.scrollTo({ top: 0, behavior: 'instant' });\n addBodyScrollLockClass();\n this._addEvents();\n }\n\n enableScroll() {\n removeBodyScrollLockClass();\n window.scrollTo({ top: this.scrollPosition, behavior: 'instant' });\n this._removeEvents();\n }\n\n _addEvents() {\n this.hostElement.addEventListener('wheel', this._preventEvent, {passive: false});\n this.hostElement.addEventListener('mousewheel', this._preventEvent, {passive: false});\n this.hostElement.addEventListener('touchmove', this._preventEvent, {passive: false});\n this.hostElement.addEventListener('scroll', this._preventEvent, {passive: false});\n this.scrollableElement.addEventListener('wheel', this._stopPropagationEvent, {passive: false});\n this.scrollableElement.addEventListener('mousewheel', this._stopPropagationEvent, {passive: false});\n this.scrollableElement.addEventListener('touchmove', this._stopPropagationEvent, {passive: false});\n this.scrollableElement.addEventListener('scroll', this._stopPropagationEvent, {passive: false});\n }\n\n _removeEvents() {\n this.hostElement.removeEventListener('wheel', this._preventEvent);\n this.hostElement.removeEventListener('mousewheel', this._preventEvent);\n this.hostElement.removeEventListener('touchmove', this._preventEvent);\n this.hostElement.removeEventListener('scroll', this._preventEvent);\n this.scrollableElement.removeEventListener('wheel', this._stopPropagationEvent);\n this.scrollableElement.removeEventListener('mousewheel', this._stopPropagationEvent);\n this.scrollableElement.removeEventListener('touchmove', this._stopPropagationEvent);\n this.scrollableElement.removeEventListener('scroll', this._stopPropagationEvent);\n }\n\n _stopPropagationEvent = (e: Event) => {\n if( this.scrollableElement.scrollHeight <= this.scrollableElement.clientHeight ) {\n e.preventDefault();\n }\n e.stopPropagation();\n }\n\n _preventEvent = (ev: Event) => {\n ev.preventDefault();\n ev.stopPropagation();\n }\n}","@import '../../scss/mixins/spacing.scss';\n@import '../../scss/mixins/shadows.scss';\n\n:host {\n display: block;\n box-sizing: border-box;\n position: relative;\n\n .component-controls {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: #{$spacing-tiny};\n\n #button-back {\n padding: 0 0 0 #{$spacing-xxxs};\n width: max-content;\n }\n }\n\n .component-container {\n box-sizing: border-box;\n width: 100%;\n position: relative;\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: min-content 1fr;\n\n &.zoom {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n background: var(--purewhite);\n height: var(--height);\n z-index: 9999;\n overscroll-behavior: contain;\n\n .component-controls {\n border-bottom: 2px solid var(--primary);\n padding: #{$spacing-xxxs} 0;\n }\n\n &.error .component-controls {\n border-bottom: 2px solid var(--error-dark);\n background-color: var(--error-lighter);\n }\n }\n\n .dropdown-container {\n box-sizing: border-box;\n width: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n display: flex;\n flex-direction: column;\n padding: #{$spacing-xxxs};\n overscroll-behavior: contain;\n }\n\n &:not(.zoom) {\n .dropdown-container {\n @include shadow-level3(--neutral-black-shadow);\n position: absolute;\n bottom: 0;\n left: 0;\n transform: translateY(100%);\n max-height: var(--max-height);\n background-color: var(--purewhite);\n border-radius: 0px 0px #{$spacing-tiny} #{$spacing-tiny};\n border-bottom: 2px solid var(--neutral-light);\n border-left: 2px solid var(--neutral-light);\n border-right: 2px solid var(--neutral-light);\n display: none;\n z-index: 9997;\n }\n\n &.dropdown-visible {\n ::part(cura-input-field) {\n border-radius: 4px 4px 0px 0px;\n }\n ::part(cura-input-text-helper) {\n height: 0px;\n overflow: hidden;\n margin-top: 0px;\n }\n .dropdown-container {\n display: block;\n }\n }\n }\n\n }\n\n}\n","import { Component, Host, h, Prop, Element, State, Method, Event, EventEmitter } from '@stencil/core';\nimport { checkMobile, checkIOS } from '../../utils/utils';\nimport { FixedElementScrollBehavior } from '../../utils/FixedElementScrollBehavior';\n\n@Component({\n tag: 'cura-dropdown-search',\n styleUrl: 'cura-dropdown-search.scss',\n shadow: true,\n})\nexport class CuraDropdownSearch {\n @Element() host: HTMLElement;\n /**\n * Name of the field.\n * Required.\n */\n @Prop({ reflect: true }) name!: string;\n /**\n * Size of the dropdown search component\n * Values: 'small', 'medium' or 'large' (default).\n */\n @Prop({ reflect: true }) size: 'small' | 'medium' | 'large' | string = 'large';\n /**\n * Define component status.\n * Values: 'error' or 'default'.\n */\n @Prop({ reflect: true, mutable: true }) status: 'error' | 'default' | string = 'default';\n /**\n * Disabled state. Default: false.\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n /**\n * Field is required. Default: false.\n */\n @Prop({ reflect: true }) required: boolean = false;\n /**\n * The placeholder text.\n */\n @Prop({ reflect: true }) placeholder: string = '';\n /**\n * The label.\n */\n @Prop({ reflect: true }) label: string = '';\n /**\n * Custom icon name. Default: search.\n */\n @Prop({ reflect: true }) icon: string = 'search';\n /**\n * CSS max-height property for dropdown item.\n * Can also be used by css property --max-height.\n * Default: 400px\n */\n @Prop({ reflect: true }) maxheight: string = '400px';\n /**\n * Readonly property value.\n * Represents the term on the search input field.\n */\n @Prop({ mutable: true }) value: string = '';\n /**\n * Delay in milliseconds to dispatch search events.\n * Default: 400\n */\n @Prop({ reflect: true }) searchdelay: number = 400;\n /**\n * Min chars to dispatch search events.\n * Default: 3\n */\n @Prop({ reflect: true }) searchminchars: number = 3;\n\n /**\n * Set focus to input field.\n */\n @Method()\n async setFocus() {\n this.getInputElement().setFocus();\n }\n /**\n * Select by optionid property of a selectable option component.\n */\n @Method()\n async selectOption(optionid: string) {\n this._selectOption(optionid);\n }\n\n @Event() termchange: EventEmitter<string>;\n @Event() optionselect: EventEmitter<string>;\n\n @State() styles = {};\n @State() zoomState = false;\n @State() isOnFocus: boolean = false;\n\n scrollBehavior: FixedElementScrollBehavior;\n\n weights: any;\n breakpoints: any;\n isMobile: boolean;\n\n resizeTimeout: any;\n resizeTimeoutMs = 66;\n focusTimeout: any;\n focusTimeoutMs = 500;\n blurTimeout: any;\n blurTimeoutMs = 300;\n valueTimeout: any;\n\n dropdownElement: HTMLDivElement;\n selectedOptionElement: any;\n highlightedElement: any;\n highlightedIndex: number = -1;\n @State() dropdownItems = [];\n dropdownSelectableItems = [];\n\n connectedCallback() {\n this.weights = window.CuraAPI.theme.fonts.getWeights();\n this.breakpoints = window.CuraAPI.theme.breakpoints.get();\n this.styles['--info'] = window.CuraAPI.theme.colors.getColor('info-base');\n this.styles['--purewhite'] = window.CuraAPI.theme.colors.getColor('neutral-purewhite');\n this.styles['--neutral-light'] = window.CuraAPI.theme.colors.getColor('neutral-light');\n this.styles['--neutral-dark'] = window.CuraAPI.theme.colors.getColor('neutral-dark');\n this.styles['--neutral-black-shadow'] = window.CuraAPI.theme.colors.getColor(`neutral-black`, 0.16);\n this.styles['--error-dark'] = window.CuraAPI.theme.colors.getColor('error-dark');\n this.styles['--error-lighter'] = window.CuraAPI.theme.colors.getColor('error-lighter');\n this.styles['--primary'] = window.CuraAPI.theme.colors.getColor('primary');\n this.styles['--font-size'] = window.CuraAPI.theme.fonts.getSize();\n this.styles['--font-family'] = window.CuraAPI.theme.fonts.getFamily();\n this.styles['--font-weight-medium'] = this.weights.medium;\n window?.addEventListener('resize', this.handleWindowResize);\n window?.addEventListener('orientationchange', this.handleWindowResize);\n this.isMobile = checkMobile();\n }\n\n componentDidLoad() {\n this.dropdownElement = this.host.shadowRoot?.querySelector('.dropdown-container');\n this.host.addEventListener('actionclick', this.handleOptionActionClick);\n this.host.addEventListener('selectoption', this.handleSelectOption);\n this.scrollBehavior = new FixedElementScrollBehavior(this.host, this.dropdownElement);\n setTimeout(() => this.getSlotElements(), 10);\n }\n\n disconnectedCallback() {\n this.removeAllListeners();\n }\n\n removeAllListeners() {\n window?.removeEventListener('resize', this.handleWindowResize);\n window?.removeEventListener('orientationchange', this.handleWindowResize);\n this.host.removeEventListener('actionclick', this.handleOptionActionClick);\n this.host.removeEventListener('selectoption', this.handleSelectOption);\n }\n\n handleSlotChange = () => { this.getSlotElements(); }\n\n handleWindowResize = () => {\n if (this.resizeTimeout) clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(() => {\n this.isMobile = checkMobile();\n this.setZoomHeight();\n }, this.resizeTimeoutMs);\n }\n\n handleFocus = () => {\n if (this.focusTimeout) clearTimeout(this.focusTimeout);\n this.focusTimeout = setTimeout(() => {\n this.isOnFocus = true;\n this.clearHighlight();\n if (this.isMobile && !this.zoomState) this.enterZoom();\n if (this.zoomState) this.setZoomHeight();\n setTimeout(() => {\n this.selectedOptionElement?.scrollIntoView({behavior: 'instant', block: 'nearest', inline: 'nearest'});\n }, 10);\n }, this.focusTimeoutMs);\n }\n\n handleBlur = () => {\n if (this.blurTimeout) clearTimeout(this.blurTimeout);\n this.blurTimeout = setTimeout(() => {\n if (this.zoomState) {\n const delay = checkIOS ? 500 : 100;\n setTimeout(() => this.setZoomHeight(), delay);\n }\n this.isOnFocus = false;\n }, this.blurTimeoutMs);\n }\n\n handleFocusout = () => {\n if( this.zoomState ) this.setZoomHeight();\n }\n\n handleBackClick = () => { this.exitZoom(); }\n\n handleOptionActionClick = (ev: CustomEvent) => {\n this.getInputElement().setFocus();\n this._preventEvent(ev);\n }\n\n handleInputClear = (ev: CustomEvent) => {\n this.setValue('');\n this.clearSelectedOptions();\n this._preventEvent(ev);\n }\n\n handleSelectOption = (ev: CustomEvent) => {\n this._selectOption(ev.detail);\n this._preventEvent(ev);\n }\n\n handleInputValueChange = (ev: CustomEvent) => {\n this.setValue(ev.detail);\n if( this.selectedOptionElement && ev.detail !== this.selectedOptionElement.value) {\n this.clearSelectedOptions();\n }\n this._preventEvent(ev);\n }\n\n handleDropdownMouseOver = () => {\n if( this.highlightedElement || this.highlightedIndex >= 0 ) this.clearHighlight();\n }\n\n handleKeyDown = (ev: KeyboardEvent) => {\n if( ev.key === 'ArrowDown' ) this.moveHighlight('next');\n if( ev.key === 'ArrowUp' ) this.moveHighlight('prev');\n if( ev.key === 'Enter' ) this.selectHighlight();\n }\n\n moveHighlight(direction: 'next' | 'prev') {\n if (!this.dropdownSelectableItems.length) return;\n let position = direction === 'next' ? this.highlightedIndex + 1 : this.highlightedIndex - 1;\n if( position < 0) {\n this.clearHighlight();\n return;\n }\n const selectableItemsLastPosition = this.dropdownSelectableItems.length - 1;\n if( position > selectableItemsLastPosition ) position = selectableItemsLastPosition;\n if( this.highlightedElement ) this.highlightedElement.highlighted = false;\n this.highlightedIndex = position;\n this.highlightedElement = this.dropdownSelectableItems[position];\n if( this.highlightedElement.selected ) {\n this.moveHighlight(direction);\n return;\n }\n this.highlightedElement.highlighted = true;\n this.highlightedElement.scrollIntoView({behavior: 'instant', block: 'nearest', inline: 'nearest' });\n }\n\n clearHighlight() {\n if( this.highlightedElement ) {\n this.highlightedElement.highlighted = false;\n this.highlightedElement = null;\n }\n this.highlightedIndex = -1;\n }\n\n selectHighlight() {\n if( this.highlightedElement ) {\n this._selectOption(this.highlightedElement.optionid);\n this.clearHighlight();\n this.getInputElement().blur();\n }\n }\n\n setValue(value: string) {\n if (this.value !== value) {\n this.value = value;\n if( this.valueTimeout) clearTimeout(this.valueTimeout);\n this.valueTimeout = setTimeout(() => {\n this.termchange.emit(this.value === '' || this.value.length < this.searchminchars ? '' : this.value);\n }, this.searchdelay || 300);\n }\n }\n\n _selectOption(optionid: string) {\n if (!optionid) {\n this.clearSelectedOptions();\n this.setValue('');\n return;\n }\n const optionElement = this.dropdownSelectableItems.find(option => option.optionid === optionid);\n if( optionElement && !optionElement.selected ) {\n this.clearSelectedOptions();\n this.selectedOptionElement = optionElement;\n this.selectedOptionElement.selected = true;\n this.setValue(this.selectedOptionElement.value);\n this.optionselect.emit(this.selectedOptionElement.optionid);\n if (this.zoomState) setTimeout(() => this.exitZoom(), this.blurTimeoutMs);\n }\n }\n\n clearSelectedOptions() {\n this.dropdownSelectableItems.forEach(option => {\n if( option.selected ) option.selected = false;\n });\n this.selectedOptionElement = null;\n }\n\n getSlotElements() {\n const elements = [];\n const selectable = [];\n let hasNotFound = false;\n if( this.dropdownElement ) {\n this.dropdownElement\n .querySelector('slot')\n .assignedElements()\n .forEach(item => {\n elements.push(item);\n if( item.localName === 'cura-dropdown-search-option' && item[\"selectable\"] ) selectable.push(item);\n if( item.localName === 'cura-dropdown-search-not-found' ) hasNotFound = true;\n });\n }\n this.dropdownSelectableItems = selectable;\n this.dropdownItems = elements;\n this.status = hasNotFound ? 'error' : 'default';\n }\n\n\n enterZoom() {\n this.scrollBehavior.disableScroll();\n this.setZoomHeight();\n this.zoomState = true;\n }\n\n exitZoom() {\n this.scrollBehavior.enableScroll();\n this.setZoomHeight();\n setTimeout(() => { this.zoomState = false}, 300);\n }\n\n getInputElement = () => this.host.shadowRoot?.querySelector('cura-input-text');\n\n setZoomHeight() {\n const h = window ? `${window.visualViewport?.height || window.innerHeight}px` : '100vh';\n this.styles = { ...this.styles, '--height': h };\n }\n\n getClasses() {\n return {\n \"component-container\": true,\n \"mobile\": this.isMobile,\n \"zoom\": this.zoomState,\n \"dropdown-visible\": this.isOnFocus && (this.dropdownItems.length > 0 && !this.zoomState),\n \"error\": this.status === 'error'\n }\n }\n\n _preventEvent = (ev: Event) => {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n getHostCSSProperties() {\n return {\n '--max-height': this.maxheight || '400px'\n };\n }\n\n render() {\n return (\n <Host style={ this.getHostCSSProperties() }\n role=\"search\"\n aria-label={ this.label }\n aria-required={ this.required }\n aria-disabled={ this.disabled }\n aria-expanded={ this.zoomState }>\n <div class={ this.getClasses() } style={ this.styles }>\n <div class=\"component-controls\">\n { this.isMobile && this.zoomState ? (\n <cura-button-transparent\n fontColor=\"dark\"\n onClick={ () => this.handleBackClick() }\n iconName=\"arrowLeft\"\n size=\"large\"\n iconOnly\n color=\"primary\"\n id=\"button-back\">\n </cura-button-transparent>\n ) : '' }\n <cura-input-text\n disabled={ this.disabled }\n label={ this.label }\n part=\"cura-input-field\"\n mode={ this.zoomState ? 'transparent' : 'default' }\n required={ this.required }\n iconName={ this.icon || 'search' }\n value={ this.value }\n status={ this.status }\n onValueChange={ (ev) => this.handleInputValueChange(ev) }\n onInput={ (ev) => this._preventEvent(ev) }\n onFocus={ () => this.handleFocus() }\n onClick={ (ev) => this._preventEvent(ev) }\n onBlur={ () => this.handleBlur() }\n onFocusout={ () => this.handleFocusout() }\n onInputClear={ (ev) => this.handleInputClear(ev) }\n placeholder={ this.placeholder }\n size={ this.size }\n onKeyDown={ (ev) => this.handleKeyDown(ev) }\n >\n <slot name=\"helperText\"></slot>\n </cura-input-text>\n </div>\n <div class=\"dropdown-container\" onMouseOver={ () => this.handleDropdownMouseOver() }>\n <slot onSlotchange={ () => this.handleSlotChange() }></slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n","@import '../../../scss/mixins/spacing.scss';\n@import '../../../scss/mixins/dropdown-search-options.scss';\n\n:host {\n @include host-component();\n\n .component-container {\n @include component-container() {\n padding: #{$spacing-xxxs} 0;\n };\n }\n}\n\n:host(:last-child) {\n @include host-last-child();\n}\n","import { Component, Host, h } from '@stencil/core';\n\n@Component({\n tag: 'cura-dropdown-search-category',\n styleUrl: 'cura-dropdown-search-category.scss',\n shadow: true,\n})\nexport class CuraDropdownSearchCategory {\n\n styles = {};\n theme = window.CuraAPI.theme;\n\n connectedCallback() {\n this.styles = {\n '--neutral-light': this.theme.colors.getColor('neutral-light')\n };\n }\n\n render() {\n return (\n <Host>\n <div class=\"component-container\" style={this.styles}>\n <cura-heading size='xsmall' weight='bold' color='neutral-dark' marginBlock='0' lineHeight='1em'>\n <slot></slot>\n </cura-heading>\n </div>\n </Host>\n );\n }\n}\n","@import '../../../scss/mixins/spacing.scss';\n@import '../../../scss/mixins/dropdown-search-options.scss';\n\n:host {\n @include host-component();\n\n .component-container {\n @include component-container();\n transition: background-color .15s linear;\n }\n\n .component-container:not(.selected):not(.not-selectable):has(.selectable-container:hover),\n .component-container:not(.selected):not(.not-selectable).highlighted {\n background-color: var(--neutral-white);\n }\n\n .selectable-container {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n padding: #{$spacing-xxxs} 0;\n min-height: #{$spacing-l};\n min-width: 0;\n gap: #{$spacing-tiny};\n cursor: pointer;\n\n .content {\n flex: 1;\n align-items: center;\n justify-content: flex-end;\n padding-right: #{$spacing-tiny};\n min-width: 0;\n }\n\n ::slotted(cura-icon) {\n --color: var(--neutral-dark) !important;\n margin: 0 10px;\n }\n ::slotted(cura-avatar) {\n margin: 0 #{$spacing-tiny};\n }\n ::slotted(cura-heading),\n ::slotted(cura-paragraph) {\n --margin-block: 0 !important;\n --color-spot: var(--primary) !important;\n }\n ::slotted(cura-heading) {\n --color-body: var(--neutral-black) !important;\n }\n ::slotted(cura-paragraph) {\n --color-body: var(--neutral-dark) !important;\n }\n }\n\n .selected {\n background-color: var(--primary-lighter-50);\n border-bottom-color: var(--primary-light);\n\n .selectable-container {\n cursor: default;\n\n ::slotted(cura-icon) {\n --color: var(--primary) !important;\n }\n ::slotted(cura-heading) {\n --color-body: var(--primary) !important;\n }\n }\n }\n\n .actions-container {\n display: flex;\n\n ::slotted(*) {\n padding-left: #{$spacing-tiny};\n }\n }\n\n .not-selectable {\n .selectable-container {\n cursor: default;\n }\n }\n}\n\n:host(:last-child) {\n @include host-last-child();\n}\n","import { Component, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'cura-dropdown-search-option',\n styleUrl: 'cura-dropdown-search-option.scss',\n shadow: true,\n})\nexport class CuraDropdownSearchOption {\n\n /**\n * Required. The value for item term reference.\n * This will set the value of the seaarch field when the option is selected.\n */\n @Prop() value!: string;\n /**\n * Required. The unique identifier for the option.\n * This will reference the option element for the parent.\n */\n @Prop() optionid!: string;\n /**\n * Enable selection for this option.\n * Default is true.\n */\n @Prop({reflect: true}) selectable: boolean = true;\n /**\n * Selected state.\n * This will be managed by the parent component.\n * Default is false.\n */\n @Prop({reflect: true}) selected: boolean = false;\n /**\n * Highlighted state.\n * This will be managed by the parent component.\n * Default is false.\n */\n @Prop({reflect: true}) highlighted: boolean = false;\n\n @Event() actionclick: EventEmitter<any>;\n @Event() selectoption: EventEmitter<string>;\n\n styles = {};\n theme = window.CuraAPI.theme;\n\n connectedCallback() {\n this.styles = {\n '--neutral-light': this.theme.colors.getColor('neutral-light'),\n '--neutral-white': this.theme.colors.getColor('neutral-white'),\n '--neutral-dark': this.theme.colors.getColor('neutral-dark'),\n '--neutral-black': this.theme.colors.getColor('neutral-black'),\n '--primary-lighter-50': this.theme.colors.getColor('primary-lighter', .5),\n '--primary-light': this.theme.colors.getColor('primary-light'),\n '--primary': this.theme.colors.getColor('primary-base')\n };\n }\n\n handleSelect() {\n if( this.selectable ) {\n this.selectoption.emit(this.optionid);\n } else {\n this.actionclick.emit();\n }\n }\n\n handleActionsClick() {\n this.actionclick.emit();\n }\n\n getClasses() {\n return {\n 'component-container': true,\n 'selected': this.selected,\n 'highlighted': this.highlighted,\n 'not-selectable': !this.selectable\n }\n }\n\n render() {\n return (\n <Host>\n <div class={this.getClasses()} style={this.styles}>\n <div class=\"selectable-container\" onClick={ () => this.handleSelect() }>\n <slot name='image'></slot>\n <div class=\"content\">\n <slot></slot>\n </div>\n </div>\n <div class=\"actions-container\" onClick={ () => this.handleActionsClick() }>\n <slot name='actions'></slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n","@import '../../../scss/mixins/responsive.scss';\n@import '../../../scss/mixins/text.scss';\n\n:host {\n display: block;\n font-size: var(--font-size-base);\n\n h1, h2, h3, h4, h5, h6 {\n font-family: var(--font-family);\n font-size: 1.714em;\n font-weight: var(--font-weight-regular);\n color: var(--color-body);\n line-height: var(--line-height);\n margin-block: var(--margin-block);\n letter-spacing: 0px;\n\n &.bold-weight {\n font-weight: var(--font-weight-medium);\n }\n\n &.large {\n font-size: 2.071em;\n letter-spacing: -0.58px;\n }\n\n &.small {\n font-size: 1.214em;\n line-height: calc(var(--line-height) + 20%);\n\n &.bold-weight, ::slotted(b), ::slotted(strong) {\n font-weight: var(--font-weight-bold);\n }\n }\n\n &.xsmall {\n font-size: 0.8571428571428571em;\n font-weight: var(--font-weight-medium);\n letter-spacing: 0.6px;\n\n &.bold-weight, ::slotted(b), ::slotted(strong) {\n font-weight: var(--font-weight-bold);\n }\n }\n\n &.textoverflow-single {\n @include truncate-single();\n }\n\n ::slotted(b), ::slotted(strong) {\n font-weight: var(--font-weight-medium);\n }\n\n ::slotted(a) {\n font-weight: var(--font-weight-bold);\n color: var(--color-spot);\n text-underline-offset: 10%;\n cursor: pointer;\n }\n\n ::slotted(u) {\n text-underline-offset: 10%;\n }\n\n ::slotted(abbr) {\n color: var(--color-spot);\n text-decoration: underline dashed 1px var(--color-spot);\n text-underline-offset: 10%;\n cursor: default;\n }\n\n ::slotted(i) {\n font-weight: var(--font-weight-medium);\n }\n\n ::slotted(em) {\n color: var(--color-spot);\n font-weight: var(--font-weight-bold);\n font-style: normal;\n }\n\n }\n\n @include medium-large() {\n h1, h2, h3, h4, h5, h6 {\n font-size: 2em;\n\n &.large {\n font-size: 2.357em;\n letter-spacing: -0.66px;\n }\n\n &.small {\n font-size: 1.357em;\n }\n\n &.xsmall {\n font-size: 0.8571428571428571em;\n line-height: calc(var(--line-height) + 3%);\n letter-spacing: 0.72px;\n }\n\n }\n }\n\n @include xlarge-only() {\n h1, h2, h3, h4, h5, h6 {\n font-size: 2.5em;\n line-height: calc(var(--line-height) + 5%);\n letter-spacing: -0.82px;\n\n &.large {\n font-size: 2.929em;\n }\n\n &.small {\n font-size: 1.714em;\n line-height: calc(var(--line-height) + 30%);\n letter-spacing: 0%;\n }\n\n &.xsmall {\n font-size: 1em;\n line-height: calc(var(--line-height) + 12.857%);\n letter-spacing: 0.28px;\n }\n }\n }\n\n}\n","import { Component, Host, h, Prop, Element, State } from '@stencil/core';\n\n@Component({\n tag: 'cura-heading',\n styleUrl: 'cura-heading.scss',\n shadow: true,\n})\nexport class CuraHeading {\n\n /**\n * Heading level for semantics. Will render the related HTML tag <h1>, <h2>, ...\n * Values: 1(default) to 6.\n */\n @Prop({reflect: true}) level: 1 | 2 | 3 | 4 | 5 | 6 = 1;\n\n /**\n * Heading style size.\n * Values: regular (deprecated), medium (default) | large | small | caption (deprecated) | xsmall.\n */\n @Prop({reflect: true}) size: 'regular' | 'medium' | 'large' | 'small' | 'caption' | 'xsmall' = 'medium';\n\n /**\n * Heading font weight. It is possible to use regular HTML tags like <b> or <strong> as well.\n * Values: regular (default) | bold.\n */\n @Prop({reflect: true}) weight: 'regular' | 'bold' = 'regular';\n\n /**\n * Apply design system color to interactive elements like <a> and <abbr> inside the text.\n * Values: Color from design system scheme. Default to 'accent-dark'.\n */\n @Prop({reflect: true}) spotColor = 'accent-dark';\n\n /**\n * Text color.\n * Values: Color from design system scheme. Default to the font color from the theme.\n */\n @Prop({reflect: true}) color: string;\n\n /**\n * CSS margin-block property values.\n * Default to 1.25em\n */\n @Prop({reflect: true}) marginBlock = '1.25em';\n\n /**\n * CSS line-height property values.\n * Default to 130%\n */\n @Prop({reflect: true}) lineHeight = '130%';\n\n /**\n * Apply text-overflow ellipsis definitions.\n * Default to none\n */\n @Prop({reflect: true}) textOverflow: 'none' | 'single' | string = 'none';\n\n /**\n * Host element <cura-heading>\n */\n @Element() host: HTMLElement;\n\n /**\n * Internal Props\n */\n weights: any;\n fontSizeBase: string;\n @State() styles = {};\n theme = window.CuraAPI.theme;\n\n connectedCallback() {\n this.setFontProperties();\n }\n\n getClasses() {\n const classes = {\n 'textoverflow-single': this.textOverflow === 'single'\n };\n classes[this.size.toLowerCase()] = true;\n classes[`${this.weight.toLowerCase()}-weight`] = true;\n return classes;\n }\n\n setFontProperties() {\n this.weights = this.theme.fonts.getWeights();\n this.fontSizeBase = this.theme.fonts.getSize();\n this.styles = {\n '--font-family': window.CuraAPI.theme.fonts.getFamily('heading'),\n '--font-weight-regular': this.weights.regular,\n '--font-weight-medium': this.weights.medium,\n '--font-weight-bold': this.weights.bold,\n '--font-weight-black': this.weights.black\n }\n }\n\n hostCSSProperties() {\n const fontColor = this.color\n ? this.theme.colors.getColor(this.color)\n : this.theme.fonts.getColor();\n return {\n '--margin-block': this.marginBlock,\n '--font-size-base': this.fontSizeBase,\n '--line-height': this.lineHeight,\n '--color-body': fontColor || this.theme.colors.getColor('neutral-darker'),\n '--color-spot': this.theme.colors.getColor(`${this.spotColor}`)\n };\n }\n\n getHeadingTag() {\n const tags = {\n '1': <h1 style={this.styles} class={this.getClasses()}><slot></slot></h1>,\n '2': <h2 style={this.styles} class={this.getClasses()}><slot></slot></h2>,\n '3': <h3 style={this.styles} class={this.getClasses()}><slot></slot></h3>,\n '4': <h4 style={this.styles} class={this.getClasses()}><slot></slot></h4>,\n '5': <h5 style={this.styles} class={this.getClasses()}><slot></slot></h5>,\n '6': <h6 style={this.styles} class={this.getClasses()}><slot></slot></h6>,\n 'default': <h1 style={this.styles} class={this.getClasses()}><slot></slot></h1>\n };\n return tags[`${this.level}`] || tags['default'];\n }\n\n render() {\n return (\n <Host style={this.hostCSSProperties()} role=\"heading\" aria-level={this.level}>\n { this.getHeadingTag() }\n </Host>\n );\n }\n\n}\n",":host {\n width: var(--size);\n height: var(--size);\n display: inline-block;\n\n svg {\n display: inline-block;\n stroke: var(--color);\n width: var(--size);\n height: var(--size);\n stroke-width: var(--stroke);\n fill: none;\n }\n}\n","import { Component, Host, h, Prop, Element, Watch } from '@stencil/core';\nimport { iconSizes } from './cura-icon.definitions';\n\n@Component({\n tag: 'cura-icon',\n styleUrl: 'cura-icon.scss',\n shadow: true\n})\nexport class CuraIcon {\n\n @Prop({reflect: true}) name = '';\n @Prop() color = 'neutral-base';\n @Prop() size: string | number;\n @Prop({reflect: true}) iconset = 'default';\n @Prop() disabled = false;\n\n @Element() host: HTMLElement;\n\n @Watch('size')\n sizeHandler(size: string | number) {\n const scaledStroke = (iconSize: string | number) => {\n return `${iconSizes[iconSize].stroke * (iconSizes.default.size / iconSizes[iconSize].size)}px`;\n }\n this.setHostProperty('--size', iconSizes[`${size}`] ? `${iconSizes[size].size}px` : `${iconSizes.default.size}px`);\n this.setHostProperty('--stroke', iconSizes[`${size}`] ? scaledStroke(size) : scaledStroke(\"default\"));\n }\n\n @Watch('color')\n @Watch('disabled')\n colorHandler() {\n this.setHostProperty('--color', window.CuraAPI.theme.colors.getColor(this.disabled ? 'neutral-light' : this.color || 'neutral'));\n }\n\n assetsPath: string;\n\n connectedCallback() {\n this.assetsPath = window.CuraAPI.localAssetsPath;\n this.sizeHandler(this.size);\n this.colorHandler();\n }\n\n setHostProperty(prop: string, value: string) {\n this.host.style.setProperty(prop, value);\n }\n\n render() {\n return (\n <Host role=\"img\">\n <svg\n version=\"1.1\"\n viewBox=\"0 0 24 24\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <use\n xlinkHref={`${this.assetsPath}/icons/iconset-${this.iconset}.svg#${this.name}`}>\n </use>\n </svg>\n </Host>\n );\n }\n\n}\n","/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n\n/** Checks if value is object */\nfunction isObject(obj) {\n var _obj$constructor;\n return typeof obj === 'object' && obj != null && (obj == null || (_obj$constructor = obj.constructor) == null ? void 0 : _obj$constructor.name) === 'Object';\n}\nfunction pick(obj, keys) {\n if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k));\n return Object.entries(obj).reduce((acc, _ref) => {\n let [k, v] = _ref;\n if (keys(v, k)) acc[k] = v;\n return acc;\n }, {});\n}\n\n/** Direction */\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n\n/** Direction */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n}\n\n/** Escapes regular expression control chars */\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n const arrA = Array.isArray(a),\n arrB = Array.isArray(b);\n let i;\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n const regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n const keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n return false;\n}\n\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, isObject, isString, objectIncludes, pick };\n","import { DIRECTION } from './utils.js';\n\n/** Provides details of changing input */\nclass ActionDetails {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n\n constructor(opts) {\n Object.assign(this, opts);\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n if (this.insertedCount) {\n // double check right part\n while (this.value.slice(this.cursorPos) !== this.oldValue.slice(this.oldSelection.end)) {\n if (this.value.length - this.cursorPos < this.oldValue.length - this.oldSelection.end) ++this.oldSelection.end;else ++this.cursorPos;\n }\n }\n }\n\n /** Start changing position */\n get startChangePos() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /** Inserted symbols count */\n get insertedCount() {\n return this.cursorPos - this.startChangePos;\n }\n\n /** Inserted symbols */\n get inserted() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /** Removed symbols count */\n get removedCount() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /** Removed symbols */\n get removed() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /** Unchanged head symbols */\n get head() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /** Unchanged tail symbols */\n get tail() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /** Remove direction */\n get removeDirection() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n}\n\nexport { ActionDetails as default };\n","/** Applies mask on element */\nfunction IMask(el, opts) {\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n","import { isString, isObject, pick } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n// export function maskedClass(mask: string): typeof MaskedPattern;\n// export function maskedClass(mask: DateConstructor): typeof MaskedDate;\n// export function maskedClass(mask: NumberConstructor): typeof MaskedNumber;\n// export function maskedClass(mask: Array<any> | ArrayConstructor): typeof MaskedDynamic;\n// export function maskedClass(mask: MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass(mask: Masked): typeof Masked;\n// export function maskedClass(mask: typeof Masked): typeof Masked;\n// export function maskedClass(mask: typeof MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: typeof MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: typeof MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: typeof MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: typeof MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: typeof MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: typeof MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: typeof MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass<Mask extends typeof Masked> (mask: Mask): Mask;\n// export function maskedClass(mask: RegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: (value: string, ...args: any[]) => boolean): typeof MaskedFunction;\n\n/** Get Masked class by mask type */\nfunction maskedClass(mask) /* TODO */{\n if (mask == null) throw new Error('mask property should be defined');\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n if (isString(mask)) return IMask.MaskedPattern;\n if (mask === Date) return IMask.MaskedDate;\n if (mask === Number) return IMask.MaskedNumber;\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n if (IMask.Masked && mask instanceof IMask.Masked) return mask.constructor;\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n return IMask.Masked;\n}\nfunction normalizeOpts(opts) {\n if (!opts) throw new Error('Options in not defined');\n if (IMask.Masked) {\n if (opts.prototype instanceof IMask.Masked) return {\n mask: opts\n };\n\n /*\n handle cases like:\n 1) opts = Masked\n 2) opts = { mask: Masked, ...instanceOpts }\n */\n const {\n mask = undefined,\n ...instanceOpts\n } = opts instanceof IMask.Masked ? {\n mask: opts\n } : isObject(opts) && opts.mask instanceof IMask.Masked ? opts : {};\n if (mask) {\n const _mask = mask.mask;\n return {\n ...pick(mask, (_, k) => !k.startsWith('_')),\n mask: mask.constructor,\n _mask,\n ...instanceOpts\n };\n }\n }\n if (!isObject(opts)) return {\n mask: opts\n };\n return {\n ...opts\n };\n}\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n\n// From masked\n// export default function createMask<Opts extends Masked, ReturnMasked=Opts> (opts: Opts): ReturnMasked;\n// // From masked class\n// export default function createMask<Opts extends MaskedOptions<typeof Masked>, ReturnMasked extends Masked=InstanceType<Opts['mask']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDate>, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedNumber>, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedEnum>, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRange>, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedFunction>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedPattern>, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDynamic>, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// // From mask opts\n// export default function createMask<Opts extends MaskedOptions<Masked>, ReturnMasked=Opts extends MaskedOptions<infer M> ? M : never> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedNumberOptions, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDateFactoryOptions, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedEnumOptions, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedRangeOptions, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedPatternOptions, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDynamicOptions, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<RegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<Function>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n\n/** Creates new {@link Masked} depending on mask type */\nfunction createMask(opts) {\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n const nOpts = normalizeOpts(opts);\n const MaskedClass = maskedClass(nOpts.mask);\n if (!MaskedClass) throw new Error(\"Masked class is not found for provided mask \" + nOpts.mask + \", appropriate module needs to be imported manually before creating mask.\");\n if (nOpts.mask === MaskedClass) delete nOpts.mask;\n if (nOpts._mask) {\n nOpts.mask = nOpts._mask;\n delete nOpts._mask;\n }\n return new MaskedClass(nOpts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass, normalizeOpts };\n","import IMask from '../core/holder.js';\n\n/** Generic element API to use with mask */\nclass MaskElement {\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n get selectionStart() {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch {}\n return start != null ? start : this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd() {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch {}\n return end != null ? end : this.value.length;\n }\n\n /** Safely sets element selection */\n select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n try {\n this._unsafeSelect(start, end);\n } catch {}\n }\n\n /** */\n get isActive() {\n return false;\n }\n /** */\n\n /** */\n\n /** */\n}\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n","import MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\nconst KEY_Z = 90;\nconst KEY_Y = 89;\n\n/** Bridge between HTMLElement and {@link Masked} */\nclass HTMLMaskElement extends MaskElement {\n /** HTMLElement to use mask on */\n\n constructor(input) {\n super();\n this.input = input;\n this._onKeydown = this._onKeydown.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onBeforeinput = this._onBeforeinput.bind(this);\n this._onCompositionEnd = this._onCompositionEnd.bind(this);\n }\n get rootElement() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) == null ? void 0 : _this$input$getRootNo2.call(_this$input)) != null ? _this$input$getRootNo : document;\n }\n\n /** Is element in focus */\n get isActive() {\n return this.input === this.rootElement.activeElement;\n }\n\n /** Binds HTMLElement events to mask internal events */\n bindEvents(handlers) {\n this.input.addEventListener('keydown', this._onKeydown);\n this.input.addEventListener('input', this._onInput);\n this.input.addEventListener('beforeinput', this._onBeforeinput);\n this.input.addEventListener('compositionend', this._onCompositionEnd);\n this.input.addEventListener('drop', handlers.drop);\n this.input.addEventListener('click', handlers.click);\n this.input.addEventListener('focus', handlers.focus);\n this.input.addEventListener('blur', handlers.commit);\n this._handlers = handlers;\n }\n _onKeydown(e) {\n if (this._handlers.redo && (e.keyCode === KEY_Z && e.shiftKey && (e.metaKey || e.ctrlKey) || e.keyCode === KEY_Y && e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n if (this._handlers.undo && e.keyCode === KEY_Z && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (!e.isComposing) this._handlers.selectionChange(e);\n }\n _onBeforeinput(e) {\n if (e.inputType === 'historyUndo' && this._handlers.undo) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (e.inputType === 'historyRedo' && this._handlers.redo) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n }\n _onCompositionEnd(e) {\n this._handlers.input(e);\n }\n _onInput(e) {\n if (!e.isComposing) this._handlers.input(e);\n }\n\n /** Unbinds HTMLElement events to mask internal events */\n unbindEvents() {\n this.input.removeEventListener('keydown', this._onKeydown);\n this.input.removeEventListener('input', this._onInput);\n this.input.removeEventListener('beforeinput', this._onBeforeinput);\n this.input.removeEventListener('compositionend', this._onCompositionEnd);\n this.input.removeEventListener('drop', this._handlers.drop);\n this.input.removeEventListener('click', this._handlers.click);\n this.input.removeEventListener('focus', this._handlers.focus);\n this.input.removeEventListener('blur', this._handlers.commit);\n this._handlers = {};\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\n/** Bridge between InputElement and {@link Masked} */\nclass HTMLInputMaskElement extends HTMLMaskElement {\n /** InputElement to use mask on */\n\n constructor(input) {\n super(input);\n this.input = input;\n }\n\n /** Returns InputElement selection start */\n get _unsafeSelectionStart() {\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\n }\n\n /** Returns InputElement selection end */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /** Sets InputElement selection */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLInputMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /** Returns HTMLElement selection start */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Returns HTMLElement selection end */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Sets HTMLElement selection */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /** HTMLElement value */\n get value() {\n return this.input.textContent || '';\n }\n set value(value) {\n this.input.textContent = value;\n }\n}\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n","class InputHistory {\n constructor() {\n this.states = [];\n this.currentIndex = 0;\n }\n get currentState() {\n return this.states[this.currentIndex];\n }\n get isEmpty() {\n return this.states.length === 0;\n }\n push(state) {\n // if current index points before the last element then remove the future\n if (this.currentIndex < this.states.length - 1) this.states.length = this.currentIndex + 1;\n this.states.push(state);\n if (this.states.length > InputHistory.MAX_LENGTH) this.states.shift();\n this.currentIndex = this.states.length - 1;\n }\n go(steps) {\n this.currentIndex = Math.min(Math.max(this.currentIndex + steps, 0), this.states.length - 1);\n return this.currentState;\n }\n undo() {\n return this.go(-1);\n }\n redo() {\n return this.go(+1);\n }\n clear() {\n this.states.length = 0;\n this.currentIndex = 0;\n }\n}\nInputHistory.MAX_LENGTH = 100;\n\nexport { InputHistory as default };\n","import { DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLInputMaskElement from './html-input-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport InputHistory from './input-history.js';\nimport './html-mask-element.js';\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nclass InputMask {\n /**\n View element\n */\n\n /** Internal {@link Masked} model */\n\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLInputMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._rawInputValue = '';\n this.history = new InputHistory();\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onUndo = this._onUndo.bind(this);\n this._onRedo = this._onRedo.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n maskEquals(mask) {\n var _this$masked;\n return mask == null || ((_this$masked = this.masked) == null ? void 0 : _this$masked.maskEquals(mask));\n }\n\n /** Masked */\n get mask() {\n return this.masked.mask;\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n // TODO \"any\" no idea\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = mask instanceof IMask.Masked ? mask : createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl('auto');\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl('auto');\n }\n\n /** Raw input value */\n get rawInputValue() {\n return this._rawInputValue;\n }\n set rawInputValue(str) {\n if (this.rawInputValue === str) return;\n this.masked.rawInputValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl('auto');\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /** Starts listening to element events */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange,\n undo: this._onUndo,\n redo: this._onRedo\n });\n }\n\n /** Stops listening to element events */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /** Fires custom event */\n _fireEvent(ev, e) {\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(e));\n }\n\n /** Current selection start */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /** Stores current selection */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n this._unmaskedValue = this.masked.unmaskedValue;\n this._rawInputValue = this.masked.rawInputValue;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl(cursorPos) {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newRawInputValue = this.masked.rawInputValue;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue || this._rawInputValue !== newRawInputValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n this._rawInputValue = newRawInputValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (cursorPos === 'auto') this.alignCursor();else if (cursorPos != null) this.cursorPos = cursorPos;\n if (isChanged) this._fireChangeEvents();\n if (!this._historyChanging && (isChanged || this.history.isEmpty)) this.history.push({\n unmaskedValue: newUnmaskedValue,\n selection: {\n start: this.selectionStart,\n end: this.cursorPos\n }\n });\n }\n\n /** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask,\n ...restOpts\n } = opts; // TODO types, yes, mask is optional\n\n const updateMask = !this.maskEquals(mask);\n const updateOpts = this.masked.optionsIsChanged(restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts); // TODO\n\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /** Delays cursor update to support mobile browsers */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /** Fires custom events */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /** Aborts delayed cursor update */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n const details = new ActionDetails({\n // new state\n value: this.el.value,\n cursorPos: this.cursorPos,\n // old state\n oldValue: this.displayValue,\n oldSelection: this._selection\n });\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) this.updateValue();\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n _onUndo() {\n this._applyHistoryState(this.history.undo());\n }\n _onRedo() {\n this._applyHistoryState(this.history.redo());\n }\n _applyHistoryState(state) {\n if (!state) return;\n this._historyChanging = true;\n this.unmaskedValue = state.unmaskedValue;\n this.el.select(state.selection.start, state.selection.end);\n this._saveSelection();\n this._historyChanging = false;\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n this._listeners.length = 0;\n delete this.el;\n }\n}\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n","import IMask from './holder.js';\n\n/** Provides details of changing model value */\nclass ChangeDetails {\n /** Inserted symbols */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n\n /** Can skip chars */\n\n static normalize(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n }\n constructor(details) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n tailShift: 0,\n skip: false\n }, details);\n }\n\n /** Aggregate changes */\n aggregate(details) {\n this.inserted += details.inserted;\n this.rawInserted += details.rawInserted;\n this.tailShift += details.tailShift;\n this.skip = this.skip || details.skip;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset() {\n return this.tailShift + this.inserted.length;\n }\n get consumed() {\n return Boolean(this.rawInserted) || this.skip;\n }\n equals(details) {\n return this.inserted === details.inserted && this.tailShift === details.tailShift && this.rawInserted === details.rawInserted && this.skip === details.skip;\n }\n}\nIMask.ChangeDetails = ChangeDetails;\n\nexport { ChangeDetails as default };\n","/** Provides details of continuous extracted tail */\nclass ContinuousTailDetails {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n\n constructor(value, from, stop) {\n if (value === void 0) {\n value = '';\n }\n if (from === void 0) {\n from = 0;\n }\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n toString() {\n return this.value;\n }\n extend(tail) {\n this.value += String(tail);\n }\n appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n get state() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n shift() {\n if (!this.value.length) return '';\n const shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n\nexport { ContinuousTailDetails as default };\n","import ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString, DIRECTION, objectIncludes, forceDirection } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Append flags */\n\n/** Extract flags */\n\n// see https://github.com/microsoft/TypeScript/issues/6223\n\n/** Provides common masking stuff */\nclass Masked {\n /** */\n\n /** */\n\n /** Transforms value before mask processing */\n\n /** Transforms each char before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing at the end of editing */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n this._value = '';\n this._update({\n ...Masked.DEFAULTS,\n ...opts\n });\n this._initialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts) {\n if (!this.optionsIsChanged(opts)) return;\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /** Sets new options */\n _update(opts) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset() {\n this._value = '';\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this.resolve(value, {\n input: true\n });\n }\n\n /** Resolve new value */\n resolve(value, flags) {\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n }\n get unmaskedValue() {\n return this.value;\n }\n set unmaskedValue(value) {\n this.resolve(value, {});\n }\n get typedValue() {\n return this.parse ? this.parse(this.value, this) : this.unmaskedValue;\n }\n set typedValue(value) {\n if (this.format) {\n this.value = this.format(value, this);\n } else {\n this.unmaskedValue = String(value);\n }\n }\n\n /** Value that includes raw user input */\n get rawInputValue() {\n return this.extractInput(0, this.displayValue.length, {\n raw: true\n });\n }\n set rawInputValue(value) {\n this.resolve(value, {\n raw: true\n });\n }\n get displayValue() {\n return this.value;\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return Math.min(this.displayValue.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return this.displayValue.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw(ch, flags) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n\n /** Appends char */\n _appendChar(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const consistentState = this.state;\n let details;\n [ch, details] = this.doPrepareChar(ch, flags);\n if (ch) {\n details = details.aggregate(this._appendCharRaw(ch, flags));\n\n // TODO handle `skip`?\n\n // try `autofix` lookahead\n if (!details.rawInserted && this.autofix === 'pad') {\n const noFixState = this.state;\n this.state = consistentState;\n let fixDetails = this.pad(flags);\n const chDetails = this._appendCharRaw(ch, flags);\n fixDetails = fixDetails.aggregate(chDetails);\n\n // if fix was applied or\n // if details are equal use skip restoring state optimization\n if (chDetails.rawInserted || fixDetails.equals(details)) {\n details = fixDetails;\n } else {\n this.state = noFixState;\n }\n }\n }\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.unshift(this.displayValue.length - details.tailShift);\n }\n }\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.shift();\n }\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at the end */\n _appendPlaceholder() {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at the end */\n _appendEager() {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags != null && flags.tail) flags._beforeTailState = this.state;\n let details;\n [str, details] = this.doPrepare(str, flags);\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\n details.aggregate(d);\n }\n if ((this.eager === true || this.eager === 'append') && flags != null && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n return details;\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n this._value = this.displayValue.slice(0, fromPos) + this.displayValue.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh(fn) {\n if (this._refreshing || !this._initialized) return fn();\n this._refreshing = true;\n const rawInput = this.rawInputValue;\n const value = this.value;\n const ret = fn();\n this.rawInputValue = rawInput;\n // append lost trailing chars at the end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.displayValue.length), {}, '');\n this.doCommit();\n }\n delete this._refreshing;\n return ret;\n }\n runIsolated(fn) {\n if (this._isolated || !this._initialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n const ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n doSkipInvalid(ch, flags, checkTail) {\n return Boolean(this.skipInvalid);\n }\n\n /** Prepares string before mask processing */\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepare ? this.prepare(str, this, flags) : str);\n }\n\n /** Prepares each char before mask processing */\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepareChar ? this.prepareChar(str, this, flags) : str);\n }\n\n /** Validates if value is acceptable */\n doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n\n /** Does additional processing at the end of editing */\n doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n splice(start, deleteCount, inserted, removeDirection, flags) {\n if (inserted === void 0) {\n inserted = '';\n }\n if (removeDirection === void 0) {\n removeDirection = DIRECTION.NONE;\n }\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n const tailPos = start + deleteCount;\n const tail = this.extractTail(tailPos);\n const eagerRemove = this.eager === true || this.eager === 'remove';\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n let startChangePos = start;\n const details = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n details.aggregate(this.remove(startChangePos));\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.displayValue.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n return details.aggregate(this.append(inserted, flags, tail));\n }\n maskEquals(mask) {\n return this.mask === mask;\n }\n optionsIsChanged(opts) {\n return !objectIncludes(this, opts);\n }\n typedValueEquals(value) {\n const tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false);\n }\n pad(flags) {\n return new ChangeDetails();\n }\n}\nMasked.DEFAULTS = {\n skipInvalid: true\n};\nMasked.EMPTY_VALUES = [undefined, null, ''];\nIMask.Masked = Masked;\n\nexport { Masked as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nclass ChunksTailDetails {\n /** */\n\n constructor(chunks, from) {\n if (chunks === void 0) {\n chunks = [];\n }\n if (from === void 0) {\n from = 0;\n }\n this.chunks = chunks;\n this.from = from;\n }\n toString() {\n return this.chunks.map(String).join('');\n }\n extend(tailChunk) {\n if (!String(tailChunk)) return;\n tailChunk = isString(tailChunk) ? new ContinuousTailDetails(String(tailChunk)) : tailChunk;\n const lastChunk = this.chunks[this.chunks.length - 1];\n const extendLast = lastChunk && (\n // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift(); // not possible to be `undefined` because length was checked above\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n appendTo(masked) {\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n const details = new ChangeDetails();\n for (let ci = 0; ci < this.chunks.length; ++ci) {\n const chunk = this.chunks[ci];\n const lastBlockIter = masked._mapPosToBlock(masked.displayValue.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null && (\n // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n details.aggregate(masked._appendPlaceholder(stop));\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n details.aggregate(tailDetails);\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n get state() {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n }\n set state(state) {\n const {\n chunks,\n ...props\n } = state;\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\n chunk.state = cstate;\n return chunk;\n });\n }\n unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci = 0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n shift() {\n if (!this.chunks.length) return '';\n let ci = this.chunks.length - 1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n}\n\nexport { ChunksTailDetails as default };\n","import { DIRECTION } from '../../core/utils.js';\n\nclass PatternCursor {\n constructor(masked, pos) {\n this.masked = masked;\n this._log = [];\n const {\n offset,\n index\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\n // first\n {\n index: 0,\n offset: 0\n } :\n // last\n {\n index: this.masked._blocks.length,\n offset: 0\n });\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n get block() {\n return this.masked._blocks[this.index];\n }\n get pos() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n get state() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n }\n set state(s) {\n Object.assign(this, s);\n }\n pushState() {\n this._log.push(this.state);\n }\n popState() {\n const s = this._log.pop();\n if (s) this.state = s;\n return s;\n }\n bindBlock() {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.displayValue.length; // TODO this is stupid type error, `block` depends on index that was changed above\n }\n }\n _pushLeft(fn) {\n this.pushState();\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) == null ? void 0 : _this$block.displayValue.length) || 0) {\n var _this$block;\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n _pushRight(fn) {\n this.pushState();\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n pushLeftBeforeFilled() {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n pushLeftBeforeInput() {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushLeftBeforeRequired() {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushRightBeforeFilled() {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n pushRightBeforeInput() {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aa<X|[]>X_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n pushRightBeforeRequired() {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n}\n\nexport { PatternCursor as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport '../../core/holder.js';\n\nclass PatternFixedDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n get value() {\n return this._value;\n }\n get unmaskedValue() {\n return this.isUnmasking ? this.value : '';\n }\n get rawInputValue() {\n return this._isRawInput ? this.value : '';\n }\n get displayValue() {\n return this.value;\n }\n reset() {\n this._isRawInput = false;\n this._value = '';\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this._value.length;\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n return this._isRawInput ? toPos - fromPos : 0;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return Boolean(this._value);\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const appendEager = this.eager === true || this.eager === 'append';\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n const details = new ChangeDetails({\n inserted: this.char,\n rawInserted: isResolved ? this.char : ''\n });\n this._value = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n extractTail() {\n return new ContinuousTailDetails('');\n }\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n append(str, flags, tail) {\n const details = this._appendChar(str[0], flags);\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n return details;\n }\n doCommit() {}\n get state() {\n return {\n _value: this._value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n this._isRawInput = Boolean(state._rawInputValue);\n }\n pad(flags) {\n return this._appendPlaceholder();\n }\n}\n\nexport { PatternFixedDefinition as default };\n","import createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nclass PatternInputDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n const {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager,\n ...maskOpts\n } = opts;\n this.masked = createMask(maskOpts);\n Object.assign(this, {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n });\n }\n reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n return new ChangeDetails();\n }\n get value() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n get unmaskedValue() {\n return this.masked.unmaskedValue;\n }\n get rawInputValue() {\n return this.masked.rawInputValue;\n }\n get displayValue() {\n return this.masked.value && this.displayChar || this.value;\n }\n get isComplete() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const state = this.masked.state;\n // simulate input\n let details = this.masked._appendChar(ch, this.currentMaskFlags(flags));\n if (details.inserted && this.doValidate(flags) === false) {\n details = new ChangeDetails();\n this.masked.state = state;\n }\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n append(str, flags, tail) {\n // TODO probably should be done via _appendChar\n return this.masked.append(str, this.currentMaskFlags(flags), tail);\n }\n _appendPlaceholder() {\n if (this.isFilled || this.isOptional) return new ChangeDetails();\n this.isFilled = true;\n return new ChangeDetails({\n inserted: this.placeholderChar\n });\n }\n _appendEager() {\n return new ChangeDetails();\n }\n extractTail(fromPos, toPos) {\n return this.masked.extractTail(fromPos, toPos);\n }\n appendTail(tail) {\n return this.masked.appendTail(tail);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.value.slice(fromPos, toPos).length;\n }\n doValidate(flags) {\n return this.masked.doValidate(this.currentMaskFlags(flags)) && (!this.parent || this.parent.doValidate(this.currentMaskFlags(flags)));\n }\n doCommit() {\n this.masked.doCommit();\n }\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue,\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n }\n set state(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta;\n return {\n ...flags,\n _beforeTailState: (flags == null || (_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.masked) || (flags == null ? void 0 : flags._beforeTailState)\n };\n }\n pad(flags) {\n return new ChangeDetails();\n }\n}\nPatternInputDefinition.DEFAULT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n\nexport { PatternInputDefinition as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\nclass MaskedRegExp extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const mask = opts.mask;\n if (mask) opts.validate = value => value.search(mask) >= 0;\n super._update(opts);\n }\n}\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport { DIRECTION } from '../core/utils.js';\nimport Masked from './base.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport PatternCursor from './pattern/cursor.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport PatternInputDefinition from './pattern/input-definition.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\n/** Pattern mask */\nclass MaskedPattern extends Masked {\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Single char for filled input */\n\n /** Show placeholder only when needed */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n super({\n ...MaskedPattern.DEFAULTS,\n ...opts,\n definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts == null ? void 0 : opts.definitions)\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n _rebuildMask() {\n const defs = this.definitions;\n this._blocks = [];\n this.exposeBlock = undefined;\n this._stops = [];\n this._maskedBlocks = {};\n const pattern = this.mask;\n if (!pattern || !defs) return;\n let unmaskingBlock = false;\n let optionalBlock = false;\n for (let i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n const {\n expose,\n repeat,\n ...bOpts\n } = normalizeOpts(this.blocks[bName]); // TODO type Opts<Arg & Extra>\n const blockOpts = {\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite,\n autofix: this.autofix,\n ...bOpts,\n repeat,\n parent: this\n };\n const maskedBlock = repeat != null ? new IMask.RepeatBlock(blockOpts /* TODO */) : createMask(blockOpts);\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n if (expose) this.exposeBlock = maskedBlock;\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n i += bName.length - 1;\n continue;\n }\n }\n let char = pattern[i];\n let isInput = (char in defs);\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n const def = isInput ? new PatternInputDefinition({\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n ...normalizeOpts(defs[char]),\n parent: this\n }) : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n this._blocks.push(def);\n }\n }\n get state() {\n return {\n ...super.state,\n _blocks: this._blocks.map(b => b.state)\n };\n }\n set state(state) {\n if (!state) {\n this.reset();\n return;\n }\n const {\n _blocks,\n ...maskedState\n } = state;\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n reset() {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n get isComplete() {\n return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every(b => b.isComplete);\n }\n get isFilled() {\n return this._blocks.every(b => b.isFilled);\n }\n get isFixed() {\n return this._blocks.every(b => b.isFixed);\n }\n get isOptional() {\n return this._blocks.every(b => b.isOptional);\n }\n doCommit() {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n get unmaskedValue() {\n return this.exposeBlock ? this.exposeBlock.unmaskedValue : this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.unmaskedValue = unmaskedValue;\n this.appendTail(tail);\n this.doCommit();\n } else super.unmaskedValue = unmaskedValue;\n }\n get value() {\n return this.exposeBlock ? this.exposeBlock.value :\n // TODO return _value when not in change?\n this._blocks.reduce((str, b) => str += b.value, '');\n }\n set value(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.value = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.value = value;\n }\n get typedValue() {\n return this.exposeBlock ? this.exposeBlock.typedValue : super.typedValue;\n }\n set typedValue(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.typedValue = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.typedValue = value;\n }\n get displayValue() {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n appendTail(tail) {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n _appendEager() {\n var _this$_mapPosToBlock;\n const details = new ChangeDetails();\n let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n details.aggregate(d);\n }\n return details;\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const blockIter = this._mapPosToBlock(this.displayValue.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n for (let bi = blockIter.index, block; block = this._blocks[bi]; ++bi) {\n var _flags$_beforeTailSta;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n details.aggregate(blockDetails);\n if (blockDetails.consumed) break; // go next char\n }\n return details;\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n return chunkTail;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n if (fromPos === toPos) return '';\n let input = '';\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n return input;\n }\n _findStopBefore(blockIndex) {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n _appendPlaceholder(toBlockIndex) {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n const startBlockIter = this._mapPosToBlock(this.displayValue.length);\n if (!startBlockIter) return details;\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n var _blocks2;\n details.aggregate(b._appendPlaceholder((_blocks2 = b._blocks) == null ? void 0 : _blocks2.length));\n }\n });\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos) {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n accVal += block.displayValue;\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.displayValue.length, 0);\n }\n _forEachBlocksInRange(fromPos, toPos, fn) {\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const fromBlockIter = this._mapPosToBlock(fromPos);\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].displayValue.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].displayValue.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.displayValue.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return 0;\n }\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.displayValue.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name) {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n pad(flags) {\n const details = new ChangeDetails();\n this._forEachBlocksInRange(0, this.displayValue.length, b => details.aggregate(b.pad(flags)));\n return details;\n }\n}\nMaskedPattern.DEFAULTS = {\n ...Masked.DEFAULTS,\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\nclass MaskedRange extends MaskedPattern {\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n get _matchFrom() {\n return this.maxLength - String(this.from).length;\n }\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n to = this.to || 0,\n from = this.from || 0,\n maxLength = this.maxLength || 0,\n autofix = this.autofix,\n ...patternOpts\n } = opts;\n this.to = to;\n this.from = from;\n this.maxLength = Math.max(String(to).length, maxLength);\n this.autofix = autofix;\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n let sameCharsCount = 0;\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount;\n patternOpts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(this.maxLength - sameCharsCount);\n super._update(patternOpts);\n }\n get isComplete() {\n return super.isComplete && Boolean(this.value);\n }\n boundaries(str) {\n let minstr = '';\n let maxstr = '';\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let details;\n [ch, details] = super.doPrepareChar(ch.replace(/\\D/g, ''), flags);\n if (!ch) details.skip = !this.isComplete;\n return [ch, details];\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (!this.autofix || this.value.length + 1 > this.maxLength) return super._appendCharRaw(ch, flags);\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n const [minstr, maxstr] = this.boundaries(this.value + ch);\n if (Number(maxstr) < this.from) return super._appendCharRaw(fromStr[this.value.length], flags);\n if (Number(minstr) > this.to) {\n if (!flags.tail && this.autofix === 'pad' && this.value.length + 1 < this.maxLength) {\n return super._appendCharRaw(fromStr[this.value.length], flags).aggregate(this._appendCharRaw(ch, flags));\n }\n return super._appendCharRaw(toStr[this.value.length], flags);\n }\n return super._appendCharRaw(ch, flags);\n }\n doValidate(flags) {\n const str = this.value;\n const firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n const [minstr, maxstr] = this.boundaries(str);\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(flags);\n }\n pad(flags) {\n const details = new ChangeDetails();\n if (this.value.length === this.maxLength) return details;\n const value = this.value;\n const padLength = this.maxLength - this.value.length;\n if (padLength) {\n this.reset();\n for (let i = 0; i < padLength; ++i) {\n details.aggregate(super._appendCharRaw('0', flags));\n }\n\n // append tail\n value.split('').forEach(ch => this._appendCharRaw(ch));\n }\n return details;\n }\n}\nIMask.MaskedRange = MaskedRange;\n\nexport { MaskedRange as default };\n","import MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport { isString } from '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\nconst DefaultPattern = 'd{.}`m{.}`Y';\n\n// Make format and parse required when pattern is provided\n\n/** Date mask */\nclass MaskedDate extends MaskedPattern {\n static extractPatternOptions(opts) {\n const {\n mask,\n pattern,\n ...patternOpts\n } = opts;\n return {\n ...patternOpts,\n mask: isString(mask) ? mask : pattern\n };\n }\n\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super(MaskedDate.extractPatternOptions({\n ...MaskedDate.DEFAULTS,\n ...opts\n }));\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n mask,\n pattern,\n blocks,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n const patternBlocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS());\n // adjust year block\n if (opts.min) patternBlocks.Y.from = opts.min.getFullYear();\n if (opts.max) patternBlocks.Y.to = opts.max.getFullYear();\n if (opts.min && opts.max && patternBlocks.Y.from === patternBlocks.Y.to) {\n patternBlocks.m.from = opts.min.getMonth() + 1;\n patternBlocks.m.to = opts.max.getMonth() + 1;\n if (patternBlocks.m.from === patternBlocks.m.to) {\n patternBlocks.d.from = opts.min.getDate();\n patternBlocks.d.to = opts.max.getDate();\n }\n }\n Object.assign(patternBlocks, this.blocks, blocks);\n super._update({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern,\n blocks: patternBlocks\n });\n }\n doValidate(flags) {\n const date = this.date;\n return super.doValidate(flags) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n\n /** Parsed Date */\n get date() {\n return this.typedValue;\n }\n set date(date) {\n this.typedValue = date;\n }\n get typedValue() {\n return this.isComplete ? super.typedValue : null;\n }\n set typedValue(value) {\n super.typedValue = value;\n }\n maskEquals(mask) {\n return mask === Date || super.maskEquals(mask);\n }\n optionsIsChanged(opts) {\n return super.optionsIsChanged(MaskedDate.extractPatternOptions(opts));\n }\n}\nMaskedDate.GET_DEFAULT_BLOCKS = () => ({\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n});\nMaskedDate.DEFAULTS = {\n ...MaskedPattern.DEFAULTS,\n mask: Date,\n pattern: DefaultPattern,\n format: (date, masked) => {\n if (!date) return '';\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: (str, masked) => {\n const [day, month, year] = str.split('.').map(Number);\n return new Date(year, month - 1, day);\n }\n};\nIMask.MaskedDate = MaskedDate;\n\nexport { MaskedDate as default };\n","import { DIRECTION, objectIncludes } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/** Dynamic mask for choosing appropriate mask in run-time */\nclass MaskedDynamic extends Masked {\n constructor(opts) {\n super({\n ...MaskedDynamic.DEFAULTS,\n ...opts\n });\n this.currentMask = undefined;\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n if ('mask' in opts) {\n this.exposeMask = undefined;\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => {\n const {\n expose,\n ...maskOpts\n } = normalizeOpts(m);\n const masked = createMask({\n overwrite: this._overwrite,\n eager: this._eager,\n skipInvalid: this._skipInvalid,\n ...maskOpts\n });\n if (expose) this.exposeMask = masked;\n return masked;\n }) : [];\n\n // this.currentMask = this.doDispatch(''); // probably not needed but lets see\n }\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = this._applyDispatch(ch, flags);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\n }\n return details;\n }\n _applyDispatch(appended, flags, tail) {\n if (appended === void 0) {\n appended = '';\n }\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n const inputValue = this.rawInputValue;\n const insertValue = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._rawInputValue : inputValue;\n const tailValue = inputValue.slice(insertValue.length);\n const prevMask = this.currentMask;\n const details = new ChangeDetails();\n const prevMaskState = prevMask == null ? void 0 : prevMask.state;\n\n // clone flags to prevent overwriting `_beforeTailState`\n this.currentMask = this.doDispatch(appended, {\n ...flags\n }, tail);\n\n // restore state after dispatch\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n if (insertValue) {\n this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = this.currentMask.value.length - prevValueBeforeTail.length;\n }\n if (tailValue) {\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else if (prevMaskState) {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n return details;\n }\n _appendPlaceholder() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n return details;\n }\n _appendEager() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n return details;\n }\n appendTail(tail) {\n const details = new ChangeDetails();\n if (tail) details.aggregate(this._applyDispatch('', {}, tail));\n return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail));\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n return {\n ...flags,\n _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState\n };\n }\n doDispatch(appended, flags, tail) {\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n return this.dispatch(appended, this, flags, tail);\n }\n doValidate(flags) {\n return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags)));\n }\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepare(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepare(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepareChar(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepareChar(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n reset() {\n var _this$currentMask;\n (_this$currentMask = this.currentMask) == null || _this$currentMask.reset();\n this.compiledMasks.forEach(m => m.reset());\n }\n get value() {\n return this.exposeMask ? this.exposeMask.value : this.currentMask ? this.currentMask.value : '';\n }\n set value(value) {\n if (this.exposeMask) {\n this.exposeMask.value = value;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.value = value;\n }\n get unmaskedValue() {\n return this.exposeMask ? this.exposeMask.unmaskedValue : this.currentMask ? this.currentMask.unmaskedValue : '';\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeMask) {\n this.exposeMask.unmaskedValue = unmaskedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.exposeMask ? this.exposeMask.typedValue : this.currentMask ? this.currentMask.typedValue : '';\n }\n set typedValue(typedValue) {\n if (this.exposeMask) {\n this.exposeMask.typedValue = typedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n return;\n }\n let unmaskedValue = String(typedValue);\n\n // double check it\n if (this.currentMask) {\n this.currentMask.typedValue = typedValue;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n this.unmaskedValue = unmaskedValue;\n }\n get displayValue() {\n return this.currentMask ? this.currentMask.displayValue : '';\n }\n get isComplete() {\n var _this$currentMask2;\n return Boolean((_this$currentMask2 = this.currentMask) == null ? void 0 : _this$currentMask2.isComplete);\n }\n get isFilled() {\n var _this$currentMask3;\n return Boolean((_this$currentMask3 = this.currentMask) == null ? void 0 : _this$currentMask3.isFilled);\n }\n remove(fromPos, toPos) {\n const details = new ChangeDetails();\n if (this.currentMask) {\n details.aggregate(this.currentMask.remove(fromPos, toPos))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n return details;\n }\n get state() {\n var _this$currentMask4;\n return {\n ...super.state,\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(m => m.state),\n currentMaskRef: this.currentMask,\n currentMask: (_this$currentMask4 = this.currentMask) == null ? void 0 : _this$currentMask4.state\n };\n }\n set state(state) {\n const {\n compiledMasks,\n currentMaskRef,\n currentMask,\n ...maskedState\n } = state;\n if (compiledMasks) this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]);\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n super.state = maskedState;\n }\n extractInput(fromPos, toPos, flags) {\n return this.currentMask ? this.currentMask.extractInput(fromPos, toPos, flags) : '';\n }\n extractTail(fromPos, toPos) {\n return this.currentMask ? this.currentMask.extractTail(fromPos, toPos) : super.extractTail(fromPos, toPos);\n }\n doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n super.doCommit();\n }\n nearestInputPos(cursorPos, direction) {\n return this.currentMask ? this.currentMask.nearestInputPos(cursorPos, direction) : super.nearestInputPos(cursorPos, direction);\n }\n get overwrite() {\n return this.currentMask ? this.currentMask.overwrite : this._overwrite;\n }\n set overwrite(overwrite) {\n this._overwrite = overwrite;\n }\n get eager() {\n return this.currentMask ? this.currentMask.eager : this._eager;\n }\n set eager(eager) {\n this._eager = eager;\n }\n get skipInvalid() {\n return this.currentMask ? this.currentMask.skipInvalid : this._skipInvalid;\n }\n set skipInvalid(skipInvalid) {\n this._skipInvalid = skipInvalid;\n }\n get autofix() {\n return this.currentMask ? this.currentMask.autofix : this._autofix;\n }\n set autofix(autofix) {\n this._autofix = autofix;\n }\n maskEquals(mask) {\n return Array.isArray(mask) ? this.compiledMasks.every((m, mi) => {\n if (!mask[mi]) return;\n const {\n mask: oldMask,\n ...restOpts\n } = mask[mi];\n return objectIncludes(m, restOpts) && m.maskEquals(oldMask);\n }) : super.maskEquals(mask);\n }\n typedValueEquals(value) {\n var _this$currentMask5;\n return Boolean((_this$currentMask5 = this.currentMask) == null ? void 0 : _this$currentMask5.typedValueEquals(value));\n }\n}\n/** Currently chosen mask */\n/** Currently chosen mask */\n/** Compliled {@link Masked} options */\n/** Chooses {@link Masked} depending on input value */\nMaskedDynamic.DEFAULTS = {\n ...Masked.DEFAULTS,\n dispatch: (appended, masked, flags, tail) => {\n if (!masked.compiledMasks.length) return;\n const inputValue = masked.rawInputValue;\n\n // simulate input\n const inputs = masked.compiledMasks.map((m, index) => {\n const isCurrent = masked.currentMask === m;\n const startInputPos = isCurrent ? m.displayValue.length : m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT);\n if (m.rawInputValue !== inputValue) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n } else if (!isCurrent) {\n m.remove(startInputPos);\n }\n m.append(appended, masked.currentMaskFlags(flags));\n m.appendTail(tail);\n return {\n index,\n weight: m.rawInputValue.length,\n totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT)))\n };\n });\n\n // pop masks with longer values first\n inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions);\n return masked.compiledMasks[inputs[0].index];\n }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport { MaskedDynamic as default };\n","import MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport ChangeDetails from '../core/change-details.js';\nimport { DIRECTION } from '../core/utils.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport './base.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\nclass MaskedEnum extends MaskedPattern {\n constructor(opts) {\n super({\n ...MaskedEnum.DEFAULTS,\n ...opts\n }); // mask will be created in _update\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n enum: enum_,\n ...eopts\n } = opts;\n if (enum_) {\n const lengths = enum_.map(e => e.length);\n const requiredLength = Math.min(...lengths);\n const optionalLength = Math.max(...lengths) - requiredLength;\n eopts.mask = '*'.repeat(requiredLength);\n if (optionalLength) eopts.mask += '[' + '*'.repeat(optionalLength) + ']';\n this.enum = enum_;\n }\n super._update(eopts);\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const matchFrom = Math.min(this.nearestInputPos(0, DIRECTION.FORCE_RIGHT), this.value.length);\n const matches = this.enum.filter(e => this.matchValue(e, this.unmaskedValue + ch, matchFrom));\n if (matches.length) {\n if (matches.length === 1) {\n this._forEachBlocksInRange(0, this.value.length, (b, bi) => {\n const mch = matches[0][bi];\n if (bi >= this.value.length || mch === b.value) return;\n b.reset();\n b._appendChar(mch, flags);\n });\n }\n const d = super._appendCharRaw(matches[0][this.value.length], flags);\n if (matches.length === 1) {\n matches[0].slice(this.unmaskedValue.length).split('').forEach(mch => d.aggregate(super._appendCharRaw(mch)));\n }\n return d;\n }\n return new ChangeDetails({\n skip: !this.isComplete\n });\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n // just drop tail\n return new ContinuousTailDetails('', fromPos);\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (fromPos === toPos) return new ChangeDetails();\n const matchFrom = Math.min(super.nearestInputPos(0, DIRECTION.FORCE_RIGHT), this.value.length);\n let pos;\n for (pos = fromPos; pos >= 0; --pos) {\n const matches = this.enum.filter(e => this.matchValue(e, this.value.slice(matchFrom, pos), matchFrom));\n if (matches.length > 1) break;\n }\n const details = super.remove(pos, toPos);\n details.tailShift += pos - fromPos;\n return details;\n }\n get isComplete() {\n return this.enum.indexOf(this.value) >= 0;\n }\n}\n/** Match enum value */\nMaskedEnum.DEFAULTS = {\n ...MaskedPattern.DEFAULTS,\n matchValue: (estr, istr, matchFrom) => estr.indexOf(istr, matchFrom) === matchFrom\n};\nIMask.MaskedEnum = MaskedEnum;\n\nexport { MaskedEnum as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\nclass MaskedFunction extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update({\n ...opts,\n validate: opts.mask\n });\n }\n}\nIMask.MaskedFunction = MaskedFunction;\n\nexport { MaskedFunction as default };\n","import { escapeRegExp, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\nvar _MaskedNumber;\n/** Number mask */\nclass MaskedNumber extends Masked {\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super({\n ...MaskedNumber.DEFAULTS,\n ...opts\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n this._updateRegExps();\n }\n _updateRegExps() {\n const start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n const mid = '\\\\d*';\n const end = (this.scale ? \"(\" + escapeRegExp(this.radix) + \"\\\\d{0,\" + this.scale + \"})?\" : '') + '$';\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp(\"[\" + this.mapToRadix.map(escapeRegExp).join('') + \"]\", 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n const parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const [prepCh, details] = super.doPrepareChar(this._removeThousandsSeparators(this.scale && this.mapToRadix.length && (\n /*\n radix should be mapped when\n 1) input is done from keyboard = flags.input && flags.raw\n 2) unmasked value is set = !flags.input && !flags.raw\n and should not be mapped when\n 1) value is set = flags.input && !flags.raw\n 2) raw value is set = !flags.input && flags.raw\n */\n flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch), flags);\n if (ch && !prepCh) details.skip = true;\n if (prepCh && !this.allowPositive && !this.value && prepCh !== '-') details.aggregate(this._appendChar('-'));\n return [prepCh, details];\n }\n _separatorsCount(to, extendOnSeparators) {\n if (extendOnSeparators === void 0) {\n extendOnSeparators = false;\n }\n let count = 0;\n for (let pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n return count;\n }\n _separatorsCountFromSlice(slice) {\n if (slice === void 0) {\n slice = this._value;\n }\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n this._value = this._removeThousandsSeparators(this.value);\n const oldValue = this._value;\n this._value += ch;\n const num = this.number;\n let accepted = !isNaN(num);\n let skip = false;\n if (accepted) {\n let fixedNum;\n if (this.min != null && this.min < 0 && this.number < this.min) fixedNum = this.min;\n if (this.max != null && this.max > 0 && this.number > this.max) fixedNum = this.max;\n if (fixedNum != null) {\n if (this.autofix) {\n this._value = this.format(fixedNum, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n skip || (skip = oldValue === this._value && !flags.tail); // if not changed on tail it's still ok to proceed\n } else {\n accepted = false;\n }\n }\n accepted && (accepted = Boolean(this._value.match(this._numberRegExp)));\n }\n let appendDetails;\n if (!accepted) {\n this._value = oldValue;\n appendDetails = new ChangeDetails();\n } else {\n appendDetails = new ChangeDetails({\n inserted: this._value.slice(oldValue.length),\n rawInserted: skip ? '' : ch,\n skip\n });\n }\n this._value = this._insertThousandsSeparators(this._value);\n const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n return appendDetails;\n }\n _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n const searchFrom = pos - this.thousandsSeparator.length + 1;\n const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n return -1;\n }\n _adjustRangeWithSeparators(from, to) {\n const separatorAroundFromPos = this._findSeparatorAround(from);\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n const separatorAroundToPos = this._findSeparatorAround(to);\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n const valueBeforePos = this.value.slice(0, fromPos);\n const valueAfterPos = this.value.slice(toPos);\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n if (separatorAtLeftPos >= 0) {\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n break;\n }\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n return cursorPos;\n }\n doCommit() {\n if (this.value) {\n const number = this.number;\n let validnum = number;\n\n // check bounds\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = this.format(validnum, this);\n let formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n super.doCommit();\n }\n _normalizeZeros(value) {\n const parts = this._removeThousandsSeparators(value).split(this.radix);\n\n // remove leading zeros\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\n // add leading zero\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n _padFractionalZeros(value) {\n if (!value) return value;\n const parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n doSkipInvalid(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch));\n return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional;\n }\n get unmaskedValue() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX);\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.parse(this.unmaskedValue, this);\n }\n set typedValue(n) {\n this.rawInputValue = this.format(n, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n }\n\n /** Parsed Number */\n get number() {\n return this.typedValue;\n }\n set number(number) {\n this.typedValue = number;\n }\n get allowNegative() {\n return this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n get allowPositive() {\n return this.min != null && this.min > 0 || this.max != null && this.max > 0;\n }\n typedValueEquals(value) {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\n }\n}\n_MaskedNumber = MaskedNumber;\nMaskedNumber.UNMASKED_RADIX = '.';\nMaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];\nMaskedNumber.DEFAULTS = {\n ...Masked.DEFAULTS,\n mask: Number,\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: [_MaskedNumber.UNMASKED_RADIX],\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n scale: 2,\n normalizeZeros: true,\n padFractionalZeros: false,\n parse: Number,\n format: n => n.toLocaleString('en-US', {\n useGrouping: false,\n maximumFractionDigits: 20\n })\n};\nIMask.MaskedNumber = MaskedNumber;\n\nexport { MaskedNumber as default };\n","import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\n\n/** Mask pipe source and destination types */\nconst PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n};\n/** Creates new pipe function depending on mask type, source and destination options */\nfunction createPipe(arg, from, to) {\n if (from === void 0) {\n from = PIPE_TYPE.MASKED;\n }\n if (to === void 0) {\n to = PIPE_TYPE.MASKED;\n }\n const masked = createMask(arg);\n return value => masked.runIsolated(m => {\n m[from] = value;\n return m[to];\n });\n}\n\n/** Pipes value through mask depending on mask type, source and destination options */\nfunction pipe(value, mask, from, to) {\n return createPipe(mask, from, to)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern mask */\nclass RepeatBlock extends MaskedPattern {\n get repeatFrom() {\n var _ref;\n return (_ref = Array.isArray(this.repeat) ? this.repeat[0] : this.repeat === Infinity ? 0 : this.repeat) != null ? _ref : 0;\n }\n get repeatTo() {\n var _ref2;\n return (_ref2 = Array.isArray(this.repeat) ? this.repeat[1] : this.repeat) != null ? _ref2 : Infinity;\n }\n constructor(opts) {\n super(opts);\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n var _ref3, _ref4, _this$_blocks;\n const {\n repeat,\n ...blockOpts\n } = normalizeOpts(opts); // TODO type\n this._blockOpts = Object.assign({}, this._blockOpts, blockOpts);\n const block = createMask(this._blockOpts);\n this.repeat = (_ref3 = (_ref4 = repeat != null ? repeat : block.repeat) != null ? _ref4 : this.repeat) != null ? _ref3 : Infinity; // TODO type\n\n super._update({\n mask: 'm'.repeat(Math.max(this.repeatTo === Infinity && ((_this$_blocks = this._blocks) == null ? void 0 : _this$_blocks.length) || 0, this.repeatFrom)),\n blocks: {\n m: block\n },\n eager: block.eager,\n overwrite: block.overwrite,\n skipInvalid: block.skipInvalid,\n lazy: block.lazy,\n placeholderChar: block.placeholderChar,\n displayChar: block.displayChar\n });\n }\n _allocateBlock(bi) {\n if (bi < this._blocks.length) return this._blocks[bi];\n if (this.repeatTo === Infinity || this._blocks.length < this.repeatTo) {\n this._blocks.push(createMask(this._blockOpts));\n this.mask += 'm';\n return this._blocks[this._blocks.length - 1];\n }\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = new ChangeDetails();\n for (let bi = (_this$_mapPosToBlock$ = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index) != null ? _this$_mapPosToBlock$ : Math.max(this._blocks.length - 1, 0), block, allocated;\n // try to get a block or\n // try to allocate a new block if not allocated already\n block = (_this$_blocks$bi = this._blocks[bi]) != null ? _this$_blocks$bi : allocated = !allocated && this._allocateBlock(bi); ++bi) {\n var _this$_mapPosToBlock$, _this$_mapPosToBlock, _this$_blocks$bi, _flags$_beforeTailSta;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n if (blockDetails.skip && allocated) {\n // remove the last allocated block and break\n this._blocks.pop();\n this.mask = this.mask.slice(1);\n break;\n }\n details.aggregate(blockDetails);\n if (blockDetails.consumed) break; // go next char\n }\n return details;\n }\n _trimEmptyTail(fromPos, toPos) {\n var _this$_mapPosToBlock2, _this$_mapPosToBlock3;\n if (fromPos === void 0) {\n fromPos = 0;\n }\n const firstBlockIndex = Math.max(((_this$_mapPosToBlock2 = this._mapPosToBlock(fromPos)) == null ? void 0 : _this$_mapPosToBlock2.index) || 0, this.repeatFrom, 0);\n let lastBlockIndex;\n if (toPos != null) lastBlockIndex = (_this$_mapPosToBlock3 = this._mapPosToBlock(toPos)) == null ? void 0 : _this$_mapPosToBlock3.index;\n if (lastBlockIndex == null) lastBlockIndex = this._blocks.length - 1;\n let removeCount = 0;\n for (let blockIndex = lastBlockIndex; firstBlockIndex <= blockIndex; --blockIndex, ++removeCount) {\n if (this._blocks[blockIndex].unmaskedValue) break;\n }\n if (removeCount) {\n this._blocks.splice(lastBlockIndex - removeCount + 1, removeCount);\n this.mask = this.mask.slice(removeCount);\n }\n }\n reset() {\n super.reset();\n this._trimEmptyTail();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._trimEmptyTail(fromPos, toPos);\n return removeDetails;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos == null && this.repeatTo === Infinity) return Infinity;\n return super.totalInputPositions(fromPos, toPos);\n }\n get state() {\n return super.state;\n }\n set state(state) {\n this._blocks.length = state._blocks.length;\n this.mask = this.mask.slice(0, this._blocks.length);\n super.state = state;\n }\n}\nIMask.RepeatBlock = RepeatBlock;\n\nexport { RepeatBlock as default };\n","export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { default as HTMLInputMaskElement } from './controls/html-input-mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as ChangeDetails } from './core/change-details.js';\nexport { DIRECTION, forceDirection } from './core/utils.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as createMask, normalizeOpts } from './masked/factory.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as ChunksTailDetails } from './masked/pattern/chunk-tail-details.js';\nexport { default as PatternFixedDefinition } from './masked/pattern/fixed-definition.js';\nexport { default as PatternInputDefinition } from './masked/pattern/input-definition.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nexport { default as RepeatBlock } from './masked/repeat.js';\nimport './core/action-details.js';\nimport './controls/input-history.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/cursor.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch {}\n\nexport { IMask as default };\n","export type MaskOptionsMap = {\n [key: string]: any;\n};\n\nexport const maskOptions: MaskOptionsMap = {\n cpf_cnpj: {\n mask: [{ mask: '000.000.000-00' }, { mask: '00.000.000/0000-00' }],\n placeholderChar: '_',\n },\n cpf: {\n mask: '000.000.000-00',\n placeholderChar: '_',\n },\n cnpj: {\n mask: '00.000.000/0000-00',\n placeholderChar: '_',\n },\n\n phone: {\n mask: '(00) 00000-0000',\n blocks: {\n '(00)': {\n mask: '(00)',\n maxLength: 2,\n placeholderChar: '',\n },\n '00000': {\n mask: '00000',\n maxLength: 5,\n placeholderChar: '_',\n },\n '-': {\n mask: '-',\n },\n '0000': {\n mask: '0000',\n maxLength: 4,\n placeholderChar: '_',\n },\n },\n placeholderChar: '_',\n },\n date: {\n mask: '00/00/0000'\n },\n dateRange: {\n mask: '00/00/0000 - 00/00/0000'\n },\n};\n","@import '../../../scss/mixins/forms.scss';\n\n:host {\n display: block;\n box-sizing: border-box;\n width: 100%;\n}\n\n.required {\n color: var(--error-base);\n}\n\n.cura-input-group {\n width: 100%;\n font-family: var(--font-family);\n text-align: left !important;\n\n .helper-text {\n margin-top: 8px;\n color: var(--neutral-dark);\n }\n @include cura-label;\n\n @include cura-input-field(40px, 14px) {\n cura-loader-circle {\n margin: 0px 12px;\n }\n .feedback-icon {\n padding-left: 12px;\n padding-top: 6px;\n }\n\n .clear-button {\n padding-right: 12px;\n cursor: pointer;\n }\n }\n @include helper-text();\n @include cura-forms-success;\n @include cura-forms-error;\n @include cura-forms-hover;\n @include cura-forms-focused;\n @include cura-forms-loading;\n @include cura-forms-readonly;\n @include cura-forms-small;\n @include cura-forms-medium;\n @include cura-forms-large;\n @include cura-forms-disabled;\n\n @include cura-input-transparent {\n &.transparent {\n display: flex;\n background-color: transparent;\n padding: 0px;\n justify-content: start;\n align-items: center;\n max-height: 80px;\n gap: 4px;\n\n .input-wrapper {\n display: flex;\n width: 100%;\n flex-direction: column;\n justify-content: start;\n }\n cura-label {\n margin-bottom: 4px;\n --color-body: var(--neutral-dark) !important;\n }\n\n &.error {\n cura-label {\n --color-body: var(--neutral-black) !important;\n }\n }\n\n @include cura-input-field() {\n background-color: transparent !important;\n border: none !important;\n border-radius: 0;\n height: 27px;\n overflow: hidden;\n\n input {\n order: 1;\n color: var(--neutral-black) !important;\n font-size: 16px;\n font-weight: var(--font-weight-bold) !important;\n padding: 0;\n }\n\n input::placeholder {\n color: var(--neutral-black);\n }\n .clear-button {\n order: 2;\n cursor: pointer;\n\n margin: 0 20px 0 0;\n padding: 0;\n }\n\n .feedback-icon {\n padding: 6px 0 0 0;\n }\n\n cura-loader-circle {\n order: 2;\n margin: 0 20px 0 0;\n }\n }\n }\n }\n\n &.error {\n @include cura-input-field() {\n input {\n color: var(--error-darker) !important;\n }\n\n input::placeholder {\n color: var(--error-darker) !important;\n }\n }\n\n @include cura-forms-small;\n @include cura-forms-medium;\n @include cura-forms-large;\n\n &:not(.transparent).large {\n @include cura-input-field(44px, 16px) {\n border: 2px solid var(--error-dark) !important;\n background-color: var(--error-lighter) !important;\n }\n }\n }\n\n &.success {\n @include cura-input-field() {\n input {\n color: var(--success-darker) !important;\n }\n\n input::placeholder {\n color: var(--success-darker) !important;\n }\n }\n @include cura-forms-small;\n @include cura-forms-medium;\n @include cura-forms-large;\n\n &:not(.transparent).large {\n @include cura-input-field(44px, 16px) {\n border: 2px solid var(--success-dark) !important;\n background-color: var(--success-lighter) !important;\n }\n }\n }\n}\n\ninput[type='number']::-webkit-inner-spin-button,\ninput[type='number']::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n","import { Component, Host, h, Prop, State, Watch, Event, EventEmitter, AttachInternals, Method, Element } from '@stencil/core';\nimport IMask, { FactoryArg, InputMask } from 'imask';\nimport { maskOptions, MaskOptionsMap } from './mask-presets/input-mask-presets';\nimport { checkMobile, checkIOS, fakeInputIOSHack } from '../../../utils/utils';\nexport type MaskPreset = keyof MaskOptionsMap;\n@Component({\n tag: 'cura-input-text',\n styleUrl: 'cura-input-text.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class CuraInputText {\n @Element() host: HTMLElement;\n /**\n * Mode of the input: 'default' or 'transparent' (default: 'default')\n */\n @Prop({ reflect: true, mutable: true }) mode: 'default' | 'transparent' | string = 'default';\n\n /**\n * Indicates input status(default: default)\n */\n\n @Prop({ reflect: true, mutable: true }) status: 'error' | 'success' | 'default' | string = 'default';\n\n /**\n * Size of the input mode default: 'small', 'medium', or 'large' (default: 'medium')\n */\n @Prop({ reflect: true, mutable: true }) size: 'small' | 'medium' | 'large' | string = 'medium';\n\n /**\n * Type of the input: 'text', 'number' (default: 'text')\n */\n @Prop({ reflect: true }) type: string = 'text';\n\n /**\n * Type of the input: 'text', 'number' (default: 'text')\n */\n @Prop({ reflect: true }) inputMode: string = 'text';\n\n /**\n * Label text for the input\n */\n @Prop({ reflect: true }) label?: string = '';\n\n /**\n * Name text for the input\n */\n @Prop({ reflect: true }) name?: string = '';\n\n /**\n * Placeholder text for the input\n */\n @Prop({ reflect: true }) placeholder?: string | null = null;\n\n /**\n * Value of the input field\n */\n @Prop({ reflect: true, mutable: true }) value: string | number = '';\n\n /**\n * Whether to display a cura icon (default: null)\n */\n @Prop({ reflect: true, mutable: true }) iconName?: string = '';\n\n /**\n * Helper text displayed below the input\n */\n @Prop({ reflect: true, mutable: true }) helperText?: string;\n\n /**\n * Whether the input is disabled (default: false)\n */\n @Prop({ reflect: true }) disabled?: boolean = false;\n\n /**\n * Whether the input is required (default: false)\n */\n @Prop({ reflect: true }) required?: boolean = false;\n\n /**\n * Mask preset for input formatting: 'cpf', 'cnpj', 'phone', 'date', etc. Uses IMask library.\n * @see: https://imask.js.org/\n */\n @Prop() maskPreset?: MaskPreset;\n\n /*\n * Controls whether the selection functionality is active\n */\n @Prop({ reflect: true, mutable: true }) enableSelectionMode: boolean = false;\n\n /**\n * Regular expression for custom input masking. Uses IMask library.\n * @see: https://imask.js.org/\n */\n @Prop({ reflect: true, mutable: true }) maskRegex?: string | null;\n\n /**\n * Advanced mask object to be used with IMask library\n * @see: https://imask.js.org/\n */\n @Prop({ reflect: true, mutable: true }) maskAdvanced?: any | string | null;\n\n /**\n * Maximum length of the input value (default: undefined)\n */\n @Prop({ reflect: true, mutable: true }) maxlength?: number | undefined;\n\n /**\n * Whether the input is read-only (default: false)\n */\n @Prop({ reflect: true }) readOnly?: boolean = false;\n\n /**\n * Whether the input is in loading state (default: false)\n */\n @Prop({ reflect: true, mutable: true }) isLoading?: boolean = false;\n\n /**\n * Internal state: Whether the input is hovered (default: false)\n */\n @State() isHovered: boolean = false;\n\n /**\n * Internal state: Whether the input is focused (default: false)\n */\n @State() isFocused: boolean = false;\n\n /**\n * Internal state: Styles object for dynamic styling\n */\n @State() styles: { [key: string]: string } = {};\n\n /**\n * Icon button name for the clear button (default: 'closeCircle')\n */\n @Prop({ reflect: true, mutable: true }) clearIcon?: boolean = true;\n\n /**\n * Removes the alertCircle icon when necessary(as used in CuraDropdownSearch)\n */\n @Prop() hideErrorIcon: boolean = false;\n\n /**\n * Defines whether the input should have autocomplete\n */\n @Prop({ reflect: true }) autocomplete?: string = 'on';\n\n /**\n * Emitted when the value of the input changes\n * @type {EventEmitter<string | number>}\n */\n @Event() valueChange: EventEmitter<string | number>;\n\n /**\n * Emitted when the clear button is clicked\n * @type {EventEmitter<string | number>}\n */\n @Event() inputClear: EventEmitter<string | number>;\n\n @AttachInternals() internals: ElementInternals;\n\n inputRef!: HTMLInputElement;\n\n @Method()\n async setFocus() {\n // IOS needs large timeout value to work\n const timeoutMs = checkMobile() && checkIOS() ? 1000 : 200;\n // IOS fake input hack\n let fakeInput = fakeInputIOSHack(this.host);\n setTimeout(() => {\n this.inputRef.focus();\n if (fakeInput) fakeInput.remove();\n }, timeoutMs);\n }\n\n /**\n * Instance of InputMask is returned when IMask constructor is called.\n */\n maskedInput: InputMask<FactoryArg>;\n weights: { [key: string]: string };\n breakpoints: any;\n\n /**\n * Callback to restore the switch state from the form.\n */\n formStateRestoreCallback(state: { value: string }) {\n this.value = state.value;\n this.applyValueToMask();\n this.internals.setFormValue(this.value);\n }\n\n /**\n * Callback for form association.\n */\n formAssociatedCallback(form: { ariaLabel: string }) {\n form.ariaLabel = this.label;\n }\n\n /**\n * Callback to reset the switch state when the form is reset.\n */\n formResetCallback() {\n this.handleClearInput();\n this.internals.setValidity({});\n this.internals.setFormValue('');\n }\n\n /**\n * Callback to update the switch's disabled state when the form's disabled state changes.\n */\n formDisabledCallback(disabled: boolean) {\n this.disabled = disabled;\n }\n\n @Watch('styles')\n connectedCallback() {\n this.styles['--primary-base'] = window.CuraAPI.theme.colors.getColor(`primary-base`);\n this.styles['--neutral-purewhite'] = window.CuraAPI.theme.colors.getColor(`neutral-purewhite`);\n this.styles['--neutral-white'] = window.CuraAPI.theme.colors.getColor(`neutral-white`);\n this.styles['--neutral-black'] = window.CuraAPI.theme.colors.getColor(`neutral-black`);\n this.styles['--neutral-medium'] = window.CuraAPI.theme.colors.getColor(`neutral-medium`);\n this.styles['--neutral-base'] = window.CuraAPI.theme.colors.getColor(`neutral-base`);\n this.styles['--neutral-dark'] = window.CuraAPI.theme.colors.getColor(`neutral-dark`);\n this.styles['--success-dark'] = window.CuraAPI.theme.colors.getColor(`success-dark`);\n this.styles['--success-darker'] = window.CuraAPI.theme.colors.getColor(`success-darker`);\n this.styles['--success-lighter'] = window.CuraAPI.theme.colors.getColor(`success-lighter`);\n this.styles['--error-lighter'] = window.CuraAPI.theme.colors.getColor(`error-lighter`);\n this.styles['--error-dark'] = window.CuraAPI.theme.colors.getColor(`error-dark`);\n this.styles['--error-darker'] = window.CuraAPI.theme.colors.getColor(`error-darker`);\n this.styles['--error-base'] = window.CuraAPI.theme.colors.getColor(`error-base`);\n this.styles['--info-base'] = window.CuraAPI.theme.colors.getColor(`info-base`);\n this.styles['--font-family'] = window.CuraAPI.theme.fonts.getFamily();\n this.styles['--font-size'] = window.CuraAPI.theme.fonts.getSize();\n this.styles['--font-color'] = window.CuraAPI.theme.fonts.getColor();\n this.weights = window.CuraAPI.theme.fonts.getWeights();\n this.breakpoints = window.CuraAPI.theme.breakpoints.get();\n this.styles['--font-weight-medium'] = this.weights.medium;\n this.styles['--font-weight-bold'] = this.weights.bold;\n this.styles['--font-weight-regular'] = this.weights.regular;\n }\n\n @Watch('size')\n getClasses() {\n return {\n [this.size.toLowerCase()]: this.mode === 'default',\n disabled: this.disabled,\n isLoading: this.isLoading,\n isFocused: this.isFocused && !this.disabled && !this.readOnly && !this.isLoading,\n isHovered: this.isHovered,\n [this.status]: true,\n transparent: this.mode === 'transparent',\n selection: this.enableSelectionMode,\n };\n }\n\n getLabelColor() {\n if (!!this.disabled) {\n return 'neutral-medium';\n } else if (this.isLoading && this.mode === 'transparent' && !this.isHovered) {\n return 'neutral-dark';\n } else if (((this.isFocused || this.isHovered || this.status === 'success' || this.status === 'error') && !this.readOnly) || this.isHovered) {\n return 'neutral-black';\n } else {\n return 'neutral-dark';\n }\n }\n\n @Watch('status')\n @Watch('mode')\n renderIcon() {\n if ((this.iconName === '' && this.status === 'default') || (this.mode === 'transparent' && this.isLoading) || (this.mode === 'transparent' && this.status === 'default')) {\n return;\n }\n // Used when input is rendered in cura-dropdown-search with error status\n if (this.status === 'error' && this.hideErrorIcon) {\n return;\n }\n\n const iconSizeDefaultMode = this.size === 'large' ? 20 : 16;\n const baseIconSize = this.mode === 'transparent' ? 20 : iconSizeDefaultMode;\n\n const iconMap: { [key: string]: { name: string; color: string } } = {\n loading: { name: this.iconName, color: 'primary-base' },\n success: { name: 'checkCircle', color: 'success-dark' },\n error: { name: 'alertCircle', color: 'error-dark' },\n default: { name: this.iconName, color: 'neutral-dark' },\n disabled: { name: this.iconName, color: 'neutral-medium' },\n };\n\n const iconConfig = iconMap[this.isLoading ? 'loading' : this.disabled ? 'disabled' : this.status || 'default'];\n\n return (\n <div class=\"feedback-icon\" style={this.styles}>\n <cura-icon name={iconConfig.name} iconset=\"default\" size={baseIconSize} color={iconConfig.color} />\n </div>\n );\n }\n\n renderHelperText() {\n const isError = this.status === 'error';\n const isSuccess = this.status === 'success';\n const isDefault = this.status === 'default';\n const helperTextSize = this.size === 'large' ? 'small' : 'xsmall';\n const colorText = (() => {\n if (this.disabled) return 'neutral-medium';\n if (this.isLoading) return 'primary-base';\n if (this.isFocused || this.isHovered) return 'neutral-black';\n return 'neutral-dark';\n })();\n\n return (\n <div style={this.styles} class=\"helper-text\" part=\"cura-input-text-helper\">\n {isDefault && (\n <cura-label size={helperTextSize} lineHeight=\"xsmall\" color={colorText}>\n <slot></slot>\n </cura-label>\n )}\n {isError && this.mode === 'default' && (\n <cura-label size={helperTextSize} lineHeight=\"xsmall\" color=\"error-dark\">\n <slot></slot>\n </cura-label>\n )}\n {isError && this.mode === 'transparent' && (\n <cura-label size={helperTextSize} lineHeight=\"xsmall\" color=\"neutral-black\">\n <slot></slot>\n </cura-label>\n )}\n {isSuccess && (\n <cura-label size={helperTextSize} lineHeight=\"xsmall\" color=\"success-dark\">\n <slot></slot>\n </cura-label>\n )}\n </div>\n );\n }\n\n handleMouseEnter() {\n this.isHovered = true;\n }\n handleMouseLeave() {\n this.isHovered = false;\n }\n\n componentDidLoad() {\n this.initializeMask();\n }\n\n disconnectedCallback() {\n this.destroyMask();\n }\n\n handleMaskUpdate() {\n if (this.maskedInput) {\n this.maskedInput.updateValue();\n }\n }\n\n handleClearInput() {\n this.handleMaskUpdate();\n this.value = '';\n this.inputRef.value = '';\n this.valueChange.emit(this.value);\n this.inputClear.emit(this.value);\n this.handleMaskUpdate();\n this.setFocus();\n }\n\n handleInputFocus() {\n this.handleMaskUpdate();\n this.isFocused = true;\n }\n\n handleInputBlur() {\n this.handleMaskUpdate();\n setTimeout(() => {\n this.isFocused = false;\n }, 150);\n }\n\n shouldDisplayMask() {\n return this.maskPreset || this.maskRegex || this.maskAdvanced;\n }\n\n @Watch('maskPreset')\n @Watch('maskRegex')\n @Watch('maskAdvanced')\n initializeMask() {\n if (this.shouldDisplayMask()) {\n if (this.maskedInput) {\n this.destroyMask();\n }\n if (this.maskPreset) {\n this.initializePresetMask();\n } else if (this.maskRegex) {\n this.initializeRegexMask();\n } else if (this.maskAdvanced) {\n this.initializeAdvancedMask();\n }\n this.applyValueToMask();\n } else {\n this.clearMaskValue();\n }\n }\n\n initializeRegexMask() {\n const cleanedRegexString = this.maskRegex.replace(/^\\/|\\/[gimsuy]*$/g, '');\n const flags = (this.maskRegex.match(/\\/[gimsuy]*$/g) || [''])[0].slice(1);\n this.maskedInput = IMask(this.inputRef, { mask: new RegExp(cleanedRegexString, flags) });\n }\n\n initializePresetMask() {\n const options = maskOptions[this.maskPreset];\n\n if (options) {\n this.maskedInput = IMask(this.inputRef, options);\n } else {\n console.error(`Mask preset \"${this.maskPreset}\" not found.`);\n }\n }\n\n initializeAdvancedMask() {\n if (!this.inputRef) return;\n\n try {\n const config = typeof this.maskAdvanced === 'string' ? JSON.parse(this.maskAdvanced) : this.maskAdvanced;\n this.maskedInput = IMask(this.inputRef, config);\n } catch (error) {\n console.error('Error defining maskAdvanced:', error);\n }\n }\n\n applyValueToMask() {\n if (this.maskedInput) {\n if (this.maskedInput.mask === Date || this.maskedInput.mask === Number) {\n this.maskedInput.typedValue = this.value;\n } else {\n this.value = this.maskedInput.value;\n }\n this.handleMaskUpdate();\n }\n }\n\n clearMaskValue() {\n this.inputRef.value = this.value as string;\n }\n\n destroyMask() {\n if (this.maskedInput) {\n this.maskedInput.destroy();\n this.maskedInput = undefined;\n }\n }\n\n handleInputChange(event: any) {\n const inputValue = event.target.value;\n\n this.valueChange.emit(inputValue);\n\n if (this.type === 'number') {\n this.handleNumberInputChange(inputValue);\n } else {\n this.handleTextInputChange(inputValue);\n }\n this.internals.setFormValue(this.value as string);\n }\n\n handleNumberInputChange(inputValue: string) {\n const numericValue = parseFloat(inputValue);\n if (!isNaN(numericValue)) {\n this.value = numericValue;\n } else {\n console.error('Invalid numeric input:', inputValue);\n }\n }\n\n handleTextInputChange(inputValue: string) {\n if (this.maskedInput) {\n if (this.maskedInput.mask instanceof Date || this.maskedInput.mask === Number) {\n this.maskedInput.typedValue = inputValue;\n this.value = this.maskedInput.typedValue;\n }\n this.value = this.maskedInput.value;\n } else {\n this.value = inputValue;\n }\n }\n\n handleKeyDown(event: KeyboardEvent) {\n if (this.type === 'number') {\n this.handleBlockInvalidNumber(event);\n }\n }\n\n handleBlockInvalidNumber(e: KeyboardEvent) {\n if (['e', 'E', '+', '-'].includes(e.key)) e.preventDefault();\n }\n\n render() {\n return (\n <Host role=\"textbox\" aria-disabled={this.disabled} aria-required={this.required} aria-invalid={this.status === 'error'}>\n <div\n style={this.styles}\n onMouseEnter={() => this.handleMouseEnter()}\n onMouseLeave={() => this.handleMouseLeave()}\n class={{\n 'cura-input-group': true,\n ...this.getClasses(),\n }}\n >\n <div class=\"input-wrapper\">\n {this.label && (\n <cura-label class=\"label\" weight=\"bold\" size={this.size === 'large' ? 'small' : 'xsmall'} color={this.getLabelColor()}>\n {this.label} {this.required && <span class=\"required\">* </span>}\n </cura-label>\n )}\n <div class=\"cura-input-field\" part=\"cura-input-field\" style={this.styles}>\n {this.renderIcon()}\n <input\n name={this.name ? this.name : ''}\n type={this.type}\n onKeyDown={event => this.handleKeyDown(event)}\n onBlur={this.handleInputBlur.bind(this)}\n onFocus={this.handleInputFocus.bind(this)}\n onInput={event => this.handleInputChange(event)}\n class={this.getClasses()}\n style={this.styles}\n placeholder={this.placeholder}\n disabled={this.disabled || this.isLoading}\n required={this.required}\n readonly={this.readOnly}\n maxlength={this.maxlength}\n value={this.value !== undefined && this.value !== null ? this.value : ''}\n inputmode={this.maskPreset ? 'tel' : this.inputMode}\n ref={ref => (this.inputRef = ref)}\n autocomplete={this.autocomplete}\n />\n {!!this.clearIcon && !this.readOnly && !this.isLoading && !this.disabled && this.value && this.isFocused && (\n <cura-icon\n size={this.size === 'large' || this.mode === 'transparent' ? 20 : 16}\n color=\"primary-base\"\n name=\"closeCircle\"\n iconset=\"default\"\n class=\"clear-button\"\n onMouseDown={() => this.handleClearInput()}\n />\n )}\n {this.isLoading && <cura-loader-circle size={this.size === 'large' ? 'medium' : 'small'} color=\"primary-base\"></cura-loader-circle>}\n </div>\n {this.renderHelperText()}\n </div>\n </div>\n </Host>\n );\n }\n}\n","@import '../../../scss/mixins/responsive.scss';\n@import '../../../scss/mixins/text.scss';\n\n:host {\n display: block;\n font-size: var(--font-size-base);\n\n\n p {\n font-family: var(--font-family);\n font-size: 1.143em;\n font-weight: var(--font-weight-medium);\n color: var(--color-body);\n line-height: var(--line-height);\n margin-block: var(--margin-block);\n letter-spacing: 0.32px;\n\n &.bold-weight, ::slotted(b), ::slotted(strong), ::slotted(u) {\n font-weight: var(--font-weight-bold);\n }\n\n &.large {\n font-size: 1.357em;\n line-height: calc(var(--line-height) - 4%);\n letter-spacing: 0px;\n }\n\n &.small {\n font-size: 1em;\n line-height: calc(var(--line-height) - 4%);\n letter-spacing: 0.56px;\n }\n\n &.xsmall {\n font-size: 0.857em;\n line-height: calc(var(--line-height) - 17%);\n letter-spacing: 0.72px;\n }\n\n &.textoverflow-single {\n @include truncate-single();\n }\n\n ::slotted(a) {\n font-weight: var(--font-weight-bold);\n color: var(--color-link);\n text-underline-offset: 10%;\n }\n\n ::slotted(u) {\n text-underline-offset: 10%;\n }\n\n ::slotted(abbr) {\n color: var(--color-link);\n text-decoration: underline dashed 1px var(--color-link);\n text-underline-offset: 10%;\n cursor: default;\n }\n }\n}\n\n","import { Component, Host, Prop, h, Element, Watch, State } from '@stencil/core';\n\n@Component({\n tag: 'cura-label',\n styleUrl: 'cura-label.scss',\n shadow: true,\n})\nexport class CuraLabel {\n\n /**\n * Set size of body text.\n * Values: medium (default) | large | small | xsmall.\n */\n @Prop({reflect: true}) size: 'medium' | 'large' | 'small' | 'xsmall' | string = 'medium';\n\n /**\n * Label font weight. It is possible to use regular HTML tags like <b> or <strong> as well.\n * Values: regular (default) | bold.\n */\n @Prop({reflect: true}) weight: 'regular' | 'bold' = 'regular';\n\n /**\n * Apply design system color to interactive elements like <a> and <abbr> inside the text.\n * Values: Color from design system scheme. Default to 'accent-dark'.\n */\n @Prop({reflect: true}) spotColor = 'accent-dark';\n\n /**\n * Text color.\n * Values: Color from design system scheme. Default to the font color from the theme.\n */\n @Prop() color: string;\n @Watch('color')\n @Watch('spotColor')\n handleChangeColor() {\n this.setColors();\n }\n\n /**\n * CSS margin-block property values.\n * Default to 1.25em\n */\n @Prop({reflect: true}) marginBlock = '0';\n\n /**\n * CSS line-height property values.\n * Default to 140%\n */\n @Prop({reflect: true}) lineHeight = '125%';\n\n /**\n * Apply text-overflow ellipsis definitions.\n * Default to none\n */\n @Prop({reflect: true}) textOverflow: 'none' | 'single' | string = 'none';\n\n /**\n * Host element <cura-label>\n */\n @Element() host: HTMLElement;\n\n /**\n * Internal Props\n */\n weights: any;\n fontSizeBase: string;\n @State() styles = {};\n theme = window.CuraAPI.theme;\n\n connectedCallback() {\n this.setFontProperties();\n this.setColors();\n }\n\n getClasses() {\n const classes = {\n 'textoverflow-single': this.textOverflow === 'single',\n };\n classes[this.size.toLowerCase()] = true;\n classes[`${this.weight.toLowerCase()}-weight`] = true;\n return classes;\n }\n\n setFontProperties() {\n this.weights = this.theme.fonts.getWeights();\n this.fontSizeBase = this.theme.fonts.getSize();\n this.styles = {\n '--font-family': this.theme.fonts.getFamily('body'),\n '--font-weight-medium': this.weights.medium,\n '--font-weight-bold': this.weights.bold\n };\n }\n\n setColors() {\n this.styles = {\n ...this.styles,\n '--color-link': this.theme.colors.getColor(`${this.spotColor}`)\n };\n }\n\n hostCSSProperties() {\n const fontColor = this.color\n ? this.theme.colors.getColor(this.color)\n : this.theme.fonts.getColor();\n return {\n '--margin-block': this.marginBlock,\n '--font-size-base': this.fontSizeBase,\n '--line-height': this.lineHeight,\n '--color-body': fontColor || this.theme.colors.getColor('neutral-darker'),\n };\n }\n\n render() {\n return (\n <Host style={this.hostCSSProperties()}>\n <p style={this.styles} class={this.getClasses()}>\n <slot></slot>\n </p>\n </Host>\n );\n }\n\n}\n","@import '../../../scss/mixins/animations.scss';\n\n:host {\n display: inline-block;\n width: var(--size);\n height: var(--size);\n \n svg {\n width: var(--size);\n height: var(--size);\n animation: rotate .7s linear infinite;\n }\n\n circle, path {\n stroke-miterlimit: 10;\n stroke-linecap: round;\n stroke-linejoin: round;\n }\n\n path { stroke: var(--color); }\n\n stop { stop-color: var(--color); }\n linearGradient stop:first-child {\n stop-opacity: 0.14;\n }\n}\n\n@include rotate();\n\n","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'cura-loader-circle',\n styleUrl: 'cura-loader-circle.scss',\n shadow: true,\n})\nexport class CuraLoaderCircle {\n\n /**\n * Loader size. Values: small, medium or large.\n */\n @Prop({reflect: true}) size: 'small' | 'medium' | 'large' | 'xlarge' = 'medium';\n /**\n * One from color scheme. Default: neutral-white.\n */\n @Prop({reflect: true}) color = 'neutral-white';\n\n sizes = {\n xlarge: 32,\n large: 24,\n medium: 20,\n small: 16,\n default: 16,\n };\n\n getPxSize = () => this.sizes[this.size] || this.sizes['default'];\n\n getStyles() {\n return {\n '--size': `${this.getPxSize()}px`,\n '--color': window.CuraAPI.theme.colors.getColor(this.color)\n }\n }\n\n render() {\n return (\n <Host\n style={this.getStyles()}\n role=\"progressbar\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"url(#paint0_linear_13485_11488)\" stroke-width=\"2\"/>\n <path d=\"M1 8C1 4.13401 4.11877 1 7.96596 1C9.53445 1 10.9819 1.52093 12.1462 2.4C12.8959 2.96601 13.5282 3.68049 14 4.5\" stroke-width=\"2\"/>\n </g>\n <defs>\n <linearGradient id=\"paint0_linear_13485_11488\" x1=\"15.7\" y1=\"4.5\" x2=\"4.15\" y2=\"11.5\" gradientUnits=\"userSpaceOnUse\">\n <stop/>\n <stop offset=\"1\"/>\n </linearGradient>\n </defs>\n </svg>\n </Host>\n );\n }\n\n}\n","@import '../../scss/mixins/responsive.scss';\n\n@mixin template-spacing($spacing-scale: 0px, $large-device: false) {\n $spacing-px: calc(var(--spacing) * $spacing-scale);\n padding: 0px;\n @if $large-device {\n #content-container {\n #sidebar-left ::slotted(div[slot=\"sidebar-left\"]) {\n margin-right: $spacing-px;\n }\n #sidebar-right ::slotted(div[slot=\"sidebar-right\"]) {\n margin-left: $spacing-px;\n }\n }\n }\n}\n\n:host {\n display: block;\n\n .grid-template {\n display: grid;\n grid-template-rows: auto;\n grid-template-columns: auto;\n grid-template-areas:\n 'sub-header'\n 'header'\n 'pre-content'\n 'content-container'\n 'post-body'\n 'footer'\n 'sub-footer';\n\n #sub-header {\n grid-area: sub-header;\n }\n\n #header {\n grid-area: header;\n }\n\n #pre-content {\n grid-area: pre-content;\n }\n\n #content-container {\n grid-area: content-container;\n }\n\n #post-body {\n grid-area: post-body;\n }\n\n #footer {\n grid-area: footer;\n }\n\n #sub-footer {\n grid-area: sub-footer;\n }\n\n @include mobile-only() {\n $spacing-scale: 4px;\n @include template-spacing($spacing-scale);\n }\n\n @include medium-only() {\n $spacing-scale: 5px;\n @include template-spacing($spacing-scale);\n }\n\n @include large-only() {\n $spacing-scale: 5px;\n @include template-spacing($spacing-scale, true);\n #content-container {\n display: flex;\n #content {\n flex-grow: 1;\n }\n #sidebar-left, #sidebar-right {\n max-width: 20%;\n }\n }\n }\n\n @include xlarge-only() {\n $spacing-scale: 7px;\n @include template-spacing($spacing-scale, true);\n #content-container {\n display: flex;\n #content {\n flex-grow: 1;\n }\n #sidebar-left, #sidebar-right {\n max-width: 20%;\n }\n &.centered {\n max-width: $breakpoint-xlarge-min;\n justify-self: center;\n }\n }\n }\n }\n}\n","import { Component, Element, Host, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'cura-page-template',\n styleUrl: 'cura-page-template.scss',\n shadow: true,\n})\nexport class CuraPageTemplate {\n\n @Prop({reflect: true}) contentwidth: 'default' | 'centered' = 'default';\n\n @Element() host: HTMLElement;\n\n styles: any;\n\n connectedCallback() {\n this.styles = {\n '--spacing': window.CuraAPI.theme.spacing.getSpacing(),\n }\n }\n\n getClasses() {\n const classes = {};\n classes[this.contentwidth.toLowerCase()] = true;\n return classes;\n }\n\n render() {\n return (\n <Host>\n <div style={this.styles} class=\"grid-template\">\n <div id=\"sub-header\">\n <slot name='sub-header'></slot>\n </div>\n <div id=\"header\">\n <slot name='header'></slot>\n </div>\n <div id=\"pre-content\">\n <slot name='pre-content'></slot>\n </div>\n <div id=\"content-container\" class={this.getClasses()}>\n <div id=\"sidebar-left\">\n <slot name='sidebar-left'></slot>\n </div>\n <div id=\"content\">\n <slot name=\"content\"></slot>\n <slot></slot>\n </div>\n <div id=\"sidebar-right\">\n <slot name='sidebar-right'></slot>\n </div>\n </div>\n <div id=\"post-body\">\n <slot name='post-body'></slot>\n </div>\n <div id=\"footer\">\n <slot name='footer'></slot>\n </div>\n <div id=\"sub-footer\">\n <slot name='sub-footer'></slot>\n </div>\n </div>\n </Host>\n );\n }\n\n}\n","@import '../../../scss/mixins/responsive.scss';\n@import '../../../scss/mixins/text.scss';\n\n:host {\n display: block;\n font-size: var(--font-size-base);\n min-width: 0;\n\n p {\n font-family: var(--font-family);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-regular);\n color: var(--color-body);\n line-height: var(--line-height);\n margin-block: var(--margin-block);\n letter-spacing: 0.28px;\n width: 100%;\n\n &.large {\n font-size: 1.214em;\n line-height: calc(var(--line-height) + 10%);\n letter-spacing: 0px;\n }\n\n &.small {\n font-size: 0.85em;\n line-height: calc(var(--line-height) - 5%);\n letter-spacing: 0.48px;\n }\n\n &.caption, &.xsmall {\n font-size: 0.8571428571428571em;\n line-height: calc(var(--line-height) - 5%);\n letter-spacing: 0.6px;\n }\n\n &.textoverflow-single {\n @include truncate-single();\n }\n\n ::slotted(b), ::slotted(strong) {\n font-weight: var(--font-weight-bold);\n }\n\n ::slotted(a),\n ::slotted(a:-webkit-any-link) {\n font-weight: var(--font-weight-medium);\n color: var(--color-spot);\n text-underline-offset: 10%;\n }\n\n ::slotted(u) {\n font-weight: var(--font-weight-medium);\n text-underline-offset: 10%;\n }\n\n ::slotted(i) {\n font-style: italic;\n }\n\n ::slotted(em) {\n font-weight: var(--font-weight-bold);\n color: var(--color-spot);\n font-style: normal;\n }\n\n ::slotted(abbr) {\n color: var(--color-spot);\n text-decoration: underline dashed 1px var(--color-spot);\n text-underline-offset: 10%;\n cursor: default;\n }\n }\n\n @include medium-large() {\n p {\n font-size: 1.143em;\n line-height: calc(var(--line-height) + 5%);\n letter-spacing: 0.32px;\n\n &.large {\n font-size: 1.357em;\n line-height: calc(var(--line-height) + 10%);\n letter-spacing: 0px;\n }\n\n &.small {\n font-size: 1em;\n line-height: calc(var(--line-height) - 5%);\n letter-spacing: 0.56px;\n }\n\n &.caption, &.xsmall {\n font-size: 0.8571428571428571em;\n line-height: calc(var(--line-height) - 5%);\n letter-spacing: 0.72px;\n }\n }\n }\n\n @include xlarge-only() {\n p {\n font-size: 1.429em;\n line-height: calc(var(--line-height) + 10%);\n letter-spacing: 0px;\n\n &.large {\n font-size: 1.714em;\n line-height: calc(var(--line-height) + 20%);\n }\n\n &.small {\n font-size: 1.21em;\n line-height: calc(var(--line-height) + 5%);\n letter-spacing: 0px;\n }\n\n &.caption, &.xsmall {\n font-size: 1em;\n line-height: calc(var(--line-height) + 5%);\n letter-spacing: 0.28px;\n }\n }\n }\n\n}\n\n","import { Component, Host, Prop, h, Element, State } from '@stencil/core';\n\n@Component({\n tag: 'cura-paragraph',\n styleUrl: 'cura-paragraph.scss',\n shadow: true,\n})\nexport class CuraParagraph {\n\n /**\n * Set size of body text.\n * Values: regular (deprecated), medium (default) | large | small | caption (deprecated) | xsmall.\n */\n @Prop({reflect: true}) size: 'regular' | 'medium' | 'large' | 'small' | 'caption' | 'xsmall' = 'medium';\n\n /**\n * Apply design system color to interactive elements like <a> and <abbr> inside the text.\n * Values: Color from design system scheme. Default to 'accent-dark'.\n */\n @Prop({reflect: true}) spotColor = 'accent-dark';\n\n /**\n * Text color.\n * Values: Color from design system scheme. Default to the font color from the theme.\n */\n @Prop({reflect: true}) color: string;\n\n /**\n * CSS margin-block property values.\n * Default to 1.25em\n */\n @Prop({reflect: true}) marginBlock = '1.25em';\n\n /**\n * CSS line-height property values.\n * Default to 140%\n */\n @Prop({reflect: true}) lineHeight = '140%';\n\n /**\n * Apply text-overflow ellipsis definitions.\n * Default to none\n */\n @Prop({reflect: true}) textOverflow: 'none' | 'single' | string = 'none';\n\n /**\n * Host element <cura-paragraph>\n */\n @Element() host: HTMLElement;\n\n /**\n * Internal Props\n */\n weights: any;\n fontSizeBase: string;\n @State() styles = {};\n theme = window.CuraAPI.theme;\n\n connectedCallback() {\n this.setFontProperties();\n }\n\n setFontProperties() {\n this.weights = this.theme.fonts.getWeights();\n this.fontSizeBase = this.theme.fonts.getSize();\n this.styles = {\n '--font-family': this.theme.fonts.getFamily('body'),\n '--font-weight-regular': this.weights.regular,\n '--font-weight-medium': this.weights.medium,\n '--font-weight-bold': this.weights.bold\n };\n }\n\n hostCSSProperties() {\n const fontColor = this.color\n ? this.theme.colors.getColor(this.color)\n : this.theme.fonts.getColor();\n return {\n '--margin-block': this.marginBlock,\n '--font-size-base': this.fontSizeBase,\n '--line-height': this.lineHeight,\n '--color-body': fontColor || this.theme.colors.getColor('neutral-darker'),\n '--color-spot': this.theme.colors.getColor(`${this.spotColor}`)\n };\n }\n\n getClasses() {\n const classes = {\n 'textoverflow-single': this.textOverflow === 'single',\n }\n classes[this.size.toLowerCase()] = true;\n return classes;\n }\n\n render() {\n return (\n <Host style={this.hostCSSProperties()}>\n <p style={this.styles} class={this.getClasses()}>\n <slot></slot>\n </p>\n </Host>\n );\n }\n\n}\n","@import '../../../scss/mixins/forms.scss';\n\n:host {\n display: block;\n position: relative;\n font-family: var(--font-family);\n}\n\n.wrapper {\n width: 100%;\n user-select: none;\n text-align: left !important;\n\n @include cura-label();\n @include helper-text();\n\n @include cura-input-field() {\n .up-down-icon {\n order: 3;\n padding-right: 6px;\n cursor: pointer;\n pointer-events: all;\n }\n\n .up-down-button {\n background-color: transparent;\n border: none;\n }\n\n input {\n padding: 0px 12px 0px 8px;\n cursor: pointer;\n }\n\n &.open {\n border-radius: 4px 4px 0 0 !important;\n }\n }\n\n @include cura-input-transparent();\n\n @include cura-forms-hover();\n @include cura-forms-focused();\n\n @include cura-forms-success();\n @include cura-forms-error();\n\n @include cura-forms-small() {\n &.label {\n .menu {\n top: 53px;\n }\n }\n .menu {\n top: 33px;\n }\n }\n\n @include cura-forms-medium() {\n &.label {\n .menu {\n top: 61px;\n }\n }\n .menu {\n top: 40px;\n }\n }\n\n @include cura-forms-large() {\n &.label {\n .menu {\n top: 69px;\n }\n }\n .menu {\n top: 47px;\n }\n }\n\n @include cura-forms-disabled();\n}\n\n.required {\n color: red;\n}\n\n.menu {\n position: absolute;\n left: 0;\n right: -1px;\n background: #fff;\n border: 2px solid var(--neutral-light);\n border-radius: 4px;\n z-index: 1000;\n max-height: var(--max-height);\n overflow: hidden;\n border-top: transparent;\n align-items: center;\n\n scrollbar-color: var(--neutral-medium) var(--neutral-black-20);\n overflow-y: auto;\n box-shadow: 0px 4px 8px 0px rgba(38, 38, 38, 0.16);\n\n &.open {\n border-radius: 0 !important;\n padding: 12px;\n }\n}\n","import { Component, Element, Host, Prop, State, h, Event, EventEmitter, AttachInternals, Watch } from '@stencil/core';\n\n@Component({\n tag: 'cura-select',\n styleUrl: 'cura-select.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class CuraSelect {\n /**\n * The label text for the select component.\n * Reflects as an attribute in the DOM.\n */\n @Prop({ reflect: true }) label: string = '';\n\n /**\n * Placeholder text for the input field.\n * Reflects as an attribute in the DOM.\n */\n @Prop({ reflect: true }) placeholder: string = '';\n\n /**\n * Current value of the select component.\n * Reflects as an attribute in the DOM and is mutable.\n */\n @Prop({ reflect: true, mutable: true }) value: string = '';\n\n /**\n * Display mode of the select component.\n * Can be 'default' or 'transparent'.\n */\n @Prop({ reflect: true }) mode: 'default' | 'transparent' = 'default';\n\n /**\n * Size of the select component.\n * Can be 'small', 'medium', or 'large'.\n */\n @Prop({ reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';\n\n @Prop() iconName?: string;\n\n /**\n * Status of the select component.\n * Can be 'success', 'error', or 'default'.\n */\n @Prop({ reflect: true, mutable: true }) status: 'success' | 'error' | 'default' = 'default';\n\n /**\n * Whether the select component is disabled.\n * Reflects as an attribute in the DOM.\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /**\n * Whether the select component is required.\n * Reflects as an attribute in the DOM.\n */\n @Prop({ reflect: true }) required: boolean = false;\n\n /**\n * Enable / Disable search at options by term.\n * Default: false\n */\n @Prop({ reflect: true }) searchBehavior: boolean = false;\n\n /**\n * The search will be sensitive to accents.\n * Default: true\n */\n @Prop({ reflect: true }) caseSensitive: boolean = true;\n\n /**\n * CSS max-height property for dropdown item.\n * Can also be used by css property --max-height.\n * Default: 285px\n */\n @Prop({ reflect: true }) maxHeight: string = '285px';\n\n /**\n * Internal state: Whether the input is hovered.\n * Default: false\n */\n @State() isHovered: boolean = false;\n\n /**\n * Internal state: Whether the input is focused.\n * Default: false\n */\n @State() isFocused: boolean = false;\n\n /**\n * Internal state: Whether the dropdown menu is open.\n * Default: false\n */\n @State() isOpen: boolean = false;\n\n /**\n * Internal state: Collection of options for the select component.\n */\n @State() options: NodeListOf<HTMLCuraSelectOptionElement>;\n\n @State() activeIndex = -1;\n\n @Watch('activeIndex')\n updateOptionHighlights(newActiveINdex: number) {\n this.options.forEach((option, index) => ((option as any).active = index === newActiveINdex));\n }\n\n @State() textInput = '';\n\n @Watch('textInput')\n /**\n * Filters the options based on the current input value.\n */\n filterOptions(newText) {\n this.searchTermInput.emit(newText);\n\n if (!this.isOpen || !this.searchBehavior) {\n return;\n }\n\n const removeAccents = (str: string) => {\n return str.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n };\n\n let searchTerm = newText;\n if (!this.caseSensitive) {\n searchTerm = removeAccents(searchTerm).toLocaleLowerCase();\n }\n\n this.options.forEach(option => {\n let optionValue = option.textContent || '';\n if (!this.caseSensitive) {\n optionValue = removeAccents(optionValue?.toLowerCase());\n }\n const isVisible = optionValue.includes(searchTerm);\n option.style.display = isVisible ? 'block' : 'none';\n });\n }\n\n /**\n * Reference to the host element of the component.\n */\n @Element() host: HTMLElement;\n\n /**\n * Event emitted when an option is selected.\n */\n @Event() selected: EventEmitter;\n\n /**\n * Event emitted when an option is searched.\n */\n @Event() searchTermInput: EventEmitter;\n\n /**\n * MutationObserver to watch changes in the component.\n */\n mutationObserver: MutationObserver;\n\n /**\n * Styles to be applied to the component.\n */\n styles = {};\n\n /**\n * Theme object containing font and color information.\n */\n theme = window.CuraAPI.theme;\n\n @AttachInternals() internals: ElementInternals;\n\n /**\n * Callback for form association.\n */\n formAssociatedCallback(form: { ariaLabel: string }) {\n form.ariaLabel = this.label;\n }\n\n /**\n * Callback to restore the switch state from the form.\n */\n formStateRestoreCallback(state: { value: string }) {\n this.textInput = state.value;\n this.updateSelectedOption();\n }\n\n /**\n * Callback to reset the switch state when the form is reset.\n */\n formResetCallback() {\n this.textInput = '';\n this.clearSelectedAttributes();\n this.internals.setFormValue('');\n this.internals.setValidity({});\n }\n\n /**\n * Callback to update the switch's disabled state when the form's disabled state changes.\n */\n formDisabledCallback(disabled: boolean) {\n this.disabled = disabled;\n }\n\n /**\n * Lifecycle method called before the component is rendered.\n * Initializes the options for the select component.\n */\n componentWillLoad() {\n this.initializeOptions();\n }\n /**\n * Lifecycle method called after the component is rendered.\n * Initializes select-related functionality.\n */\n componentDidLoad() {\n // this.initializeOptions();\n this.setupMutationObserver();\n this.addOutsideClickListener();\n }\n /**\n * Lifecycle method called when the component is connected to the DOM.\n * Applies styles based on the theme.\n */\n connectedCallback() {\n this.applyStyles();\n }\n /**\n * Lifecycle method called when the component is disconnected from the DOM.\n * Disconnects the MutationObserver if it exists.\n */\n disconnectedCallback() {\n this.mutationObserver?.disconnect();\n this.removeOutsideClickListener();\n }\n\n initializeOptions() {\n this.options = this.host.querySelectorAll<HTMLCuraSelectOptionElement>('cura-select-option');\n this.options.forEach(option => {\n option.setAttribute('size', this.size);\n\n const isSelected = this.value === option.value;\n option.setAttribute('selected', JSON.stringify(isSelected));\n\n if (isSelected) {\n this.value = option.value;\n this.internals.setFormValue(option.value);\n }\n });\n\n this.textInput = Array.from(this.options).find(option => option.value === this.value)?.textContent || this.textInput;\n }\n /**\n * Applies styles to the component based on the theme.\n */\n applyStyles() {\n const { fonts, colors } = this.theme;\n const fontWeights = fonts.getWeights();\n\n this.styles = {\n ...this.styles,\n '--font-weight-medium': fontWeights.medium,\n '--font-weight-bold': fontWeights.bold,\n '--font-weight-regular': fontWeights.regular,\n '--font-color': fonts.getColor(),\n '--font-family': fonts.getFamily(),\n '--font-size': fonts.getSize(),\n };\n\n const colorKeys = [\n 'primary-base',\n 'neutral-purewhite',\n 'neutral-white',\n 'neutral-black',\n 'neutral-medium',\n 'neutral-light',\n 'neutral-base',\n 'neutral-dark',\n 'success-dark',\n 'success-darker',\n 'success-lighter',\n 'error-lighter',\n 'error-dark',\n 'error-darker',\n 'error-base',\n 'info-base',\n ];\n\n colorKeys.forEach(key => {\n this.styles[`--${key}`] = colors.getColor(key);\n });\n }\n /**\n * Sets up a MutationObserver to watch for changes in the component.\n */\n setupMutationObserver() {\n this.mutationObserver = new MutationObserver(this.handleMutations);\n this.mutationObserver.observe(this.host, { attributes: true, subtree: true, attributeFilter: ['selected', 'value'] });\n }\n /**\n * Handles mutations observed by the MutationObserver.\n * Updates the selected option or filters options based on the mutation type.\n */\n handleMutations = (mutations: MutationRecord[]) => {\n mutations.forEach(mutation => {\n if (mutation.type === 'attributes') {\n if (mutation.attributeName === 'selected') this.updateSelectedOption();\n }\n });\n };\n /**\n * Handles the selection of an option.\n */\n onOptiselected = (event: Event) => {\n const selectedOption = event.target as HTMLElement;\n this.clearSelectedAttributes();\n selectedOption.setAttribute('selected', 'true');\n };\n\n @Watch('value')\n handleValueChange(newValue: string) {\n this.clearSelectedAttributes();\n\n const selectedOption = this.host.querySelector(`cura-select-option[value=\"${newValue}\"]`);\n\n if (!selectedOption) {\n return;\n }\n\n selectedOption.setAttribute('selected', 'true');\n }\n\n updateSelectedOption() {\n const selectedOptionElement = this.host.querySelector<HTMLCuraSelectOptionElement>('cura-select-option[selected]');\n\n if (!selectedOptionElement) {\n return;\n }\n\n this.value = selectedOptionElement.value;\n this.internals.setFormValue(this.value);\n\n if (this.textInput !== selectedOptionElement.textContent) {\n this.textInput = selectedOptionElement.textContent;\n this.isOpen = false;\n this.selected.emit(selectedOptionElement.value);\n }\n }\n\n /**\n * Clears the 'selected' attribute from all options.\n */\n clearSelectedAttributes() {\n this.options.forEach(option => option.removeAttribute('selected'));\n }\n\n handleKeyNavigation = (event: KeyboardEvent) => {\n const { code: keyCode } = event;\n\n if (!this.isOpen && keyCode === 'ArrowDown') {\n this.isOpen = true;\n this.activeIndex = 0;\n\n return;\n }\n\n if (keyCode === 'ArrowDown') {\n event.preventDefault();\n this.updateActiveIndex(1);\n }\n\n if (keyCode === 'ArrowUp') {\n event.preventDefault();\n this.updateActiveIndex(-1);\n }\n\n if (keyCode === 'Enter' || keyCode === 'Space') {\n this.options[this.activeIndex]?.click();\n }\n\n if (keyCode === 'Escape') {\n this.isOpen = false;\n }\n };\n\n updateActiveIndex(direction: number) {\n if (this.options.length === 0) return;\n this.activeIndex = (this.activeIndex + direction + this.options.length) % this.options.length;\n }\n\n handleInputChange = (e: Event) => {\n this.textInput = (e.target as HTMLInputElement).value;\n this.isOpen = this.textInput.length > 0;\n this.internals.setFormValue(this.textInput);\n };\n\n getClasses() {\n return {\n wrapper: true,\n label: !!this.label,\n disabled: this.disabled,\n transparent: this.mode === 'transparent',\n [this.size.toLowerCase()]: true,\n [this.status.toLowerCase()]: true,\n };\n }\n\n /**\n * Determines the color based on the item type and component state.\n */\n getColor(item: 'label' | 'text' | 'icon') {\n if (this.disabled) return 'neutral-medium';\n\n const isStatusDefault = this.status === 'default';\n const isHoveredOrFocused = this.isFocused || this.isHovered;\n\n if (item === 'label') {\n if (!isStatusDefault || isHoveredOrFocused) return 'neutral-black';\n return 'neutral-dark';\n }\n\n if (isHoveredOrFocused && isStatusDefault) return 'neutral-black';\n if (this.status === 'success') return 'success-dark';\n if (this.status === 'error') return 'error-dark';\n\n return 'neutral-dark';\n }\n\n /**\n * Renders the icon based on the component's status.\n */\n renderIcon() {\n if (this.status === 'default' && !this.iconName) return null;\n const icon = { default: this.iconName, success: 'checkCircle', error: 'alertCircle' }[this.status];\n return <cura-icon class=\"feedback-icon\" name={icon} iconset=\"default\" size={this.size === 'large' ? 20 : 16} color={this.getColor('icon')} style={this.styles} />;\n }\n\n handleClick = (event: MouseEvent) => {\n if (this.disabled) return event.preventDefault();\n const target = event.target as HTMLElement;\n\n if (target.tagName === 'CURA-SELECT-OPTION') return this.onOptiselected(event);\n this.isOpen = !this.isOpen;\n };\n\n handleClickOutside = (event: MouseEvent) => {\n const clickedOutside = !this.host.contains(event.target as Node);\n if (clickedOutside) {\n this.isOpen = false;\n }\n };\n\n private addOutsideClickListener() {\n document.addEventListener('click', this.handleClickOutside);\n }\n\n private removeOutsideClickListener() {\n document.removeEventListener('click', this.handleClickOutside);\n }\n\n render() {\n return (\n <Host style={this.styles}\n role=\"combobox\"\n aria-label={this.label}\n aria-required={String(this.required)}\n aria-disabled={String(this.disabled)}\n aria-invalid={String(this.status === 'error')}>\n <div class={this.getClasses()} onMouseEnter={() => (this.isHovered = true)} onMouseLeave={() => (this.isHovered = false)} onClick={this.handleClick}>\n {this.label && (\n <cura-label class=\"label\" weight=\"bold\" size={this.size === 'large' ? 'small' : 'xsmall'} color={this.getColor('label')}>\n {this.label} {this.required && <span class=\"required\">* </span>}\n </cura-label>\n )}\n\n <div\n class={{\n 'cura-input-field': true,\n 'open': this.isOpen,\n }}\n >\n {this.renderIcon()}\n <input\n type=\"text\"\n autocomplete=\"off\"\n onFocus={() => (this.isFocused = true)}\n onBlur={() => (this.isFocused = false)}\n onKeyDown={this.handleKeyNavigation}\n aria-required={String(this.required)}\n aria-disabled={String(this.disabled)}\n aria-invalid={String(this.status === 'error')}\n onInput={this.handleInputChange}\n style={this.styles}\n placeholder={this.placeholder}\n disabled={this.disabled}\n required={this.required}\n value={this.textInput}\n readonly={this.searchBehavior ? null : true}\n />\n <button class=\"up-down-button\">\n <cura-icon name={this.isOpen ? 'up' : 'down'} class=\"up-down-icon\" color={this.disabled ? 'neutral-dark' : 'primary-base'} size={16} iconset=\"default\" />\n </button>\n </div>\n <cura-label class=\"helper-text\" size=\"xsmall\" color={this.getColor('text')} weight={this.mode === 'transparent' ? 'bold' : 'regular'}>\n <slot></slot>\n </cura-label>\n {this.isOpen && (\n <div\n class={{\n menu: true,\n open: this.isOpen,\n }}\n style={{ '--max-height': this.maxHeight }}\n >\n <slot name=\"option\"></slot>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.item {\n display: flex;\n padding: 12px 8px;\n cursor: pointer;\n justify-content: space-between;\n align-items: center;\n box-sizing: border-box;\n background: var(--neutral-purewhite);\n\n &.selected {\n background-color: var(--primary-lighter-50);\n border-bottom: 1px solid var(--primary-light);\n }\n\n &:hover:not(.selected) {\n background: var(--neutral-white);\n border-bottom: 1px solid var(--neutral-light);\n }\n\n &.active {\n background: var(--neutral-white) !important;\n border-bottom: 1px solid var(--neutral-light);\n }\n\n &.selected.active {\n background-color: var(--primary-lighter-50) !important;\n box-shadow: none;\n }\n}\n","import { Component, h, Host, Prop, State, Element, Watch } from '@stencil/core';\n\n@Component({\n tag: 'cura-select-option',\n styleUrl: 'cura-select-option.scss',\n shadow: true,\n})\nexport class CuraSelectOption {\n @Prop({ reflect: true }) value: string;\n @Prop({ reflect: true }) selected: boolean = false;\n @Prop({ reflect: true }) active: boolean = false;\n @Prop() size: 'xsmall' | 'small' | 'medium' | 'large' = 'small'\n @State() styles = {};\n @Element() host: HTMLElement;\n\n theme = window.CuraAPI.theme;\n\n connectedCallback() {\n const colors = [\n { name: '--primary-lighter-50', theme: 'primary-lighter', opacity: 0.5 },\n { name: '--primary-light', theme: 'primary-light' },\n { name: '--neutral-light', theme: 'neutral-light' },\n { name: '--neutral-purewhite', theme: 'neutral-purewhite' },\n ];\n\n colors.forEach(color => this.styles = { ...this.styles, [color.name]: this.theme.colors.getColor(color.theme, color?.opacity) });\n }\n\n @Watch('size')\n getSize(element: string) {\n const sizeMap = {\n large: element === 'label' ? 'medium' : 20,\n medium: element === 'label' ? 'small' : 16,\n small: element === 'label' ? 'xsmall' : 'micro',\n };\n\n return sizeMap[this.size] || sizeMap['medium'];\n }\n\n getClasses() {\n return {\n 'item': true,\n 'selected': this.selected,\n 'active':this.active\n };\n }\n\n render() {\n return (\n <Host slot=\"option\" role=\"option\" aria-selected={this.selected}>\n <div class={this.getClasses()} style={this.styles}>\n <cura-label color={`${this.selected ? 'primary-base' : 'neutral-black'}`} size={this.getSize('label')} margin-block=\"0\">\n <slot></slot>\n </cura-label>\n {this.selected && <cura-icon name='check' size={this.getSize('icon')} color=\"primary-base\"></cura-icon>}\n </div>\n </Host>\n );\n }\n}\n","@import '../../../scss/mixins/spacing.scss';\n@import '../../../scss/mixins/buttons.scss';\n\n$button-sizes: (\n small: $spacing-mini $spacing-mini,\n medium: $spacing-xxxs $spacing-xxxs,\n large: $spacing-xxxs $spacing-xxs,\n);\n\n:host {\n button,\n a {\n @include button-element() {\n background-color: transparent;\n box-sizing: border-box;\n border: none;\n\n min-width: 120px;\n width: fit-content;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n border-radius: 4px 4px 0 0;\n\n &.border-bottom {\n border-bottom: 1px solid var(--border-bottom-color);\n }\n\n &:not(.disabled, .selected):hover {\n background-color: var(--background-color-hover);\n\n &.light {\n border-bottom-color: var(--primary-dark);\n }\n &.dark {\n border-bottom-color: var(--neutral-purewhite);\n }\n }\n\n @each $size, $padding in $button-sizes {\n &.#{$size} {\n padding: $padding;\n }\n }\n\n &:focus {\n border: 2px solid var(--primary-light);\n }\n\n cura-icon {\n margin-right: #{$spacing-mini};\n }\n\n @include button-selected() {\n background-color: var(--background-color-selected);\n\n &.disabled {\n background-color: var(--background-disabled-selected);\n }\n }\n\n &.disabled {\n cursor: not-allowed;\n }\n }\n }\n}\n","import { Component, Event, EventEmitter, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { labelSizes } from '../cura-tabs.definitions';\n\n@Component({\n tag: 'cura-tabs',\n styleUrl: 'cura-tabs.scss',\n shadow: true,\n})\nexport class CuraTabs {\n @Prop({ reflect: true }) name: string;\n @Prop({ reflect: true }) iconName: string;\n @Prop({ reflect: true, mutable: true }) selected: boolean = false;\n @Prop({ reflect: true, mutable: true }) disabled: boolean = false;\n @Prop({ reflect: true, mutable: true }) borderBottom: boolean = true;\n @Prop({ reflect: true }) size: 'small' | 'medium' | 'large' = 'large';\n @Prop({ reflect: true, mutable: true }) colorMode: 'dark' | 'light' = 'light';\n\n @State() hovered = false;\n @State() styles: Record<string, string> = {};\n\n @Event() tabSelect: EventEmitter<{ name: string }>;\n\n @Watch('colorMode')\n setColors() {\n const colors = [\n { name: '--background-color-selected', theme: this.colorMode === 'light' ? 'primary-base' : 'primary-lighter' },\n { name: '--background-color-hover', theme: this.colorMode === 'light' ? 'primary-lighter' : null },\n {\n name: '--background-disabled-selected',\n theme: this.colorMode === 'light' ? 'neutral-pale' : 'neutral-black',\n },\n {\n name: '--border-bottom-color',\n theme: this.colorMode === 'light' ? 'neutral-base' : 'primary',\n },\n ];\n\n colors.forEach(c => {\n if (c.theme) this.styles[c.name] = window.CuraAPI.theme.colors.getColor(c.theme);\n });\n\n this.styles = { ...this.styles };\n }\n\n computeContentColor(): string {\n if (this.disabled) return 'neutral-dark';\n\n if (this.colorMode === 'dark') {\n if (this.hovered && !this.selected) {\n return 'neutral-purewhite';\n }\n return this.selected ? 'neutral-black' : 'primary-lighter';\n }\n\n return this.selected ? 'neutral-purewhite' : 'primary-dark';\n }\n\n private updateDynamicStyles() {\n if (this.colorMode === 'dark' && this.hovered && !this.selected) {\n this.styles = {\n ...this.styles,\n '--border-bottom-color': window.CuraAPI.theme.colors.getColor('neutral-purewhite'),\n };\n }\n }\n\n getIcon() {\n if (!this.iconName) return '';\n const iconSize = this.size === 'large' ? 20 : 16;\n const iconColor = this.computeContentColor();\n\n return <cura-icon name={this.iconName} size={iconSize} color={iconColor}></cura-icon>;\n }\n\n getClasses() {\n return {\n [this.size]: true,\n [this.colorMode]: true,\n 'selected': this.selected,\n 'disabled': this.disabled,\n 'border-bottom': this.borderBottom,\n };\n }\n\n connectedCallback() {\n this.styles = {\n ...this.styles,\n '--primary-dark': window.CuraAPI.theme.colors.getColor('primary-dark'),\n '--neutral-purewhite': window.CuraAPI.theme.colors.getColor('neutral-purewhite'),\n '--base-spacing': window.CuraAPI.theme.spacing.getSpacing(),\n };\n\n this.setColors();\n }\n\n handleMouseEnter() {\n if (this.disabled) return;\n this.hovered = true;\n }\n\n handleMouseLeave() {\n this.hovered = false;\n }\n\n handleClick(e: Event) {\n if (this.disabled) {\n e.preventDefault();\n return;\n }\n\n this.selected = !this.selected;\n this.tabSelect.emit({ name: this.name });\n }\n\n render() {\n const labelSize = labelSizes[this.size] || labelSizes['default'];\n const labelColor = this.computeContentColor();\n this.updateDynamicStyles();\n\n return (\n <Host role=\"button\" aria-pressed={this.selected} aria-disabled={this.disabled}>\n <button\n class={this.getClasses()}\n style={this.styles}\n onClick={e => this.handleClick(e)}\n disabled={this.disabled}\n onMouseEnter={this.handleMouseEnter.bind(this)}\n onMouseLeave={this.handleMouseLeave.bind(this)}\n >\n {this.getIcon()}\n <cura-label size={labelSize} color={labelColor} lineHeight=\"0\" marginBlock=\"0\">\n <slot></slot>\n </cura-label>\n </button>\n </Host>\n );\n }\n}\n",":host {\n display: flex;\n gap: var(--gap);\n}\n\n:host(.border-bottom) {\n position: relative;\n}\n\n:host(.border-bottom)::after {\n content: '';\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: 1px;\n background: var(--border-color);\n z-index: 0;\n}\n\n::slotted(cura-tabs),\n::slotted(cura-tabs-transparent) {\n position: relative;\n z-index: 1;\n}\n","import { Component, Element, Event, EventEmitter, Host, Listen, Prop, State, h } from '@stencil/core';\n\n@Component({\n tag: 'cura-tabs-group',\n styleUrl: 'cura-tabs-group.scss',\n shadow: true,\n})\nexport class CuraTabsGroup {\n @Prop({ reflect: true }) gap: number = 0;\n @Prop({ reflect: true, mutable: true }) borderBottom: boolean = true;\n @Prop({ reflect: true, mutable: true }) colorMode: 'dark' | 'light' = 'light';\n\n @State() styles: Record<string, string> = {};\n\n @Element() host: HTMLElement;\n\n @Event() tabChange: EventEmitter<string>;\n\n @Listen('tabSelect')\n handleTabSelect(ev: CustomEvent<{ name: string }>) {\n this.updateSelectedTab(ev.detail.name);\n }\n\n updateSelectedTab(value: string) {\n const tabs = this.host.querySelectorAll('cura-tabs, cura-tabs-transparent, cura-tabs-button');\n\n tabs.forEach((tab: HTMLCuraTabsElement) => {\n tab.selected = tab.name === value;\n });\n }\n\n getClasses() {\n return {\n 'border-bottom': this.borderBottom,\n };\n }\n\n connectedCallback() {\n this.styles = {\n ...this.styles,\n '--border-color': window.CuraAPI.theme.colors.getColor(this.colorMode === 'light' ? 'neutral-base' : 'primary-base'),\n '--gap': `${this.gap}px`,\n };\n }\n\n render() {\n return (\n <Host role=\"tablist\" style={this.styles} class={this.getClasses()}>\n <slot></slot>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|